From: Imre Farkas ifarkas@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 {