diff options
author | Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz> | 2012-06-28 19:49:45 +0000 |
---|---|---|
committer | Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz> | 2012-06-28 19:49:45 +0000 |
commit | 5e54ba7aa27b95d1e0568693915e735ab8058ff7 (patch) | |
tree | 1c2743605a6cce00edb82b5f15b9a3f08f6ace30 /web/js/labitrack.d/43-browse.js | |
download | labitrack-5e54ba7aa27b95d1e0568693915e735ab8058ff7.tar.gz labitrack-5e54ba7aa27b95d1e0568693915e735ab8058ff7.tar.xz labitrack-5e54ba7aa27b95d1e0568693915e735ab8058ff7.zip |
Initial version
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz>
Diffstat (limited to 'web/js/labitrack.d/43-browse.js')
-rw-r--r-- | web/js/labitrack.d/43-browse.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/web/js/labitrack.d/43-browse.js b/web/js/labitrack.d/43-browse.js new file mode 100644 index 0000000..7605e78 --- /dev/null +++ b/web/js/labitrack.d/43-browse.js @@ -0,0 +1,104 @@ +(function(){ + function hdl_add(){ + console.log('add'); + } + + function hdl_remove(){ + console.log('remove'); + } + + function hdl_reset(){ + console.log('reset'); + this.render(); + } + + var collection = Backbone.Collection.extend({ + model: λ.o, + url: function(){ + return '/browse/'+(this.nextpage++)+'.json'; + }, + fetchpage: function(page){ + if (page) { + this.nextpage = page; + } + this.fetch();; + }, + comparator: function(object){ + return object.id; + }, + parse: function(data){ + this.stats = {count: data.count}; + console.log(data); + return data.objects; + } + }); + + var browse = Backbone.View.extend({ + initialize: function() { + var messages = this.collection; + messages.bind("reset", hdl_reset, this); + messages.bind("add", hdl_add, this); + messages.bind("remove", hdl_remove, this); + }, + render: function(page){ + var stats = this.collection.stats; + var pages = []; + var dots = { id: 'dots', label: '…' }; + pages.push({ + id: 'first', + link: '/browse', + label: '|←', + classes: 'prev' + }); + pages.push({ + id: 'prev', + link: '/browse', + label: '←' + }); + pages.push(dots); + pgno = 1; + pages.push({ + id: pgno, + link: '/browse/'+pgno, + label: pgno + }); + pages.push(dots); + pages.push({ + id: 'next', + link: '/browse', + label: '→' + }); + pages.push({ + id: 'last', + link: '/browse', + label: '→|', + classes: 'next' + }); + var data = { + rows: this.collection.toJSON(), + pages: pages + }; + console.log(data); + $(this.el).html(λ.template('objecttable', data)); + } + }); + + var collection = new collection(); + + var view = λ.routableview.extend({ + initialize: function() { + λ.routableview.prototype.initialize.call(this); + this.browse = new browse({collection: collection}); + }, + render: function (page) { + page || (page = 1); + λ.setcontent('browse', {page: page}); + this.browse.el = $(this.el).find('#objecttable_ph')[0]; + this.browse.render(page); + this.browse.collection.fetchpage(page); + } + }); + + view.route('browse'); + view.route('browse/:page'); +}()); |