29:716c65abb699
Anton Shestakov <engored@ya.ru>, Fri, 11 Jan 2013 17:34:22 +0900
Added tag 0.2.2 for changeset ccae9f5abc14

next change 33:9dfe8668e7fe
previous change 26:17f590c312bd

static/js/ui.js

Permissions: -rw-r--r--

Other formats: Feeds:
$(function() {
window.fruitbar = new Backbone.View();
fruitbar.tasks = new Tasks();
fruitbar.projects = new Projects();
fruitbar.router = new Router();
fruitbar.xhrs = [];
fruitbar.xhrs.done = function() {
return _(this).all(function(xhr) {
return xhr.readyState == 4;
});
};
fruitbar.xhrs.abort = function() {
_(this).each(function(xhr) {
xhr.abort();
});
this.length = 0;
};
fruitbar.fetchAll = function(url) {
return Backbone.ajax({
url: url,
type: 'GET',
dataType: 'json'
}).done(function(data) {
fruitbar.projects.update(data['projects']);
fruitbar.tasks.update(data['tasks']);
});
};
fruitbar.workspaceTitleDisplayer = new Displayer({
el: $('.workspace-title')
});
fruitbar.projectCounter = new CollectionCounterView({
el: $('.project-counter'),
collection: fruitbar.projects,
plurals: ['project', 'projects']
});
fruitbar.projectsView = new ProjectsView({
el: $('.projects'),
collection: fruitbar.projects,
tasks: fruitbar.tasks,
templates: {
project: $('#project-template').html(),
task: $('#task-template').html()
},
controls: {
create: $('.btn-new-project')
}
});
fruitbar.on('workspace', function(workspace) {
$('body').stop().animate({opacity: 0});
this.xhrs.abort();
this.workspace = workspace;
this.tasks.url = '/' + encodeURIComponent(workspace) + '/tasks/';
this.projects.url = '/' + encodeURIComponent(workspace) + '/projects/';
this.xhrs.push(this.fetchAll('/' + encodeURIComponent(workspace) + '/all/'));
_(this.xhrs).each(function(fetch, index, xhrs) {
fetch.then(function() {
if (xhrs.done()) {
fruitbar.workspaceTitleDisplayer.render(workspace);
$('body').stop().animate({opacity: 1});
}
});
});
});
fruitbar.once('workspace', function() {
window.setInterval(function() {
fruitbar.xhrs.push(fruitbar.fetchAll('/' + encodeURIComponent(fruitbar.workspace) + '/all/'));
}, 60000);
});
Backbone.history.start();
});