]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/Wizard.js
88a6626ba0ad146e487cc2f14adadc1267ee1578
1 Ext
.define('PVE.window.Wizard', {
2 extend
: 'Ext.window.Window',
4 activeTitle
: '', // used for automated testing
18 getValues: function(dirtyOnly
) {
23 var form
= me
.down('form').getForm();
25 form
.getFields().each(function(field
) {
26 if (!field
.up('inputpanel') && (!dirtyOnly
|| field
.isDirty())) {
27 Proxmox
.Utils
.assemble_field_data(values
, field
.getSubmitData());
31 Ext
.Array
.each(me
.query('inputpanel'), function(panel
) {
32 Proxmox
.Utils
.assemble_field_data(values
, panel
.getValues(dirtyOnly
));
38 initComponent: function() {
41 var tabs
= me
.items
|| [];
45 * Items may have the following functions:
46 * validator(): per tab custom validation
47 * onSubmit(): submit handler
48 * onGetValues(): overwrite getValues results
51 Ext
.Array
.each(tabs
, function(tab
) {
54 tabs
[0].disabled
= false;
59 var check_card = function(card
) {
61 var fields
= card
.query('field, fieldcontainer');
62 if (card
.isXType('fieldcontainer')) {
65 Ext
.Array
.each(fields
, function(field
) {
66 // Note: not all fielcontainer have isValid()
67 if (Ext
.isFunction(field
.isValid
) && !field
.isValid()) {
72 if (Ext
.isFunction(card
.validator
)) {
73 return card
.validator();
79 var disable_at = function(card
) {
80 var tp
= me
.down('#wizcontent');
81 var idx
= tp
.items
.indexOf(card
);
82 for(;idx
< tp
.items
.getCount();idx
++) {
83 var nc
= tp
.items
.getAt(idx
);
90 var tabchange = function(tp
, newcard
, oldcard
) {
91 if (newcard
.onSubmit
) {
92 me
.down('#next').setVisible(false);
93 me
.down('#submit').setVisible(true);
95 me
.down('#next').setVisible(true);
96 me
.down('#submit').setVisible(false);
98 var valid
= check_card(newcard
);
99 me
.down('#next').setDisabled(!valid
);
100 me
.down('#submit').setDisabled(!valid
);
101 me
.down('#back').setDisabled(tp
.items
.indexOf(newcard
) == 0);
103 var idx
= tp
.items
.indexOf(newcard
);
110 var ntab
= tp
.items
.getAt(next
);
111 if (valid
&& ntab
&& !newcard
.onSubmit
) {
116 if (me
.subject
&& !me
.title
) {
117 me
.title
= Proxmox
.Utils
.dialog_title(me
.subject
, true, false);
120 var sp
= Ext
.state
.Manager
.getProvider();
121 var advchecked
= sp
.get('proxmox-advanced-cb');
136 itemId
: 'wizcontent',
141 afterrender: function(tp
) {
142 var atab
= this.getActiveTab();
145 tabchange: function(tp
, newcard
, oldcard
) {
146 tabchange(tp
, newcard
, oldcard
);
155 xtype
: 'proxmoxHelpButton',
160 xtype
: 'proxmoxcheckbox',
161 boxLabelAlign
: 'before',
162 boxLabel
: gettext('Advanced'),
165 change: function(cb
, val
) {
166 var tp
= me
.down('#wizcontent');
167 tp
.query('inputpanel').forEach(function(ip
) {
168 ip
.setAdvancedVisible(val
);
171 sp
.set('proxmox-advanced-cb', val
);
176 text
: gettext('Back'),
180 handler: function() {
181 var tp
= me
.down('#wizcontent');
182 var atab
= tp
.getActiveTab();
183 var prev
= tp
.items
.indexOf(atab
) - 1;
187 var ntab
= tp
.items
.getAt(prev
);
189 tp
.setActiveTab(ntab
);
194 text
: gettext('Next'),
198 handler: function() {
200 var form
= me
.down('form').getForm();
202 var tp
= me
.down('#wizcontent');
203 var atab
= tp
.getActiveTab();
204 if (!check_card(atab
)) {
208 var next
= tp
.items
.indexOf(atab
) + 1;
209 var ntab
= tp
.items
.getAt(next
);
212 tp
.setActiveTab(ntab
);
218 text
: gettext('Finish'),
222 handler: function() {
223 var tp
= me
.down('#wizcontent');
224 var atab
= tp
.getActiveTab();
232 Ext
.Array
.each(me
.query('inputpanel'), function(panel
) {
233 panel
.setAdvancedVisible(advchecked
);
236 Ext
.Array
.each(me
.query('field'), function(field
) {
237 var validcheck = function() {
238 var tp
= me
.down('#wizcontent');
240 // check tabs from current to the last enabled for validity
241 // since we might have changed a validity on a later one
243 for (i
= curidx
; i
<= maxidx
&& i
< tp
.items
.getCount(); i
++) {
244 var tab
= tp
.items
.getAt(i
);
245 var valid
= check_card(tab
);
247 // only set the buttons on the current panel
249 me
.down('#next').setDisabled(!valid
);
250 me
.down('#submit').setDisabled(!valid
);
253 // if a panel is invalid, then disable it and all following,
254 // else enable it and go to the next
255 var ntab
= tp
.items
.getAt(i
+ 1);
259 } else if (ntab
&& !tab
.onSubmit
) {
264 field
.on('change', validcheck
);
265 field
.on('validitychange', validcheck
);