On 06/28/2011 04:50 PM, Tomas Hrcka wrote:
---
src/app/controllers/deployments_controller.rb | 20 +++++++++++++++-----
src/app/controllers/pools_controller.rb | 4 ++--
src/app/models/deployment.rb | 3 +++
src/app/views/deployments/_properties.haml | 19 ++++++++++---------
src/app/views/deployments/show.haml | 5 ++---
src/app/views/pools/show.haml | 2 +-
src/features/deployment.feature | 18 ++++++++++++++++++
src/public/javascripts/application.js | 22 ++++++++++++++++++++++
src/spec/models/deployment_spec.rb | 4 ++++
9 files changed, 77 insertions(+), 20 deletions(-)
diff --git a/src/app/controllers/deployments_controller.rb
b/src/app/controllers/deployments_controller.rb
index 697ce3e..90c7fdb 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -69,7 +69,10 @@ class DeploymentsController< ApplicationController
:successes => status[:successes]
}
end
- format.js { render :partial => 'properties' }
+ format.js do
+ @deployment_properties = @deployment.properties
+ render :partial => 'properties'
+ end
format.html { redirect_to deployment_path(@deployment) }
format.json { render :json => @deployment, :status => :created }
else
@@ -91,17 +94,21 @@ class DeploymentsController< ApplicationController
save_breadcrumb(deployment_path(@deployment, :viewstate => viewstate_id),
@deployment.name)
@failed_instances = @deployment.instances.select {|instance| instance.state ==
Instance::STATE_CREATE_FAILED || instance.state == Instance::STATE_ERROR}
@view = filter_view? ? 'filter_view_show' : 'pretty_view_show'
- #TODO add links to real data for history,properties,permissions
+ #TODO add links to real data for history, permissions, services
@tabs = [{:name => 'Instances', :view => @view, :id =>
'instances', :count => @deployment.instances.count},
{:name => 'Services', :view => @view, :id =>
'services'},
{:name => 'History', :view => @view, :id =>
'history'},
- {:name => 'Properties', :view => @view, :id =>
'properties'},
+ {:name => 'Properties', :view => 'properties', :id
=> 'properties'},
{:name => 'Permissions', :view => @view, :id =>
'permissions'}
]
details_tab_name = params[:details_tab].blank? ? 'instances' :
params[:details_tab]
@details_tab = @tabs.find {|t| t[:id] == details_tab_name} ||
@tabs.first[:name].downcase
+ @deployment_properties = @deployment.properties
+ if params[:details_tab]
+ @view = @details_tab[:view]
+ end
respond_to do |format|
- format.js { render :partial => @view }
+ format.js { render :partial => @details_tab[:view] }
format.html { render :action => 'show'}
format.json { render :json => @deployment }
end
@@ -123,7 +130,10 @@ class DeploymentsController< ApplicationController
respond_to do |format|
if check_privilege(Privilege::MODIFY, @deployment) and
@deployment.update_attributes(attrs)
flash[:success] = t('deployments.updated', :count => 1, :list =>
@deployment.name)
- format.js { render :partial => 'properties' }
+ format.js do
+ @deployment_properties = @deployment.properties
+ render :partial => 'properties'
+ end
format.html { redirect_to @deployment }
format.json { render :json => @deployment }
else
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
index 68c1b62..200199f 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -61,13 +61,13 @@ class PoolsController< ApplicationController
#TODO add links to real data for history,properties,permissions
@tabs = [{:name => 'Deployments', :view => @view, :id =>
'deployments', :count => @pool.deployments.count},
{:name => 'History', :view => @view, :id =>
'history'},
changed to
{:name => 'History', :view => 'history', :id =>
'history'},
- {:name => 'Properties', :view => @view,
:id => 'properties'},
+ {:name => 'Properties', :view => 'properties', :id
=> 'properties'},
{:name => 'Permissions', :view => @view, :id =>
'permissions'}
changed to
{:name => 'Permissions', :view => 'permissions', :id =>
'permissions'}
]
details_tab_name = params[:details_tab].blank? ? 'deployments' :
params[:details_tab]
@details_tab = @tabs.find {|t| t[:id] == details_tab_name} ||
@tabs.first[:name].downcase
respond_to do |format|
- format.js { render :partial => @view, :locals => {:deployments =>
@pool.deployments}}
+ format.js { render :partial => params[:only_tab] == "true" ?
@details_tab[:view] : @view , :locals => {:deployments => @pool.deployments}}
format.html { render :action => :show}
format.json { render :json => @pool }
end
diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index bcfd241..ea78cd8 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -195,4 +195,7 @@ class Deployment< ActiveRecord::Base
end
end
+ def properties
+ {:name => name, :owner => "#{owner.first_name}
#{owner.last_name}", :created => created_at, :pool => pool.name}
+ end
end
diff --git a/src/app/views/deployments/_properties.haml
b/src/app/views/deployments/_properties.haml
index b5e27af..476b20a 100644
--- a/src/app/views/deployments/_properties.haml
+++ b/src/app/views/deployments/_properties.haml
@@ -1,9 +1,10 @@
-%h3
- = @deployment.name
-%ul
- %li
- Pool:
- = @deployment.pool.name
- %li
- Created:
- = @deployment.created_at
\ No newline at end of file
+%table.properties_table
+ %thead
+ %tr
+ %th Property Name
+ %th Value
+ %tbody
+ -(a)deployment_properties.each do |key, value|
+ %tr
+ %td=key.to_s.capitalize
+ %td=value
\ No newline at end of file
diff --git a/src/app/views/deployments/show.haml b/src/app/views/deployments/show.haml
index 6f92fdf..fdc6b99 100644
--- a/src/app/views/deployments/show.haml
+++ b/src/app/views/deployments/show.haml
@@ -12,6 +12,5 @@
%span.label.badge.count.dark=tab[:count]
.section-controls
%a.collapse{'href'=>'#'} Collapse
- .content.collapsible.toggle-view.pools
- %section.content-section.toggle-view#content
- = render :partial => @view
\ No newline at end of file
+ .content.collapsible.toggle-view.deployments#tab
+ = render :partial => @view
\ No newline at end of file
diff --git a/src/app/views/pools/show.haml b/src/app/views/pools/show.haml
index 223aca9..68c51a3 100644
--- a/src/app/views/pools/show.haml
+++ b/src/app/views/pools/show.haml
@@ -17,6 +17,6 @@
%span.label.badge.count.dark=tab[:count]
.section-controls
%a.collapse{'href'=>'#'} Collapse
- .content.collapsible.toggle-view.pools
+ .content.collapsible.toggle-view.pools#tab
%ul.deployable-cards
= render :partial => @view, :locals => {:deployments =>
@pool.deployments}
\ No newline at end of file
diff --git a/src/features/deployment.feature b/src/features/deployment.feature
index d11cf2a..85ef84b 100644
--- a/src/features/deployment.feature
+++ b/src/features/deployment.feature
@@ -151,3 +151,21 @@ Feature: Manage Deployments
Then I should see "New Deployment in mockpool"
And I should see "Deployment Details"
And I should see "failed to get the deployable definition"
+
+ Scenario: Show deployment switch to deployment properties and back
+ Given there is a deployment named "testdeployment" belonging to
"testdeployable" owned by "testuser"
+ When I am on the deployments page
+ And I follow "testdeployment"
+ And I should see "testdeployment"
+ And I follow "Properties"
+ Then I should see the following:
+ | Property Name | Value |
+ | Pool | default_pool |
+ | Owner | John testuser |
+ | Name | testdeployment |
+
+ When I follow "Instances"
+ Then I should see "testdeployment"
+
+
+
Removed these blank lines ^^
diff --git a/src/public/javascripts/application.js
b/src/public/javascripts/application.js
index 5c9458f..975cf92 100644
--- a/src/public/javascripts/application.js
+++ b/src/public/javascripts/application.js
@@ -59,6 +59,27 @@ var Conductor = {
}
},
+ tabAjaxRequest: function () {
+ $('#tab-container-1-nav a').live("click",function(e) {
+ if (e.which==2||e.metaKey||e.ctrlKey||e.shiftKey) return true;
+
+ e.preventDefault();
+ var url = $(this).attr('href');
+ $.get(url, function(data) {
+ $('#tab').html(data)
+ .show();
+ });
+ Conductor.tabRemoveActiveClass();
+ $(this).addClass('active');
+ });
+ },
+
+ tabRemoveActiveClass: function () {
+ $('#tab-container-1-nav a').each(function(index) {
+ $(this).removeClass('active');
+ });
+ },
+
enhanceListView: function () {
$('#list-view table tbody a').live("click",function(e) {
if (e.which==2||e.metaKey||e.ctrlKey||e.shiftKey) return true;
@@ -251,4 +272,5 @@ $(document).ready(function () {
Conductor.multiDestroyValidation();
Conductor.closeNotification();
Conductor.enhanceUserMenu();
+ Conductor.tabAjaxRequest();
});
diff --git a/src/spec/models/deployment_spec.rb b/src/spec/models/deployment_spec.rb
index 990d0d1..bde2358 100644
--- a/src/spec/models/deployment_spec.rb
+++ b/src/spec/models/deployment_spec.rb
@@ -66,4 +66,8 @@ describe Deployment do
@deployment.instances.count.should == 2
end
+ it "should return properties hash" do
+ @deployment.properties.should be_a_kind_of(Hash)
+ @deployment.properties.should == {:created=>nil, :pool=>@deployment.pool.name,
:owner=>"John Smith", :name=>@deployment.name}
+ end
end
ACK & pushed w/ small fixies. (mentioned inline)