# 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();
 });