[PATCH conductor] BZ790816 Instance details page - tabbed sections

jtomasek at redhat.com jtomasek at redhat.com
Wed Feb 15 14:07:50 UTC 2012


From: Jiri Tomasek <jtomasek at redhat.com>

---
 src/app/controllers/instances_controller.rb   |   11 ++-
 src/app/views/instances/_history.html.haml    |   14 +---
 src/app/views/instances/_parameters.haml      |   24 +++---
 src/app/views/instances/_properties.html.haml |  109 ++++++++++++-------------
 src/app/views/instances/show.html.haml        |   18 ++++-
 src/config/locales/en.yml                     |    2 +-
 src/features/instance.feature                 |    4 +-
 7 files changed, 93 insertions(+), 89 deletions(-)

diff --git a/src/app/controllers/instances_controller.rb b/src/app/controllers/instances_controller.rb
index 7af1669..a44e7be 100644
--- a/src/app/controllers/instances_controller.rb
+++ b/src/app/controllers/instances_controller.rb
@@ -39,17 +39,22 @@ class InstancesController < ApplicationController
 
   def show
     load_instances
-    @tab_captions = [t('instances.tab_captions.properties'), t('instances.tab_captions.history'), t('instances.tab_captions.permissions')]
-    @details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
     save_breadcrumb(instance_path(@instance), @instance.name)
     @events = @instance.events.descending_by_created_at.paginate(:page => params[:page] || 1)
+    @view = params[:details_tab].blank? ? 'properties' : params[:details_tab]
+    @tabs = [
+      {:name => t('properties'), :view => @view, :id => 'properties'},
+      {:name => t('instances.parameters.config_parameters'), :view => 'parameters', :id => 'parameters'},
+      {:name => t('history'), :view => 'history', :id => 'history'}
+    ]
+    @details_tab = @tabs.find {|t| t[:view] == @view}
     respond_to do |format|
       format.html { render :action => 'show'}
       format.js do
         if params.delete :details_pane
           render :partial => 'layouts/details_pane' and return
         end
-        render :partial => @details_tab and return
+        render :partial => @details_tab[:view] and return
       end
       format.json { render :json => @instance }
     end
diff --git a/src/app/views/instances/_history.html.haml b/src/app/views/instances/_history.html.haml
index 60f09e5..ca2ae5c 100644
--- a/src/app/views/instances/_history.html.haml
+++ b/src/app/views/instances/_history.html.haml
@@ -1,10 +1,4 @@
-%div.instance_details
-  %h3
-    = t 'instances.history.history_for'
-    = @instance.name
-  %ol
-    - @events.each do |event|
-      %li
-        = "#{event.event_time.strftime('%d-%b-%Y %H:%M:%S')}: #{event.summary}"
-
-  = will_paginate @events
+%ol
+  - @events.each do |event|
+    %li
+      = "#{event.event_time.strftime('%d-%b-%Y %H:%M:%S')}: #{event.summary}"
diff --git a/src/app/views/instances/_parameters.haml b/src/app/views/instances/_parameters.haml
index 7ed7d31..022b5bc 100644
--- a/src/app/views/instances/_parameters.haml
+++ b/src/app/views/instances/_parameters.haml
@@ -1,14 +1,10 @@
-%div.instance_details
-  %h3
-    = t 'instances.parameters.config_parameters_for'
-    = @instance.name
-  %ul
-    - if @instance.instance_parameters.empty?
-      %li= t("instances.parameters.none")
-    - else
-      - @instance.instance_parameters.each do |parameter|
-        %li
-          = parameter.service
-          = parameter.name
-          = parameter.type
-          = parameter.value
+%ul
+  - if @instance.instance_parameters.empty?
+    %li= t("instances.parameters.none")
+  - else
+    - @instance.instance_parameters.each do |parameter|
+      %li
+        = parameter.service
+        = parameter.name
+        = parameter.type
+        = parameter.value
diff --git a/src/app/views/instances/_properties.html.haml b/src/app/views/instances/_properties.html.haml
index 8b0951b..61fe46c 100644
--- a/src/app/views/instances/_properties.html.haml
+++ b/src/app/views/instances/_properties.html.haml
@@ -1,56 +1,53 @@
-%div.instance_details
-  %h3
-    = t 'instances.properties.properties_for'
-    = @instance.name
-  %ul
-    %li
-      = label_tag :name, t('instances.properties.name')
-      %span= @instance.name
-    %li
-      = label_tag :status, t('instances.properties.status')
-      %span= @instance.state
-    %li
-      = label_tag :public_addresses, t('instances.properties.public_addresses')
-      %span= @instance.public_addresses
-    %li
-      = label_tag :private_addresses, t('instances.properties.private_adresses')
-      %span= @instance.private_addresses
-      = label_tag :assembly, t('instances.properties.assembly')
-      %span= @instance.assembly_xml.name
-    %li
-      = label_tag :provider, t('instances.properties.provider')
-      %span= @instance.provider_account.provider.name if @instance.provider_account
-    %li
-      = label_tag :architecture, t('instances.properties.architecture')
-      %span= @instance.hardware_profile.architecture.value
-    %li
-      = label_tag :memory, t('instances.properties.memory')
-      %span= @instance.hardware_profile.memory.value
-    %li
-      = label_tag :storage, t('instances.properties.storage')
-      %span= @instance.hardware_profile.storage.value
-    %li
-      = label_tag :instantiation_time, t('instances.properties.instantiation_time')
-      %span= @instance.created_at.strftime("%d-%b-%Y %H:%M:%S")
-    %li
-      = label_tag :current_alerts, t('instances.properties.current_alerts')
-      %span= 0
-      = label_tag :console_connection, t('instances.properties.console_connection')
-      %span= t('instances.properties.via_ssh')
-    - if @instance.instance_key
-      %li
-        = label_tag :instance_key, t('instances.properties.ssh_key')
-        %span= link_to t('instances.properties.download'), key_instance_path(@instance), :id =>'download_ssh_key'
-      %li
-        = label_tag :instance_key_name, t('instances.properties.ssh_key_name')
-        = @instance.instance_key.name
-    %li
-      = label_tag :owner, t('instances.properties.owner')
-      %span= "#{@instance.owner.first_name} #{@instance.owner.last_name}"
-    %li
-      = label_tag :shared_to, t('instances.properties.shared_to')
-      %span= t('instances.properties.n_a')
-    - if @instance.state == Instance::STATE_ERROR
-      %li
-        = label_tag :error, t('instances.properties.error')
-        %span= @instance.last_error
+%ul
+  %li
+    = label_tag :name, t('instances.properties.name')
+    %span= @instance.name
+  %li
+    = label_tag :status, t('instances.properties.status')
+    %span= @instance.state
+  %li
+    = label_tag :public_addresses, t('instances.properties.public_addresses')
+    %span= @instance.public_addresses
+  %li
+    = label_tag :private_addresses, t('instances.properties.private_adresses')
+    %span= @instance.private_addresses
+    = label_tag :assembly, t('instances.properties.assembly')
+    %span= @instance.assembly_xml.name
+  %li
+    = label_tag :provider, t('instances.properties.provider')
+    %span= @instance.provider_account.provider.name if @instance.provider_account
+  %li
+    = label_tag :architecture, t('instances.properties.architecture')
+    %span= @instance.hardware_profile.architecture.value
+  %li
+    = label_tag :memory, t('instances.properties.memory')
+    %span= @instance.hardware_profile.memory.value
+  %li
+    = label_tag :storage, t('instances.properties.storage')
+    %span= @instance.hardware_profile.storage.value
+  %li
+    = label_tag :instantiation_time, t('instances.properties.instantiation_time')
+    %span= @instance.created_at.strftime("%d-%b-%Y %H:%M:%S")
+  %li
+    = label_tag :current_alerts, t('instances.properties.current_alerts')
+    %span= 0
+  %li
+    = label_tag :console_connection, t('instances.properties.console_connection')
+    %span= t('instances.properties.via_ssh')
+  - if @instance.instance_key
+    %li
+      = label_tag :instance_key, t('instances.properties.ssh_key')
+      %span= link_to t('instances.properties.download'), key_instance_path(@instance), :id =>'download_ssh_key'
+    %li
+      = label_tag :instance_key_name, t('instances.properties.ssh_key_name')
+      %span= @instance.instance_key.name
+  %li
+    = label_tag :owner, t('instances.properties.owner')
+    %span= "#{@instance.owner.first_name} #{@instance.owner.last_name}"
+  %li
+    = label_tag :shared_to, t('instances.properties.shared_to')
+    %span= t('instances.properties.n_a')
+  - if @instance.state == Instance::STATE_ERROR
+    %li
+      = label_tag :error, t('instances.properties.error')
+      %span= @instance.last_error
diff --git a/src/app/views/instances/show.html.haml b/src/app/views/instances/show.html.haml
index 882abac..633e89f 100644
--- a/src/app/views/instances/show.html.haml
+++ b/src/app/views/instances/show.html.haml
@@ -1,4 +1,16 @@
 = render :partial => 'layouts/nav_history'
-= render :partial => 'properties'
-= render :partial => 'parameters'
-= render :partial => 'history'
+%header.page-header
+  %h1.deployments
+    = @instance.name
+  .corner &nbsp;
+
+%section.content-section
+  %header#tab-container-1
+    %nav.faceted
+      %ul#tab-container-1-nav
+        - @tabs.each do |tab|
+          %li
+            %a{ :href => url_for(:details_tab => tab[:id]), :id => "details_#{tab[:id]}", :class => "#{'active' if @details_tab[:id] == tab[:id]}" }
+              = tab[:name]
+  .content.instance_details#tab
+    = render :partial => @view
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index fbacbc0..037734c 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -313,7 +313,7 @@ en:
     history:
        history_for: "History for: "
     parameters:
-       config_parameters_for: Config Parameters for
+       config_parameters: Config Parameters
        none: None
     permissions:
      permissions_for: Permissions for
diff --git a/src/features/instance.feature b/src/features/instance.feature
index 997a6ed..1d91333 100644
--- a/src/features/instance.feature
+++ b/src/features/instance.feature
@@ -140,7 +140,7 @@ Feature: Manage Instances
     And there is a "mock1" instance
     And I am on the the instances page
     When I follow "mock1"
-    Then I should see "Properties for mock1"
+    Then I should see "Properties"
 
   Scenario: Edit an instance name
     Given there is a "Tomct" instance
@@ -197,7 +197,7 @@ Feature: Manage Instances
   Scenario: Show instance history
     Given a mock running instance exists
     And I am viewing the mock instance detail
-    Then I should see "History for"
+    And I follow "details_history"
     Then I should see "created"
 
   Scenario: Filter Instances
-- 
1.7.7.6




More information about the aeolus-devel mailing list