[PATCH conductor 5/7] Mustachifying deployments/_list

ifarkas at redhat.com ifarkas at redhat.com
Tue Feb 28 14:53:27 UTC 2012


From: Imre Farkas <ifarkas at redhat.com>

---
 src/app/helpers/mustache_helper.rb                 |   25 +++++++---
 .../deployments/_deployment_row.html.mustache      |   26 +++++++++++
 src/app/views/deployments/_list.html.haml          |   46 ++++---------------
 src/public/javascripts/backbone/views.js           |   11 ++++-
 4 files changed, 63 insertions(+), 45 deletions(-)
 create mode 100644 src/app/views/deployments/_deployment_row.html.mustache

diff --git a/src/app/helpers/mustache_helper.rb b/src/app/helpers/mustache_helper.rb
index 8255c5d..db90ed4 100644
--- a/src/app/helpers/mustache_helper.rb
+++ b/src/app/helpers/mustache_helper.rb
@@ -37,14 +37,23 @@ module MustacheHelper
 
   def deployment_for_mustache(deployment)
     {
-      :name               => deployment.name,
-      :path               => deployment_path(deployment),
-      :status             => deployment.status,
-      :status_description => I18n.t("deployments.status.#{deployment.status}"),
-      :uptime             => count_uptime(deployment.uptime_1st_instance),
-      :instances_count    => deployment.instances.count,
-      :instances_text     => I18n.t('instances.instances', :count => deployment.instances.count.to_i),
-      :provider_name      => deployment.provider.present? ? deployment.provider.provider_type.name : nil,
+      :id                   => deployment.id,
+      :name                 => deployment.name,
+      :path                 => deployment_path(deployment),
+      :filter_view_path     => deployment_path(deployment, :view => :filter),
+      :status               => deployment.status,
+      :status_description   => I18n.t("deployments.status.#{deployment.status}"),
+      :uptime               => count_uptime(deployment.uptime_1st_instance),
+      :deployable_xml_name  => deployment.deployable_xml.name,
+      :created_at           => deployment.created_at.to_s,
+      :instances_count      => deployment.instances.count,
+      :instances_text       => I18n.t('instances.instances', :count => deployment.instances.count.to_i),
+      :provider_name        => deployment.provider.present? ? deployment.provider.provider_type.name : nil,
+      :provider_path        => deployment.provider.present? ? provider_path(deployment.provider) : nil,
+      :owner                => deployment.owner.present? ? deployment.owner.name : nil,
+      :pool_name                => deployment.pool.name,
+      :pool_filter_view_path    => pool_path(deployment.pool, :view => :filter),
+      :failed_instances_present => deployment.failed_instances.count > 0,
     }
   end
 
diff --git a/src/app/views/deployments/_deployment_row.html.mustache b/src/app/views/deployments/_deployment_row.html.mustache
new file mode 100644
index 0000000..ea9935f
--- /dev/null
+++ b/src/app/views/deployments/_deployment_row.html.mustache
@@ -0,0 +1,26 @@
+<tr>
+  <td class="checkbox">
+    <%= check_box_tag("deployments_selected[]", '{{id}}', :id => "deployment_checkbox_{{id}}") %>
+  </td>
+  <td class="alert">
+    {{#failed_instances_present}}
+      <%= image_tag("sb_icon_instance_failure.png") %>
+    {{/failed_instances_present}}
+  </td>
+  <td>
+    <%= link_to('{{name}}', '{{filter_view_path}}') %>
+  </td>
+  <td>{{created_at}}</td>
+  <td>{{deployable_xml_name}}</td>
+  <td>{{status}}</td>
+  <td class="center">{{instances_count}}</td>
+  <td>
+    <%= link_to('{{pool_name}}', '{{pool_filter_view_path}}') %>
+  </td>
+  <td>{{owner}}</td>
+  <td>
+    {{#provider_name}}
+      <%= link_to('{{provider_name}}', '{{provider_path}}') %>
+    {{/provider_name}}
+  </td>
+</tr>
diff --git a/src/app/views/deployments/_list.html.haml b/src/app/views/deployments/_list.html.haml
index bbf7b9b..82c67dd 100644
--- a/src/app/views/deployments/_list.html.haml
+++ b/src/app/views/deployments/_list.html.haml
@@ -27,45 +27,19 @@
     });
 
 = filter_table(@deployments_header, @deployments) do |deployment|
-  %tr{ :class => cycle('nostripe', 'stripe') }
-    %td{:class => 'checkbox'}
-      - selected = params[:select] == 'all'
-      = check_box_tag "deployments_selected[]", deployment.id, selected, :id => "deployment_checkbox_#{deployment.id}"
-    %td{:class => 'alert'}= deployment.failed_instances.present? ? image_tag("sb_icon_instance_failure.png") : ""
-    %td= link_to(deployment.name, deployment_path(deployment, :view => :filter))
-    %td= deployment.created_at
-    %td= deployment.deployable_xml.name
-    %td= deployment.status
-    %td{:class => 'center'}= deployment.instances.count
-    %td= link_to deployment.pool.name, pool_path(deployment.pool, :view => :filter)
-    %td= owner_name(deployment)
-    %td= link_to(deployment.provider.provider_type.name, deployment.provider) if deployment.provider
+  = render :partial => 'deployments/deployment_row', :mustache => deployment_for_mustache(deployment)
+
 :javascript
   Conductor.setupPrettyFilterURL(
     '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'filter' )}',
     '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty' )}'
   );
 
-%script#deploymentTemplate{ :type => 'text/x-jquery-tmpl' }
-  :plain
-    <tr>
-      <td class="checkbox"><input type="checkbox" id="deployment_checkbox_${id}"
-                 name="deployments_selected[]" value="${id}"></td>
-      <td class="alert">
-        {{if failed_instances_count > 0}}
-          #{image_tag("sb_icon_instance_failure.png")}
-        {{/if}}
-      </td>
-      <td><a href="#{deployment_path('replace_id', :view => :filter).sub('replace_id', '${id}')}">${name}</a></td>
-      <td>${created_at}</td>
-      <td>${deployable_xml_name}</td>
-      <td>${status}</td>
-      <td class="center">${instances_count}</td>
-      <td><a href="#{pool_path('replace_id', :view => :filter).sub('replace_id', '${pool.id}')}">${pool.name}</a></td>
-      <td>${owner}</td>
-      <td>
-        {{if provider}}
-          <a href="#{provider_path('replace_id').sub('replace_id', '${provider.id}')}">${provider.name}</a>
-        {{/if}}
-      </td>
-    </tr>
+:javascript
+  $(document).ready(function(){
+    $('tr:odd').addClass('stripe');
+    $('tr:even').addClass('nostripe');
+  });
+
+%script#deploymentTemplate{ :type => 'text/html' }
+  = render :partial => 'deployments/deployment_row'
diff --git a/src/public/javascripts/backbone/views.js b/src/public/javascripts/backbone/views.js
index be9d009..89ba07f 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -123,8 +123,17 @@ Conductor.Views.PoolsShow = Backbone.View.extend({
     var deployments = this.model.get('deployments');
     if($table.length !== 0) {
       var checkboxes = Conductor.saveCheckboxes('td :checkbox', $table);
-      $table.empty().append($template.tmpl(deployments))
+
+      var deplyomentRowsHtml = '';
+      $.each(deployments, function(deploymentIndex, deployment) {
+        deplyomentRowsHtml += Mustache.to_html($template.html(), deployment);
+      });
+
+      $table.empty().append(deplyomentRowsHtml);
       Conductor.restoreCheckboxes(checkboxes, 'td :checkbox', $table);
+
+      $('tr:odd').addClass('stripe');
+      $('tr:even').addClass('nostripe');
     }
     else {
       var $cards = this.$('ul.deployable-cards').empty()
-- 
1.7.6.5




More information about the aeolus-devel mailing list