From: Imre Farkas ifarkas@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();
On 01/05/2012 04:23 PM, ifarkas@redhat.com wrote:
From: Imre Farkasifarkas@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();
Nice one! ACK
aeolus-devel@lists.fedorahosted.org