From: Jozef Zigmund jzigmund@redhat.com
Added basic filtred view for pools, deployments and instances on monitor page --- src/app/controllers/pools_controller.rb | 27 +++++++++++++--- src/app/helpers/application_helper.rb | 11 ++++++ src/app/helpers/instances_helper.rb | 10 ------ src/app/models/deployment.rb | 11 ++++++ src/app/models/instance.rb | 10 ++++++ src/app/models/pool.rb | 10 ++++++ src/app/views/deployments/_list.haml | 52 +++++++++++++++++++----------- src/app/views/layouts/_tabpanel.haml | 11 +++--- src/app/views/pools/_list.haml | 49 ++++++++++++++++++++++------- src/app/views/pools/_overview.haml | 4 +- src/app/views/pools/index.haml | 28 ++++++++++++++++- src/features/pool.feature | 19 +++++++++++ 12 files changed, 187 insertions(+), 55 deletions(-)
diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb index 33de831..aee9a08 100644 --- a/src/app/controllers/pools_controller.rb +++ b/src/app/controllers/pools_controller.rb @@ -16,14 +16,31 @@ class PoolsController < ApplicationController def index save_breadcrumb(pools_path(:viewstate => @viewstate ? @viewstate.id : nil))
- @search_term = params[:q] - if @search_term.blank? - load_pools + @user_pools = Pool.list_for_user(current_user, Privilege::VIEW) + if filter_view? + @tabs = [{:name => 'Pools', :view => 'list', :id => 'pools'}, + {:name => 'Deployments', :view => 'deployments/list', :id => 'deployments'}, + {:name => 'Instances', :view => 'instances/list', :id => 'instances'}, + ] + details_tab_name = params[:details_tab].blank? ? 'pools' : params[:details_tab] + @details_tab = @tabs.find {|t| t[:id] == details_tab_name} || @tabs.first[:name].downcase + case @details_tab[:id] + when 'pools' + @pools = Pool.list_or_search(params[:q], params[:order_field],params[:order_dir]) + when 'instances' + @instances = Instance.list_or_search(params[:q], params[:order_field],params[:order_dir]) + when 'deployments' + @deployments = Deployment.list_or_search(params[:q], params[:order_field],params[:order_dir]) + end else - @pools = Pool.search() { keywords(params[:q]) }.results + @pools = Pool.list_or_search(params[:q], params[:order_field],params[:order_dir]) end respond_to do |format| - format.js { render :partial => 'list' } + format.js { if filter_view? + render :partial => params[:only_tab] == "true" ? @details_tab[:view] : 'layouts/tabpanel' + else + render :partial => 'pretty_list' + end } format.html format.json { render :json => @pools } end diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb index 3049c7b..a73f293 100644 --- a/src/app/helpers/application_helper.rb +++ b/src/app/helpers/application_helper.rb @@ -210,4 +210,15 @@ module ApplicationHelper result_string<<"#{"%02d"%hours.to_i}:#{"%02d"%minutes.to_i}:#{"%02d"%seconds.to_i}" result_string.join(", ") end + + def owner_name(obj) + return '' unless obj.owner + # if last_name is set, use full name, + # else use login + if obj.owner.last_name.blank? + obj.owner.login + else + "#{obj.owner.first_name} #{obj.owner.last_name}" + end + end end diff --git a/src/app/helpers/instances_helper.rb b/src/app/helpers/instances_helper.rb index 740b01f..b06286a 100644 --- a/src/app/helpers/instances_helper.rb +++ b/src/app/helpers/instances_helper.rb @@ -20,14 +20,4 @@ # Likewise, all the methods added will be available for all controllers.
module InstancesHelper - def owner_name(inst) - return '' unless inst.owner - # if last_name is set, use full name, - # else use login - if inst.owner.last_name.blank? - inst.owner.login - else - "#{inst.owner.first_name} #{inst.owner.last_name}" - end - end end diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb index 11e2b97..a9615ea 100644 --- a/src/app/models/deployment.rb +++ b/src/app/models/deployment.rb @@ -141,4 +141,15 @@ class Deployment < ActiveRecord::Base end errors end + + def self.list_or_search(query,order_field,order_dir) + if query.blank? + deployments = Deployment.all(:include => :owner, + :order => (order_field || 'name') +' '+ (order_dir || 'asc')) + else + deployments = search() { keywords(query) }.results + end + deployments + end + end diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb index 4d1c5c6..c4820fa 100644 --- a/src/app/models/instance.rb +++ b/src/app/models/instance.rb @@ -292,6 +292,16 @@ class Instance < ActiveRecord::Base (state == STATE_CREATE_FAILED) or (state == STATE_STOPPED and not restartable?) end
+ def self.list_or_search(query,order_field,order_dir) + if query.blank? + instances = Instance.all(:include => [ :template, :owner ], + :order => (order_field || 'name') +' '+ (order_dir || 'asc')) + else + instances = search() { keywords(query) }.results + end + instances + end + named_scope :with_hardware_profile, lambda { {:include => :hardware_profile} } diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb index 866ecce..081c171 100644 --- a/src/app/models/pool.rb +++ b/src/app/models/pool.rb @@ -91,4 +91,14 @@ class Pool < ActiveRecord::Base #end end
+ def self.list_or_search(query,order_field,order_dir) + if query.blank? + pools = Pool.all(:include => [ :quota, :pool_family ], + :order => (order_field || 'name') +' '+ (order_dir || 'asc')) + else + pools = search() { keywords(query) }.results + end + pools + end + end diff --git a/src/app/views/deployments/_list.haml b/src/app/views/deployments/_list.haml index 3f8064e..9d3e5d0 100644 --- a/src/app/views/deployments/_list.haml +++ b/src/app/views/deployments/_list.haml @@ -1,38 +1,52 @@ -= if request.xhr? +- if request.xhr? = render :partial => '/layouts/notification'
- form_tag do - #object-actions - = restful_submit_tag "Start", "start", deployments_path, "PUT" - = restful_submit_tag "Stop", "stop", multi_stop_deployments_path, "GET" - = restful_submit_tag "Launch new", "launch_new", launch_new_deployments_path, "GET" - = restful_submit_tag "Delete", "delete", deployments_path, "DELETE" + = link_to "New Deployment", new_deployment_path, { :class => 'button' } + = label_tag "More actions" + = select_tag("more_actions",nil, :disabled => true)
- #search-actions - = restful_submit_tag "Save Search", "save_search", deployments_path, "PUT" - = restful_submit_tag "Save Selection", "save_selection", deployments_path, "PUT" - = restful_submit_tag "Export to File", "export", deployments_path, "PUT"
%p - Select: - = link_to "All", @url_params.merge(:select => 'all') - %span> , - = link_to "None", @url_params.merge(:select => 'none') + Viewing + = select_tag("deployments_running", "<option>Deployments running</option>",:disabled => true) + = @deployments.count.to_s + " results" + = text_field_tag :q, @search_term || "Search result for...", :disabled => true
%table#deployments_table - = sortable_table_header @header + %tr + %th + = check_box_tag "all" + %th + -#there will be icons (belongs to mockups) + %th + Deployment name + %th + Deployed on + %th + Instances + %th + Pool + %th + Pool Family + %th + Owner - @deployments.each do |deployment| %tr %td - selected = @url_params[:select] == 'all' %input{:name => "deployments_selected[]", :type => "checkbox", :value => deployment.id, :id => "deployment_checkbox_#{deployment.id}", :checked => selected } %td - = link_to deployment.name, deployment_path(deployment) - %td - = link_to deployment.deployable.name, deployable_path(deployment.deployable) + -#there will be icons (belongs to mockups) %td - = deployment.owner.login + = link_to deployment.name, deployment_path(deployment) %td = deployment.created_at %td + = deployment.instances.count + %td = link_to deployment.pool.name, pool_path(deployment.pool) + %td + = deployment.pool.pool_family.name + %td + = deployment.owner diff --git a/src/app/views/layouts/_tabpanel.haml b/src/app/views/layouts/_tabpanel.haml index c71cbac..2ccd801 100644 --- a/src/app/views/layouts/_tabpanel.haml +++ b/src/app/views/layouts/_tabpanel.haml @@ -1,9 +1,8 @@ #details-view.ui-tabs.ui-widget.ui-widget-content.ui-corner-all %ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all - - @tab_captions.each do |tab| - %li.ui-state-default.ui-corner-top{ :class => "#{'ui-tabs-selected ui-state-active' if @details_tab == slug(tab)}"} - %a{ :href => url_for(@url_params.merge(:details_tab => slug(tab))), :id => "details_#{tab}"} - %span - = tab + - @tabs.each do |tab| + %li.ui-state-default.ui-corner-top{ :class => "#{'ui-tabs-selected ui-state-active' if @details_tab[:id] == tab[:id]}"} + %a{ :href => url_for(:details_tab => tab[:id], :view => "filter", :only_tab => true), :id => "details_#{tab[:id]}" } + = tab[:name] #details-selected - = render :partial => @details_tab + = render :partial => @details_tab[:view] diff --git a/src/app/views/pools/_list.haml b/src/app/views/pools/_list.haml index ff02c26..031aa94 100644 --- a/src/app/views/pools/_list.haml +++ b/src/app/views/pools/_list.haml @@ -1,28 +1,53 @@ - form_tag do = link_to "New Pool", new_pool_path, { :class => 'button' } - = restful_submit_tag "Destroy", 'destroy', multi_destroy_pools_path, 'DELETE', :id => 'delete_button' + = label_tag "More actions" + = select_tag("more_actions",nil, :disabled => true) %p - Select: - = link_to "All", @url_params.merge(:select => 'all') - %span> , - = link_to "None", @url_params.merge(:select => 'none') + Viewing + = select_tag("select_pools", "<option>All pools</option>",:disabled => true) + = @pools.count.to_s + " results" + = text_field_tag :q, @search_term || "Search result for...", :disabled => true %table#pools_table - = sortable_table_header @header + %tr + %th + = check_box_tag "all" + %th + -#there will be icons (belongs to mockups) + %th + Pool name + %th + Deployments + %th + Instances + %th + Pending + %th + Failed + %th + Quota used + %th + Pool Family - @pools.each do |pool| %tr %td - - selected = @url_params[:select] == 'all' - %input{:name => "pools_selected[]", :type => "checkbox", :value => pool.id, :id => "pool_checkbox_#{pool.id}", :checked => selected } - = link_to pool.name, pool_path(pool) + %input{:name => "pools_selected[]", :type => "checkbox", :value => pool.id, :id => "pool_checkbox_#{pool.id}" } %td - = pool.quota.maximum_running_instances or 'unlimited' + -#there will be icons (belongs to mockups) + %td + = pool.name + %td + = pool.deployments.count + %td + = 0 #pool.deployments.instances.count + %td + = 0 #there will be count of pending instances/deployments + %td + = 0 #there will be count of failed instances/deployments %td = pool.quota.percentage_used ='%' %td = pool.pool_family.name - %td - = pool.enabled
:javascript $(document).ready(function () { diff --git a/src/app/views/pools/_overview.haml b/src/app/views/pools/_overview.haml index 4bd54f4..50c5b25 100644 --- a/src/app/views/pools/_overview.haml +++ b/src/app/views/pools/_overview.haml @@ -7,7 +7,7 @@ %li.stat %h3=t("stats_bar_pools") %span.your_pools - =@pools.count + =@user_pools.count %span.in_use 4 %li.stat @@ -28,4 +28,4 @@ (TODO)15 %li.stat %h3=t("stats_bar_quota_used") - (TODO) 86% \ No newline at end of file + (TODO) 86% diff --git a/src/app/views/pools/index.haml b/src/app/views/pools/index.haml index 7784a31..ff007ed 100644 --- a/src/app/views/pools/index.haml +++ b/src/app/views/pools/index.haml @@ -1,2 +1,28 @@ = render :partial => 'overview' -= render :partial => 'pretty_list' += link_to "Pretty View", pools_path(:view => 'pretty'), :id =>'pretty_view' += link_to "Filtred View", pools_path(:view => 'filter'), :id => 'filtred_view' +%div#view + - if params[:view] == 'filter' + = render :partial => 'layouts/tabpanel' + - else + = render :partial => 'pretty_list' + +:javascript + $(document).ready(function (){ + $("#pretty_view").click(function(){ + $.get($(this).attr("href"), $(this).serialize(), + function(result) { + $("#view").html(result); + }, "script"); + return false; + }); + $("#filtred_view").click(function(){ + $.get($(this).attr("href"), $(this).serialize(), + function(result) { + $("#view").html(result); + $('#details-selected').hide(); + $('#details-view').tabs('destroy').tabs(); + }, "script"); + return false; + }); + }); diff --git a/src/features/pool.feature b/src/features/pool.feature index 657e6b7..6c88c69 100644 --- a/src/features/pool.feature +++ b/src/features/pool.feature @@ -153,3 +153,22 @@ Feature: Manage Pools And I accept JSON When I delete "mockpool" pool Then I should get back JSON object with success and errors + + Scenario: Switch pretty view to filtred + Given I am on the pools page + And I see "Overview" + And I should see "expand all" + When I follow "Filtred View" + Then I should see "Pools" within "#details-view" + And I should see "Instances" within "#details-view" + And I should see "Deployments" within "#details-view" + And I should not see "expand all" + When I follow "Pretty View" + + Scenario: Switch from filtred view to pretty + Given I am on the pools page + And I follow "Filtred View" + And I should see "Pools" within "#view" + When I follow "Pretty View" + Then I should not see "Pools" within "#view" + And I should see "expand all"
On 05/23/2011 01:40 PM, jzigmund@redhat.com wrote:
From: Jozef Zigmundjzigmund@redhat.com
Added basic filtred view for pools, deployments and instances on monitor page
src/app/controllers/pools_controller.rb | 27 +++++++++++++--- src/app/helpers/application_helper.rb | 11 ++++++ src/app/helpers/instances_helper.rb | 10 ------ src/app/models/deployment.rb | 11 ++++++ src/app/models/instance.rb | 10 ++++++ src/app/models/pool.rb | 10 ++++++ src/app/views/deployments/_list.haml | 52 +++++++++++++++++++----------- src/app/views/layouts/_tabpanel.haml | 11 +++--- src/app/views/pools/_list.haml | 49 ++++++++++++++++++++++------- src/app/views/pools/_overview.haml | 4 +- src/app/views/pools/index.haml | 28 ++++++++++++++++- src/features/pool.feature | 19 +++++++++++ 12 files changed, 187 insertions(+), 55 deletions(-)
diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb index 33de831..aee9a08 100644 --- a/src/app/controllers/pools_controller.rb +++ b/src/app/controllers/pools_controller.rb @@ -16,14 +16,31 @@ class PoolsController< ApplicationController def index save_breadcrumb(pools_path(:viewstate => @viewstate ? @viewstate.id : nil))
- @search_term = params[:q]
- if @search_term.blank?
load_pools
- @user_pools = Pool.list_for_user(current_user, Privilege::VIEW)
- if filter_view?
@tabs = [{:name => 'Pools', :view => 'list', :id => 'pools'},
{:name => 'Deployments', :view =>
'deployments/list', :id => 'deployments'},
{:name => 'Instances', :view => 'instances/list',
:id => 'instances'},
]
details_tab_name = params[:details_tab].blank? ? 'pools' :
params[:details_tab]
@details_tab = @tabs.find {|t| t[:id] == details_tab_name} ||
@tabs.first[:name].downcase
case @details_tab[:id]
when 'pools'
@pools = Pool.list_or_search(params[:q],
params[:order_field],params[:order_dir])
when 'instances'
@instances = Instance.list_or_search(params[:q],
params[:order_field],params[:order_dir])
when 'deployments'
@deployments = Deployment.list_or_search(params[:q],
params[:order_field],params[:order_dir])
end else
@pools = Pool.search() { keywords(params[:q]) }.results
@pools = Pool.list_or_search(params[:q],
params[:order_field],params[:order_dir]) end respond_to do |format|
format.js { render :partial => 'list' }
format.js { if filter_view?
render :partial => params[:only_tab] == "true" ?
@details_tab[:view] : 'layouts/tabpanel'
else
render :partial => 'pretty_list'
end } format.html format.json { render :json => @pools } end
diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb index 3049c7b..a73f293 100644 --- a/src/app/helpers/application_helper.rb +++ b/src/app/helpers/application_helper.rb @@ -210,4 +210,15 @@ module ApplicationHelper
result_string<<"#{"%02d"%hours.to_i}:#{"%02d"%minutes.to_i}:#{"%02d"%seconds.to_i}" result_string.join(", ") end
- def owner_name(obj)
- return '' unless obj.owner
- # if last_name is set, use full name,
- # else use login
- if obj.owner.last_name.blank?
obj.owner.login
- else
"#{obj.owner.first_name} #{obj.owner.last_name}"
- end
- end end
diff --git a/src/app/helpers/instances_helper.rb b/src/app/helpers/instances_helper.rb index 740b01f..b06286a 100644 --- a/src/app/helpers/instances_helper.rb +++ b/src/app/helpers/instances_helper.rb @@ -20,14 +20,4 @@ # Likewise, all the methods added will be available for all controllers.
module InstancesHelper
- def owner_name(inst)
- return '' unless inst.owner
- # if last_name is set, use full name,
- # else use login
- if inst.owner.last_name.blank?
inst.owner.login
- else
"#{inst.owner.first_name} #{inst.owner.last_name}"
- end
- end end
diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb index 11e2b97..a9615ea 100644 --- a/src/app/models/deployment.rb +++ b/src/app/models/deployment.rb @@ -141,4 +141,15 @@ class Deployment< ActiveRecord::Base end errors end
- def self.list_or_search(query,order_field,order_dir)
- if query.blank?
deployments = Deployment.all(:include => :owner,
:order => (order_field || 'name')
+' '+ (order_dir || 'asc'))
- else
deployments = search() { keywords(query) }.results
- end
- deployments
- end
- end
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb index 4d1c5c6..c4820fa 100644 --- a/src/app/models/instance.rb +++ b/src/app/models/instance.rb @@ -292,6 +292,16 @@ class Instance< ActiveRecord::Base (state == STATE_CREATE_FAILED) or (state == STATE_STOPPED and not restartable?) end
- def self.list_or_search(query,order_field,order_dir)
- if query.blank?
instances = Instance.all(:include => [ :template, :owner ],
:order => (order_field || 'name') +'
'+ (order_dir || 'asc'))
- else
instances = search() { keywords(query) }.results
- end
- instances
- end
- named_scope :with_hardware_profile, lambda { {:include => :hardware_profile} }
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb index 866ecce..081c171 100644 --- a/src/app/models/pool.rb +++ b/src/app/models/pool.rb @@ -91,4 +91,14 @@ class Pool< ActiveRecord::Base #end end
- def self.list_or_search(query,order_field,order_dir)
- if query.blank?
pools = Pool.all(:include => [ :quota, :pool_family ],
:order => (order_field || 'name') +' '+
(order_dir || 'asc'))
- else
pools = search() { keywords(query) }.results
- end
- pools
- end
- end
diff --git a/src/app/views/deployments/_list.haml b/src/app/views/deployments/_list.haml index 3f8064e..9d3e5d0 100644 --- a/src/app/views/deployments/_list.haml +++ b/src/app/views/deployments/_list.haml @@ -1,38 +1,52 @@ -= if request.xhr? +- if request.xhr? = render :partial => '/layouts/notification'
- form_tag do
- #object-actions
- = restful_submit_tag "Start", "start", deployments_path, "PUT"
- = restful_submit_tag "Stop", "stop", multi_stop_deployments_path,
"GET"
- = restful_submit_tag "Launch new", "launch_new",
launch_new_deployments_path, "GET"
- = restful_submit_tag "Delete", "delete", deployments_path, "DELETE"
- = link_to "New Deployment", new_deployment_path, { :class =>
'button' }
- = label_tag "More actions"
- = select_tag("more_actions",nil, :disabled => true)
- #search-actions
- = restful_submit_tag "Save Search", "save_search",
deployments_path, "PUT"
- = restful_submit_tag "Save Selection", "save_selection",
deployments_path, "PUT"
- = restful_submit_tag "Export to File", "export",
deployments_path, "PUT"
%p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
- Viewing
- = select_tag("deployments_running", "<option>Deployments
running</option>",:disabled => true)
- = @deployments.count.to_s + " results"
- = text_field_tag :q, @search_term || "Search result for...",
:disabled => true
%table#deployments_table
- = sortable_table_header @header
- %tr
%th
= check_box_tag "all"
%th
-#there will be icons (belongs to mockups)
%th
Deployment name
%th
Deployed on
%th
Instances
%th
Pool
%th
Pool Family
%th
Owner
Avoid using plain strings instead use I18n translations with t-method
- @deployments.each do |deployment| %tr %td - selected = @url_params[:select] == 'all' %input{:name => "deployments_selected[]", :type =>
"checkbox", :value => deployment.id, :id => "deployment_checkbox_#{deployment.id}", :checked => selected } %td
= link_to deployment.name, deployment_path(deployment)
%td
= link_to deployment.deployable.name,
deployable_path(deployment.deployable)
-#there will be icons (belongs to mockups) %td
= deployment.owner.login
= link_to deployment.name, deployment_path(deployment) %td = deployment.created_at %td
= deployment.instances.count
%td = link_to deployment.pool.name, pool_path(deployment.pool)
%td
= deployment.pool.pool_family.name
%td
= deployment.owner
diff --git a/src/app/views/layouts/_tabpanel.haml b/src/app/views/layouts/_tabpanel.haml index c71cbac..2ccd801 100644 --- a/src/app/views/layouts/_tabpanel.haml +++ b/src/app/views/layouts/_tabpanel.haml @@ -1,9 +1,8 @@ #details-view.ui-tabs.ui-widget.ui-widget-content.ui-corner-all
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
- @tab_captions.each do |tab|
%li.ui-state-default.ui-corner-top{ :class =>
"#{'ui-tabs-selected ui-state-active' if @details_tab == slug(tab)}"}
%a{ :href => url_for(@url_params.merge(:details_tab =>
slug(tab))), :id => "details_#{tab}"}
%span
= tab
- @tabs.each do |tab|
%li.ui-state-default.ui-corner-top{ :class =>
"#{'ui-tabs-selected ui-state-active' if @details_tab[:id] == tab[:id]}"}
%a{ :href => url_for(:details_tab => tab[:id], :view =>
"filter", :only_tab => true), :id => "details_#{tab[:id]}" }
#details-selected= tab[:name]
- = render :partial => @details_tab
- = render :partial => @details_tab[:view]
diff --git a/src/app/views/pools/_list.haml b/src/app/views/pools/_list.haml index ff02c26..031aa94 100644 --- a/src/app/views/pools/_list.haml +++ b/src/app/views/pools/_list.haml @@ -1,28 +1,53 @@
- form_tag do = link_to "New Pool", new_pool_path, { :class => 'button' }
- = restful_submit_tag "Destroy", 'destroy',
multi_destroy_pools_path, 'DELETE', :id => 'delete_button'
- = label_tag "More actions"
- = select_tag("more_actions",nil, :disabled => true) %p
- Select:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = link_to "None", @url_params.merge(:select => 'none')
- Viewing
- = select_tag("select_pools", "<option>All
pools</option>",:disabled => true)
- = @pools.count.to_s + " results"
- = text_field_tag :q, @search_term || "Search result for...",
:disabled => true %table#pools_table
- = sortable_table_header @header
- %tr
%th
= check_box_tag "all"
%th
-#there will be icons (belongs to mockups)
%th
Pool name
%th
Deployments
%th
Instances
%th
Pending
%th
Failed
%th
Quota used
%th
Same as above
Pool Family - @pools.each do |pool| %tr %td
- selected = @url_params[:select] == 'all'
%input{:name => "pools_selected[]", :type => "checkbox",
:value => pool.id, :id => "pool_checkbox_#{pool.id}", :checked => selected }
= link_to pool.name, pool_path(pool)
%input{:name => "pools_selected[]", :type => "checkbox",
:value => pool.id, :id => "pool_checkbox_#{pool.id}" } %td
= pool.quota.maximum_running_instances or 'unlimited'
-#there will be icons (belongs to mockups)
%td
= pool.name
%td
= pool.deployments.count
%td
= 0 #pool.deployments.instances.count
%td
= 0 #there will be count of pending instances/deployments
%td
= 0 #there will be count of failed instances/deployments
You can get this data from @statistics hash which is implemented in my patch TASK-1553
%td = pool.quota.percentage_used ='%' %td = pool.pool_family.name
%td
= pool.enabled
:javascript $(document).ready(function () {
diff --git a/src/app/views/pools/_overview.haml b/src/app/views/pools/_overview.haml index 4bd54f4..50c5b25 100644 --- a/src/app/views/pools/_overview.haml +++ b/src/app/views/pools/_overview.haml @@ -7,7 +7,7 @@ %li.stat %h3=t("stats_bar_pools") %span.your_pools
=@pools.count
=@user_pools.count %span.in_use 4 %li.stat
@@ -28,4 +28,4 @@ (TODO)15 %li.stat %h3=t("stats_bar_quota_used")
(TODO) 86%
\ No newline at end of file
(TODO) 86%
diff --git a/src/app/views/pools/index.haml b/src/app/views/pools/index.haml index 7784a31..ff007ed 100644 --- a/src/app/views/pools/index.haml +++ b/src/app/views/pools/index.haml @@ -1,2 +1,28 @@ = render :partial => 'overview' -= render :partial => 'pretty_list' += link_to "Pretty View", pools_path(:view => 'pretty'), :id =>'pretty_view' += link_to "Filtred View", pools_path(:view => 'filter'), :id => 'filtred_view' +%div#view
- if params[:view] == 'filter'
- = render :partial => 'layouts/tabpanel'
- else
- = render :partial => 'pretty_list'
+:javascript
- $(document).ready(function (){
- $("#pretty_view").click(function(){
$.get($(this).attr("href"), $(this).serialize(),
function(result) {
$("#view").html(result);
}, "script");
return false;
});
- $("#filtred_view").click(function(){
$.get($(this).attr("href"), $(this).serialize(),
function(result) {
$("#view").html(result);
$('#details-selected').hide();
$('#details-view').tabs('destroy').tabs();
}, "script");
return false;
- });
- });
diff --git a/src/features/pool.feature b/src/features/pool.feature index 657e6b7..6c88c69 100644 --- a/src/features/pool.feature +++ b/src/features/pool.feature @@ -153,3 +153,22 @@ Feature: Manage Pools And I accept JSON When I delete "mockpool" pool Then I should get back JSON object with success and errors
- Scenario: Switch pretty view to filtred
- Given I am on the pools page
- And I see "Overview"
- And I should see "expand all"
- When I follow "Filtred View"
- Then I should see "Pools" within "#details-view"
- And I should see "Instances" within "#details-view"
- And I should see "Deployments" within "#details-view"
- And I should not see "expand all"
- When I follow "Pretty View"
- Scenario: Switch from filtred view to pretty
- Given I am on the pools page
- And I follow "Filtred View"
- And I should see "Pools" within "#view"
- When I follow "Pretty View"
- Then I should not see "Pools" within "#view"
- And I should see "expand all"
Ack.
aeolus-devel@lists.fedorahosted.org