bookmarks/js/apps/MainRouter.js

65 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-02-08 20:12:23 +00:00
import Backbone from 'backbone';
2018-02-01 21:34:22 +00:00
2018-02-08 20:12:23 +00:00
const Marionette = Backbone.Marionette;
const Radio = Backbone.Radio;
2018-02-01 21:34:22 +00:00
export default Marionette.AppRouter.extend({
2018-02-08 20:12:23 +00:00
controller: {
index: function() {
setTimeout(function() {
Backbone.history.navigate('all', { trigger: true });
2018-02-08 20:12:23 +00:00
}, 1);
},
all: function() {
this.app.bookmarks.setFetchQuery({});
this.app.bookmarks.fetchPage();
2018-02-08 20:12:23 +00:00
Radio.channel('nav').trigger('navigate', 'all');
},
favorites: function() {
Radio.channel('nav').trigger('navigate', 'favorites');
},
shared: function() {
this.app.bookmarks.setFetchQuery({});
this.app.bookmarks.fetchPage();
2018-02-08 20:12:23 +00:00
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();
2018-02-08 20:12:23 +00:00
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);
},
2018-02-08 20:12:23 +00:00
search: function(query) {
this.app.bookmarks.setFetchQuery({
search: decodeURIComponent(query).split(' '),
conjunction: 'and'
});
this.app.bookmarks.fetchPage();
2018-02-08 20:12:23 +00:00
Radio.channel('nav').trigger('navigate', 'search', query);
2018-06-27 22:13:20 +00:00
},
untagged: function() {
this.app.bookmarks.setFetchQuery({ untagged: true });
2018-06-27 22:13:20 +00:00
this.app.bookmarks.fetchPage();
Radio.channel('nav').trigger('navigate', 'untagged');
2018-02-08 20:12:23 +00:00
}
},
appRoutes: {
'': 'index',
all: 'all',
favorites: 'favorites',
shared: 'shared',
2018-02-08 20:12:23 +00:00
'tags(/*tags)': 'tags',
'folder/:folderId': 'folder',
2018-06-27 22:13:20 +00:00
'search/:query': 'search',
untagged: 'untagged'
2018-02-08 20:12:23 +00:00
},
initialize: function(options) {
this.controller.app = options.app;
}
});