[PATCH conductor 4/7] Mustachifying deployments/_pretty_view

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


From: Imre Farkas <ifarkas at redhat.com>

---
 src/app/controllers/pools_controller.rb            |    2 +-
 src/app/helpers/mustache_helper.rb                 |   13 +++++
 .../deployments/_deployment_card.html.mustache     |   32 ++++++++++++
 src/app/views/deployments/_pretty_view.html.haml   |   51 +------------------
 src/public/javascripts/backbone/views.js           |    7 ++-
 5 files changed, 55 insertions(+), 50 deletions(-)
 create mode 100644 src/app/views/deployments/_deployment_card.html.mustache

diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb
index c639b57..af053f5 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -105,7 +105,7 @@ class PoolsController < ApplicationController
     respond_to do |format|
       format.html { render :action => :show}
       format.js { render :partial => @view }
-      format.json { render :json => @pool.as_json(:with_deployments => true, :current_user => current_user) }
+      format.json { render :json => { :deployments => @pool.deployments.list_for_user(current_user, Privilege::VIEW).map{ |deployment| view_context.deployment_for_mustache(deployment) } } }
     end
   end
 
diff --git a/src/app/helpers/mustache_helper.rb b/src/app/helpers/mustache_helper.rb
index 4e844c7..8255c5d 100644
--- a/src/app/helpers/mustache_helper.rb
+++ b/src/app/helpers/mustache_helper.rb
@@ -35,4 +35,17 @@ module MustacheHelper
     }
   end
 
+  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,
+    }
+  end
+
 end
diff --git a/src/app/views/deployments/_deployment_card.html.mustache b/src/app/views/deployments/_deployment_card.html.mustache
new file mode 100644
index 0000000..c1004fc
--- /dev/null
+++ b/src/app/views/deployments/_deployment_card.html.mustache
@@ -0,0 +1,32 @@
+<li class="deployment">
+  <h3 class="name">
+    <%= link_to('{{name}}', '{{path}}') %>
+  </h3>
+  <span title="{{status_description}}" class="status {{status}}"></span>
+  <dl class="statistics">
+    <ul>
+      <li class="uptime">
+        <dt class="uptime"><%= t('uptime') %></dt>
+        <dd>{{uptime}}</dd>
+      </li>
+      <li class="instances">
+        <dt class="instances count"><%= t('instances.instances.other') %></dt>
+        <dd>
+          {{instances_count}}
+          <span class="inline-label">{{instances_text}}</span>
+        </dd>
+      </li>
+      <li class="provider">
+        <dt class="instances count"><%= t('providers.provider') %></dt>
+        <dd>
+          <p class="provider"></p>
+          <p class="provider">
+            {{#provider_name}}
+              {{provider_name}}
+            {{/provider_name}}
+          </p>
+        </dd>
+      </li>
+    </ul>
+  </dl>
+</li>
diff --git a/src/app/views/deployments/_pretty_view.html.haml b/src/app/views/deployments/_pretty_view.html.haml
index c121973..30c379f 100644
--- a/src/app/views/deployments/_pretty_view.html.haml
+++ b/src/app/views/deployments/_pretty_view.html.haml
@@ -2,57 +2,12 @@
   - @deployments.in_groups_of(5, false) do |group|
     %ul.deployment-array.large
       - group.each do |deployment|
-        %li.deployment
-          %h3.name
-            = link_to deployment.name, deployment_path(deployment)
-          %span{ :class => "status #{deployment.status}", :title => deployment.as_json[:status_description]}
-          %dl.statistics
-            %ul
-              %li.uptime
-                %dt.uptime=t'uptime'
-                %dd= count_uptime(deployment.uptime_1st_instance)
-              %li.instances
-                %dt.instances.count=t'instances.instances.other'
-                %dd
-                  = deployment.instances.count || 0
-                  %span.inline-label=t('instances.instances', :count => deployment.instances.count.to_i)
-              %li.provider
-                %dt.instances.count=t'providers.provider'
-                %dd
-                  %p.provider= deployment.provider.provider_type.name unless deployment.provider.blank?
+        = render :partial => 'deployments/deployment_card', :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
-    <li class="deployment">
-      <h3 class="name">
-        <a href="#{deployment_path('replace_id').sub('replace_id', '${id}')}">${name}</a>
-      </h3>
-      <span class="status ${status}" title="${status_description}">${status}</span>
-      <dl class="statistics">
-        <ul>
-          <li class="uptime">
-            <dt class="uptime">#{t'uptime'}</dt>
-            <dd>${uptime}</dd>
-          </li>
-          <li class="instances">
-            <dt class="instances count">#{t'instances.instances.other'}</dt>
-            <dd>${instances_count}
-              <span class="inline-label">${instances_count_text}</span>
-            </dd>
-          </li>
-          <li class="provider">
-            <dt class="instances count">#{t'providers.provider'}</dt>
-            <dd>
-              <p class="provider">{{if provider}} ${provider.name} {{/if}}</p>
-            </dd>
-          </li>
-        </ul>
-      </dl>
-    </li>
+%script#deploymentTemplate{ :type => 'text/html' }
+  = render :partial => 'deployments/deployment_card'
diff --git a/src/public/javascripts/backbone/views.js b/src/public/javascripts/backbone/views.js
index c51be78..be9d009 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -130,9 +130,14 @@ Conductor.Views.PoolsShow = Backbone.View.extend({
       var $cards = this.$('ul.deployable-cards').empty()
       var cardsPerRow = 5;
       for(var i = 0; i < deployments.length; i += cardsPerRow) {
+        var deploymentCardHtml = '';
+        $.each(deployments.slice(i, i + cardsPerRow), function(deploymentIndex, deployment) {
+          deploymentCardHtml += Mustache.to_html($template.html(), deployment);
+        });
+
         var $row = this.make('ul',
           {'class': 'deployment-array large'},
-          $template.tmpl(deployments.slice(i, i + cardsPerRow)));
+          deploymentCardHtml);
         $cards.append($row);
       }
     }
-- 
1.7.6.5




More information about the aeolus-devel mailing list