]>
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'],
10 initComponent : function() {
13 var rstore
= PVE
.data
.ResourceStore
;
14 var sp
= Ext
.state
.Manager
.getProvider();
16 var coldef
= rstore
.defaultColumns();
18 var store
= Ext
.create('Ext.data.Store', {
19 model
: 'PVEResources',
20 sorters
: me
.defaultSorter
,
21 proxy
: { type
: 'memory' },
26 var textfilter_match = function(item
) {
28 Ext
.each(['name', 'storage', 'node', 'type', 'text'], function(field
) {
29 var v
= item
.data
[field
];
30 if (v
!== undefined) {
32 if (v
.indexOf(textfilter
) >= 0) {
41 var updateGrid = function() {
43 var filterfn
= me
.viewFilter
? me
.viewFilter
.filterfn
: null;
45 //console.log("START GRID UPDATE " + me.viewFilter);
47 store
.suspendEvents();
50 var gather_child_nodes = function(cn
) {
54 var cs
= cn
.childNodes
;
58 var len
= cs
.length
, i
= 0, n
, res
;
60 for (; i
< len
; i
++) {
62 var orgnode
= rstore
.data
.get(child
.data
.id
);
64 if ((!filterfn
|| filterfn(child
)) &&
65 (!textfilter
|| textfilter_match(child
))) {
66 nodeidx
[child
.data
.id
] = orgnode
;
69 gather_child_nodes(child
);
72 gather_child_nodes(me
.pveSelNode
);
74 // remove vanished items
76 store
.each(function(olditem
) {
77 var item
= nodeidx
[olditem
.data
.id
];
79 //console.log("GRID REM UID: " + olditem.data.id);
91 for (key
in nodeidx
) {
92 if (nodeidx
.hasOwnProperty(key
)) {
93 var item
= nodeidx
[key
];
95 // getById() use find(), which is slow (ExtJS4 DP5)
96 //var olditem = store.getById(item.data.id);
97 var olditem
= store
.data
.get(item
.data
.id
);
100 //console.log("GRID ADD UID: " + item.data.id);
101 var info
= Ext
.apply({}, item
.data
);
102 var child
= Ext
.create(store
.model
, info
);
106 // try to detect changes
108 var fieldkeys
= PVE
.data
.ResourceStore
.fieldNames
;
109 var fieldcount
= fieldkeys
.length
;
111 for (fieldind
= 0; fieldind
< fieldcount
; fieldind
++) {
112 var field
= fieldkeys
[fieldind
];
113 if (field
!= 'id' && item
.data
[field
] != olditem
.data
[field
]) {
115 //console.log("changed item " + item.id + " " + field + " " + item.data[field] + " != " + olditem.data[field]);
117 olditem
.set(field
, item
.data
[field
]);
121 olditem
.endEdit(true);
122 olditem
.commit(true);
127 if (addlist
.length
) {
133 store
.resumeEvents();
135 store
.fireEvent('refresh', store
);
137 //console.log("END GRID UPDATE");
140 var filter_task
= new Ext
.util
.DelayedTask(function(){
144 var load_cb = function() {
151 stateId
: 'grid-resource',
154 gettext('Search') + ':', ' ',
159 enableKeyEvents
: true,
161 keyup: function(field
, e
) {
162 var v
= field
.getValue();
163 textfilter
= v
.toLowerCase();
164 filter_task
.delay(500);
173 itemcontextmenu
: PVE
.Utils
.createCmdMenu
,
174 itemdblclick: function(v
, record
) {
175 var ws
= me
.up('pveStdWorkspace');
176 ws
.selectById(record
.data
.id
);
178 destroy: function() {
179 rstore
.un("load", load_cb
);
186 rstore
.on("load", load_cb
);