[PATCH conductor 1/3] deployable details page styles, deployable details image section errors

jtomasek at redhat.com jtomasek at redhat.com
Fri Dec 9 15:06:25 UTC 2011


From: Jiri Tomasek <jtomasek at redhat.com>

---
 src/app/controllers/deployables_controller.rb |    4 +-
 src/app/helpers/deployables_helper.rb         |   13 +++++++
 src/app/models/deployable.rb                  |   28 ++++++++--------
 src/app/stylesheets/layout.scss               |   27 +++++++++++++--
 src/app/views/deployables/show.html.haml      |   45 +++++++++++--------------
 src/config/locales/en.yml                     |    6 +++
 src/public/images/build_status.png            |  Bin 0 -> 1182 bytes
 7 files changed, 79 insertions(+), 44 deletions(-)
 create mode 100644 src/app/helpers/deployables_helper.rb
 create mode 100644 src/public/images/build_status.png

diff --git a/src/app/controllers/deployables_controller.rb b/src/app/controllers/deployables_controller.rb
index f5a894d..c49071c 100644
--- a/src/app/controllers/deployables_controller.rb
+++ b/src/app/controllers/deployables_controller.rb
@@ -56,8 +56,8 @@ class DeployablesController < ApplicationController
     @providers = Provider.all
     @catalogs_options = Catalog.list_for_user(current_user, Privilege::VIEW).select {|c| !@deployable.catalogs.include?(c)}
     add_permissions_inline(@deployable)
-    @image_details = @deployable.get_image_details
-    @image_details.each do |assembly|
+    @images_details = @deployable.get_image_details
+    @images_details.each do |assembly|
       assembly.keys.each do |key|
         flash[:error] = assembly[key] if key.to_s =~ /^error\w+/
       end
diff --git a/src/app/helpers/deployables_helper.rb b/src/app/helpers/deployables_helper.rb
new file mode 100644
index 0000000..2c9ad8e
--- /dev/null
+++ b/src/app/helpers/deployables_helper.rb
@@ -0,0 +1,13 @@
+module DeployablesHelper
+  def image_ready?(assembly)
+    if @missing_images.empty?
+      "image is ready"
+    else
+      if @missing_images.include?(assembly[:image_uuid])
+        "Image specified in xml does not exist"
+      else
+        "image is ready"
+      end
+    end
+  end
+end
diff --git a/src/app/models/deployable.rb b/src/app/models/deployable.rb
index a148543..f5eb873 100644
--- a/src/app/models/deployable.rb
+++ b/src/app/models/deployable.rb
@@ -108,32 +108,32 @@ class Deployable < ActiveRecord::Base
 
   #get details of image for deployable#show
   def get_image_details
-    stored_xml = Nokogiri::XML(xml)
-    result_array ||= []
-    stored_xml.xpath("//assembly").each do |assembly|
-      if assembly.attr('name')
-        assembly_hash ||= {:name => assembly.attr('name')}
+    deployable_xml = DeployableXML.new(xml)
+    assemblies_array ||= []
+    deployable_xml.assemblies.each do |assembly|
+      if assembly.name
+        assembly_hash ||= {:name => assembly.name}
       else
         assembly_hash ||= {:error_name => I18n.t('deployables.error.attribute_not_exist')}
       end
-      if assembly.attr('hwp')
-        hwp_name = stored_xml.xpath("//assembly").attr('hwp').value
+      assembly_hash[:image_uuid] = assembly.image_id
+      if assembly.hwp
+        hwp_name = assembly.hwp
         hwp = HardwareProfile.find_by_name(hwp_name)
         if hwp
-          assembly_hash[:hwp] = {:name => hwp_name}
-          assembly_hash[:hwp][:hdd] = hwp.storage.value
-          assembly_hash[:hwp][:ram] = hwp.memory.value
-          assembly_hash[:hwp][:arch] = hwp.architecture.value
+          assembly_hash[:hwp_name] = hwp.name
+          assembly_hash[:hwp_hdd] = hwp.storage.value
+          assembly_hash[:hwp_ram] = hwp.memory.value
+          assembly_hash[:hwp_arch] = hwp.architecture.value
         else
           assembly_hash[:error_hwp] = I18n.t('deployables.error.hwp_not_exists', :name => hwp_name)
         end
       else
         assembly_hash[:error_hwp] = I18n.t('deployables.error.attribute_not_exist')
       end
-      result_array << assembly_hash
+      assemblies_array << assembly_hash
     end
-    #returned value [{:name => 'assembly1',{:hwp => {...}}, {:error => "msg"}, {assembly3} ..]
-    result_array
+    assemblies_array
   end
 
   def build_status(images, account)
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss
index f999fa9..8cad81b 100644
--- a/src/app/stylesheets/layout.scss
+++ b/src/app/stylesheets/layout.scss
@@ -2390,12 +2390,28 @@ ul.instances-array{
 
 table.light_table{
   margin: 10px;
-  td,th{ padding: 10px; }
+  td,th{ padding: 5px 10px; vertical-align: middle;}
   th{border-bottom: 1px solid #CCCCCC;}
   td:first-child, th:first-child{padding-left: 0px;}
   td:last-child, th:last-child{padding-right: 0px;}
 }
 
+div.build_status{
+  float: right;
+  .build_status_icon{
+    display: inline-block;
+    vertical-align: middle;
+    width: 18px; height: 18px;
+    margin-left: 10px;
+
+    &.not_built{ background: transparent url(../../images/build_status.png) no-repeat left center; }
+    &.building{ background: transparent url(../../images/spinner.gif) no-repeat center center; }
+    &.not_pushed{ background: transparent url(../../images/build_status.png) no-repeat center center; }
+    &.pushing{ background: transparent url(../../images/spinner.gif) no-repeat center center; }
+    &.pushed{ background: transparent url(../../images/build_status.png) no-repeat right center; }
+  }
+}
+
 /************************************************************************** */
 /********************************************* Launch from catalog elements */
 /************************************************************************** */
@@ -2492,9 +2508,13 @@ ul.catalog_pretty {
   margin: 10px 0px 10px 0px;
   li{
     list-style-type: none;
-
     &:not(:first-child){border-top: 1px solid #ccc;}
 
+    &:first-child div.summary{ -webkit-border-radius: 7px 7px 0px 0px; -moz-border-radius: 7px 7px 0px 0px; border-radius: 7px 7px 0px 0px; }
+    &:last-child div.summary{ -webkit-border-radius: 0px 0px 7px 7px; -moz-border-radius: 0px 0px 7px 7px; border-radius: 0px 0px 7px 7px; }
+    &:last-child div.details{ -webkit-border-radius: 0px 0px 7px 7px; -moz-border-radius: 0px 0px 7px 7px; border-radius: 0px 0px 7px 7px; }
+    &:only-child div.summary{ -webkit-border-radius: 7px 7px 7px 7px; -moz-border-radius: 7px 7px 7px 7px; border-radius: 7px 7px 7px 7px; }
+    &:only-child div.details{ -webkit-border-radius: 0px 0px 7px 7px; -moz-border-radius: 0px 0px 7px 7px; border-radius: 0px 0px 7px 7px; }
     div.summary{
       padding: 10px;
       background-color: #efefef;
@@ -2530,8 +2550,9 @@ ul.catalog_pretty {
     div.details.collapsible{
       background: #eee;
       border-top: 1px solid #ccc;
+      padding: 10px;
       table{
-        margin: 10px 10px 10px 42px;
+        margin: 0px 0px 0px 32px;
         td,th{ padding: 10px; }
         td:first-child, th:first-child{padding-left: 0px;}
         td:last-child, th:last-child{padding-right: 0px;}
diff --git a/src/app/views/deployables/show.html.haml b/src/app/views/deployables/show.html.haml
index f89ac19..c367633 100644
--- a/src/app/views/deployables/show.html.haml
+++ b/src/app/views/deployables/show.html.haml
@@ -24,21 +24,21 @@
             %th.align-center=t'.ram'
             %th.align-center=t'.arch'
         %tbody
-          - @image_details.each do |assembly|
+          - @images_details.each do |assembly|
             %tr
-              %td image ready
+              %td= image_ready?(assembly)
               - if assembly.has_key?(:name)
                 %td
                   %strong=assembly[:name]
               -else
                 %td=assembly[:error_name]
-              -if assembly.has_key?(:hwp)
-                %td=assembly[:hwp][:name]
-                %td.align-center=assembly[:hwp][:hdd]
-                %td.align-center=assembly[:hwp][:ram]
-                %td.align-center=assembly[:hwp][:arch]
+              -if assembly.has_key?(:hwp_name)
+                %td=assembly[:hwp_name]
+                %td.align-center=assembly[:hwp_hdd]
+                %td.align-center=assembly[:hwp_ram]
+                %td.align-center=assembly[:hwp_arch]
               -else
-                %td Not exist in DB
+                %td{:colspan => 4}= assembly[:error_hwp]
 
 %section.admin-content-section
   - if @missing_images.empty?
@@ -53,23 +53,18 @@
 
       %ul#providers-list.catalog_pretty
         - @build_results.each do |provider_type, results|
-          %li.collapse_entity
-            .summary
-              .info
-                %h2= provider_type
-              .controls
-                = link_to t(".details"),"#", :class => "collapse"
-            .details.collapsible
-              %table
-                %tr
-                  %th=t'.provider'
-                  %th=t'.account'
-                  %th.align-center=t'.status'
-                - results.each do |result|
-                  %tr
-                    %td= result[:provider]
-                    %td= result[:account]
-                    %td.align-center= result[:status]
+          - results.each do |result|
+            %li
+              .summary
+                .info
+                  %h2= provider_type
+                  %span= result[:provider]
+                  |
+                  %span= result[:account]
+                .controls
+                  .build_status
+                    %span= t("catalog_entries.build_statuses_descriptions.#{result[:status]}")
+                    %div{:class => "build_status_icon #{result[:status]}"}
   - else
     %header
       %h2= t('.build')
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index 4dab401..8b0f2d4 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -653,6 +653,12 @@ en:
         deleted: Catalog entry deleted.
     preset_filters:
       all_catalog_entries: All Catalog Entries
+    build_statuses_descriptions:
+      not_built: "Images are not Built"
+      building: "Images are being built."
+      not_pushed: "Some of the images are not pushed"
+      pushing: "Images are being pushed."
+      pushed: "All Images are pushed and recent."
   catalogs:
     catalogs: Catalogs
     new_catalog: New Catalog
diff --git a/src/public/images/build_status.png b/src/public/images/build_status.png
new file mode 100644
index 0000000000000000000000000000000000000000..5fca76b0ca151514ad349e36d9d8052f3de48f8e
GIT binary patch
literal 1182
zcmV;P1Y!G$P)<h;3K|Lk000e1NJLTq0024w000sQ1^@s63PjCw00004b3#c}2nYxW
zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o
zcW-iQb09-gHF34$HUIzs7IZ~ebVG7wVRUJ4ZXi@?ZDjy4F)uSPFEKG)yq8S?00Z_(
zL_t(oh0T{wPa8)Vho2dHjlI~0xJ`Cd2&$B}7le!oRdda)0yRy1ujE{i&$;K+e1}MI
zsH5I7Qb2rxNR28Gf1);#dTA)AS<=L&#E!k|-RS{#<u%4 at svdZy_u%#HGw*L^ezP-z
zuGrYv7zK)_neY002PgyO+1c3|fKn>dKnQUuc_GT?=H{K#h9mTkBcM1lGqcjKu*<{?
zC|g at wMc_v`83jMPJN5H4?oCfmmwOd<*?0nAdwcs1Pyz5f4`thYw7QD1w1j3^062z$
zwXnduxj7gbLQ3hw?&kCPmCnx2 at RZHf#42WD2~D2zJcGaN1>V|oATGvpmBUN#XEwZ5
z-cto2%@w|q-|~h0nz%@u;fdYd-BI8VV8nG at Xf*h|PzVHehhrH0zPt>&PAnFKlV$Sh
z)YMcB;Q90CVV>7ua;ShN&fzJ8Ut7x{2jkgZlb`GdyjRtpytKH&_lX}!$Yh8og%Cv{
z#E4P~)oO90P(WH1F7!-kS==ZTP_33f;v+(cV#f>wJiHc at vVi7TVAC@-$6`_zP+l~z
z?b$qTKH#Wb#dYbKN9`()n-6e2JH(Sx%A%AK*L4|LTSN2_>8G$PM%LDFT^A`OQp%vP
zPTt3?q1oq)48+<NSBd8R=02n5oG;SPnp5S4`z*whLWsN&0;LqAi;IyW{Ty9f#PdAg
z{J}Qg$upXZks|#xn$f(c^(T=c{d`(~65_>u(<-IlbT$VH%R(vDX?lMK0-o0F?aN-F
zVWEcl^Qum7U-pWsTMgA0 at BB^;EV3iIKj@*~_W#Rs|3iWP`@xI~A+QaD*g3mxcesY(
zum8~VPM+f#XzjsxPCS}7OpbrtcLVXVv0R8Jg%CSJ2x74q^-^hIk2Xpr;_<lefgQht
zPTpa*G_Xexv(da;+1mqq^j7wEh$p3#Who`Pu2Y|%r)`>%BHN}(V}71gD&>z_xnl+b
z-Wz=$N12f#9cA)%IGUGF-XtS)ks>oPM?Q5k#FIjZvJm1((=<|<47Ez7uh_O}Qma%*
zq|^S09SI?V!a8|LJ;Te-Dma`k*1_b(jS5;anm4Scxj*)>uh@*tasQKt=*i&_PXN4n
z^(r`GH5v_?$Hyes*NHuPgn0cL0A-rEr4shs97EYG$z;+u`rV0%iO`Yl4DZ7+*Q)DW
z`|}a;)(NjYWb$Ub#NW9&68gn>^$+jas{g|J;R-e9#IvJXj&H7h$CsI#q*LiLykJY)
z+uJL0dT4eWheo4;<2ZPp=Pw}=i3GZ?6OYIJ*X~`vemxj{zp%^53+?6m`}-HV291x8
w_q|qKCZ6bSad2=j(8YFaY;2&5@@3)u3tzAnL|D+P4gdfE07*qoM6N<$f>&NT at Bjb+

literal 0
HcmV?d00001

-- 
1.7.7.3




More information about the aeolus-devel mailing list