]> git.proxmox.com Git - proxmox-widget-toolkit.git/blame - grid/PendingObjectGrid.js
use eslint and execute as check target
[proxmox-widget-toolkit.git] / grid / PendingObjectGrid.js
CommitLineData
40d43a39
DM
1Ext.define('Proxmox.grid.PendingObjectGrid', {
2 extend: 'Proxmox.grid.ObjectGrid',
3 alias: ['widget.proxmoxPendingObjectGrid'],
4
5 getObjectValue: function(key, defaultValue, pending) {
05a977a2
TL
6 let me = this;
7 let rec = me.store.getById(key);
40d43a39 8 if (rec) {
05a977a2 9 let value = rec.data.value;
2087bcd9
DC
10 if (pending) {
11 if (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') {
12 value = rec.data.pending;
01031528 13 } else if (rec.data.delete === 1) {
2087bcd9
DC
14 value = defaultValue;
15 }
16 }
40d43a39 17
01031528 18 if (Ext.isDefined(value) && value !== '') {
40d43a39
DM
19 return value;
20 } else {
21 return defaultValue;
22 }
23 }
24 return defaultValue;
25 },
26
27 hasPendingChanges: function(key) {
05a977a2
TL
28 let me = this;
29 let rows = me.rows;
30 let rowdef = rows && rows[key] ? rows[key] : {};
31 let keys = rowdef.multiKey || [key];
32 let pending = false;
40d43a39
DM
33
34 Ext.Array.each(keys, function(k) {
05a977a2 35 let rec = me.store.getById(k);
2087bcd9 36 if (rec && rec.data && (
05a977a2 37 (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') ||
01031528 38 rec.data.delete === 1
2087bcd9 39 )) {
40d43a39
DM
40 pending = true;
41 return false; // break
42 }
05a977a2 43 return true;
40d43a39
DM
44 });
45
46 return pending;
47 },
48
49 renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
05a977a2
TL
50 let me = this;
51 let rows = me.rows;
52 let key = record.data.key;
53 let rowdef = rows && rows[key] ? rows[key] : {};
54 let renderer = rowdef.renderer;
55 let current = '';
56 let pending = '';
40d43a39
DM
57
58 if (renderer) {
59 current = renderer(value, metaData, record, rowIndex, colIndex, store, false);
60 if (me.hasPendingChanges(key)) {
61 pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true);
62 }
05a977a2 63 if (pending === current) {
40d43a39
DM
64 pending = undefined;
65 }
66 } else {
67 current = value || '';
68 pending = record.data.pending;
69 }
70
01031528 71 if (record.data.delete) {
05a977a2 72 let delete_all = true;
2087bcd9
DC
73 if (rowdef.multiKey) {
74 Ext.Array.each(rowdef.multiKey, function(k) {
05a977a2 75 let rec = me.store.getById(k);
01031528 76 if (rec && rec.data && rec.data.delete !== 1) {
2087bcd9
DC
77 delete_all = false;
78 return false; // break
79 }
05a977a2 80 return true;
2087bcd9
DC
81 });
82 }
83 if (delete_all) {
84 pending = '<div style="text-decoration: line-through;">'+ current +'</div>';
85 }
40d43a39
DM
86 }
87
2087bcd9 88 if (pending) {
6dc34e55 89 return current + '<div style="color:darkorange">' + pending + '</div>';
40d43a39
DM
90 } else {
91 return current;
92 }
93 },
94
01031528 95 initComponent: function() {
05a977a2 96 let me = this;
40d43a39
DM
97
98 if (!me.rstore) {
99 if (!me.url) {
100 throw "no url specified";
101 }
102
103 me.rstore = Ext.create('Proxmox.data.ObjectStore', {
104 model: 'KeyValuePendingDelete',
105 readArray: true,
106 url: me.url,
107 interval: me.interval,
108 extraParams: me.extraParams,
01031528 109 rows: me.rows,
40d43a39
DM
110 });
111 }
112
113 me.callParent();
01031528 114 },
40d43a39 115});