]> git.proxmox.com Git - proxmox-widget-toolkit.git/blob - grid/PendingObjectGrid.js
place space on correct side of colon
[proxmox-widget-toolkit.git] / grid / PendingObjectGrid.js
1 Ext.define('Proxmox.grid.PendingObjectGrid', {
2 extend: 'Proxmox.grid.ObjectGrid',
3 alias: ['widget.proxmoxPendingObjectGrid'],
4
5 getObjectValue: function(key, defaultValue, pending) {
6 var me = this;
7 var rec = me.store.getById(key);
8 if (rec) {
9 var value = (pending && Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) ?
10 rec.data.pending : rec.data.value;
11
12 if (Ext.isDefined(value) && (value !== '')) {
13 return value;
14 } else {
15 return defaultValue;
16 }
17 }
18 return defaultValue;
19 },
20
21 hasPendingChanges: function(key) {
22 var me = this;
23 var rows = me.rows;
24 var rowdef = (rows && rows[key]) ? rows[key] : {};
25 var keys = rowdef.multiKey || [ key ];
26 var pending = false;
27
28 Ext.Array.each(keys, function(k) {
29 var rec = me.store.getById(k);
30 if (rec && rec.data && Ext.isDefined(rec.data.pending) && (rec.data.pending !== '')) {
31 pending = true;
32 return false; // break
33 }
34 });
35
36 return pending;
37 },
38
39 renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
40 var me = this;
41 var rows = me.rows;
42 var key = record.data.key;
43 var rowdef = (rows && rows[key]) ? rows[key] : {};
44 var renderer = rowdef.renderer;
45 var current = '';
46 var pendingdelete = '';
47 var pending = '';
48
49 if (renderer) {
50 current = renderer(value, metaData, record, rowIndex, colIndex, store, false);
51 if (me.hasPendingChanges(key)) {
52 pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true);
53 }
54 if (pending == current) {
55 pending = undefined;
56 }
57 } else {
58 current = value || '';
59 pending = record.data.pending;
60 }
61
62 if (record.data['delete']) {
63 pendingdelete = '<div style="text-decoration: line-through;">'+ current +'</div>';
64 }
65
66 if (pending || pendingdelete) {
67 return current + '<div style="color:red">' + (pending || '') + pendingdelete + '</div>';
68 } else {
69 return current;
70 }
71 },
72
73 initComponent : function() {
74 var me = this;
75
76 var rows = me.rows;
77
78 if (!me.rstore) {
79 if (!me.url) {
80 throw "no url specified";
81 }
82
83 me.rstore = Ext.create('Proxmox.data.ObjectStore', {
84 model: 'KeyValuePendingDelete',
85 readArray: true,
86 url: me.url,
87 interval: me.interval,
88 extraParams: me.extraParams,
89 rows: me.rows
90 });
91 }
92
93 me.callParent();
94 }
95 });