]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
PendingObjectGrid: fix display of deletion of multikey fields
authorDominik Csapak <d.csapak@proxmox.com>
Tue, 10 Apr 2018 14:36:42 +0000 (16:36 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 23 Apr 2018 10:13:46 +0000 (12:13 +0200)
we did only check if the first field of a mulitfield key is being deleted,
resulting in showing no pending change at all when deleting any other,
and as long as only deletions were taking place

also when deleting the 'main' key of a multikey field, we
showed the deletion of the whole line, even when already showing
a different pending line

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
grid/PendingObjectGrid.js

index 0061c37d0ed1d677c9cc019f40e1bcbff087d5f5..8163468244ab67fe9bb7e43cb68aca75c12c55c0 100644 (file)
@@ -6,8 +6,14 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
        var me = this;
        var rec = me.store.getById(key);
        if (rec) {
-           var value = (pending && Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) ? 
-               rec.data.pending : rec.data.value;
+           var value = rec.data.value;
+           if (pending) {
+               if (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') {
+                   value = rec.data.pending;
+               } else if (rec.data['delete'] === 1) {
+                   value = defaultValue;
+               }
+           }
 
             if (Ext.isDefined(value) && (value !== '')) {
                return value;
@@ -27,7 +33,10 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
 
        Ext.Array.each(keys, function(k) {
            var rec = me.store.getById(k);
-           if (rec && rec.data && Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) {
+           if (rec && rec.data && (
+                   (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') ||
+                   rec.data['delete'] === 1
+           )) {
                pending = true;
                return false; // break
            }
@@ -60,11 +69,23 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
        }
 
        if (record.data['delete']) {
-           pendingdelete = '<div style="text-decoration: line-through;">'+ current +'</div>';
+           var delete_all = true;
+           if (rowdef.multiKey) {
+               Ext.Array.each(rowdef.multiKey, function(k) {
+                   var rec = me.store.getById(k);
+                   if (rec && rec.data && rec.data['delete'] !== 1) {
+                       delete_all = false;
+                       return false; // break
+                   }
+               });
+           }
+           if (delete_all) {
+               pending = '<div style="text-decoration: line-through;">'+ current +'</div>';
+           }
        }
 
-       if (pending || pendingdelete) {
-           return current + '<div style="color:red">' + (pending || '') + pendingdelete + '</div>';
+       if (pending) {
+           return current + '<div style="color:red">' + pending + '</div>';
        } else {
            return current;
        }