Skip to content

Commit

Permalink
did
Browse files Browse the repository at this point in the history
  • Loading branch information
takeshi committed Jan 22, 2012
1 parent 8522cd7 commit 115e0bb
Show file tree
Hide file tree
Showing 21 changed files with 362 additions and 188 deletions.
5 changes: 4 additions & 1 deletion s3tree/js/downtown/Loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ downtown.Loader = function() {
var path = settings["basePath"] + src + ".html";

if (loadedHtml[src]) {
setTimeout(callback(src), 0);
setTimeout(function() {
callback(src)
}, 0);
return ;
}

$.ajax({
Expand Down
1 change: 0 additions & 1 deletion s3tree/js/s3/S3.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ s3.S3 = function() {
};

(function($) {

s3.S3.signature = function(key, method, resource, headers, expires) {
var stringToSign = method + "\n";
if (headers["x-amz-date"]) {
Expand Down
8 changes: 8 additions & 0 deletions s3tree/js/s3/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ goog.require("s3.load");
goog.require("downtown.EventBus");
goog.require("s3.view.login");
goog.require("s3.view.bucketselector");
goog.require("s3.view.treeview");
goog.require("s3.view.listview");

(function($) {
$(function() {
Expand All @@ -14,5 +16,11 @@ goog.require("s3.view.bucketselector");
$('#buckets')["bucketselector"]({
eventBus : eventBus
});
$('#tree')["s3tree"]({
eventBus : eventBus
});
$('#list')["s3list"]({
eventBus : eventBus
});
});
}(jQuery));
4 changes: 2 additions & 2 deletions s3tree/js/s3/client/S3Client.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
goog.provide("s3.client.S3Client");

goog.require("s3.S3");
goog.require("s3.model.LoginUser");

/**
* @constructor
* @param {s3.model.LoginUser}
Expand Down Expand Up @@ -59,7 +59,7 @@ s3.client.S3Client = function(loginUser) {
var resource = "/" + bucket + "/" + key;
var signature = s3.S3.signature(this.loginUser.secretKey, "GET", resource,
{
"x-amz-date" : date,
"x-amz-date" : date
});

options.url = "https://" + bucket + ".s3.amazonaws.com/" + key;
Expand Down
10 changes: 6 additions & 4 deletions s3tree/js/s3/deps.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,11 @@ goog.addDependency("../../lib/util/hmac.js", [], []);
goog.addDependency("../../lib/util/json2.js", [], []);
goog.addDependency("../../lib/util/sha1.js", [], []);
goog.addDependency("../../qunit/qunit.js", [], []);
goog.addDependency("../../s3/app.js", ['s3.app'], ['s3.load', 'downtown.EventBus', 's3.view.login', 's3.view.bucketselector']);
goog.addDependency("../../s3/app.js", ['s3.app'], ['s3.load', 'downtown.EventBus', 's3.view.login', 's3.view.bucketselector', 's3.view.treeview', 's3.view.listview']);
goog.addDependency("../../s3/deps.js", [], []);
goog.addDependency("../../s3/load.js", ['s3.load'], ['downtown.Loader']);
goog.addDependency("../../s3/S3.js", ['s3.S3'], ['s3.load']);
goog.addDependency("../../s3/client/S3Client.js", ['s3.client.S3Client'], ['s3.S3', 's3.model.LoginUser']);
goog.addDependency("../../s3/client/S3Client.js", ['s3.client.S3Client'], ['s3.S3']);
goog.addDependency("../../s3/model/Bucket.js", ['s3.model.Bucket'], []);
goog.addDependency("../../s3/model/CommonPrefixes.js", ['s3.model.CommonPrefixes'], []);
goog.addDependency("../../s3/model/Contents.js", ['s3.model.Contents'], ['s3.model.Owner']);
Expand All @@ -141,7 +141,9 @@ goog.addDependency("../../s3/model/Owner.js", ['s3.model.Owner'], []);
goog.addDependency("../../s3/parser/XmlParser.js", ['s3.parser.XmlParser'], ['s3.model.Owner', 's3.model.Contents', 's3.model.ListBucketResult', 's3.model.CommonPrefixes', 's3.model.ListAllMyBucketsResult']);
goog.addDependency("../../s3/view/bucketselector/BucketSelectView.js", ['s3.view.bucketselector.BucketSelectView'], ['downtown.Loader', 'downtown.EventBus']);
goog.addDependency("../../s3/view/bucketselector/ui.bucketselector.js", ['s3.view.bucketselector'], ['s3.view.bucketselector.BucketSelectView']);
goog.addDependency("../../s3/view/listview/s3listview.js", [], []);
goog.addDependency("../../s3/view/listview/ListView.js", ['s3.view.listview.ListView'], ['downtown.Loader']);
goog.addDependency("../../s3/view/listview/ui.s3list.js", ['s3.view.listview'], ['s3.view.listview.ListView']);
goog.addDependency("../../s3/view/login/LoginView.js", ['s3.view.login.LoginView'], ['downtown.Loader', 'downtown.EventBus', 's3.model.LoginUser']);
goog.addDependency("../../s3/view/login/ui.s3login.js", ['s3.view.login'], ['s3.view.login.LoginView']);
goog.addDependency("../../s3/view/treeview/s3treeview.js", [], []);
goog.addDependency("../../s3/view/treeview/TreeView.js", ['s3.view.treeview.TreeView'], ['downtown.Loader']);
goog.addDependency("../../s3/view/treeview/ui.s3tree.js", ['s3.view.treeview'], ['s3.view.treeview.TreeView']);
7 changes: 7 additions & 0 deletions s3tree/js/s3/load.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,10 @@ downtown.Loader.loadJs("lib/util/sha1");

downtown.Loader.loadCss("lib/jquery/themes/base/jquery.ui.all");

downtown.Loader.loadJs("lib/jquery/jquery.treeview/jquery.treeview");
downtown.Loader.loadCss("lib/jquery/jquery.treeview/jquery.treeview");

downtown.Loader.loadJs("lib/jquery/jquery.datatable/js/jquery.dataTables");
downtown.Loader.loadCss("lib/jquery/jquery.datatable/css/demo_table");


19 changes: 18 additions & 1 deletion s3tree/js/s3/model/Bucket.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@
goog.provide("s3.model.Bucket");
/**
* @constructor
* @param {s3.client.S3Client}
* client
*/
s3.model.Bucket = function() {
s3.model.Bucket = function(client) {
this.Name = "";
this.CreationDate = "";
this.client = client;
};

(function($) {

s3.model.Bucket.prototype.loadBucket = function(option) {
var self = this;
this.client.list(this.Name, null, "", "/", {
success : function(data) {
var result = s3.parser.XmlParser.parseListBucketResult(data,
self.client);
option.success(result);
},
error : function(req, status) {
option.error(req.status);
}
});
};

}(jQuery));
20 changes: 19 additions & 1 deletion s3tree/js/s3/model/CommonPrefixes.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@ goog.provide("s3.model.CommonPrefixes");
* @constructor
* @param {s3.ListBucketResult}
* parent
* @param {s3.client.S3Client}
* client
*/
s3.model.CommonPrefixes = function(parent) {
s3.model.CommonPrefixes = function(parent, client) {
this.parent = parent;
this.Prefix = "";
this.bucket = "";
this.folder = true;
this.client = client;
};

(function(undefined) {
Expand All @@ -17,4 +21,18 @@ s3.model.CommonPrefixes = function(parent) {
this.Prefix.length - 1);
};

s3.model.CommonPrefixes.prototype.loadBucket = function(options) {
var self = this;
this.client.list(this.bucket, null, this.Prefix, "/", {
success : function(data) {
var result = s3.parser.XmlParser.parseListBucketResult(data,
self.client);
options.success(result);
},
error : function(req, status) {
options.error(req, status);
}
});
};

}());
31 changes: 26 additions & 5 deletions s3tree/js/s3/model/ListAllMyBucketsResult.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,35 @@ goog.provide("s3.model.ListAllMyBucketsResult");
goog.require("s3.model.Owner");
goog.require("s3.model.Bucket");

/**
* @constructor
* @param {s3.client.S3Client}
* client
*/
s3.model.ListAllMyBucketsResult = function(client) {
this.Owner = new s3.model.Owner();
this.Buckets = [];
this.client = client;
};

(function($, undefined) {

/**
* @constructor
*
* @param {String}
* name
* @returns {s3.model.Bucket}
*/
s3.model.ListAllMyBucketsResult = function() {
this.Owner = new s3.model.Owner();
this.Buckets = [];
s3.model.ListAllMyBucketsResult.prototype.find = function(name) {
if (!name) {
return null;
}
var selected = null;
$(this.Buckets).each(function(i, bucket) {
if (bucket.Name == name) {
selected = bucket;
}
});
return selected;
};

}(jQuery));
2 changes: 1 addition & 1 deletion s3tree/js/s3/model/LoginUser.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ s3.model.LoginUser.prototype.loadBuckets = function(callbacks) {
client.bucketsList({
dataType : "xml",
success : function(xml) {
var backetList = s3.parser.XmlParser.parseListAllMyBucketsResult(xml);
var backetList = s3.parser.XmlParser.parseListAllMyBucketsResult(xml,client);
callbacks.success(backetList);
},
error : function(request, status) {
Expand Down
24 changes: 13 additions & 11 deletions s3tree/js/s3/parser/XmlParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ s3.parser.XmlParser = function() {

(function($) {

s3.parser.XmlParser.parseListAllMyBucketsResult = function(xml) {
var result = new s3.model.ListAllMyBucketsResult();
s3.parser.XmlParser.parseListAllMyBucketsResult = function(xml, client) {
var result = new s3.model.ListAllMyBucketsResult(client);
result.Owner.ID = $(xml).find("Owner > ID").text();
result.Owner.DisplayName = $(xml).find("Owner > DisplayName").text();
$(xml).find("Bucket").each(function(i, xml) {
var bucket = new s3.model.Bucket();
var bucket = new s3.model.Bucket(client);
bucket.CreationDate = $(xml).find("CreateDate").text();
bucket.Name = $(xml).find("Name").text();
result.Buckets.push(bucket);
Expand All @@ -33,7 +33,7 @@ s3.parser.XmlParser = function() {
* @param xml
* @returns {ListBucketResult}
*/
s3.parser.XmlParser.parseListBucketResult = function(xml) {
s3.parser.XmlParser.parseListBucketResult = function(xml, client) {
var listBucketResult = new s3.model.ListBucketResult();
listBucketResult.Name = $(xml).find("ListBucketResult > Name").text();
listBucketResult.Prefix = $(xml).find("ListBucketResult > Prefix").text();
Expand All @@ -45,12 +45,14 @@ s3.parser.XmlParser = function() {
listBucketResult.IsTruncated = $(xml)
.find("ListBucketResult > IsTruncated").text();

$(xml).find("ListBucketResult > Contents").each(function(index, contents) {
var conetnts = XmlParser.parseContents(listBucketResult, contents);
listBucketResult.ContentsList.push(conetnts);
});
$(xml).find("ListBucketResult > Contents").each(
function(index, contents) {
var conetnts = s3.parser.XmlParser.parseContents(listBucketResult,
contents, client);
listBucketResult.ContentsList.push(conetnts);
});
$(xml).find("ListBucketResult > CommonPrefixes").each(function(index, xml) {
var prefix = new s3.model.CommonPrefixes(listBucketResult);
var prefix = new s3.model.CommonPrefixes(listBucketResult, client);
prefix.Prefix = $(xml).find("Prefix").text();
listBucketResult.ContentsList.push(prefix);
});
Expand All @@ -65,8 +67,8 @@ s3.parser.XmlParser = function() {
* xml
* @returns {Contents}
*/
s3.parser.XmlParser.parseContents = function(listBucketResult, xml) {
var contents = new Contents(listBucketResult);
s3.parser.XmlParser.parseContents = function(listBucketResult, xml, client) {
var contents = new s3.model.Contents(listBucketResult, client);
contents.Key = $(xml).find("Key").text();
contents.Date = new Date($(xml).find("Date").text());
contents.ETag = $(xml).find("ETag").text();
Expand Down
12 changes: 10 additions & 2 deletions s3tree/js/s3/view/bucketselector/BucketSelectView.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,18 @@ goog.inherits(s3.view.bucketselector.BucketSelectView, Backbone.View);
downtown.Loader.loadHtml("s3/view/bucketselector/list", function(src) {
var html = $($.render(self.model, src));
html.appendTo(self.el);
self.bindEvent();
});
};
s3.view.bucketselector.BucketSelectView.bingEvent = function() {

s3.view.bucketselector.BucketSelectView.prototype.bindEvent = function() {
var self = this;
$(this.el).find(".bucketselect").bind("change", function(event) {
var bucketName = $(event.target).find("option:selected").attr("bucket");
var bucket = self.model.find(bucketName);
if (bucket) {
self.eventBus.trigger("bucket_change", bucket);
}
});
};

}(jQuery));
2 changes: 1 addition & 1 deletion s3tree/js/s3/view/bucketselector/list.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="bucketselector ui-widget">
<div class="ui-widget-content">
<select class="bucketselect">
<select class="bucketselect" style="width: 100%">
<option>-</option>
{{#each Buckets}}
<option class="
Expand Down
65 changes: 65 additions & 0 deletions s3tree/js/s3/view/listview/ListView.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
goog.provide("s3.view.listview.ListView");

goog.require("downtown.Loader");

/**
* @constructor
*/
s3.view.listview.ListView = function(attr) {
Backbone.View.call(this, attr);
this.eventBus = new downtown.EventBus();
if (attr.eventBus) {
this.eventBus = attr.eventBus;
}

};
goog.inherits(s3.view.listview.ListView, Backbone.View);

(function($, undefined) {
s3.view.listview.ListView.prototype.bindEventBus = function() {
var self = this;
this.eventBus.bind("prefix_change", function(event, prefix) {
// console.log(prefix);
self.s3client = prefix.client;
self.bucket = prefix.bucket;
prefix.loadBucket({
success : function(result) {
self.model = result;
self.render();
},
error : function(req, status) {
alert("Bucket Load Error " + status);
}
});
});
};

s3.view.listview.ListView.prototype.render = function() {
var self = this;
downtown.Loader.loadHtml("s3/view/listview/list", function(src) {
$(self.el).children().remove();
var html = $($.render(self.model, src));
$(html).appendTo(self.el);
var table = $(html).find("table");

$(table).dataTable({
"bScrollInfinite" : true,
"bScrollCollapse" : true,
"sScrollY" : "200px"
});
self.bindEvent();
});
};

s3.view.listview.ListView.prototype.bindEvent = function() {
var self = this;
$(self.el).find("a").bind("dblclick", function(event) {
var key = $(this).attr("key");
var url = self.s3client.createGetUrl(self.bucket, key);
window.open(url);
// alert(url);
event.preventDefault();
});
};

}(jQuery));
Loading

0 comments on commit 115e0bb

Please sign in to comment.