From: Imre Farkas<ifarkas(a)redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=770625
---
src/public/javascripts/application.js | 13 ++++++++++++
src/public/javascripts/backbone/models.js | 19 ++++++++++++++---
src/public/javascripts/backbone/routers.js | 3 +-
src/public/javascripts/backbone/views.js | 30 ++++++++++++++++++++++++++++
4 files changed, 60 insertions(+), 5 deletions(-)
diff --git a/src/public/javascripts/application.js
b/src/public/javascripts/application.js
index 04fb4d3..621a175 100644
--- a/src/public/javascripts/application.js
+++ b/src/public/javascripts/application.js
@@ -169,6 +169,19 @@ $.extend(Conductor, {
return prefix + path;
},
+ parameterizedPath: function(url, queryParams) {
+ var result = url;
+
+ if (!$.isEmptyObject(queryParams)) {
+ var params = $.map(queryParams, function(value, key) {
+ return key + '=' + value;
+ });
+ result += '?' + params.join('&');
+ }
+
+ return result;
+ },
+
AJAX_REFRESH_INTERVAL: 30 * 1000,
initializeBackbone: function() {
diff --git a/src/public/javascripts/backbone/models.js
b/src/public/javascripts/backbone/models.js
index 7c48778..d576feb 100644
--- a/src/public/javascripts/backbone/models.js
+++ b/src/public/javascripts/backbone/models.js
@@ -7,17 +7,24 @@ Conductor.Models.Pool = Backbone.Model.extend({
Conductor.Models.Pools = Backbone.Collection.extend({
model: Backbone.Model.Pool,
- url: Conductor.prefixedPath('/pools'),
+ queryParams: {},
+ url: function() {
+ var path = Conductor.prefixedPath('/pools');
+ return Conductor.parameterizedPath(path, this.queryParams);
+ }
});
-
Conductor.Models.Instance = Backbone.Model.extend({
urlRoot: Conductor.prefixedPath('/instances'),
});
Conductor.Models.Instances = Backbone.Collection.extend({
model: Backbone.Model.Instance,
- url: Conductor.prefixedPath('/instances'),
+ queryParams: {},
+ url: function() {
+ var path = Conductor.prefixedPath('/instances');
+ return Conductor.parameterizedPath(path, this.queryParams);
+ }
});
Conductor.Models.Deployment = Backbone.Model.extend({
@@ -32,5 +39,9 @@ Conductor.Models.Deployment = Backbone.Model.extend({
Conductor.Models.Deployments = Backbone.Collection.extend({
model: Backbone.Model.Deployment,
- url: Conductor.prefixedPath('/deployments'),
+ queryParams: {},
+ url: function() {
+ var path = Conductor.prefixedPath('/deployments');
+ return Conductor.parameterizedPath(path, this.queryParams);
+ }
});
diff --git a/src/public/javascripts/backbone/routers.js
b/src/public/javascripts/backbone/routers.js
index cb55730..d7606b7 100644
--- a/src/public/javascripts/backbone/routers.js
+++ b/src/public/javascripts/backbone/routers.js
@@ -31,10 +31,11 @@ Conductor.Routers.Pools = Backbone.Router.extend({
view.collection = new Conductor.Models.Deployments();
}
+ view.collection.queryParams = view.queryParams();
view.collection.bind('change', function() { view.render() });
view.collection.fetch({ success: function() {
- view.collection.trigger('change')
+ view.collection.trigger('change');
}})
}, Conductor.AJAX_REFRESH_INTERVAL);
diff --git a/src/public/javascripts/backbone/views.js
b/src/public/javascripts/backbone/views.js
index 680ca9d..0f38e18 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -38,6 +38,36 @@ Conductor.Views.PoolsIndex = Backbone.View.extend({
}
},
+ urlParams: function() {
+ var paramsData = window.location.search.slice(1).split('&');
+ var params = {};
+ $.each(paramsData, function(index, value){
+ var eqSign = value.search('=');
+ if(eqSign != -1) {
+ params[value.substring(0, eqSign)] = value.substring(eqSign+1);
+ }
+ });
+
+ return params;
+ },
+
+ queryParams: function() {
+ var result = {};
+ var paramsToInclude = [this.currentTab() + '_preset_filter',
this.currentTab() + '_search'];
+ var urlParams = this.urlParams();
+
+ $.each(paramsToInclude, function(paramIndex, paramValue) {
+ for (var urlParamName in urlParams) {
+ if (urlParamName == paramValue) {
+ result[urlParamName] = urlParams[urlParamName];
+ break;
+ }
+ };
+ });
+
+ return result;
+ },
+
render: function() {
var $template = this.template();