From: Tomas Sedovic <tsedovic(a)redhat.com>
https://www.aeolusproject.org/redmine/issues/2248
---
src/app/controllers/pools_controller.rb | 2 +-
src/app/models/pool.rb | 8 +++++++-
src/public/javascripts/backbone/routers.js | 5 +++--
src/public/javascripts/backbone/views.js | 9 ++++++++-
4 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
index 796a99a..5d0c8be 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -85,7 +85,7 @@ class PoolsController < ApplicationController
respond_to do |format|
format.html { render :action => :show}
format.js { render :partial => @view }
- format.json { render :json => @pool }
+ format.json { render :json => @pool.as_json(:with_deployments => true) }
end
end
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 0896788..27eb217 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -107,7 +107,7 @@ class Pool < ActiveRecord::Base
end
def as_json(options={})
- super(options).merge({
+ result = super(options).merge({
:statistics => statistics,
:deployments_count => deployments.count,
:href => Rails.application.routes.url_helpers.pool_path(id),
@@ -117,6 +117,12 @@ class Pool < ActiveRecord::Base
},
})
+
+ if options[:with_deployments]
+ result[:deployments] = deployments.map {|d| d.as_json}
+ end
+
+ result
end
def provider_image_map
diff --git a/src/public/javascripts/backbone/routers.js
b/src/public/javascripts/backbone/routers.js
index 62de835..07eb092 100644
--- a/src/public/javascripts/backbone/routers.js
+++ b/src/public/javascripts/backbone/routers.js
@@ -41,9 +41,10 @@ Conductor.Routers.Pools = Backbone.Router.extend({
var pool = new Conductor.Models.Pool({ id: id });
var view = new Conductor.Views.PoolsShow({ model: pool });
- pool.bind('change', function() { view.render() });
- setInterval(function() { pool.fetch() }, Conductor.AJAX_REFRESH_INTERVAL);
+ setInterval(function() {
+ pool.fetch({ success: function() { view.render(); } })
+ }, Conductor.AJAX_REFRESH_INTERVAL);
},
});
diff --git a/src/public/javascripts/backbone/views.js
b/src/public/javascripts/backbone/views.js
index f456a85..cc0fb99 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -40,7 +40,14 @@ Conductor.Views.PoolsShow = Backbone.View.extend({
render: function() {
this.$('h1.pools').text(this.model.get('name') + ' Pool');
- return this;
+
+ var $template = $('#deploymentTemplate');
+ var $table = this.$('table.checkbox_table > tbody');
+ if($table.length === 0 || $template.length === 0) return;
+
+ var checkboxes = Conductor.saveCheckboxes('td :checkbox', $table);
+ $table.empty().append($template.tmpl(this.model.get('deployments')))
+ Conductor.restoreCheckboxes(checkboxes, 'td :checkbox', $table);
},
});
--
1.7.6