@esfaenza/flow-builder 20.3.42 → 20.3.43

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 CHANGED
@@ -235,8 +235,9 @@ il trascinamento sul canvas vuoto disegna il rettangolo di selezione invece di s
235
235
  un elemento, il canvas lo dice e dice **cosa farne**: «trascinane uno per spostarli tutti». Un
236
236
  gesto che nessuno annuncia non esiste.
237
237
 
238
- **Risorse.** Il pannello «Risorse» e' un **elenco**: nome, tipo, quante volte e' usata, i rilievi
239
- della riga. Aggiungerne una o cliccarne il nome apre una **finestra** dedicata con il form dentro,
238
+ **Risorse.** Il pannello «Risorse» e' un **elenco**: nome, tipo con la **classe** o l'entita'
239
+ accanto, perche' «Structure» da solo non dice quale, e su ventun variabili la classe si leggeva
240
+ solo aprendole una per una — quante volte e' usata, i rilievi della riga. Aggiungerne una o cliccarne il nome apre una **finestra** dedicata con il form dentro,
240
241
  come per il dettaglio di un elemento — e per la stessa ragione: il form di un dynamic choice set
241
242
  (sorgente, due campi, ordinamento, limite, filtri) dentro la colonna laterale spingeva l'elenco
242
243
  fuori dallo schermo, cioe' faceva sparire il contesto per cui l'elenco esiste. La finestra si
@@ -249,6 +250,26 @@ Rimuovere una risorsa **usata** chiede conferma e dice quanti riferimenti rester
249
250
  cancellare una variabile non fa sparire nessun arco dal canvas, e senza il numero il danno si
250
251
  scopriva alla validazione successiva.
251
252
 
253
+ *Il filtro.* Sopra l'elenco c'e' una casella e due interruttori, e sono per la **scala**: un flow
254
+ di produzione ha ventun variabili e dodici dynamic choice set, e a quella misura il problema
255
+ dell'elenco non e' leggerlo ma trovarci dentro una riga. La casella cerca nel nome,
256
+ nell'etichetta, nel tipo (`objectType` compreso: «address» trova le tre variabili `AddressDTO`) e
257
+ nelle **parole dei flag** (`input`, `output`, `collection`) — cioe' in cio' che la riga mostra, ed
258
+ e' anche il motivo per cui la riga mostra la classe — e non dentro i valori e le formule: «chi cita `Totale`» e' un'altra
259
+ domanda, e la risponde il conteggio degli usi. I due interruttori sono invece le domande che un
260
+ nome non sa fare: **non usate** e **con rilievi**; a zero si disabilitano, perche' un filtro che
261
+ darebbe certamente un elenco vuoto non restringe l'elenco, lo nasconde.
262
+
263
+ Il filtro **non e' la ricerca del flow**: quella (la casella in cima all'editor) sa dov'e' un nome
264
+ che si conosce già, e arrivando su una risorsa **spegne** il filtro — altrimenti aprirebbe la
265
+ finestra su una riga che il filtro tiene fuori dall'elenco. Qui invece si restringe un elenco che
266
+ si sta guardando, e per questo il filtro **resta acceso cambiando scheda**: il numero accanto a
267
+ ogni tipo diventa quello delle **corrispondenze**, ed e' cio' che dice dove sta la risorsa cercata
268
+ — che il piu' delle volte e' in un'altra collection. Un elenco vuoto distingue i tre casi, perche'
269
+ i rimedi sono diversi: la collection e' vuota, il filtro non trova niente **qui** ma trova
270
+ altrove, il filtro non trova niente da nessuna parte. Aggiungere una risorsa spegne il filtro: si
271
+ chiama «variabile_1» e non corrisponderebbe a niente di cio' che si stava cercando.
272
+
252
273
  **Copia, incolla, duplica.** `Ctrl`+`C` copia gli elementi selezionati — la selezione del canvas
253
274
  puo' contenerne piu' d'uno (rettangolo, `Ctrl`+`A`) — `Ctrl`+`V` li incolla, `Ctrl`+`D` li duplica in
254
275
  loco; gli stessi comandi stanno nella top bar («⧉» e «⎘») e sul node selezionato («⧉»). I tasti
@@ -447,6 +468,26 @@ compreso il **tipo** di ciascuna: senza, il valore di un filtro su `NumericValue
447
468
  casella di testo. `displayField` e `valueField` hanno un default (`Label` e `Name`) e il form li
448
469
  mostra come tali, cosi' non finiscono nel documento senza motivo.
449
470
 
471
+ E la sorgente decide anche **quali campi esistono**: `limit`, `displayField` e `valueField`
472
+ valgono su tutt'e tre, ma `filters`, `filterLogic`, `sortField` e `sortOrder` valgono sulle sole
473
+ `object` — dove diventano la query — ed `enumType`, dove il runtime li valuta in memoria. Su una
474
+ `collectionReference` le opzioni sono gli elementi della collection **nell'ordine in cui ci
475
+ sono**: il form non offre quei controlli, e se il documento li porta lo dice con
476
+ `CHOICE_SET_FILTERS_IGNORED` — un **avviso**, perche' il flow gira e il campo funziona, solo
477
+ propone tutto; il difetto e' che chi l'ha scritto crede di aver selezionato qualcosa. La
478
+ ripulitura e' un comando («Togli»), non un effetto dell'apertura del form: cancellare i filtri di
479
+ un flow scritto altrove farebbe sparire l'unico indizio di cosa doveva selezionare. Il rilievo si
480
+ vede in **tutti e due** i posti, elenco e form, come gli altri controlli locali.
481
+
482
+ *La logica dei filtri.* `filterLogic` **esiste anche sui choice set**, con le stesse forme degli
483
+ elementi che interrogano il database: `AND` (o assente), `OR`, oppure l'espressione sugli indici
484
+ 1-based dei filtri (`1 AND (2 OR 3)`), che l'editor verifica mentre si scrive e **riscrive** quando
485
+ si cancella un filtro — senza, l'espressione resterebbe valida puntando al filtro sbagliato, che
486
+ e' il peggiore dei due esiti. Il valore `Formula` invece **non e' supportato da nessun elemento**:
487
+ non lo scrive nessun gesto dell'editor — la modalita' «Formula» scrive `filterFormula`, che e' un
488
+ campo suo — e se arriva da un documento scritto altrove si vede un rilievo che dice cosa fare, non
489
+ una modalita' che sembra buona.
490
+
450
491
  **Classi (`Structure`).** L'ottavo tipo di dato non e' un doppione di `Object` (§4.7): di
451
492
  un'istanza di classe il flow legge e scrive i **membri**. Cambia quindi il form: la classe si
452
493
  scoglie con `<fb-structure-picker>` e la sua assenza e' un **errore** — senza classe il runtime
@@ -905,7 +946,9 @@ distribuire e nessuna dipendenza da un font di icone dell'applicazione ospite.
905
946
  | 21 | **Un campo nascosto viene azzerato all'invio** | L'inspector lo dice dove si scrive la `visibilityRule`: la regola si rivaluta sui valori appena inviati e il campo che sparisce **perde** il valore. È l'unica cosa che chi disegna il flow non puo' dedurre dal metadata, e per questo sta nel form e non solo in questa tabella |
906
947
 
907
948
  Altre regole del contratto rispettate: liste vuote omesse invece di scritte come `[]` (§2),
908
- `filterLogic` mostrato **solo** dove il modello lo prevede (§4.4), `fullName` / `status` mai
949
+ `filterLogic` mostrato **solo** dove il modello lo prevede — Get Records, Create Records, Start,
950
+ eventi di un Wait e dynamic choice set, **non** Update e Delete (§4.4) — e mai col valore
951
+ `Formula`, che nessun elemento supporta, `fullName` / `status` mai
909
952
  usati per rinominare o attivare (§2), un solo campo valorizzato in
910
953
  `FlowElementReferenceOrValue` con segnalazione e normalizzazione dei documenti ambigui (§4.2),
911
954
  `Transform.connector` e `start` trattati come array per fedelta' storica (§3.5), salvataggio