@esfaenza/flow-builder 20.3.23 → 20.3.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -3
- package/fesm2022/esfaenza-flow-builder.mjs +185 -10
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +131 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -163,7 +163,7 @@ throw new FlowApiError('VersionConflict', 'Ha salvato mrossi.', undefined, 'mros
|
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
Un'implementazione completa e commentata sta in
|
|
166
|
-
[`projects/
|
|
166
|
+
[`projects/flow-builder-example/src/app/backend/in-memory-flow-builder-api.ts`](../flow-builder-example/src/app/backend/in-memory-flow-builder-api.ts):
|
|
167
167
|
copre tutte le primitive, il ciclo di vita, la concorrenza ottimistica e un esecutore finto,
|
|
168
168
|
senza una sola richiesta di rete.
|
|
169
169
|
|
|
@@ -324,6 +324,19 @@ con la via d'uscita: scrivere quel risultato in una variabile.
|
|
|
324
324
|
`Object` / `Enum` / `Structure`, `scale` solo sui numerici, costanti che non possono referenziare
|
|
325
325
|
risorse, `stageOrder` distinti.
|
|
326
326
|
|
|
327
|
+
**Dynamic choice set.** Le sorgenti sono **tre e si escludono a vicenda** (§5.2): una collection
|
|
328
|
+
del flow, una query su un'entita', i valori di un **tipo enum**. Nel form sono tre pulsanti e non
|
|
329
|
+
tre campi da riempire a caso: sceglierne una cancella le altre — dichiararne due e'
|
|
330
|
+
`CHOICE_SET_SOURCE_AMBIGUOUS` — e cancella anche i campi citati, perche' `Label` non e' un campo
|
|
331
|
+
di un'entita' e `Ragione_Sociale` non e' una proprieta' di un valore di enum. Sulla sorgente enum
|
|
332
|
+
cambiano due cose: il tipo si sceglie da `listEnumTypes` e fuori catalogo e' un **errore**
|
|
333
|
+
(`ENUM_TYPE_UNKNOWN`, l'elenco qui e' autorevole quando non e' vuoto), e i campi citabili sono le
|
|
334
|
+
tre proprieta' di un valore — `Name`, `Label`, `NumericValue` — che arrivano dal dizionario
|
|
335
|
+
(`enumChoiceSetFields`) e non da un catalogo di campi. Le sa `core/enum-choice-set.util.ts`,
|
|
336
|
+
compreso il **tipo** di ciascuna: senza, il valore di un filtro su `NumericValue` sarebbe una
|
|
337
|
+
casella di testo. `displayField` e `valueField` hanno un default (`Label` e `Name`) e il form li
|
|
338
|
+
mostra come tali, cosi' non finiscono nel documento senza motivo.
|
|
339
|
+
|
|
327
340
|
**Classi (`Structure`).** L'ottavo tipo di dato non e' un doppione di `Object` (§4.7): di
|
|
328
341
|
un'istanza di classe il flow legge e scrive i **membri**. Cambia quindi il form: la classe si
|
|
329
342
|
scoglie con `<fb-structure-picker>` e la sua assenza e' un **errore** — senza classe il runtime
|
|
@@ -525,7 +538,7 @@ questo pannello non ci sarebbe **nessun** posto in cui vedere cosa e' successo.
|
|
|
525
538
|
dati personali compresi: l'avviso e' in chiaro. Il pannello non conduce niente: guarda, e basta.
|
|
526
539
|
|
|
527
540
|
Come si implementa l'altra metà si vede nella demo
|
|
528
|
-
(`projects/
|
|
541
|
+
(`projects/flow-builder-example/src/app/runner`), e la scelta interessante e' **quando** aprire una finestra: un
|
|
529
542
|
flow che non ha niente da chiedere finisce da solo e l'esito torna subito all'editor, mentre uno
|
|
530
543
|
interattivo apre il runner e restituisce l'ultimo risultato alla chiusura — così la traccia resta
|
|
531
544
|
comunque lì dove si stava lavorando. Il runner guida l'interview con le primitive della §6.5,
|
|
@@ -655,7 +668,7 @@ distribuire e nessuna dipendenza da un font di icone dell'applicazione ospite.
|
|
|
655
668
|
| 9 | `Step` ed `Experiment` non sono supportati; `OrchestratedStage` lo e' | I due non supportati sono filtrati dalla palette via `isSupported` e, se arrivano da un import, l'inspector li mostra in sola lettura spiegando perche'. Lo stage ha il suo form: step non presentati come sequenza, e la condizione che referenzia l'output di un altro step segnalata con la via d'uscita |
|
|
656
669
|
| 10 | Un `Delete` senza filtri e' un **errore**, un `Update` senza filtri un **avviso** | `RecordWriteInspectorComponent`: severita' diverse, e l'update di massa chiede una conferma esplicita |
|
|
657
670
|
| 11 | Non cablare enum e operatori | Ogni tendina legge da `getDictionaries()`; le mappe locali intervengono solo come fallback quando il dizionario non e' disponibile |
|
|
658
|
-
| 12 | Il **token di continuazione e' opaco** | Non lo tocca nessuno nella libreria: l'editor non esegue, quindi il token nasce e muore nel runner dell'ospite. Quello della demo (`projects/
|
|
671
|
+
| 12 | Il **token di continuazione e' opaco** | Non lo tocca nessuno nella libreria: l'editor non esegue, quindi il token nasce e muore nel runner dell'ospite. Quello della demo (`projects/flow-builder-example/src/app/runner/interview-runner.component.ts`) lo rimanda tale e quale, non lo legge e non lo mette in nessun URL |
|
|
659
672
|
| 13 | **Testo e numero non si confrontano** (`CONDITION_TYPE_MISMATCH`) | `ConditionEditorComponent` conosce il tipo del lato sinistro da `POST /flows/references`: filtra gli operatori applicabili, guida il campo del letterale del secondo operando e segnala la coppia vietata. La regola sta in `core/condition-types.util.ts`, che salta gli operatori con semantica propria (`Contains`, `In`, …). I numeri si scrivono in cultura invariante: `1234,50` viene tradotto in `1234.50`, non troncato |
|
|
660
673
|
| 14 | **`None` non e' un operatore, e' un "da completare"** | Condizione evidenziata come incompleta, con il conteggio in testa alla sezione e la frase «la bozza si salva, l'attivazione no»; il validatore della demo lo emette come **errore** |
|
|
661
674
|
| 15 | **Un valore data senza `Z` significa ora locale** | `ValueEditorComponent` ha un selettore «Ora locale / UTC (Z)», dice che cambiare fuso riscrive l'orario e non lo converte, e toglie il suffisso solo per il controllo `datetime-local`, che con il fuso resterebbe vuoto |
|