Overview
Wizard
Modalita' a step dell'archetype form per guidare compilazioni multi-sezione. Un wizard non e' un componente dedicato: e' <wuic-parametric-dialog> con isWizard=true su una tabella con md_tab_edit=true, in cui ogni tab diventa uno step.
Quando usarlo
- Processi guidati
- Inserimenti complessi
- Onboarding o setup operativo
Definizione via metadata
1. _metadati__tabelle.mdtabedit = 1 (md_tab_edit=true): abilita i tab nel form; ogni tab diventa uno step.
2. Per ogni step assegna mc_edit_associated_tab = '<nome_step>' alle colonne che vi appartengono. Le colonne senza tab finiscono nello step non_associati_a_tab.
3. Ordina gli step con md_props_bag.archetypes.form.orderedTabs (confronto case-insensitive).
4. Marca i campi obbligatori dello step con mc_validation_required=true: la validazione avviene a ogni "Avanti".
Note operative
- Basato su
parametric-dialogcon flagisWizard - Riusa metadata tabella/colonne del form standard
md_props_bag: archetypes.form (riusato dal Wizard)
Il wizard non introduce un nodo archetypes.wizard dedicato: usa le stesse opzioni archetypes.form.
{
"archetypes": {
"form": {
"columns": 1,
"orderedTabs": ["step_1", "step_2", "step_3"]
}
}
columns: densita layout campi all'interno degli step.orderedTabs: ordine step/tab visualizzati nel wizard.
Navigazione: le tre custom action canoniche
Avanti, Indietro e Completa sono custom action della tabella (_mtdt__cstom__actions__tabelle), create automaticamente dal designer quando configuri un wizard. Callback e disable sono stringhe JS valutate a runtime con scope (field, targetField, record, fieldNewValue, fieldOldValue, evaluationResult, datasource, wtoolbox).
| Caption | CSS | action_callback | disable_callback |
|---|---|---|---|
wizard.prev.action | wizard-prev-btn | datasource.selectPreviousVisibleTab(); | return !datasource.hasPreviousVisibleTab |
wizard.next.action | wizard-next-btn | datasource.selectNextVisibleTab(); | return !datasource.hasNextVisibleTab |
wizard.complete.action | wizard-complete-btn | await datasource.syncData(datasource.resultInfo.current, datasource.pristine); datasource.setCurrent(null); datasource.setSelectedTab(0, true, true); | return !datasource.canCompleteWizard() |
Il framework disabilita da solo i tre bottoni in base allo stato di navigazione (primo step, ultimo step visibile per Completa). Puoi sovrascrivere i callback, ad esempio per validazioni custom prima di avanzare, mantenendo il contratto.
Validazione su Avanti
selectNextVisibleTab chiama setSelectedTab(<step>, allowHidden=false, skipValidation=false): il tab corrente viene validato in modo sincrono; se fallisce compare un toast di warning e la navigazione si ferma. Le regole sono quelle del form standard (mc_validation_required, validation rules: vedi Validations).
Step condizionali
Uno step si nasconde o mostra con una Condition Action Item di tipo 5 (toggleTabByIndex) agganciata al cambio valore di una colonna chiave. Gli step nascosti vengono saltati da Avanti/Indietro e non contano per Completa. Dopo Avanti il framework porta il focus sul primo campo abilitato del nuovo step.
Completamento
wizard.complete.action salva con syncData (insert o update a seconda che il record esista), azzera il record corrente e torna al primo step. Dopo il primo salvataggio il record diventa "esistente": i salvataggi successivi emettono updateRecord.
Eventi e subscriptions (host)
Il wizard usa wuic-parametric-dialog con isWizard=true, quindi espone:
onDialogDataBoundonDialogTabChangeonWizardStepChangeonDialogCustomActiononDialogSubmitonDialogRollbackonDialogCloseRequested
Esempio template:
<wuic-parametric-dialog
[hardcodedDatasource]="citiesDs"
[isWizard]="true"
(onWizardStepChange)="onWizardStepChange($event)"
(onDialogSubmit)="onWizardSubmit($event)">
</wuic-parametric-dialog>Screenshot
