[PATCH conductor] Autoupdating deployments list on Pools#index

Tomas Sedovic tsedovic at redhat.com
Fri Dec 16 11:29:01 UTC 2011


On 12/13/2011 01:33 PM, ifarkas at redhat.com wrote:
> From: Imre Farkas<ifarkas at redhat.com>
>
> ---
>   src/app/models/deployment.rb               |    1 +
>   src/app/views/pools/_deployments.html.haml |   24 ++++++++++++++-
>   src/public/javascripts/backbone/routers.js |   27 ++++++++++-------
>   src/public/javascripts/backbone/views.js   |   44 +++++++++++++++++++---------
>   4 files changed, 70 insertions(+), 26 deletions(-)
>
> diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
> index 1a799b8..7b5ce76 100644
> --- a/src/app/models/deployment.rb
> +++ b/src/app/models/deployment.rb
> @@ -398,6 +398,7 @@ class Deployment<  ActiveRecord::Base
>         :deployment_state =>  deployment_state,
>         :instances_count =>  instances.count,
>         :uptime =>  ApplicationHelper.count_uptime(uptime_1st_instance),
> +      :global_uptime =>  ApplicationHelper.count_uptime(uptime_all),
>         :pool =>  {
>           :name =>  pool.name,
>           :id =>  pool.id,
> diff --git a/src/app/views/pools/_deployments.html.haml b/src/app/views/pools/_deployments.html.haml
> index 70cfea0..af0b8b8 100644
> --- a/src/app/views/pools/_deployments.html.haml
> +++ b/src/app/views/pools/_deployments.html.haml
> @@ -14,4 +14,26 @@
>
>               %li.left
>                 %dt=t :uptime
> -              %dd= count_uptime(deployment.uptime_1st_instance)
> \ No newline at end of file
> +              %dd= count_uptime(deployment.uptime_1st_instance)
> +
> +%script#deploymentPrettyTemplate{ :type =>  'text/x-jquery-tmpl' }
> +  :plain
> +<li class="deployment">
> +<h3 class="name">
> +<a href="#{deployment_path('replace_id').sub('replace_id', '${id}')}">${name}</a>
> +        #{t 'pools.index.global_uptime'}
> +        ${global_uptime}
> +</h3>
> +<dl class="statistics">
> +<ul>
> +<li class="right">
> +<dt class="instances count">#{t 'instances.instances'}</dt>
> +<dd>${instances_count}</dd>
> +</li>
> +<li class="left">
> +<dt>#{t :uptime}</dt>
> +<dd>${uptime}</dd>
> +</li>
> +</ul>
> +</dl>
> +</li>
> diff --git a/src/public/javascripts/backbone/routers.js b/src/public/javascripts/backbone/routers.js
> index c92ea3d..cb55730 100644
> --- a/src/public/javascripts/backbone/routers.js
> +++ b/src/public/javascripts/backbone/routers.js
> @@ -12,18 +12,23 @@ Conductor.Routers.Pools = Backbone.Router.extend({
>       setInterval(function() {
>         var view = new Conductor.Views.PoolsIndex();
>
> -      switch(view.currentTab()) {
> -      case 'pools':
> -        view.collection = new Conductor.Models.Pools();
> -        break;
> -      case 'deployments':
> +      if (view.currentView() == 'table') {
> +        switch(view.currentTab()) {
> +        case 'pools':
> +          view.collection = new Conductor.Models.Pools();
> +          break;
> +        case 'deployments':
> +          view.collection = new Conductor.Models.Deployments();
> +          break;
> +        case 'instances':
> +          view.collection = new Conductor.Models.Instances();
> +          break;
> +        default:
> +          return;
> +        }
> +      }
> +      else if (view.currentView() == 'pretty') {
>           view.collection = new Conductor.Models.Deployments();
> -        break;
> -      case 'instances':
> -        view.collection = new Conductor.Models.Instances();
> -        break;
> -      default:
> -        return;
>         }
>
>         view.collection.bind('change', function() { view.render() });
> diff --git a/src/public/javascripts/backbone/views.js b/src/public/javascripts/backbone/views.js
> index 488d083..3e2776d 100644
> --- a/src/public/javascripts/backbone/views.js
> +++ b/src/public/javascripts/backbone/views.js
> @@ -4,6 +4,15 @@ Conductor.Views = Conductor.Views || {}
>   Conductor.Views.PoolsIndex = Backbone.View.extend({
>     el: '#content',
>
> +  currentView: function() {
> +    if ($('form.filterable-data').length>  0) {
> +      return 'table'
> +    }
> +    else if ($('.deployment-array').length>  0) {
> +      return 'pretty'
> +    }
> +  },
> +
>     currentTab: function() {
>       if($('#details_pools.active').length>  0) {
>         return 'pools';
> @@ -17,21 +26,33 @@ Conductor.Views.PoolsIndex = Backbone.View.extend({
>     },
>
>     template: function() {
> -    switch(this.currentTab()) {
> -      case 'pools': return $('#poolTemplate');
> -      case 'deployments': return $('#deploymentTemplate');
> -      case 'instances': return $('#instanceTemplate');
> +    if (this.currentView() == 'table') {
> +      switch(this.currentTab()) {
> +        case 'pools': return $('#poolTemplate');
> +        case 'deployments': return $('#deploymentTemplate');
> +        case 'instances': return $('#instanceTemplate');
> +      }
> +    }
> +    else if (this.currentView() == 'pretty') {
> +      return $('#deploymentPrettyTemplate');
>       }
>     },
>
>     render: function() {
>       var $template = this.template();
> -    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.collection.toJSON()))
> -    Conductor.restoreCheckboxes(checkboxes, 'td :checkbox', $table);
> +    if (this.currentView() == 'table') {
> +      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.collection.toJSON()))
> +      Conductor.restoreCheckboxes(checkboxes, 'td :checkbox', $table);
> +    }
> +    else if (this.currentView() == 'pretty') {
> +      $deployments = this.$('ul.deployment-array');
> +      var $template = this.template();
> +      $deployments.empty().append($template.tmpl(this.collection.toJSON()))
> +    }
>     },
>   });
>
> @@ -81,11 +102,6 @@ Conductor.Views.DeploymentsShow = Backbone.View.extend({
>
>     el: '#content',
>
> -  currentTab: function() {
> -    if($('#details_instances.active').length>  0) {
> -      return 'instances';
> -    }
> -  },
>     render: function() {
>       var $instances = this.$('ul.instances-array');
>       if($instances.length === 0) {

ACK

Thomas
-- 
No trees were killed to send this message, but a large number of 
electrons were terribly inconvenienced.



More information about the aeolus-devel mailing list