diff options
Diffstat (limited to 'web/js/labitrack.d/40-router.js')
-rw-r--r-- | web/js/labitrack.d/40-router.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/web/js/labitrack.d/40-router.js b/web/js/labitrack.d/40-router.js new file mode 100644 index 0000000..153e0b1 --- /dev/null +++ b/web/js/labitrack.d/40-router.js @@ -0,0 +1,58 @@ +(function(){ + var r = λ.r = new Backbone.Router(); + + function handle_click(event) { + console.log('click'); + if (!Modernizr.history) return true; + event.preventDefault(); + var href = $(event.target).attr('href'); + if (href !== undef && href[0] === '/') { + Backbone.history.navigate(href, true); + } + } + + var mainview = Backbone.View.extend({ + events: { + 'click a': 'handleClick' + }, + handleClick: handle_click, + initialize: function(){ + _(this).bindAll('handleClick', 'render'); + } + }); + $(function(){ + new mainview({el: document.body}); + }); + + var view = Backbone.View.extend({ + el: '#tmplcontent', + events: { + 'click a': 'handleClick' + }, + handleClick: handle_click, + initialize: function(){ + _(this).bindAll('handleClick', 'render'); + } + }); + + function route_handler() + { + var t = this; + if (t.instance === undef) { + t.instance = new t(); + } + t.instance.render.apply(t.instance, arguments); + }; + + view.route = function(route, name) + { + name || (name = route); + var t = this; + λ.r.route(route, name, function(){ + λ.topbar.update(); + route_handler.apply(t, arguments); + }); + }; + + λ.routableview = view; +}()); |