summaryrefslogtreecommitdiffstats
path: root/pyload/web/app/scripts/models/TreeCollection.js
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/web/app/scripts/models/TreeCollection.js')
-rw-r--r--pyload/web/app/scripts/models/TreeCollection.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/pyload/web/app/scripts/models/TreeCollection.js b/pyload/web/app/scripts/models/TreeCollection.js
new file mode 100644
index 000000000..2f761e6cc
--- /dev/null
+++ b/pyload/web/app/scripts/models/TreeCollection.js
@@ -0,0 +1,50 @@
+define(['jquery', 'backbone', 'underscore', 'app', 'models/Package', 'collections/FileList', 'collections/PackageList'],
+ function($, Backbone, _, App, Package, FileList, PackageList) {
+ 'use strict';
+
+ // TreeCollection
+ // A Model and not a collection, aggregates other collections
+ return Backbone.Model.extend({
+
+ defaults: {
+ root: null,
+ packages: null,
+ files: null
+ },
+
+ initialize: function() {
+
+ },
+
+ fetch: function(options) {
+ options || (options = {});
+ var pid = options.pid || -1;
+
+ options = App.apiRequest(
+ 'getFileTree/' + pid,
+ {full: false},
+ options);
+
+ console.log('Fetching package tree ' + pid);
+ return Backbone.Model.prototype.fetch.call(this, options);
+ },
+
+ // Parse the response and updates the collections
+ parse: function(resp) {
+ var ret = {};
+ if (!this.has('packages'))
+ ret.packages = new PackageList(_.values(resp.packages));
+ else
+ this.get('packages').set(_.values(resp.packages));
+
+ if (!this.has('files'))
+ ret.files = new FileList(_.values(resp.files));
+ else
+ this.get('files').set(_.values(resp.files));
+
+ ret.root = new Package(resp.root);
+ return ret;
+ }
+
+ });
+ }); \ No newline at end of file