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-dialog con flag isWizard
  • 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.

Snippet 1JSON
{
  "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).

CaptionCSSaction_callbackdisable_callback
wizard.prev.actionwizard-prev-btndatasource.selectPreviousVisibleTab();return !datasource.hasPreviousVisibleTab
wizard.next.actionwizard-next-btndatasource.selectNextVisibleTab();return !datasource.hasNextVisibleTab
wizard.complete.actionwizard-complete-btnawait 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:

  • onDialogDataBound
  • onDialogTabChange
  • onWizardStepChange
  • onDialogCustomAction
  • onDialogSubmit
  • onDialogRollback
  • onDialogCloseRequested

Esempio template:

Snippet 2HTML
<wuic-parametric-dialog
  [hardcodedDatasource]="citiesDs"
  [isWizard]="true"
  (onWizardStepChange)="onWizardStepChange($event)"
  (onDialogSubmit)="onWizardSubmit($event)">
</wuic-parametric-dialog>

Screenshot

wizard / wizard-main
wizard / wizard-main