From 5e54ba7aa27b95d1e0568693915e735ab8058ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= Date: Thu, 28 Jun 2012 19:49:45 +0000 Subject: Initial version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Asbjørn Sloth Tønnesen --- web/js/labitrack.d/43-browse.js | 104 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 web/js/labitrack.d/43-browse.js (limited to 'web/js/labitrack.d/43-browse.js') 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'); +}()); -- cgit v1.2.1