]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/ObjectGrid.js
move hideHeaders into static configuration
[pve-manager.git] / www / manager6 / grid / ObjectGrid.js
1 /* Renders a list of key values objets
2
3 mandatory config parameters:
4 rows: an object container where each propery is a key-value object we want to render
5 var rows = {
6 keyboard: {
7 header: gettext('Keyboard Layout'),
8 editor: 'PVE.dc.KeyboardEdit',
9 renderer: PVE.Utils.render_kvm_language,
10 required: true
11 },
12
13 optional:
14 disabled: setting this parameter to true will disable selection and focus on the
15 pveObjectGrid as well as greying out input elements.
16 Useful for a readonly tabular display
17
18 */
19
20 Ext.define('PVE.grid.ObjectGrid', {
21 extend: 'Ext.grid.GridPanel',
22 alias: ['widget.pveObjectGrid'],
23 disabled: false,
24 hideHeaders: true,
25
26 getObjectValue: function(key, defaultValue) {
27 var me = this;
28 var rec = me.store.getById(key);
29 if (rec) {
30 return rec.data.value;
31 }
32 return defaultValue;
33 },
34
35 renderKey: function(key, metaData, record, rowIndex, colIndex, store) {
36 var me = this;
37 var rows = me.rows;
38 var rowdef = (rows && rows[key]) ? rows[key] : {};
39 return rowdef.header || key;
40 },
41
42 renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
43 var me = this;
44 var rows = me.rows;
45 var key = record.data.key;
46 var rowdef = (rows && rows[key]) ? rows[key] : {};
47
48 var renderer = rowdef.renderer;
49 if (renderer) {
50 return renderer(value, metaData, record, rowIndex, colIndex, store);
51 }
52
53 return value;
54 },
55
56 initComponent : function() {
57 var me = this;
58
59 var rows = me.rows;
60
61 if (!me.rstore) {
62 if (!me.url) {
63 throw "no url specified";
64 }
65
66 me.rstore = Ext.create('PVE.data.ObjectStore', {
67 url: me.url,
68 interval: me.interval,
69 extraParams: me.extraParams,
70 rows: me.rows
71 });
72 }
73
74 var rstore = me.rstore;
75
76 var store = Ext.create('PVE.data.DiffStore', { rstore: rstore,
77 sorters: [],
78 filters: []
79 });
80
81 if (rows) {
82 Ext.Object.each(rows, function(key, rowdef) {
83 if (Ext.isDefined(rowdef.defaultValue)) {
84 store.add({ key: key, value: rowdef.defaultValue });
85 } else if (rowdef.required) {
86 store.add({ key: key, value: undefined });
87 }
88 });
89 }
90
91 if (me.sorterFn) {
92 store.sorters.add(Ext.create('Ext.util.Sorter', {
93 sorterFn: me.sorterFn
94 }));
95 }
96
97 store.filters.add(Ext.create('Ext.util.Filter', {
98 filterFn: function(item) {
99 if (rows) {
100 var rowdef = rows[item.data.key];
101 if (!rowdef || (rowdef.visible === false)) {
102 return false;
103 }
104 }
105 return true;
106 }
107 }));
108
109 PVE.Utils.monStoreErrors(me, rstore);
110
111 Ext.applyIf(me, {
112 store: store,
113 stateful: false,
114 columns: [
115 {
116 header: gettext('Name'),
117 width: me.cwidth1 || 200,
118 dataIndex: 'key',
119 renderer: me.renderKey
120 },
121 {
122 flex: 1,
123 header: gettext('Value'),
124 dataIndex: 'value',
125 renderer: me.renderValue
126 }
127 ]
128 });
129
130 me.callParent();
131 }
132 });