bookmarks/js/apps/MainRouter.js

65 lines
1.8 KiB
JavaScript

import Backbone from 'backbone';
const Marionette = Backbone.Marionette;
const Radio = Backbone.Radio;
export default Marionette.AppRouter.extend({
controller: {
index: function() {
setTimeout(function() {
Backbone.history.navigate('all', { trigger: true });
}, 1);
},
all: function() {
this.app.bookmarks.setFetchQuery({});
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'all');
},
favorites: function() {
Radio.channel('nav').trigger('navigate', 'favorites');
},
shared: function() {
this.app.bookmarks.setFetchQuery({});
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'shared');
},
tags: function(tagString) {
var tags = tagString ? tagString.split(',') : [];
this.app.bookmarks.setFetchQuery({ tags: tags, conjunction: 'and' });
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'tags', tags);
},
folder: function(folderId) {
this.app.bookmarks.setFetchQuery({ folder: folderId });
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'folder', folderId);
},
search: function(query) {
this.app.bookmarks.setFetchQuery({
search: decodeURIComponent(query).split(' '),
conjunction: 'and'
});
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'search', query);
},
untagged: function() {
this.app.bookmarks.setFetchQuery({ untagged: true });
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'untagged');
}
},
appRoutes: {
'': 'index',
all: 'all',
favorites: 'favorites',
shared: 'shared',
'tags(/*tags)': 'tags',
'folder/:folderId': 'folder',
'search/:query': 'search',
untagged: 'untagged'
},
initialize: function(options) {
this.controller.app = options.app;
}
});