]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - grid/ObjectGrid.js
1 /* Renders a list of key values objets
3 mandatory config parameters:
4 rows: an object container where each propery is a key-value object we want to render
7 header: gettext('Keyboard Layout'),
8 editor: 'Your.KeyboardEdit',
13 disabled: setting this parameter to true will disable selection and focus on the
14 proxmoxObjectGrid as well as greying out input elements.
15 Useful for a readonly tabular display
19 Ext
.define('Proxmox.grid.ObjectGrid', {
20 extend
: 'Ext.grid.GridPanel',
21 alias
: ['widget.proxmoxObjectGrid'],
25 editorConfig
: {}, // default config passed to editor
27 run_editor: function() {
30 var sm
= me
.getSelectionModel();
31 var rec
= sm
.getSelection()[0];
37 var rowdef
= rows
[rec
.data
.key
];
44 if (Ext
.isString(rowdef
.editor
)) {
48 win
= Ext
.create(rowdef
.editor
, config
);
53 Ext
.apply(config
, rowdef
.editor
);
54 win
= Ext
.createWidget(rowdef
.editor
.xtype
, config
);
59 win
.on('destroy', me
.reload
, me
);
67 getObjectValue: function(key
, defaultValue
) {
69 var rec
= me
.store
.getById(key
);
71 return rec
.data
.value
;
76 renderKey: function(key
, metaData
, record
, rowIndex
, colIndex
, store
) {
79 var rowdef
= (rows
&& rows
[key
]) ? rows
[key
] : {};
80 return rowdef
.header
|| key
;
83 renderValue: function(value
, metaData
, record
, rowIndex
, colIndex
, store
) {
86 var key
= record
.data
.key
;
87 var rowdef
= (rows
&& rows
[key
]) ? rows
[key
] : {};
89 var renderer
= rowdef
.renderer
;
91 return renderer(value
, metaData
, record
, rowIndex
, colIndex
, store
);
97 initComponent : function() {
104 throw "no url specified";
107 me
.rstore
= Ext
.create('Proxmox.data.ObjectStore', {
109 interval
: me
.interval
,
110 extraParams
: me
.extraParams
,
115 var rstore
= me
.rstore
;
117 var store
= Ext
.create('Proxmox.data.DiffStore', { rstore
: rstore
,
123 Ext
.Object
.each(rows
, function(key
, rowdef
) {
124 if (Ext
.isDefined(rowdef
.defaultValue
)) {
125 store
.add({ key
: key
, value
: rowdef
.defaultValue
});
126 } else if (rowdef
.required
) {
127 store
.add({ key
: key
, value
: undefined });
133 store
.sorters
.add(Ext
.create('Ext.util.Sorter', {
134 sorterFn
: me
.sorterFn
138 store
.filters
.add(Ext
.create('Ext.util.Filter', {
139 filterFn: function(item
) {
141 var rowdef
= rows
[item
.data
.key
];
142 if (!rowdef
|| (rowdef
.visible
=== false)) {
150 Proxmox
.Utils
.monStoreErrors(me
, rstore
);
157 header
: gettext('Name'),
158 width
: me
.cwidth1
|| 200,
160 renderer
: me
.renderKey
164 header
: gettext('Value'),
166 renderer
: me
.renderValue