Controlli

I controlli permettono di salvare informazioni e possono applicare della logica durante il salvataggio e/o durante la visualizzazione inoltre permettono l'ordinamento delle viste e delle pagine dati.

Puoi paragonare un controllo ad un campo del database.

Puoi associare i controlli alle pagine, alle aree, ai forms, ai dati e alle pagine dinamiche

I controlli si creano tramite il tab “Controlli” e sono globali: una volta creati sono associabili a tutti gli oggetti sopra indicati.

I controlli sono di tipo


Controlli Data

Rappresentano una data e possono essere formattati in output modificando opportunamente il tag replace secondo la tabella riportata in questa pagina https://docs.microsoft.com/it-it/dotnet/standard/base-types/custom-date-and-time-format-strings

Ponendo il caso che il controllo DATANASCITA abbia salvato la data 01/06/2022 con un codice come il seguente

giorno: [PAGINA:DATANASCITA(dateformat, "d")]

<br>

mese: [PAGINA:DATANASCITA(dateformat, "mm")]

verrà restituito

giorno: 1

mese: 06


Controlli Numeri

Rappresentano un numero intero e possono essere vincolati ad un massimo e/o ad un minimo, inoltre, se vengono utilizzati nei dati possono essere impostati come autoincrement: quando viene aggiunto un nuovo elemento del dato, il controllo autoincrement viene popolato automaticamente con il numero maggiore successivo del valore più grande attualmente presente garantendo quindi un sistema di univocità.

Lato admin e negli editor di salvataggio possono essere utilizzati gli input textbox, listbox, dropdownlist (select) e checkbox (0/1).

I numeri hanno un range che varia da +int64 a -int64, invece se attivato, il vincolo funziona solo sui numeri positivi, es.: vincolo da 1 a 50, oppure vincolo da 1200 a 1600. Vincolare da -10 a 20 non è attualmente possibile.


Controlli Testo

Testo libero che permette in area admin di inserire stringhe di qualsiasi genere. Questo tipo di dato può essere vincolato in diversi modi:

al numero dei caratteri

alla lunghezza delle parole: non possono essere inserite parole (blocchi separati da spazi) più lunghi di n caratteri

tramite una regular expression

inoltre è possibile vincolare l'input su una base di scelte predefinite tramite l'utilizzo degli input ListBox e DropDownList.

Esistono inoltre due tipi di input particolari che permettono di utilizzare un area di testo “Rich” dove è possibile inserire testo formattato come ad esempio l'utilizzo del bold o del Corsivo.

La differenza sostanziale tra RichTextBox e RichTextBoxMini è la possibilità, in quella non mini, di caricare immagini, inserire tabelle, cambiare colori e dimensione del carattere; tramite queste abilitazioni si ha molta più libertà di una normale RichTextBoxMini ma allo stesso modo, in mano a clienti poco esperti, è possibile rompere il layout del sito per la presenza, ad esempio, di una tabella gigante, oppure rallentare fortemente il sito per la presenza di immagini giganti. L'utilizzo della RichTextBox normale è fortemente sconsigliato.


Controlli File

Tramite il controllo file è possibile caricare file e vincolarli ad una o più estensioni, inoltre è possibile vincolare il file ad una dimensione massima.

NOTA: la dimensione viene rilevata dopo l'upload del file. Quindi se ipoteticamente il limite è impostato a 50 megabyte e il file che si sta caricando pesa 80 megabyte, l'utente deve attendere tutto il tempo necessario del caricamento prima di vedersi rifiutare il file e ricevere l'errore.



Controlli Immagini

Tramite il controllo immagini è possibile caricare immagini, le estensioni possibili sono PNG / JPG e GIF, quando l'immagini viene elaborata dalla piattaforma le immagini vengono trasformate in .webp - Informazioni sul formato WEBP - per questo motivo se vuoi salvare l'immagine caricata non utilizzare quella pubblica ma scaricala dall'area riservata.

Anche qua, come i file è possibile limitare la dimensione massima, inoltre è possibile limitare le dimensioni massime e minime caricabili, questo limite è utile per vincolare i clienti a non caricare immagini troppo piccole (e visualizzarle pubblicamente sgranate) oppure troppo grandi e appesantire inutilmente il sito. C'è da dire anche per esperienza che i limiti se non ben descritti negli avvisi di errore causano un blocco da parte del cliente che non capisce perché il file viene rifiutato.


Tipo di ridimensionamento

Le immagini caricate possono essere rielaborate dal server in diverse maniere, sia nelle dimensioni (Larghezza Rid. e Altezza Rid.) e sia nel ridimensionamento.
  • NESSUNO: l'immagine non viene rielaborata
  • TAGLIA: A partire dal centro prende le dimensioni richieste dall'immagine originale, se l'immagine è troppo piccola, nell'immagine risultante inserisce un colore in background in modo da mantenere le dimensioni richieste
  • ADATTA: Ridimensiona in modo proporzionale e inserisce un colore in background ai lati dell'immagine in modo da mantenere le dimensioni impostate
  • PROPORZIONALE: Ridimensiona in modo proporzionale e riduce le dimensioni, l'immagine risultante può essere diversa dalle dimensioni richieste nel ridimensionamento
  • ESATTO: Realizza l'immagine secondo le dimensioni richieste, deformandola se necessario
  • CROP: Ridimensiona proporzionalmente l'immagine sul lato che ha differenza minore tra la dimensione iniziale e quella di destinazione e taglia i bordi sull'altro lato, in avanzo

Ridimensionamento su querystring in HTML

I controlli permettono di salvare una configurazione base, tuttavia durante l'utilizzo, è possibile modificare la configurazione dinamicamente su ogni tag replace utilizzato, più nello specifico è possibile usare queste variabili querystring:

m per indicare il tipo di ridimensionamento (accetta i valori sopra indicati)

w per indicare la larghezza desiderata (equivale al valore preimpostato larghezza rid.)

h per indicare l'altezza desiderata (equivale al valore preimpostato altezza rid.)

q per indicare la qualità dell'immagine, valore che deve essere compreso da 1 a 100 (default è 75)

es. di chiamata dinamica su pagina <img src=“[PC:IMMAGINE]&m=crop&h=500&w=400” alt=“Immagine di test” />

NOTA: è possibile chiamare m, w e h anche per le immagini statiche: /img/logo.png?w=200&h=200&m=proporzionale (ps: non usare crop)



Controlli Dato

I dati sono controlli speciali che permettono di collegare un dato con un altro, creando qualcosa che assomiglia alle foreing key dei classici database.

Quindi creare un controllo di tipo “Dato” permette collegare un dato con un controllo univoco e obbligatorio di un altro dato.

Nell'editor del valore che contiene il controllo di tipo “Dato” verranno elencati tutti i valori del dato collegato, quindi la scelta del valore sarà forzata ad uno dei valori disponibili.

Inoltre durante l'assegnazione del controllo di tipo “Dato” al dato destinatario, viene chiesta il tipo di referenza e come si deve comportare il sistema durante l'eliminazione di un valore del dato padre se collegati a questo c'è uno o più elementi figlio:

  • BLOCCO, l'eliminazione del padre viene bloccata
  • CASCATA, l'eliminazione del padre viene concessa e con lui anche tutti i figli a seguito
  • ORFANO, l'eliminazione del padre viene concessa e i figli rimangono orfani, viene violata l'integrità referenziale

Poniamo questo esempio per una migliore comprensione: abbiamo nei dati due tipo di dato, uno si chiama “Casa” e l'altro “Finestre”.

Al dato “Finestre” viene assegnato un controllo che ha come tipo “Dato” e questo viene associato come padre il dato “Casa”, sul controllo, ipotizziamo “Nome”, (che è univoco e obbligatorio) e viene configurato come “Cascata”.

Adesso al dato “Casa” vengono aggiunti diversi elementi e successivamente, al dato “Finestre” vengono aggiunti altri elementi.

Durante l'inserimento degli elementi di tipo “Finestre”, nell'editor viene chiesto, per ogni “Finestre” a quale elemento di “Casa” deve essere associato.

Per forza di cose, i valori di “Casa” devono essere inserite prima delle “Finestre”

Ora ci troviamo con

n elementi “Casa”

m elementi “Finestre”, dove ognuno di questi è associato ad un elemento “Casa”

se successivamente viene eliminato un elemento “Casa”, tutti gli elementi “Finestre” associati verranno eliminati (vincolo di CASCATA).


Avvisi di Errore e Descrizione

Un capitolo a parte viene dedicato agli avvisi di errore e alle descrizioni dei controlli, vista l'importanza e la trascuratezza riscontrata nel tempo.

E' molto importante, durante la configurazione dei controlli, indicare nei campi “Avviso valore non valido”, “Avviso valore mancante” e “Avviso valore duplicato” delle descrizioni chiare precise e complete.

Scrivere ad esempio:

Valore non valido”, oppure “Immagine dimensioni errate” o ancora “L'immagine è piccola” senza indicare precisamente i dettagli dell'errore, porta successivamente a delle imprecisioni e malcontenti dei clienti con un successivo abbandono da parte loro di aggiornare il sito e successivo passaggio alla concorrenza.


Questi invece sono degli esempi corretti di avvisi di errore, che devono essere applicati:

mettendo il caso che il controllo immagine in questione ha un vincolo sull'altezza minima di 500 px, sulla larghezza minima di 300 px e sul peso del file di 2048 kb, l'“avviso di valore non valido” potrebbe essere:

L'immagine che hai caricato è errata, deve essere larga almeno 300 pixel, alta almeno 500 pixel e non essere più pesante di 2048 kilobyte.


Le descrizioni dei controlli sono dei testi che vengono inseriti sotto all'input negli editor e suggeriscono al cliente di come bisognerebbe valorizzare correttamente quel controllo. Scrivere ad esempio, “immagine header”, oppure “Testo”, è errato e non da nessun valore aggiunto al cliente che sta tentando di modificare il sito.


Una descrizione corretta per una immagine potrebbe essere:

Immagine laterale sinistra sotto al testo e deve essere larga almeno 300 pixel, alta almeno 500 pixel e non essere più pesante di 2048 kilobyte.


Oppure per un testo:

Testo principale sotto al titolo, non deve superare i 500 caratteri e non deve contenere parole più lunghe di 30 caratteri.


NOTA nel caso di un sito multilingua, nei vari controlli utilizzati nei Forms i vari tipi di errore devono essere tradotti per ogni lingua.