]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/ViewSelector.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[pve-manager.git] / www / manager6 / form / ViewSelector.js
1 /*
2 * Top left combobox, used to select a view of the underneath RessourceTree
3 */
4 Ext.define('PVE.form.ViewSelector', {
5 extend: 'Ext.form.field.ComboBox',
6 alias: ['widget.pveViewSelector'],
7
8 editable: false,
9 allowBlank: false,
10 forceSelection: true,
11 autoSelect: false,
12 valueField: 'key',
13 displayField: 'value',
14 hideLabel: true,
15 queryMode: 'local',
16
17 initComponent: function() {
18 var me = this;
19
20 var default_views = {
21 server: {
22 text: gettext('Server View'),
23 groups: ['node'],
24 },
25 folder: {
26 text: gettext('Folder View'),
27 groups: ['type'],
28 },
29 storage: {
30 text: gettext('Storage View'),
31 groups: ['node'],
32 filterfn: function(node) {
33 return node.data.type === 'storage' || node.data.type === 'node';
34 },
35 },
36 pool: {
37 text: gettext('Pool View'),
38 groups: ['pool'],
39 // Pool View only lists VMs and Containers
40 filterfn: function(node) {
41 return node.data.type === 'qemu' || node.data.type === 'lxc' || node.data.type === 'openvz' ||
42 node.data.type === 'pool';
43 },
44 },
45 };
46
47 var groupdef = [];
48 Ext.Object.each(default_views, function(viewname, value) {
49 groupdef.push([viewname, value.text]);
50 });
51
52 var store = Ext.create('Ext.data.Store', {
53 model: 'KeyValue',
54 proxy: {
55 type: 'memory',
56 reader: 'array',
57 },
58 data: groupdef,
59 autoload: true,
60 });
61
62 Ext.apply(me, {
63 store: store,
64 value: groupdef[0][0],
65 getViewFilter: function() {
66 var view = me.getValue();
67 return Ext.apply({ id: view }, default_views[view] || default_views.server);
68 },
69
70 getState: function() {
71 return { value: me.getValue() };
72 },
73
74 applyState : function(state, doSelect) {
75 var view = me.getValue();
76 if (state && state.value && (view != state.value)) {
77 var record = store.findRecord('key', state.value, 0, false, true, true);
78 if (record) {
79 me.setValue(state.value, true);
80 if (doSelect) {
81 me.fireEvent('select', me, [record]);
82 }
83 }
84 }
85 },
86 stateEvents: [ 'select' ],
87 stateful: true,
88 stateId: 'pveview',
89 id: 'view',
90 });
91
92 me.callParent();
93
94 var statechange = function(sp, key, value) {
95 if (key === me.id) {
96 me.applyState(value, true);
97 }
98 };
99
100 var sp = Ext.state.Manager.getProvider();
101 me.mon(sp, 'statechange', statechange, me);
102 },
103 });