Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(991)

Unified Diff: app/subapps/browser/browser.js

Issue 9003043: Adds filter controls to the search in the browser
Patch Set: Adds filter controls to the search in the browser Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: app/subapps/browser/browser.js
=== modified file 'app/subapps/browser/browser.js'
--- app/subapps/browser/browser.js 2013-04-25 23:35:39 +0000
+++ app/subapps/browser/browser.js 2013-04-28 19:25:05 +0000
@@ -49,6 +49,15 @@
_getStateUrl: function(change) {
var urlParts = ['/bws'];
this._oldState = this._viewState;
+
+ // If there are changes to the filters, we need to update our filter
+ // object first, and then generate a new query string for the state to
+ // track.
+ if (change.filter) {
+ this._filter.update(change.filter);
+ change.querystring = this._filter.genQueryString();
+ }
+
this._viewState = Y.merge(this._viewState, change);
urlParts.push(this._viewState.viewmode);
@@ -76,8 +85,13 @@
config.
*/
_getViewCfg: function(cfg) {
+ // We always add the _filter data to every request because most of them
+ // need to know if there's a search term for rendering the search
+ // input and later the charm details will need to know for selecting
+ // the proper backup icon.
return Y.merge(cfg, {
db: this.get('db'),
+ filters: this._filter.getFilterData(),
store: this.get('store')
});
},
@@ -220,6 +234,8 @@
} else {
this._viewState.querystring = null;
}
+
+ this._filter.update(query);
},
/**
@@ -258,6 +274,7 @@
// charms are selected.
this._cacheCharms = new models.BrowserCharmList();
this._initState();
+ this._filter = new models.browser.Filter();
// Listen for navigate events from any views we're rendering.
this.on('*:viewNavigate', function(ev) {
@@ -363,14 +380,7 @@
*/
renderSearchResults: function(req, res, next) {
var container = this.get('container'),
- extraCfg = {},
- query;
- if (req.query) {
- query = req.query;
- } else {
- // If there's no querystring, we need a default "empty" search.
- query = {text: ''};
- }
+ extraCfg = {};
if (req.params.viewmode === 'fullscreen') {
extraCfg.renderTo = container.one('.bws-view-data');
@@ -378,9 +388,10 @@
} else {
extraCfg.renderTo = container.one('.bws-content');
}
- extraCfg.text = query.text;
+
this._search = new Y.juju.browser.views.BrowserSearchView(
this._getViewCfg(extraCfg));
+
this._search.render();
this._search.addTarget(this);
},
@@ -651,6 +662,7 @@
}, '0.1.0', {
requires: [
+ 'juju-browser-models',
'juju-charm-store',
'juju-models',
'querystring',

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b