PendingObjectGrid: fix display of deletion of multikey fields

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>
This commit is contained in:
Dominik Csapak 2018-04-10 16:36:42 +02:00 committed by Thomas Lamprecht
parent bebf81f0ce
commit 2087bcd90b

View File

@ -6,8 +6,14 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
var me = this; var me = this;
var rec = me.store.getById(key); var rec = me.store.getById(key);
if (rec) { if (rec) {
var value = (pending && Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) ? var value = rec.data.value;
rec.data.pending : 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 !== '')) { if (Ext.isDefined(value) && (value !== '')) {
return value; return value;
@ -27,7 +33,10 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
Ext.Array.each(keys, function(k) { Ext.Array.each(keys, function(k) {
var rec = me.store.getById(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; pending = true;
return false; // break return false; // break
} }
@ -60,11 +69,23 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
} }
if (record.data['delete']) { 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) { if (pending) {
return current + '<div style="color:red">' + (pending || '') + pendingdelete + '</div>'; return current + '<div style="color:red">' + pending + '</div>';
} else { } else {
return current; return current;
} }