]>
Commit | Line | Data |
---|---|---|
55ed1090 DM |
1 | Ext.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 | }); |