PendingObjectGrid: improve detection of pending changes

This commit is contained in:
Dietmar Maurer 2015-01-22 12:55:23 +01:00
parent 55cb04a5f8
commit 915c63d741
2 changed files with 24 additions and 8 deletions

View File

@ -18,6 +18,23 @@ Ext.define('PVE.grid.PendingObjectGrid', {
return defaultValue; return defaultValue;
}, },
hasPendingChanges: function(key) {
var me = this;
var rows = me.rows;
var rowdef = (rows && rows[key]) ? rows[key] : {};
var keys = rowdef.multiKey || [ key ];
var pending = false;
Ext.Array.each(keys, function(k) {
var rec = me.store.getById(k);
if (rec && rec.data && Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) {
pending = true;
}
});
return pending;
},
renderValue: function(value, metaData, record, rowIndex, colIndex, store) { renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
var me = this; var me = this;
var rows = me.rows; var rows = me.rows;
@ -30,7 +47,7 @@ Ext.define('PVE.grid.PendingObjectGrid', {
if (renderer) { if (renderer) {
current = renderer(value, metaData, record, rowIndex, colIndex, store, false); current = renderer(value, metaData, record, rowIndex, colIndex, store, false);
if ((Ext.isDefined(record.data.pending) && (record.data.pending !== '')) || rowdef.multiValues) { if (me.hasPendingChanges(key)) {
pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true); pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true);
} }
if (pending == current) { if (pending == current) {

View File

@ -63,7 +63,7 @@ Ext.define('PVE.qemu.HardwareView', {
'PVE.qemu.ProcessorEdit' : undefined, 'PVE.qemu.ProcessorEdit' : undefined,
tdCls: 'pve-itype-icon-processor', tdCls: 'pve-itype-icon-processor',
defaultValue: 1, defaultValue: 1,
multiValues: 1, multiKey: ['sockets', 'cpu', 'cores', 'numa'],
renderer: function(value, metaData, record, rowIndex, colIndex, store, pending) { renderer: function(value, metaData, record, rowIndex, colIndex, store, pending) {
var sockets = me.getObjectValue('sockets', 1, pending); var sockets = me.getObjectValue('sockets', 1, pending);
@ -390,23 +390,22 @@ Ext.define('PVE.qemu.HardwareView', {
return false; return false;
} }
if (Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) {
return true;
}
if (rec.data['delete']) { if (rec.data['delete']) {
return true; return true;
} }
return false; return me.hasPendingChanges(rec.data.key);
}, },
handler: function(b, e, rec) { handler: function(b, e, rec) {
var rowdef = me.rows[rec.data.key] || {};
var keys = rowdef.multiKey || [ rec.data.key ];
var revert = keys.join(',');
PVE.Utils.API2Request({ PVE.Utils.API2Request({
url: '/api2/extjs/' + baseurl, url: '/api2/extjs/' + baseurl,
waitMsgTarget: me, waitMsgTarget: me,
method: 'PUT', method: 'PUT',
params: { params: {
'revert': rec.data.key 'revert': revert
}, },
callback: function() { callback: function() {
reload(); reload();