]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/Wizard.js
1 Ext
.define('PVE.window.Wizard', {
2 extend
: 'Ext.window.Window',
4 activeTitle
: '', // used for automated testing
6 getValues: function(dirtyOnly
) {
11 var form
= me
.down('form').getForm();
13 form
.getFields().each(function(field
) {
14 if (!field
.up('inputpanel') && (!dirtyOnly
|| field
.isDirty())) {
15 Proxmox
.Utils
.assemble_field_data(values
, field
.getSubmitData());
19 Ext
.Array
.each(me
.query('inputpanel'), function(panel
) {
20 Proxmox
.Utils
.assemble_field_data(values
, panel
.getValues(dirtyOnly
));
26 initComponent: function() {
29 var tabs
= me
.items
|| [];
33 * Items may have the following functions:
34 * validator(): per tab custom validation
35 * onSubmit(): submit handler
36 * onGetValues(): overwrite getValues results
39 Ext
.Array
.each(tabs
, function(tab
) {
42 tabs
[0].disabled
= false;
44 var check_card = function(card
) {
46 var fields
= card
.query('field, fieldcontainer');
47 if (card
.isXType('fieldcontainer')) {
50 Ext
.Array
.each(fields
, function(field
) {
51 // Note: not all fielcontainer have isValid()
52 if (Ext
.isFunction(field
.isValid
) && !field
.isValid()) {
57 if (Ext
.isFunction(card
.validator
)) {
58 return card
.validator();
65 var tbar
= Ext
.create('Ext.toolbar.Toolbar', {
71 xtype
: 'proxmoxHelpButton',
76 text
: gettext('Back'),
81 var tp
= me
.down('#wizcontent');
82 var atab
= tp
.getActiveTab();
83 var prev
= tp
.items
.indexOf(atab
) - 1;
87 var ntab
= tp
.items
.getAt(prev
);
89 tp
.setActiveTab(ntab
);
96 text
: gettext('Next'),
100 handler: function() {
102 var form
= me
.down('form').getForm();
104 var tp
= me
.down('#wizcontent');
105 var atab
= tp
.getActiveTab();
106 if (!check_card(atab
)) {
110 var next
= tp
.items
.indexOf(atab
) + 1;
111 var ntab
= tp
.items
.getAt(next
);
114 tp
.setActiveTab(ntab
);
120 text
: gettext('Finish'),
124 handler: function() {
125 var tp
= me
.down('#wizcontent');
126 var atab
= tp
.getActiveTab();
133 var disable_at = function(card
) {
134 var tp
= me
.down('#wizcontent');
135 var idx
= tp
.items
.indexOf(card
);
136 for(;idx
< tp
.items
.getCount();idx
++) {
137 var nc
= tp
.items
.getAt(idx
);
144 var tabchange = function(tp
, newcard
, oldcard
) {
145 if (newcard
.onSubmit
) {
146 me
.down('#next').setVisible(false);
147 me
.down('#submit').setVisible(true);
149 me
.down('#next').setVisible(true);
150 me
.down('#submit').setVisible(false);
152 var valid
= check_card(newcard
);
153 me
.down('#next').setDisabled(!valid
);
154 me
.down('#submit').setDisabled(!valid
);
155 me
.down('#back').setDisabled(tp
.items
.indexOf(newcard
) == 0);
157 var next
= tp
.items
.indexOf(newcard
) + 1;
158 var ntab
= tp
.items
.getAt(next
);
159 if (valid
&& ntab
&& !newcard
.onSubmit
) {
164 if (me
.subject
&& !me
.title
) {
165 me
.title
= Proxmox
.Utils
.dialog_title(me
.subject
, true, false);
189 itemId
: 'wizcontent',
194 afterrender: function(tp
) {
195 var atab
= this.getActiveTab();
198 tabchange: function(tp
, newcard
, oldcard
) {
199 tabchange(tp
, newcard
, oldcard
);
210 Ext
.Array
.each(me
.query('field'), function(field
) {
211 var validcheck = function() {
212 var tp
= me
.down('#wizcontent');
213 var atab
= tp
.getActiveTab();
214 var valid
= check_card(atab
);
215 me
.down('#next').setDisabled(!valid
);
216 me
.down('#submit').setDisabled(!valid
);
217 var next
= tp
.items
.indexOf(atab
) + 1;
218 var ntab
= tp
.items
.getAt(next
);
221 } else if (ntab
&& !atab
.onSubmit
) {
225 field
.on('change', validcheck
);
226 field
.on('validitychange', validcheck
);