diff --git a/www/manager5/grid/PendingObjectGrid.js b/www/manager5/grid/PendingObjectGrid.js new file mode 100644 index 00000000..051951a7 --- /dev/null +++ b/www/manager5/grid/PendingObjectGrid.js @@ -0,0 +1,94 @@ +Ext.define('PVE.grid.PendingObjectGrid', { + extend: 'PVE.grid.ObjectGrid', + alias: ['widget.pvePendingObjectGrid'], + + getObjectValue: function(key, defaultValue, pending) { + 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; + + if (Ext.isDefined(value) && (value !== '')) { + return value; + } else { + 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) { + var me = this; + var rows = me.rows; + var key = record.data.key; + var rowdef = (rows && rows[key]) ? rows[key] : {}; + var renderer = rowdef.renderer; + var current = ''; + var pendingdelete = ''; + var pending = ''; + + if (renderer) { + current = renderer(value, metaData, record, rowIndex, colIndex, store, false); + if (me.hasPendingChanges(key)) { + pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true); + } + if (pending == current) { + pending = undefined; + } + } else { + current = value; + pending = record.data.pending; + } + + if (record.data['delete']) { + pendingdelete = '