]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/panel/SubConfigPanel.js
add 'edit' tool to notes panel
[pve-manager.git] / www / manager6 / panel / SubConfigPanel.js
1 Ext.define('PVE.panel.SubConfig', {
2 extend: 'Ext.tab.Panel',
3 alias: ['widget.pvePanelSubConfig'],
4
5 configPrefix: undefined,
6 tabPosition: 'left',
7 tabRotation: 0,
8 savedTab: undefined,
9
10 getHState: function(itemId) {
11 /*jslint confusion: true */
12 var me = this;
13
14 if (!itemId) {
15 if (me.getActiveTab() === undefined) {
16 me.setActiveTab(0);
17 }
18 itemId = me.getActiveTab().itemId;
19 }
20
21 var first = me.items.get(0);
22 var ntab;
23
24 // Note: '' is alias for first tab.
25 if (itemId === first.itemId) {
26 ntab = me.configPrefix;
27 } else {
28 ntab = me.configPrefix + '-' + itemId;
29 }
30
31 return { value: ntab };
32 },
33
34 initComponent: function() {
35 var me = this;
36
37 if (!me.phstateid) {
38 throw "no parent history state specified";
39 }
40
41 var sp = Ext.state.Manager.getProvider();
42 var state = sp.get(me.phstateid);
43
44 var hsregex = /^([^\-\s]+)-(\S+)?$/;
45
46 if (state && state.value) {
47 var res = hsregex.exec(state.value);
48 if (res && res[1] && res[2] && res[1] === me.configPrefix) {
49 me.activeTab = res[2]; // if we have lazy items, this does nothing
50 me.savedTab = res[2]; // so we save it here
51 }
52 }
53
54 Ext.apply(me, {
55 listeners: {
56 afterrender: function(tp) {
57 // if we have lazy items,
58 // we saved the tabname in savedTab
59 if (me.activeTab === undefined && me.savedTab) {
60 me.setActiveTab(me.savedTab);
61 } else if (me.activeTab === undefined) {
62 // if we have nothing else, we set 0 as active
63 me.setActiveTab(0);
64 }
65 },
66 tabchange: function(tp, newcard, oldcard) {
67 var state = me.getHState(newcard.itemId);
68 sp.set(me.phstateid, state);
69 }
70 }
71 });
72
73 me.callParent();
74
75 var statechange = function(sp, key, state) {
76 if ((key === me.phstateid) && state) {
77 var first = me.items.get(0);
78 var atab = me.getActiveTab().itemId;
79 var res = hsregex.exec(state.value);
80 var ntab = (res && res[1]) ? res[1] : first.itemId;
81 if (ntab && (atab != ntab)) {
82 me.setActiveTab(ntab);
83 }
84 }
85 };
86
87 me.mon(sp, 'statechange', statechange);
88 }
89 });