From: Jan Provaznik <[email protected]>

image builder UI now automatically refreshes targets statuses each 10 s
---
 src/app/controllers/image_descriptor_controller.rb |    7 +++++-
 .../image_descriptor_target_controller.rb          |    8 +++++++
 src/app/helpers/image_descriptor_helper.rb         |    6 ++--
 src/app/views/image_descriptor/_summary.haml       |   22 +++++--------------
 src/app/views/image_descriptor/_targets.haml       |   16 ++++++++++++++
 src/app/views/image_descriptor/targets.haml        |    1 +
 6 files changed, 40 insertions(+), 20 deletions(-)
 create mode 100644 src/app/controllers/image_descriptor_target_controller.rb
 create mode 100644 src/app/views/image_descriptor/_targets.haml
 create mode 100644 src/app/views/image_descriptor/targets.haml

diff --git a/src/app/controllers/image_descriptor_controller.rb 
b/src/app/controllers/image_descriptor_controller.rb
index 69d3c23..11daa9c 100644
--- a/src/app/controllers/image_descriptor_controller.rb
+++ b/src/app/controllers/image_descriptor_controller.rb
@@ -21,7 +21,7 @@ class ImageDescriptorController < ApplicationController
       @tab = 'summary'
       if params[:targets]
         params[:targets].each do |target|
-          ImageDescriptorTarget.new_if_not_exists(:name => target, 
:image_descriptor_id => params[:image_descriptor][:id], :status => "waiting")
+          ImageDescriptorTarget.new_if_not_exists(:name => target, 
:image_descriptor_id => params[:image_descriptor][:id], :status => 
ImageDescriptorTarget::STATE_WAITING)
         end
       end
     end
@@ -55,6 +55,11 @@ class ImageDescriptorController < ApplicationController
     redirect_to :action => 'images', :tab => 'show'
   end
 
+  def targets
+    @image_descriptor = ImageDescriptor.find(params[:id])
+    @all_targets = ImageDescriptorTarget.available_targets
+  end
+
   def selected_packages
     data = ImageDescriptor.find(params[:id]).xml.packages
   end
diff --git a/src/app/controllers/image_descriptor_target_controller.rb 
b/src/app/controllers/image_descriptor_target_controller.rb
new file mode 100644
index 0000000..f2318e3
--- /dev/null
+++ b/src/app/controllers/image_descriptor_target_controller.rb
@@ -0,0 +1,8 @@
+class ImageDescriptorTargetController < ApplicationController
+  before_filter :require_user
+
+  def cancel
+    ImageDescriptorTarget.update(params[:id], :status => 
ImageDescriptorTarget::STATE_CANCELED)
+    redirect_to :controller => 'image_descriptor', :action => 'new', :params 
=> {'image_descriptor[id]' => params[:descriptor_id], :tab => 'software'}
+  end
+end
diff --git a/src/app/helpers/image_descriptor_helper.rb 
b/src/app/helpers/image_descriptor_helper.rb
index 7055ce5..73d2502 100644
--- a/src/app/helpers/image_descriptor_helper.rb
+++ b/src/app/helpers/image_descriptor_helper.rb
@@ -21,10 +21,10 @@ module ImageDescriptorHelper
     select_tag("repository", ["<option value='all' 
selected='selected'>All</option>"] + repositories.map{|repid, rep| "<option 
value=\"#{repid}\">#{rep['name']}</option>"}, {:onchange => 
"get_repository(event)"})
   end
 
-  def image_target_actions(target)
-    str = ''
+  def image_target_actions(descriptor, target)
+    str = '&nbsp;'
     if ImageDescriptorTarget::ACTIVE_STATES.include?(target.status)
-      str = link_to 'Cancel', {:controller => 'image_descriptor_target', 
:action => 'cancel', :id => target.id}
+      str = link_to 'Cancel', {:controller => 'image_descriptor_target', 
:action => 'cancel', :id => target.id, :descriptor_id => descriptor.id}
     end
     return str
   end
diff --git a/src/app/views/image_descriptor/_summary.haml 
b/src/app/views/image_descriptor/_summary.haml
index 670dbce..632669d 100644
--- a/src/app/views/image_descriptor/_summary.haml
+++ b/src/app/views/image_descriptor/_summary.haml
@@ -1,5 +1,10 @@
 - content_for :scripts do
   :javascript
+    $(document).ready(function() {
+      var refreshId = setInterval(function() {
+        $('#image_target_list').load('#{url_for :controller => 
'image_descriptor', :action => 'targets', :id => @image_descriptor.id, :ajax => 
true}');
+      }, 10000);
+    });
     function toggle_build_form_visibility(ev) {
       if ($("#image_build_form").css('display') == 'none') {
         $("#image_build_form").css('display', 'block');
@@ -45,22 +50,7 @@
                 %span
                   = target['name']
         = submit_tag "Build"
-    .target_list
-      - if @image_descriptor.image_descriptor_targets.empty?
-        .empty No images have been created yet.
-      -else
-        %ul
-          - @image_descriptor.image_descriptor_targets.each do |target|
-            %li
-              %span{:class => 'actions'}
-                = image_target_actions(target)
-              %span{:class => 'status'}
-                = target.status
-              = @all_targets[target.name]['name']
-              %p
-                = target.created_at
-              //%span{:style => 'float:right'}
-              //  Cancel
+    = render :partial => 'targets'
 
 .submit
   = submit_tag "Cancel"
diff --git a/src/app/views/image_descriptor/_targets.haml 
b/src/app/views/image_descriptor/_targets.haml
new file mode 100644
index 0000000..be66513
--- /dev/null
+++ b/src/app/views/image_descriptor/_targets.haml
@@ -0,0 +1,16 @@
+#image_target_list{:class => 'target_list'}
+  - if @image_descriptor.image_descriptor_targets.empty?
+    .empty No images have been created yet.
+  -else
+    %ul
+      - @image_descriptor.image_descriptor_targets.each do |target|
+        %li
+          %span{:class => 'actions'}
+            = image_target_actions(@image_descriptor, target)
+          %span{:class => 'status'}
+            = target.status
+          = @all_targets[target.name]['name']
+          %p
+            = target.created_at
+          //%span{:style => 'float:right'}
+          //  Cancel
diff --git a/src/app/views/image_descriptor/targets.haml 
b/src/app/views/image_descriptor/targets.haml
new file mode 100644
index 0000000..b4351d5
--- /dev/null
+++ b/src/app/views/image_descriptor/targets.haml
@@ -0,0 +1 @@
+= render :partial => 'targets'
-- 
1.7.0.1

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to