# HG changeset patch # User Anton Shestakov <engored@ya.ru> # Date 1356536089 -32400 # Node ID 39ac2486b9d3b8ab82b0bf9c0225220cf1b3ef09 # Parent 5c5d433b3a14e5fff475ff71725a8f46eafab533 Use events to not smear workspaces all over the code. diff -r 5c5d433b3a14 -r 39ac2486b9d3 static/js/framework/collections.js --- a/static/js/framework/collections.js Thu Dec 27 00:12:30 2012 +0900 +++ b/static/js/framework/collections.js Thu Dec 27 00:34:49 2012 +0900 @@ -1,13 +1,7 @@ var Projects = Backbone.Collection.extend({ - model: Project, - url: function() { - return '/' + encodeURIComponent(fruitbar.workspace) + '/projects/'; - } + model: Project }); var Tasks = Backbone.Collection.extend({ - model: Task, - url: function() { - return '/' + encodeURIComponent(fruitbar.workspace) + '/tasks/'; - } + model: Task }); diff -r 5c5d433b3a14 -r 39ac2486b9d3 static/js/framework/router.js --- a/static/js/framework/router.js Thu Dec 27 00:12:30 2012 +0900 +++ b/static/js/framework/router.js Thu Dec 27 00:34:49 2012 +0900 @@ -16,9 +16,6 @@ }, setWorkspace: function(workspace) { - fruitbar.workspace = workspace; - - fruitbar.tasks.fetch(); - fruitbar.projects.fetch(); + fruitbar.trigger('workspace', workspace); } }); diff -r 5c5d433b3a14 -r 39ac2486b9d3 static/js/ui.js --- a/static/js/ui.js Thu Dec 27 00:12:30 2012 +0900 +++ b/static/js/ui.js Thu Dec 27 00:34:49 2012 +0900 @@ -1,5 +1,5 @@ $(function() { - window.fruitbar = {workspace: undefined}; + window.fruitbar = new Backbone.View(); fruitbar.tasks = new Tasks(); fruitbar.projects = new Projects(); fruitbar.router = new Router(); @@ -22,8 +22,18 @@ } }); - Backbone.history.start(); + fruitbar.on('workspace', function(workspace) { + this.tasks.url = '/' + encodeURIComponent(workspace) + '/tasks/'; + this.projects.url = '/' + encodeURIComponent(workspace) + '/projects/'; + + this.tasks.fetch(); + this.projects.fetch(); + }); - window.setInterval(function() {fruitbar.projects.fetch({update: true});}, 60000); - window.setInterval(function() {fruitbar.tasks.fetch({update: true});}, 60000); + fruitbar.once('workspace', function() { + window.setInterval(function() {fruitbar.projects.fetch({update: true});}, 60000); + window.setInterval(function() {fruitbar.tasks.fetch({update: true});}, 60000); + }); + + Backbone.history.start(); });