Come creare un modulo generico con i moduli dinamici

Tradotto automaticamente da Deepl

Immaginate che il vostro database contenga diverse tabelle di tipi o categorie. Queste tabelle sono molto semplici, spesso con solo un identificatore e un campo di testo. A titolo dimostrativo, supponiamo che si tratti di un database per la gestione delle scarpe. Per qualificare i prodotti, dobbiamo definirne il tipo, il colore, il modello, il materiale, la stagione e così via.

È complicato gestire ciascuna di queste tabelle in un modulo di elenco e in un modulo di input con i relativi metodi. In questo caso, l’uso di un modulo generico è essenziale per evitare duplicazioni e semplificare la manutenzione.

Ed è qui che i moduli dinamici e i puntatori JSON sono utili!

In questo post, vedremo un modo possibile per costruire moduli generici.

Esempio di database

Con questo database, è possibile aprire cinque diverse finestre di dialogo, come mostrato di seguito. Ma se si torna alla modalità di progettazione, si noterà che non si trova alcun modulo nell’Esplora risorse 4D…

Come si creano i moduli?

Nelle tre fasi descritte di seguito:

1. Per prima cosa, creiamo un modulo elenco che salviamo in un file JSON. Per le informazioni specifiche sulla tabella e sui campi, utilizziamo i puntatori JSON. Ad esempio, supponiamo di voler scrivere il nome della tabella nel titolo della finestra. Nel modulo dinamico, basta inserire:

"windowTitle": { "$ref": "#/info/table" }

Ecco un altro esempio: nella casella di riepilogo, vogliamo definire l’origine dati della colonna, quindi scriviamo:

"dataSource": { "$ref": "#/info/field1" }

2. Poi, a runtime, quando l’utente fa clic sulla voce di menu, iniettiamo un oggetto che definisce la tabella, con i campi scelti dall’utente.

C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json")
$o .info:=$info

3. Per aprire il modulo non è necessario nulla di eccezionale, basta usare il comando Open form window . L’unica cosa da ricordare è che 4D risolve i puntatori JSON quando chiama il comando Open form window comando:

$ref:=Open form window($o;Plain form window)

Lo stesso si può fare con il modulo di input. E ora provate voi stessi!

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.