]> git.proxmox.com Git - pve-manager.git/blame - www/manager5/panel/ConfigPanel.js
copy ConfigPanel.js from manager to manager5
[pve-manager.git] / www / manager5 / panel / ConfigPanel.js
CommitLineData
55ed1090
DM
1Ext.define('PVE.panel.Config', {
2 extend: 'Ext.panel.Panel',
3 alias: 'widget.pvePanelConfig',
4
5 initComponent: function() {
6 var me = this;
7
8 var stateid = me.hstateid;
9
10 var sp = Ext.state.Manager.getProvider();
11
12 var activeTab;
13
14 var hsregex = /^([^\-\s]+)(-\S+)?$/;
15
16 if (stateid) {
17 var state = sp.get(stateid);
18 if (state && state.value) {
19 var res = hsregex.exec(state.value);
20 if (res && res[1]) {
21 activeTab = res[1];
22 }
23 }
24 }
25
26 var items = me.items || [];
27 me.items = undefined;
28
29 var tbar = me.tbar || [];
30 me.tbar = undefined;
31
32 var title = me.title || me.pveSelNode.data.text;
33 me.title = undefined;
34
35 tbar.unshift('->');
36 tbar.unshift({
37 xtype: 'tbtext',
38 text: title,
39 baseCls: 'x-panel-header-text',
40 padding: '0 0 5 0'
41 });
42
43 Ext.applyIf(me, { showSearch: true });
44
45 if (me.showSearch) {
46 items.unshift({
47 itemId: 'search',
48 xtype: 'pveResourceGrid'
49 });
50 }
51
52 var toolbar = Ext.create('Ext.toolbar.Toolbar', {
53 items: tbar,
54 style: 'border:0px;',
55 height: 28
56 });
57
58 var tab = Ext.create('Ext.tab.Panel', {
59 flex: 1,
60 border: true,
61 activeTab: activeTab,
62 defaults: Ext.apply(me.defaults || {}, {
63 pveSelNode: me.pveSelNode,
64 viewFilter: me.viewFilter,
65 workspace: me.workspace,
66 border: false
67 }),
68 items: items,
69 listeners: {
70 afterrender: function(tp) {
71 var first = tp.items.get(0);
72 if (first) {
73 first.fireEvent('show', first);
74 }
75 },
76 tabchange: function(tp, newcard, oldcard) {
77 var ntab = newcard.itemId;
78
79 // Note: '' is alias for first tab.
80 // First tab can be 'search' or something else
81 if (newcard.itemId === items[0].itemId) {
82 ntab = '';
83 }
84 if (stateid) {
85 if (newcard.phstateid) {
86 sp.set(newcard.phstateid, newcard.getHState());
87 } else {
88 sp.set(stateid, { value: ntab });
89 }
90 }
91 }
92 }
93 });
94
95 Ext.apply(me, {
96 layout: { type: 'vbox', align: 'stretch' },
97 items: [ toolbar, tab]
98 });
99
100 me.callParent();
101
102 var statechange = function(sp, key, state) {
103 if (stateid && (key === stateid) && state) {
104 var atab = tab.getActiveTab().itemId;
105 var res = hsregex.exec(state.value);
106 var ntab = (res && res[1]) ? res[1] : items[0].itemId;
107 if (ntab && (atab != ntab)) {
108 tab.setActiveTab(ntab);
109 }
110 }
111 };
112
113 if (stateid) {
114 me.mon(sp, 'statechange', statechange);
115 }
116 }
117});