[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