[Kimchi-devel] [PATCH] [Kimchi] Fix issue #1019: Hide storage volume actions menu for iSCSI/SCSI pools

Aline Manera alinefm at linux.vnet.ibm.com
Wed Sep 28 14:34:40 UTC 2016


Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
---
 ui/js/src/kimchi.storage_main.js | 57 +++++++++++++++++++++++++++-------------
 ui/pages/tabs/storage.html.tmpl  |  4 +--
 2 files changed, 41 insertions(+), 20 deletions(-)

diff --git a/ui/js/src/kimchi.storage_main.js b/ui/js/src/kimchi.storage_main.js
index 0d7a6d7..3208bd2 100644
--- a/ui/js/src/kimchi.storage_main.js
+++ b/ui/js/src/kimchi.storage_main.js
@@ -234,24 +234,37 @@ kimchi.storageBindClick = function() {
             var checkbox = $(this);
             var volumeBlock = $(this).closest('.wok-datagrid-row');
             var volumesBlock = $(this).closest('.volumeslist');
+            var poolType = volumesBlock.data('type')
+            var selectedVolumes = $('[name="selected-volume[]"]:checked',volumesBlock)
             var disabled = [];
-            if($('[name="selected-volume[]"]:checked',volumesBlock).length > 1) {
-                disabled = ['volume-clone','volume-wipe','volume-delete'];
-                $('.volume-resize',volumesBlock).parent().addClass('disabled');
-                for (i = 0; i < disabled.length; i++) {
-                    $('.'+disabled[i],volumesBlock).parent().removeClass('disabled');
-                }
-            }else if($('[name="selected-volume[]"]:checked',volumesBlock).length === 1){
-                disabled = ['volume-resize','volume-clone','volume-wipe','volume-delete'];
-                for (i = 0; i < disabled.length; i++) {
-                    $('.'+disabled[i],volumesBlock).parent().removeClass('disabled');
-                }
-            }else {
+            var enabled = [];
+
+            // No volume selected
+            if (selectedVolumes.length === 0) {
                 disabled = ['volume-resize','volume-clone','volume-wipe','volume-delete'];
-                for (i = 0; i < disabled.length; i++) {
-                    $('.'+disabled[i],volumesBlock).parent().addClass('disabled');
+                enabled = [];
+            // One or more volumes selected
+            } else {
+                // Read-write pools
+                if (poolType !== 'scsi' && poolType !== 'iscsi') {
+                    if (selectedVolumes.length > 1) {
+                        disabled = ['volume-resize'];
+                        enabled = ['volume-clone','volume-wipe','volume-delete'];
+                    } else {
+                        disabled = [];
+                        enabled = ['volume-resize','volume-clone','volume-wipe', 'volume-delete'];
+                    }
                 }
             }
+
+            for (i = 0; i < disabled.length; i++) {
+                $('.'+disabled[i],volumesBlock).parent().addClass('disabled');
+            }
+
+            for (i = 0; i < enabled.length; i++) {
+                $('.'+enabled[i],volumesBlock).parent().removeClass('disabled');
+            }
+
             if(checkbox.is(":checked")){
                 volumeBlock.addClass('selected');
             }else {
@@ -293,19 +306,27 @@ kimchi.storageBindClick = function() {
         }
     });
 
-    $('.pool-add-volume').each(function(index) {
+    $('.volume-add').each(function(index) {
         var canAddVolume =
             $(this).data('stat') === 'active' &&
             $(this).data('type') !== 'iscsi' &&
             $(this).data('type') !== 'scsi';
         if(canAddVolume) {
-            $(this).parent().show();
+            $(this).parent().removeClass('disabled');
         }
         else {
-            $(this).parent().hide();
+            $(this).parent().addClass('disabled');
         }
     });
 
+    $('.volumeslist').each(function(index) {
+        var rwpool = $(this).data('type') !== 'iscsi' &&
+                      $(this).data('type') !== 'scsi'
+
+        if (!rwpool)
+            $('.pool-action', $(this)).addClass('hidden');
+    });
+
     if(wok.tabMode['storage'] === 'admin') {
         $('.pool-delete').on('click', function(event) {
             event.preventDefault();
@@ -382,7 +403,7 @@ kimchi.storageBindClick = function() {
             }
         });
 
-        $('.pool-add-volume').on('click', function(event) {
+        $('.volume-add').on('click', function(event) {
             event.preventDefault();
             var poolName = $(this).data('name');
             kimchi.selectedSP = poolName;
diff --git a/ui/pages/tabs/storage.html.tmpl b/ui/pages/tabs/storage.html.tmpl
index 92d9b75..65d6d19 100644
--- a/ui/pages/tabs/storage.html.tmpl
+++ b/ui/pages/tabs/storage.html.tmpl
@@ -125,13 +125,13 @@
             </span>
          </span>
          <div class="volumes">
-            <div id="volume-{name}" class="volumeslist" data-name="{name}">
+            <div id="volume-{name}" class="volumeslist" data-name="{name}" data-type="{type}">
                 <div class="row">
                     <div class="pull-left">
                         <div class="dropdown menu-flat pool-action">
                             <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="edit-alt"></span>$_("Actions")<span class="caret"></span></button>
                             <ul class="dropdown-menu actionsheet">
-                                <li><a href="#" class="pool-add-volume" data-stat="{state}" data-name="{name}" data-type="{type}"><i class="fa fa-plus-circle"></i> $_("Add Volume")</a></li>
+                                <li class="disabled"><a href="#" class="volume-add" data-stat="{state}" data-name="{name}" data-type="{type}"><i class="fa fa-plus-circle"></i> $_("Add Volume")</a></li>
                                 <li class="disabled"><a href="#" class="volume-resize" data-name="{name}"><i class="fa fa-external-link-square"></i> $_("Resize")</a></li>
                                 <li class="disabled"><a href="#" class="volume-clone" data-name="{name}"><i class="fa fa-copy"></i> $_("Clone")</a></li>
                                 <li class="disabled"><a href="#" class="volume-wipe" data-name="{name}"><i class="fa fa-eraser"></i> $_("Wipe")</a></li>
-- 
2.5.5




More information about the Kimchi-devel mailing list