From: Imre Farkas ifarkas@redhat.com
--- src/app/controllers/pools_controller.rb | 6 ++- src/app/helpers/mustache_helper.rb | 17 +++++++ src/app/models/pool.rb | 6 -- .../deployments/_deployment_card.html.mustache | 33 +++++++++++++ src/app/views/deployments/_pretty_view.html.haml | 50 +------------------ src/public/javascripts/backbone/views.js | 27 ++++++++++- 6 files changed, 82 insertions(+), 57 deletions(-)
diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb index abc3203..2ae502a 100644 --- a/src/app/controllers/pools_controller.rb +++ b/src/app/controllers/pools_controller.rb @@ -117,8 +117,10 @@ 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, - :page => params[:page], :per_page => PER_PAGE) } + format.json { render :json => { :name => @pool.name, + :deployments => @pool.deployments.list_for_user(current_user, Privilege::VIEW). + paginate(:page => params[:page], :per_page => params[:per_page]). + 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 086caf5..6131909 100644 --- a/src/app/helpers/mustache_helper.rb +++ b/src/app/helpers/mustache_helper.rb @@ -35,4 +35,21 @@ module MustacheHelper } end
+ def deployment_for_mustache(deployment) + { + :name => deployment.name, + :path => deployment_path(deployment), + :status => deployment.status, + :translated_state => I18n.t("deployments.status.#{deployment.status}"), + :uptime => count_uptime(deployment.uptime_1st_instance), + :instances_count => deployment.instances.count, + :instances_count_text => I18n.t('instances.instances', :count => deployment.instances.count.to_i), + :provider => { + :provider_type => { + :name => deployment.provider.present? ? deployment.provider.provider_type.name : nil, + } + } + } + end + end diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb index 9556dee..4604bd2 100644 --- a/src/app/models/pool.rb +++ b/src/app/models/pool.rb @@ -137,12 +137,6 @@ class Pool < ActiveRecord::Base
})
- if options[:with_deployments] - result[:deployments] = deployments.list_for_user(options[:current_user], Privilege::VIEW). - paginate(:page => options[:page], :per_page => options[:per_page]). - map {|d| d.as_json} - end - result end
diff --git a/src/app/views/deployments/_deployment_card.html.mustache b/src/app/views/deployments/_deployment_card.html.mustache index e69de29..f7b0926 100644 --- a/src/app/views/deployments/_deployment_card.html.mustache +++ b/src/app/views/deployments/_deployment_card.html.mustache @@ -0,0 +1,33 @@ +<li class="deployment"> + <h3 class="name"> + <%= link_to('{{name}}', '{{path}}') %> + </h3> + <span title="{{translated_state}}" class="status {{status}}">alma</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"> + {{#provider}} + {{#provider_type}} + {{name}} + {{/provider_type}} + {{/provider}} + </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 12f8d00..2f5e6f7 100644 --- a/src/app/views/deployments/_pretty_view.html.haml +++ b/src/app/views/deployments/_pretty_view.html.haml @@ -2,25 +2,7 @@ - @deployments.in_groups_of(5, false) do |group| %ul.deployment-array.large - group.each do |deployment| - - deployment_provider = deployment.provider - %li.deployment - %h3.name - = link_to deployment.name, deployment_path(deployment) - %span{ :class => "status #{deployment.status}", :title => t("deployments.status.#{deployment.status}")} - %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)
= render_pagination(@deployments)
@@ -29,31 +11,5 @@ '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'filter', :page => params[:page])}', '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty', :page => params[:page] )}');
-%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#deploymentCardTemplate{ :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 4c956ca..876ad9b 100644 --- a/src/public/javascripts/backbone/views.js +++ b/src/public/javascripts/backbone/views.js @@ -101,6 +101,15 @@ Conductor.Views.PoolsIndex = Backbone.View.extend({ Conductor.Views.PoolsShow = Backbone.View.extend({ el: '#content',
+ currentView: function() { + if ($('form.filterable-data').length > 0) { + return 'table' + } + else if ($('ul.deployable-cards').length > 0) { + return 'pretty' + } + }, + currentTab: function() { if($('#details_deployments.active').length > 0) { return 'deployments'; @@ -113,6 +122,15 @@ Conductor.Views.PoolsShow = Backbone.View.extend({ } },
+ template: function() { + if (this.currentView() == 'table') { + return $('#deploymentTemplate'); + } + else if (this.currentView() == 'pretty') { + return $('#deploymentCardTemplate'); + } + }, + queryParams: function() { var paramsToInclude = ['deployments_preset_filter', 'deployments_search', 'page']; var result = Conductor.extractQueryParams(paramsToInclude); @@ -132,7 +150,7 @@ Conductor.Views.PoolsShow = Backbone.View.extend({ render: function() { this.$('h1.pools').text(this.model.get('name') + ' Pool');
- var $template = $('#deploymentTemplate'); + var $template = this.template(); if($template.length === 0) return;
var $table = this.$('table.checkbox_table > tbody'); @@ -146,9 +164,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); } }