On 02/28/2014 12:05 AM, Hongliang Wang wrote:
On 02/21/2014 11:57 PM, Aline Manera wrote:
On 02/21/2014 03:13 AM, Hongliang Wang wrote:
Added UI support for software updating. The Host Tab will initially
list available updates to user if there are any; or we will disable
"Update All" Button if no updates available.

V2 -> V3:
  3a) Fixed "Update All" Button always being disabled issue
      (Thanks to Paulo and Aline's comment)
  3b) Update REST API for update action according to back-end change
  3c) Added in-progress message when system is being updated
      (Thanks to Aline's comment)

V1 -> V2:
  2a) Fixed "Update All" Button always being disabled issue
      (Thanks to Paulo Ricardo Paz Vital's comment)

Signed-off-by: Hongliang Wang <hlwang@linux.vnet.ibm.com>
---
 ui/css/theme-default/host.css |  6 ++++++
 ui/js/src/kimchi.api.js       |  5 +++--
 ui/js/src/kimchi.host.js      | 12 ++++++++++--
 ui/pages/tabs/host.html.tmpl  |  1 +
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/ui/css/theme-default/host.css b/ui/css/theme-default/host.css
index 1342ade..884a614 100644
--- a/ui/css/theme-default/host.css
+++ b/ui/css/theme-default/host.css
@@ -248,4 +248,10 @@
 .software-update-arch {
     width: 190px;
 }
+
+.host-panel #software-updates-progress-textarea {
+    border: 1px solid #ddd;
+    height: 100px;
+    width: 846px;
+}
 /* End of Software Updates */
diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js
index c3a9516..abbf00e 100644
--- a/ui/js/src/kimchi.api.js
+++ b/ui/js/src/kimchi.api.js
@@ -745,7 +745,7 @@ var kimchi = {
         });
     },

-    updateSoftwares : function(suc, err) {
+    updateSoftwares : function(suc, err, progress) {
         var taskID = -1;
         var onResponse = function(data) {
             taskID = data['id'];
@@ -760,6 +760,7 @@ var kimchi = {
             var taskStatus = result['status'];
             switch(taskStatus) {

             case 'running':
+                progress && progress(result);
                 setTimeout(function() {
                     trackTask();
                 }, 200);

When the task finished you also need to update the messages to the user.
Otherwise it will miss the last update output
ACK

@@ -776,7 +777,7 @@ var kimchi = {
         };

         kimchi.requestJSON({
-            url : kimchi.url + 'host/packagesupdate/update',
+            url : kimchi.url + 'host/swupdate',
             type : "POST",
             contentType : "application/json",
             dataType : "json",
diff --git a/ui/js/src/kimchi.host.js b/ui/js/src/kimchi.host.js
index b6a5878..d4016b5 100644
--- a/ui/js/src/kimchi.host.js
+++ b/ui/js/src/kimchi.host.js
@@ -144,9 +144,17 @@ kimchi.host_main = function() {
                 disabled: true,
                 onClick: function(event) {
                     var updateButton = $(this);
+                    var progressArea = $('#software-updates-progress-textarea')[0];
+                    $(progressArea).removeClass('hidden').text('');
+                    !kimchi.isElementInViewport(progressArea) &&
+                        progressArea.scrollIntoView();
                     $(updateButton).text(i18n['KCHUPD6007M']).prop('disabled', true);
                     kimchi.updateSoftwares(function(result) {
                         $(updateButton).text(i18n['KCHUPD6006M']).prop('disabled', false);
+                    }, function() {}, function(result) {
+                        $(progressArea).text(result['message']);
+                        var scrollTop = $(progressArea).prop('scrollHeight');
+                        $(progressArea).prop('scrollTop', scrollTop);
                     });
                 }
             }],
@@ -189,8 +197,8 @@ kimchi.host_main = function() {
                 initSoftwareUpdatesGrid(softwareUpdates);
             }

-            $(softwareUpdatesGridID + '-update-button')
-                .prop('disabled', softwareUpdates.length === 0);
+            var updateButton = $('#' + softwareUpdatesGridID + '-update-button');
+            $(updateButton).prop('disabled', softwareUpdates.length === 0);
         });
     };

diff --git a/ui/pages/tabs/host.html.tmpl b/ui/pages/tabs/host.html.tmpl
index 1de4fcd..71f72c7 100644
--- a/ui/pages/tabs/host.html.tmpl
+++ b/ui/pages/tabs/host.html.tmpl
@@ -132,6 +132,7 @@
                     <div class="section-row">
                         <div class="section-value">
                             <div id="software-updates-grid-container"></div>
+                            <textarea id="software-updates-progress-textarea" class="hidden" readonly></textarea>
                         </div>




The user can increase/decrease the size of the output panel.
We need to make it fixed in width and height
It's a improved feature of Chrome/Safari browser and I think it's user-friendly. Think about it: if there are hundreds of lines to read, or user wants more height (because his screen is big enough), I think there is no need to force the height in a relatively small value. Though, the width will break our layout.

    I think we can allow re-size height and disable re-sizing width, right?

Yeap. Agree!


Also I'd suggest to have the panel silver - like a disabled input box. That way user is sure it is just output.
It's read-only now. User will know it's output.
And add a label to it

Update progress
<messages>

ACK.
                     </div>
                 </div>