diff options
author | 2012-12-23 20:10:01 +0100 | |
---|---|---|
committer | 2012-12-23 20:10:01 +0100 | |
commit | b18fa59e40ebe9c03f81d49cf53a85bc728de8a7 (patch) | |
tree | cf28b8bb661cbb95592be89177cf82a325a0f6ea /module/web/static/js/models | |
parent | cleaned the settings page (diff) | |
download | pyload-b18fa59e40ebe9c03f81d49cf53a85bc728de8a7.tar.xz |
proper selecting, expanding and rendering of packageViews
Diffstat (limited to 'module/web/static/js/models')
-rw-r--r-- | module/web/static/js/models/Package.js | 21 | ||||
-rw-r--r-- | module/web/static/js/models/TreeCollection.js | 20 |
2 files changed, 26 insertions, 15 deletions
diff --git a/module/web/static/js/models/Package.js b/module/web/static/js/models/Package.js index 64b066dbc..7539b0673 100644 --- a/module/web/static/js/models/Package.js +++ b/module/web/static/js/models/Package.js @@ -22,7 +22,9 @@ define(['jquery', 'backbone', 'underscore', 'collections/FileList', 'require'], fids: null, pids: null, files: null, // Collection - packs: null // Collection + packs: null, // Collection + + selected: false // For Checkbox }, // Model Constructor @@ -51,16 +53,25 @@ define(['jquery', 'backbone', 'underscore', 'collections/FileList', 'require'], return Backbone.Model.prototype.destroy.call(this, options); }, - parse: function(resp, xhr) { + parse: function(resp) { // Package is loaded from tree collection if (_.has(resp, 'root')) { - resp.root.files = new FileList(_.values(resp.files)); + if(!this.has('files')) + resp.root.files = new FileList(_.values(resp.files)); + else + this.get('files').update(_.values(resp.files)); + // circular dependencies needs to be avoided var PackageList = require('collections/PackageList'); - resp.root.packs = new PackageList(_.values(resp.packages)); + + if (!this.has('packs')) + resp.root.packs = new PackageList(_.values(resp.packages)); + else + this.get('packs').update(_.values(resp.packages)); + return resp.root; } - return Backbone.model.prototype.fetch.call(this, resp, xhr); + return Backbone.model.prototype.parse.call(this, resp); }, // Package data is complete when it contains collection for containing files or packs diff --git a/module/web/static/js/models/TreeCollection.js b/module/web/static/js/models/TreeCollection.js index 27d2cefce..5949415c2 100644 --- a/module/web/static/js/models/TreeCollection.js +++ b/module/web/static/js/models/TreeCollection.js @@ -27,20 +27,20 @@ define(['jquery', 'backbone', 'underscore', 'models/Package', 'collections/FileL }, // Parse the response and updates the collections - parse: function(resp, xhr) { - if (this.get('packages') === null) - this.set('packages', new PackageList(_.values(resp.packages))); + parse: function(resp) { + var ret = {}; + if (!this.has('packages')) + ret.packages = new PackageList(_.values(resp.packages)); else - this.packages.update(_.values(resp.packages)); + this.get('files').update(_.values(resp.packages)); - if (this.get('files') === null) - this.set('files', new FileList(_.values(resp.files))); + if (!this.has('files')) + ret.files = new FileList(_.values(resp.files)); else - this.files.update(_.values(resp.files)); + this.get('files').update(_.values(resp.files)); - return { - root: new Package(resp.root) - }; + ret.root = new Package(resp.root); + return ret; } }); |