[PATCH conductor 5/8] Mustachifying deployments/_list

ifarkas at redhat.com ifarkas at redhat.com
Thu Apr 19 07:30:03 UTC 2012


From: Imre Farkas <ifarkas at redhat.com>

---
 src/app/helpers/mustache_helper.rb                 |   15 ++++++-
 .../deployments/_deployment_row.html.mustache      |   28 ++++++++++++
 src/app/views/deployments/_list.html.haml          |   46 ++++----------------
 src/public/javascripts/backbone/views.js           |   17 ++++++-
 4 files changed, 64 insertions(+), 42 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 6131909..60cc9a1 100644
--- a/src/app/helpers/mustache_helper.rb
+++ b/src/app/helpers/mustache_helper.rb
@@ -37,17 +37,28 @@ module MustacheHelper
 
   def deployment_for_mustache(deployment)
     {
+      :id                   => deployment.id,
       :name                 => deployment.name,
       :path                 => deployment_path(deployment),
+      :filter_view_path     => deployment_path(deployment, :view => :filter),
       :status               => deployment.status,
       :translated_state     => 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_count_text => I18n.t('instances.instances', :count => deployment.instances.count.to_i),
+      :owner                => deployment.owner.present? ? deployment.owner.name : nil,
+      :failed_instances_present => deployment.failed_instances.count > 0,
       :provider => {
+        :path => deployment.provider.present? ? provider_path(deployment.provider) : nil,
         :provider_type => {
-            :name => deployment.provider.present? ? deployment.provider.provider_type.name : nil,
-          }
+          :name => deployment.provider.present? ? deployment.provider.provider_type.name : nil,
+        }
+      },
+      :pool => {
+        :name                => deployment.pool.name,
+        :filter_view_path    => pool_path(deployment.pool, :view => :filter),
       }
     }
   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..34dfa26
--- /dev/null
+++ b/src/app/views/deployments/_deployment_row.html.mustache
@@ -0,0 +1,28 @@
+<tr>
+  <td class="checkbox">
+    <%= check_box_tag("deployments_selected[]", '{{id}}', false, :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>{{translated_state}}</td>
+  <td class="center">{{instances_count}}</td>
+  <td>
+    {{#pool}}
+      <%= link_to('{{name}}', '{{filter_view_path}}') %>
+    {{/pool}}
+  </td>
+  <td>{{owner}}</td>
+  <td>
+    {{#provider}}
+      <%= link_to('{{provider_type.name}}', '{{path}}') %>
+    {{/provider}}
+  </td>
+</tr>
diff --git a/src/app/views/deployments/_list.html.haml b/src/app/views/deployments/_list.html.haml
index 308a98d..c1ee53b 100644
--- a/src/app/views/deployments/_list.html.haml
+++ b/src/app/views/deployments/_list.html.haml
@@ -27,20 +27,7 @@
     });
 
 = filter_table(@deployments_header, @deployments) do |deployment|
-  - deployment_provider = deployment.provider
-  %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= t("instances.states.#{deployment.status}")
-    %td{:class => 'center'}= deployment.instances.size
-    %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(
@@ -48,26 +35,11 @@
     '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty', :page => params[:page])}'
   );
 
-%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>${translated_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#deploymentRowTemplate{ :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 876ad9b..0d29417 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -124,7 +124,7 @@ Conductor.Views.PoolsShow = Backbone.View.extend({
 
   template: function() {
     if (this.currentView() == 'table') {
-      return $('#deploymentTemplate');
+      return $('#deploymentRowTemplate');
     }
     else if (this.currentView() == 'pretty') {
       return $('#deploymentCardTemplate');
@@ -155,9 +155,20 @@ Conductor.Views.PoolsShow = Backbone.View.extend({
 
     var $table = this.$('table.checkbox_table > tbody');
     var deployments = this.model.get('deployments');
-    if($table.length !== 0) {
+    if(this.currentView() == 'table') {
       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');
+
       Conductor.restoreCheckboxes(checkboxes, 'td :checkbox', $table);
     }
     else {
-- 
1.7.6.5




More information about the aeolus-devel mailing list