]>
Commit | Line | Data |
---|---|---|
434f2466 DM |
1 | Ext.define('PVE.panel.SubConfig', { |
2 | extend: 'Ext.tab.Panel', | |
3 | alias: ['widget.pvePanelSubConfig'], | |
4 | ||
5 | configPrefix: undefined, | |
6 | ||
7 | getHState: function(itemId) { | |
8 | /*jslint confusion: true */ | |
9 | var me = this; | |
10 | ||
11 | if (!itemId) { | |
12 | itemId = me.getActiveTab().itemId; | |
13 | } | |
14 | ||
15 | var first = me.items.get(0); | |
16 | var ntab; | |
17 | ||
18 | // Note: '' is alias for first tab. | |
19 | if (itemId === first.itemId) { | |
20 | ntab = me.configPrefix; | |
21 | } else { | |
22 | ntab = me.configPrefix + '-' + itemId; | |
23 | } | |
24 | ||
25 | return { value: ntab }; | |
26 | }, | |
27 | ||
28 | initComponent: function() { | |
29 | var me = this; | |
30 | ||
31 | if (!me.phstateid) { | |
32 | throw "no parent history state specified"; | |
33 | } | |
34 | ||
35 | var sp = Ext.state.Manager.getProvider(); | |
36 | var state = sp.get(me.phstateid); | |
37 | ||
38 | var hsregex = /^([^\-\s]+)-(\S+)?$/; | |
39 | ||
40 | if (state && state.value) { | |
41 | var res = hsregex.exec(state.value); | |
42 | if (res && res[1] && res[2] && res[1] === me.configPrefix) { | |
43 | me.activeTab = res[2]; | |
44 | } | |
45 | } | |
46 | ||
47 | Ext.apply(me, { | |
48 | plain: true, | |
49 | tabPosition: 'bottom', | |
50 | listeners: { | |
51 | afterrender: function(tp) { | |
52 | var first = tp.items.get(0); | |
53 | if (first) { | |
54 | first.fireEvent('show', first); | |
55 | } | |
56 | }, | |
57 | tabchange: function(tp, newcard, oldcard) { | |
58 | var state = me.getHState(newcard.itemId); | |
59 | sp.set(me.phstateid, state); | |
60 | } | |
61 | } | |
62 | }); | |
63 | ||
64 | me.callParent(); | |
65 | ||
66 | var statechange = function(sp, key, state) { | |
67 | if ((key === me.phstateid) && state) { | |
68 | var first = me.items.get(0); | |
69 | var atab = me.getActiveTab().itemId; | |
70 | var res = hsregex.exec(state.value); | |
71 | var ntab = (res && res[1]) ? res[1] : first.itemId; | |
72 | if (ntab && (atab != ntab)) { | |
73 | me.setActiveTab(ntab); | |
74 | } | |
75 | } | |
76 | }; | |
77 | ||
78 | me.mon(sp, 'statechange', statechange); | |
79 | } | |
80 | }); |