]>
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 userCls
: 'proxmox-tags-full',
11 initComponent: function() {
14 let rstore
= PVE
.data
.ResourceStore
;
16 let store
= Ext
.create('Ext.data.Store', {
17 model
: 'PVEResources',
18 sorters
: me
.defaultSorter
,
25 let textfilterMatch = function(item
) {
26 for (const field
of ['name', 'storage', 'node', 'type', 'text']) {
27 let v
= item
.data
[field
];
28 if (v
&& v
.toLowerCase().indexOf(textfilter
) >= 0) {
35 let updateGrid = function() {
36 var filterfn
= me
.viewFilter
? me
.viewFilter
.filterfn
: null;
38 store
.suspendEvents();
41 let gather_child_nodes
;
42 gather_child_nodes = function(node
) {
43 if (!node
|| !node
.childNodes
) {
46 for (let child
of node
.childNodes
) {
47 let orgNode
= rstore
.data
.get(child
.data
.id
);
49 if ((!filterfn
|| filterfn(child
)) && (!textfilter
|| textfilterMatch(child
))) {
50 nodeidx
[child
.data
.id
] = orgNode
;
53 gather_child_nodes(child
);
56 gather_child_nodes(me
.pveSelNode
);
58 // remove vanished items
60 store
.each(olditem
=> {
61 if (!nodeidx
[olditem
.data
.id
]) {
71 for (const [_key
, item
] of Object
.entries(nodeidx
)) {
72 // getById() use find(), which is slow (ExtJS4 DP5)
73 let olditem
= store
.data
.get(item
.data
.id
);
79 for (let field
of PVE
.data
.ResourceStore
.fieldNames
) {
80 if (field
!== 'id' && item
.data
[field
] !== olditem
.data
[field
]) {
83 olditem
.set(field
, item
.data
[field
]);
87 olditem
.endEdit(true);
96 store
.fireEvent('refresh', store
);
102 stateId
: 'grid-resource',
105 gettext('Search') + ':', ' ',
110 enableKeyEvents
: true,
113 keyup: function(field
, e
) {
114 textfilter
= field
.getValue().toLowerCase();
124 itemcontextmenu
: PVE
.Utils
.createCmdMenu
,
125 itemdblclick: function(v
, record
) {
126 var ws
= me
.up('pveStdWorkspace');
127 ws
.selectById(record
.data
.id
);
129 afterrender: function() {
133 columns
: rstore
.defaultColumns(),
136 me
.mon(rstore
, 'load', () => updateGrid());