Bootstrap linee guida
copia linkIntroduzione
ATTENZIONE: Questo articolo non riguarda il tema Bootstrap quando il parametro Fluid è attivato.
Nella versione 15.5 di Instant Developer è stato introdotto un nuovo tema che è possibile utilizzare con le applicazioni Web.
Tale tema utilizza le classi ed i componenti del framework Bootstrap per renderizzare gli oggetti.
Per ottenere questo risultato è stato riscritto il framework lato client delle applicazioni web in modo da potersi interfacciare con Boostrap. Per questo motivo non tutte le funzionalità presenti nel framework applicativo RD3 sono presenti in un progetto con il tema Bootstrap abilitato.
Inoltre quando si creano delle applicazioni con tale tema è necessario seguire delle linee guida specifiche in modo da ottenere i comportamenti corretti, in quanto alcuni dei comportamenti del framework applicativo sono differenti se si utilizza il tema Bootstrap. E' necessario quindi conoscerne le caratteristiche per impostare correttamente la propria applicazione.
Videate
Boostrap è un framework creato per gestire in maniera facile ed efficiente le caratteristiche di responsività delle applicazioni, per questo motivo le videate in questo tema si adattano sempre in orizzontale allo spazio disponibile. Perciò la proprietà 'ridimensionamento orizzontale' delle videate non viene considerata e queste si adattano sempre alla dimensione del browser.
Il ridimensionamento verticale si comporta in due modi differenti a seconda della configurazione della corrispondente proprietà della videata:
- Nessuna: In questo caso viene mantenuta l'altezza a design time dei frame, quindi se lo spazio verticale non è sufficiente la videata mostrerà una scrollbar. Nel caso i frame abbiano scrollbar a design time queste saranno mantenute anche a run-time.
- Estendi/Adatta: In questo caso le dimensioni dei Frame vengono calcolate in maniera percentuale a seconda di quelle di design time (ad esempio se la videata a design time ha due frame verticali della stessa altezza a run-time ogni frame occuperà il 50% dello spazio disponibile). In questo caso sarà il frame ad avere la scrollbar se il suo contenuto dovesse essere più grande dello spazio disponibile.
Note:
- Il flag di frame Larghezza Fissa ed i parametri Larghezza mimina e Larghezza massima non sono supportati.
- Il flag di frame Altezza Fissa ed i parametri Altezza mimina e Altezza massima sono supportati solo se la videata ha il ridimensionamento verticale impostato a Nessuno.
Resize verticale colonne
Dalla versione 16.5.6850 sono state abilitate le funzionalità di resize e ridimensionamento delle colonne in lista.
Per mantenere la compatibilità con la gestione responsive delle colonne della lista il resize è abilitato solo per i campi che hanno la modalità di ridimensionamento orizzontale in lista impostata a nessuna azione.
Resize verticale videate
Dalla versione 19.0.7400 le videate Bootstrap hanno due tipi di resize verticale:
- NESSUNO : I frame contenuti nelle videate vengono disegnati in base alla loro altezza a design time, se lo spazio verticale non è sufficiente la videata mostrerà le scrollbar.
- ADATTA/ESTENDI : I frame hanno un'altezza fisse percentuale decisa in base alle dimensioni di design-time. Se il contenuto non dovesse avere spazio sarà il frame a mostrare la scrollbar.
Il primo tipo di resize è adatto ai dispositivi di piccole dimensioni, ma se la videata viene mostrata su un dispositivo desktop spetta al programmatore dimensionare gli oggetti a run-time per non sprecare spazio.
Al contrario il secondo tipo di resize è comodo sul desktop, ma il risultato diventa scomodo se visualizzato su dispositivi di piccole dimensioni senza che il programmatore abbia gestito esplicitamente il ridimensionamento via codice.
Per migliorare questo comportamento nella versione 19.0 abbiamo studiato una terza modalità di resize. Questa modalità può venire attivata se la videata ha resize verticale ADATTA/ESTENDI ma viene mostrata su un dispositivo di dimensioni orizzontali inferiori a 998px (Tablet 10''); in questo caso i frame si comportano come se il resize fosse stato impostato a NESSUNO, perciò sarà la videata a mostrare le scrollbar e i frame si dimensioneranno in altezza in base al loro contenuto.
Questa funzionalità è spenta, per attivarla è necessario scrivere nel custom.css :
@media screen and (max-width: 998px) { .form-body:not(.form-body-fluid) > .frame-row { height: auto !important; } .form-body:not(.form-body-fluid) .panel-list-body-box { max-height: 300px; } }
Questa funzionalità è da considerare sperimentale.
E' stata progettata per videate con layout semplice, ad esempio due frame verticali e non è stata testata in presenza di sottovideate o sottopannelli.
I Feedback sono graditi, raccomandiamo di non usarla in un ambiente di produzione.
Non prevediamo di fornire supporto immediato a problemi che si dovessero presentare dopo aver attivato questa modalità, un workaround sempre applicabile è spegnere la funzionalità e tornare al comportamento predefinito.
Pannelli in lista
Il layout lista dei pannelli ha un comportamento differente rispetto a quello dei temi desktop standard (Seattle, Casual, Zen e Simplicity), in particolare:
- Il layout lista non prevede l'editabilità dei campi di pannello (supportato a partire dalla versione 16.5, l'inserimento in lista continua a non essere supportato).
- Nel layout lista non possono essere presenti campi fuori lista. (supportati a partire dalla versione 16.0)
- Indipendentemente dalla visualizzazione della lista nel designer questa riempie sempre tutto lo spazio disponibile (il ridimensionamento orizzontale è sempre 'adatta').
- I record vengono caricati in modo paginato, a gruppi di 30 come per i temi mobile. Quando la lista viene scrollata completamente viene mandata al server la richiesta dei prossimi record da mostrare.
- La lista non è virtualizzata, tutte le righe che il server manda al client vengono create nel DOM.
- Se il pannello ha entrambi i layout è necessario abilitare il flag 'Gestione Layout Automatica'
- Nessuno : In questo caso la dimensione del campo in lista viene fissata alla sua dimensione a design time.
- Adatta : In questo caso la dimensione del campo è fluida e si adatta allo spazio disponibile.
- Impostare sul campo o i campi dal contenuto descrittivo più importante il ridimensionamento Adatta e nessun ridimensionamento sugli altri.
- Utilizzare le classi responsive di Bootstrap o delle media queries per nascondere i campi non necessari ai vari breakpoint di dimensione.
Instant Developer mette a disposizione le seguenti classi:
- md-visible : campo visibile solo su tablet orizzontali o dektop.
- lg-visible : campo visibile solo su desktop di grandi dimensioni (>1300px).
- Raccomandiamo di avere sempre a video un campo con ridimensionamento Adatta.
- Scegliere i campi descrittivi più importanti ed assegnare ad almeno uno di essi il ridimensionamento Adatta.
- Assegnare a tutti gli altri campi la classe css lg-visible o una classe equivalente che nasconda il campo fino al breakpoint massimo.
- Visualizzare la lista sul browser alla dimensione minima (consigliamo di usare gli strumenti di sviluppo che permettono di testare il dispositivo in modalità smartphone).
- Passare al breakpoint successivo (>769px) e decidere i campi visibili a tale dimensione, sostituendo la classe con md-visible.
@media screen and (max-width: 768px) { .panel-field-value-list.md-visible, .panel-field-header-list.md-visible { display: none !important; } .panel-field-value-list.lg-visible, .panel-field-header-list.lg-visible { display: none !important; } } @media (min-width: 769px) and (max-width: 1300px) { .panel-field-value-list.lg-visible, .panel-field-header-list.lg-visible { display: none !important; } }
Note:
- Se lo spazio non è sufficiente per mostrare tutte le colonne della lista verrà mostrata una scollbar orizzontale. Per abilitare correttamente questo comportamento è necessario nascondere i row selector e disabilitare la multiselezione (non necessario a partire dalla versione 18.5). Raccomandiamo comunque di creare delle liste responsive che si adattino allo spazio disponibile.
- Il valore delle righe dinamiche è impostato a 30 in maniera predefinita. Quasi sempre questo valore è sufficiente per far comparire la scrollbar verticale e attivare la paginazione. Nel caso questa non compaia è possibile aumentare il valore.
- La performance dipende dalle righe presenti nel DOM, raccomandiamo quindi di limitare i record restituiti dai pannelli.
Pannelli in dettaglio
Anche per quanto riguarda il layout di dettaglio bisogna tenere conto di alcuni comportamenti specifici del framework quando si crea il pannello. La struttura dei campi viene convertita da un algoritmo in una serie di griglie bootstrap innestate, seguendo questi passaggi:
- Innanzitutto i campi vengono suddivisi in righe verticali, se due o più campi sono affiancati verranno disegnati nella stessa riga.
- Ogni riga ottenuta viene divisa in colonne, campi che si sovrappongono verticalmente sulla stesa riga vengono inseriti nella stessa colonna. La dimensione delle colonne viene decisa in percentuale in base alle dimensioni dei campi coinvolti (due campi con la stessa larghezza avranno due colonne al 50%, campi con larghezza diversa avranno colonne dimensionate differentemente).
- L'algorimo procede in maniera ricorsiva fino ad ottenere delle righe che contengano colonne con solo un campo.

1) I campi vengono raggruppati in tre righe

2) Ogni riga viene divisa in colonne a seconda dei campi contenuti. La terza e quarta riga vengono divise in due colonne, in seguito la prima verrà divisa nuovamente in righe.

3) Le colonne che contengono più campi vengono nuovamente divise in righe. L'algoritmo procede in maniera ricorsiva.

Risultato finale

Esempio 1 : La griglia di bootstrap occupa sempre tutto lo spazio disponibile in orizzontale, quindi campi con resize 'None' affiancati nel designer potrebbero risultare non affiancati se visti in monitor grandi.

Esempio 2 : Le righe hanno un margine inferiore di 15px dato dalla configurazione css standard di bootstrap. Questo sarà il gap presente a video indipendentemente dalla configurazione dell'editor.
- Disegnare i campi in dettaglio con la stessa larghezza, soprattutto se affiancati orizzontalmente, altrimenti il risultato sarà esteticamente poco gradevole se mostrati uno sotto l'altro per mancanza di spazio.
- Disegnare i campi di input con altezza di 32px.
- applicare un gap di 16px tra campi verticali.
- Non sovrapporre mai i campi, lasciare sempre un gap tra loro (sia in orizzontale che in verticale).
- Nessuno : il campo di pannello viene disegnato della stessa dimensione di design-time. Questa impostazione riguarda il campo stesso ma non la colonna che lo contiene, che essendo una colonna bootstrap ha sempre dimensioni percentuali. Per questo motivo due campi affiancati senza ridimensionamento potrebbero venire mostrati separati su monitor di grandi dimensioni.
- Adatta : il campo occupa tutto lo spazio disponibile nella sua colonna.
- Muovi : il campo occupa tutto lo spazio disponibile nella sua colonna ma la sua larghezza massima è quella impostata a design time, utile per gestire al meglio il layout responsive.
Note:
- Nel caso di pannelli paginati è necessario che i campi presenti in dettaglio appartengano tutti ad una pagina. Non sono supportati campi in dettaglio fuori pagina.
| Spazio | col-1 | col-2 | col-3 | col-4 | col-5 | col-6 | col-7 | col-8 | col-9 | col-10 | col-11 | col-12 |
| 1032 | 86 | 172 | 258 | 344 | 430 | 516 | 602 | 688 | 774 | 860 | 946 | 1032 |
| 960 | 80 | 160 | 240 | 320 | 400 | 480 | 560 | 640 | 720 | 800 | 880 | 960 |
| 840 | 70 | 140 | 210 | 280 | 350 | 420 | 490 | 560 | 630 | 700 | 770 | 840 |
| 720 | 60 | 120 | 180 | 240 | 300 | 360 | 420 | 480 | 540 | 600 | 660 | 720 |
| 480 | 40 | 80 | 120 | 160 | 200 | 240 | 280 | 320 | 360 | 400 | 440 | 480 |
Icone di tipo font
Le applicazioni sviluppate con il tema Bootstrap non utilizzano immagini ma usano icone di tipo font, in particolare viene utilizzato Font Awesome.
E' possibile utilizzare le icone di Font awesome in tutte le stringhe mostrate a video utilizzando il formato {{icon-nomeIcona}}.
Ad esempio per usare l'cona 'fa-star' è sufficiente scrivere {{icon-fa-star}} nel testo.
Gli oggetti che supportano tale caratteristica sono:
- Caption dei campi di pannello in lista e dettaglio.
- Valore dei campi di pannello (disabilitati).
- Contenuto dei campi statici e pulsanti.
- Lista valori delle Combo.
- Caption dei commandset.
- Caption dei comandi.
- Caption dei frame.
- Span non abilitati.
- Caption dei gruppi di pannello in dettaglio.
- Caption delle pagine di pannello.
- Caption delle Tab.
- Testo contenuto nei nodi degli alberi.
Personalizzazione tema
Per personalizzare il tema è possibile duplicare la cartella Boostrap o Ionic nella cartella C:\\Program Files\\INDE\\CURRENT\\Theme e specificare il nome del proprio tema nella proprietà THEME dell'applicazione.
Instant Developer utilizzerà tale cartella per la generazione dell'applicazione web ma non utilizzerà la cartella RD3 contenuta nella copia bensì la cartella RD3 contenuta nel tema Boostrap/Ionic "standard".
Nelle versioni precedenti se si personalizzava il tema Bootstrap anche la cartella RES (che contiene i file JS/CSS di bootstrap e i font) veniva presa dal tema standard. A partire dalla versione 19.5 viene utilizzata la cartella RES se presente nel tema personalizzato.
Note
- Miglioramento relativo a questo thread del forum e alla richiesta di assistenza 001385-2019.
-
Nota bene: Il nome del tema personalizzato deve iniziare con:
- "boostrap" se è un tema derivato dal tema bootstrap;
- "ionic" se è un tema derivato dal tema ionic.
Personalizzazione icone applicate
E' stata migliorata la creazione delle icone nelle applicazioni che usano i temi Bootstrap e BootstrapZen.
In particolare è stata centralizzata la definizione delle icone da utilizzare, permettendo di poterle personalizzare più facilmente.
Le icone sono definite nel file ClientParams.js e possono essere personalizzate implementando la funzione RD3_CustomInit nel file custom3.js.
Es:
function RD3_CustomInit()
{
RD3_ClientParams.FA_ICON_TOP = "fa-angle-double-left"; // Icona usata dalla toolbar dei book in anteprima - prima pagina
}
Personalizzazione classi di grigliatura
A partire dalla versione 16.0 è possibile inserire nella proprietà CSSClass dei campi di pannello e dei gruppi dei token particolari per sovrascrivere le classi CSS della cella della griglia calcolate dal framework.
I token devono avere questa forma: "{{class css}}".
ES: Orders.CustomerID.CSSClass = "{{col-sm-2 col-md-4}}"
Queste classi hanno effetto solo in dettaglio o per i campi fuori lista, in quanto la lista è realizzata con una Table HTML e non con la griglia bootstrap.
A partire dalla versione 18.0r4 la stessa funzionalità è disponibile per le classi CSS relative ai frame. Le classi definite all'interno del token vengono utilizzate solo nel caso di frame in una divisione orizzontale e permettono di personalizzare le classi applicate dal sistema alle colonne della griglia della videata.
Dalla versione 21.0.8100 è possibile modificare le classi di grigliatura dei campi di pannello anche a run-time adattandole a seconda delle necessità, mentre prima potevano essere modificate solo all'apertura della videata.
Tema Bootstrap Zen
Dalla versione 18.0.7000 è stato creato un nuovo tema grafico chiamato Bootstrap Zen.
Clicca qui per vedere il nuovo tema grafico.
Note
- È possibile attivare il nuovo tema anche su applicazioni già esistenti che utilizzano il tema Bootstrap.
- Le funzionalità supportate sono le stesse del tema Boostrap.
- Il tema BootstrapZen non supporta la configurazione del colore di sfondo del campo in lista, della riga alternata e della riga attiva da Visual Style. E' possibile configurare questi colori intervenendo sul CSS.
- Il tema BootstrapZen non supporta la configurazione del colore di sfondo del campo in dettaglio da Visual Style. E' possibile configurare questo colore intervenendo sul CSS.
- Il tema non supporta la configurazione del colore di sfondo dei campi di pannello usando la proprietà BackgroundColor. E' possibile configurare il colore intervenendo sul CSS tramite la proprietà CSSClass.
- Dalla versione 19.0.7400 è stata abilitata la possibilità di impostare il colore del testo delle intestazioni di lista da VisualStyle nel tema BootstrapZen.
Dimensione videate modali
Dalla versione 19.0.7400 Bootstrap mette a disposizione tre possibili dimensioni per le videate modali (piccola, media e larga).
Nelle versioni precedenti le applicazioni usavano sempre la dimensione massima.
Ora è possibile indicare quale dimensione usare impostando nella proprietà ClassName della videata:
- modal-sm: dimensione piccola.
- modal-md: dimensione media.
Se non si indica niente il sistema utilizzerà la dimensione predefinita (larga).
Tooltip
I tooltip vengono posizionati:
- A destra per la prima colonna della lista.
- A sinistra per l'ultima colonna della lista.
- Sopra per l'ultima riga della lista (a meno che non sia la prima/ultima colonna).
- Sotto in tutti gli altri casi.
Fino a prima della versione 19.0.7400 i tooltip in lista venivano sempre posizionati a destra della cella, anche se si trattava dell'ultimo campo della lista.
Container
Bootstrap supporta due tipi di container globali differenti:
- container: contenitore responsive a larghezza fissa.
- container-fluid: contenitore che riempie tutto lo spazio orizzontale a disposizione.
Fino a prima della versione 16.0.6700 il framework creava automaticamente un contenitore globale dell'applicazione con classe "container-fluid", valore attualmente predefinito, mentre ora è possibile scegliere quale classe usare, sia per il body dell'applicazione che per l'header.
Note
-
I parametri sono gestiti lato client, per modificarli è sufficiente creare il file custom3.js nella cartella custom ed inserire il seguente codice javascript:
function RD3_CustomInit() { RD3_ClientParams.BodyContainerType = "container"; // or "container-fluid" RD3_ClientParams.HeaderContainerType = "container"; // or "container-fluid" }
Gutter opzionale
Tra le linee guida è presente una tabella che permette di legare le larghezze da assegnare ai vari campi al numero di colonne che il sistema assegnerà a run-time.
Prima della versione 16.0.6700 queste larghezze non tenevano conto del gutter tra le varie colonne di bootstrap (il valore predefinito è 30px).
E' ora possibile impostare tra i parametri client la larghezza del gutter da usare durante i calcoli, in questo modo i campi possono essere disegnati usando la stessa larghezza che avrebbero a video e con gli stessi gap di bootstrap.
Il valore predefinito dei parametri è 0, in questo modo il sistema non cambia di comportamento rispetto alla versione precedente.
Questa modifica permette di allineare il designer in maniera migliore al risultato finale.
function RD3_CustomInit()
{
RD3_ClientParams.GridGutterLeft = 15;
RD3_ClientParams.GridGutterRight = 15;
}
Grigliatura nel form editor
Se si utilizza il tema Bootstrap occorre conoscere il sistema di grigliatura utilizzato per rendere la videata responsiva. Per facilitare l'operazione è ora possibile attivare la visualizzazione della grigliatura di bootstrap anche nel form-editor:

Funzionamento della grigliatura
Come mostrato nell'immagine, quando viene attivato il comando viene mostrata una griglia che indica quante e quali celle verranno utilizzate dal motore grafico bootstrap per realizzare la videata a run-time. Nell'esempio la prima " contiene i campi Employee ID, Last Name e FirstName. Tali campi occupano, rispettivamente, 2, 4 e 6 celle. Pertanto il primo campo sarà automaticamente allargato ed avrà una larghezza pari a 2/12 dell'intera larghezza della videata, il secondo parti a 4/12 ed il terzo a 6/12. Tali rapporti sono ottenuti nel modo seguente:
- I campi sono larghi rispettivamente 160px, 260px e 276px
- Il sistema calcola la larghezza totale "effettiva" dei campi: 160px + 260px + 276px = 696px e calcola la larghezza di una cella-boostrap (1/12 della larghezza totale): 696px/12 = 58px per ogni cella
- A questo punto si calcola quante celle occorre assegnare ai vari campi: 160/58 = 2.76 arrotondato a 2 celle, 272/58 = 4.48 arrotondato a 4 celle. Il resto (12 - 2 - 4 = 6) viene automaticamente assegnato all'ultimo campo della "riga".
CommandSet
Dalla versione 19.0.7400 è possibile usare CommandSet di secondo livello nelle applicazioni che usano i temi Bootstrap e BootstrapZen.
Dalla versione 20.0.7800 è possibile usare testo l'HTML nell'intestazione dei comandi/commandset.
Note
- I menù di secondo livello non sono supportati nei menù popup.
HTML e intestazione di applicazione
Dalla versione 20.0.7800 è possibile usare testo HTML nell'intestazione dell'applicazione.
Posizione label e check
Dalla versione 20.0.7800 è possibile invertire la posizione di label e check in dettaglio impostando l'allineamento del campo a destra.
Note
- L'allineamento a destra ha impatto anche sulla lista.
Assegnare classi di bootstrap a pulsanti
E' ora possibile utlizzare le classi specifiche di bootstrap (btn-danger, btn-primary, ..) nei campi di pannello di tipo CommandButton.
Gestiti eventi MouseClick e MouseDoubleClick di pannello
E' ora possibile usare gli eventi OnMouseClick e OnMouseDoubleClick di pannello nelle applicazioni realizzate con il tema Bootstrap.
Campi fuori pagina nei pannelli paginati
Dalla versione 18.5 questi campi verranno disegnati in una loro griglia prima dei campi della pagina e saranno visibili su tutte le pagine.
Nelle versioni precedenti i campi fuori pagina (in dettaglio o fuori lista) venivano disegnati nella prima pagina e non riportati sulle altre pagine.
Note
- Questo cambio di comportamento è specifico dei temi Bootstrap e BootstrapZen, e li allinea al comportamento dei temi Web RD3.
Ultima modifica: 07/06/2024 / Validità: da 15.0.6300