]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/ResourceGrid.js
1 Ext
.define('PVE.grid.ResourceGrid', {
2 extend
: 'Ext.grid.GridPanel',
3 alias
: ['widget.pveResourceGrid'],
6 saveCurrentState: function(){
14 initComponent : function() {
17 var rstore
= PVE
.data
.ResourceStore
;
18 var sp
= Ext
.state
.Manager
.getProvider();
20 var coldef
= rstore
.defaultColums();
22 var store
= Ext
.create('Ext.data.Store', {
23 model
: 'PVEResources',
24 sorters
: me
.defaultSorter
,
25 proxy
: { type
: 'memory' }
30 var textfilter_match = function(item
) {
32 Ext
.each(['name', 'storage', 'node', 'type', 'text'], function(field
) {
33 var v
= item
.data
[field
];
34 if (v
!== undefined) {
36 if (v
.indexOf(textfilter
) >= 0) {
45 var updateGrid = function() {
47 var filterfn
= me
.viewFilter
? me
.viewFilter
.filterfn
: null;
49 //console.log("START GRID UPDATE " + me.viewFilter);
51 store
.suspendEvents();
54 var gather_child_nodes = function(cn
) {
58 var cs
= cn
.childNodes
;
62 var len
= cs
.length
, i
= 0, n
, res
;
64 for (; i
< len
; i
++) {
66 var orgnode
= rstore
.data
.get(child
.data
.id
);
68 if ((!filterfn
|| filterfn(child
)) &&
69 (!textfilter
|| textfilter_match(child
))) {
70 nodeidx
[child
.data
.id
] = orgnode
;
73 gather_child_nodes(child
);
76 gather_child_nodes(me
.pveSelNode
);
78 // remove vanished items
80 store
.each(function(olditem
) {
81 var item
= nodeidx
[olditem
.data
.id
];
83 //console.log("GRID REM UID: " + olditem.data.id);
95 for (key
in nodeidx
) {
96 if (nodeidx
.hasOwnProperty(key
)) {
97 var item
= nodeidx
[key
];
99 // getById() use find(), which is slow (ExtJS4 DP5)
100 //var olditem = store.getById(item.data.id);
101 var olditem
= store
.data
.get(item
.data
.id
);
104 //console.log("GRID ADD UID: " + item.data.id);
105 var info
= Ext
.apply({}, item
.data
);
106 var child
= Ext
.create(store
.model
, info
);
110 // try to detect changes
112 var fieldkeys
= PVE
.data
.ResourceStore
.fieldNames
;
113 var fieldcount
= fieldkeys
.length
;
115 for (fieldind
= 0; fieldind
< fieldcount
; fieldind
++) {
116 var field
= fieldkeys
[fieldind
];
117 if (field
!= 'id' && item
.data
[field
] != olditem
.data
[field
]) {
119 //console.log("changed item " + item.id + " " + field + " " + item.data[field] + " != " + olditem.data[field]);
121 olditem
.set(field
, item
.data
[field
]);
125 olditem
.endEdit(true);
126 olditem
.commit(true);
131 if (addlist
.length
) {
137 store
.resumeEvents();
139 store
.fireEvent('refresh', store
);
141 //console.log("END GRID UPDATE");
144 var filter_task
= new Ext
.util
.DelayedTask(function(){
148 var load_cb = function() {
155 stateId
: 'resourcegrid',
159 itemId
: 'resetbutton',
160 tooltip
: gettext("Reset Columns"),
161 iconCls
: 'fa fa-fw fa-columns x-button-reset',
162 handler: function(button
, e
, opts
) {
163 var sp
= Ext
.state
.Manager
.getProvider();
164 me
.getStore().sort(me
.defaultSorter
);
165 me
.reconfigure(null, PVE
.data
.ResourceStore
.defaultColums());
166 sp
.clear(me
.stateId
);
170 gettext('Search') + ':', ' ',
175 enableKeyEvents
: true,
177 keyup: function(field
, e
) {
178 var v
= field
.getValue();
179 textfilter
= v
.toLowerCase();
180 filter_task
.delay(500);
189 itemcontextmenu: function(v
, record
, item
, index
, event
) {
194 if (record
.data
.type
=== 'qemu' && !record
.data
.template
) {
195 menu
= Ext
.create('PVE.qemu.CmdMenu', {
198 } else if (record
.data
.type
=== 'qemu' && record
.data
.template
) {
199 menu
= Ext
.create('PVE.qemu.TemplateMenu', {
202 } else if (record
.data
.type
=== 'lxc' && !record
.data
.template
) {
203 menu
= Ext
.create('PVE.lxc.CmdMenu', {
206 } else if (record
.data
.type
=== 'lxc' && record
.data
.template
) {
207 /* since clone does not work reliably, disable for now
208 menu = Ext.create('PVE.lxc.TemplateMenu', {
217 menu
.showAt(event
.getXY());
219 itemdblclick: function(v
, record
) {
220 var ws
= me
.up('pveStdWorkspace');
221 ws
.selectById(record
.data
.id
);
223 destroy: function() {
224 rstore
.un("load", load_cb
);
226 columnschanged
: 'saveCurrentState',
227 columnresize
: 'saveCurrentState',
228 columnmove
: 'saveCurrentState',
229 sortchange
: 'saveCurrentState'
235 rstore
.on("load", load_cb
);