Sviluppo > Safe X3 WAS > Tokens > Blocchi 

SEEWARNING Prima di creare il proprio sito è preferibile leggere la documentazione:Prima di iniziare.


Il token blocco effettua le lettura e la visualizzazione dell'entità che gli è assegnata mediante parametrizzazione:

1. Legge la o le entità nel database X3 tramite la chiamata di un'interfaccia (web service) di tipo 'Accesso dati',

2. Effettua un'iterazione sulle entità ottenute per costruire dinamicamente le righe di un riquadro.

Presa in carico

Principio

Il token blocco è inserito nella pagina HTML utilizzando la seguente sintassi:

<table>
<!adx="MyBlock">
    <tr>
        <td adx="aBLKELMTRANK"></td>
        <td adx="ITEMREF"></td>
    </tr>
<!adx="MyBlock">
</table>

Il motore XTEND procede nel modo seguente per elaborare i blocchi:

Fase di parsing della pagina HTML

Questa fase è eseguita una sola volta, al momento del caricamento della pagina HTML:

  • Creazione dell'oggetto blocco ed aggiunta nella struttura,
  • Calcolo delle dipendenze tra blocchi se la selezione di un blocco dipende da un altro blocco.
    Il risultato di questo calcolo fornisce l'ordine di inizializzazione dei blocchi
Fase di generazione della pagina.

Questa fase è eseguita ad ogni visualizzazione della pagina HTML:

1. Inizializzazione dei blocchi

  • Calcolo dei criteri di selezione in funzione del tipo di selezione,
  • Chiamata del web service 'Accesso dati' con i criteri di selezione in parametro,
  • Creazione e memorizzazione delle entità ottenute.

2. Iterazione su tutte le entità ottenute

  • Posizionamento dell'entità nel contesto di dati,
  • Chiamata del metodo di generazione dell'HTML dei tokens figli,
  • Cancellazione dell'entità nel contesto di dati.

Nell'esempio precedente, se la selezione restituisce 3 articoli con codice PUZ001, PUZ002 e PUZ003, il risultato ottenuto sarà un riquadro di tre righe:

1

PUZ001

2

PUZ002

3

PUZ003

 L'HTML generato è il seguente:

Si noti che l'HTML 'figlio' del token blocco è stato ripetuto 3 volte e ricalcolato ogni volta tenendo conto del nuovo contesto di dati (riga corrente).

<table>
    <tr>
        <td>1</td>
        <td>PUZ001</td>
    </tr>
    <tr>
        <td>2</td>
        <td>PUZ002</td>
    </tr>
    <tr>
        <td>3</td>
        <td>PUZ003</td>
    </tr>
</table>

Selezione ed ordinamento

Oltre al fatto di visualizzare dei riquadri di dati, il token blocco gestisce la modifica dinamica dei criteri di selezione e di ordinamento.

La parametrizzazione del blocco definisce i criteri di default, ed è possibile autorizzare o meno la modifica di tali criteri mediante un link dinamico.

E' il token link dinamico, per il quale si possono anche definire dei parametri di selezione e di ordinamento, che può modificare i criteri del blocco.

Soltanto i criteri di selezione e di ordinamento del blocco principale della pagina (alias AMAIN) possono essere modificati da quelli dei link dimanici.

Si possono definire diversi blocchi per pagina, ma uno solo (il blocco principale) potrà avere dei criteri di selezione ed ordinamento modificabili dall'utente.

Esistono tre tipi di modifica dei criteri di un blocco mediante un link dinamico:

  • I criteri del link dinamico 'Sostituisci selezione del blocco principale':
    • Selezione del blocco = criteri di selezione del link.

  • I criteri del link dinamico 'Aggiungi alla selezione del blocco principale':
      • Esegue un perfezionamento della richieste del blocco con i criteri del link,
      • Selezione del blocco = criteri di selezione del blocco + criteri di selezione del link

  • I criteri del link dinamico 'Somma alla selezione in corso del blocco principale':
      • Esegue un perfezionamento della richiesta del blocco aggiungendo (AND logico) la selezione del link dinamico alla richiesta corrente del blocco,
      • Questa opzione è utilizzate se la selezione del blocco risulta dalla somma di più link dinamici,
      • Selezione del blocco = criteri di selezione del blocco + somma dei criteri di tutti i link cliccati.

Queste tre opzioni permettono di gestire la maggiorparte delle situazioni che si presentano nelle pagine web.

La scheda token blocco permette di parametrizzare i criteri di selezione e di ordinamento del blocco.

Sono i criteri di default ad essere applicati alla prima visualizzazione della pagina che contiene il blocco.

Il token blocco propone due parametri 'Selezione modificabile' e 'Ordinamento modificabile' che indicano se i criteri di selezione e/o di ordinamento possono essere modificati da un link dinamico.

Questi parametri si applicano solamente se il blocco è stato definito come blocco principale nella scheda della pagina web che lo visualizza.

Blocco con più celle per riga

Per visualizzare un blocco con più celle per riga si utilizza il token speciale ASTAMP per delimitare la cella.

Il server XTEND ripeterà tante volte il codice HTML compreso tra i due tag ASTAMP quante sono le celle nella riga.

<table>
<!-Iterazione sulle righe del blocco-->
<!adx="MYBLOCK">
    <tr>
        <!-Codice ripetuto tante volte quante sono le celle per riga-->
        <!adx="ASTAMP">
                <!--Per alternare il colore delle celle-->                           
                <td adx="ALINESTYLE:xattr=Class">
                   <!--Codice HTML di una cella-->
                   <b>Cognome</b><p adx="NAME"></p>
                   <b>Nome</b><p adx="FIRSTNAME"></p>
                </td>
        <!adx="ASTAMP">
    </tr>
<!adx="MYBLOCK">
</table>

Come alimentare le celle vuote

L'esempio qui di seguito mostra come alimentare le celle vuote quando il numero di record non è un multiplo del numero di celle per riga.

Si utilizza il blocco condizionatoADISPSTAMPEMPTY per delimitare l'HTML dedicato alle celle vuote.

<table>
<!-Iterazione sulle righe del blocco-->
<!adx="MYBLOCK">
    <tr>
        <!adx="ASTAMP">                        
                <td adx="ALINESTYLE:xattr=Class">
                    <!adx="ADISPSTAMPEMPTY">
                        <!--Cella vuota alimentata a blank-->      
                        &nbsp;
                    <!adx="ADISPSTAMPEMPTY">
                    <!adx="ADISPSTAMPEMPTY:xnot">
                        <!--Codice HTML di una cella non vuota-->
                        <b>Cognome</b><p adx="NAME"></p>
                        <b>Nome</b><p adx="FIRSTNAME"></p>   
                    <!adx="ADISPSTAMPEMPTY">
                </td>
        <!adx="ASTAMP">
    </tr>
<!adx="MYBLOCK">
</table>

Le azioni che agiscono sui blocchi

Paginazione

Le azioni ABLKFIRSTPAGE, ABLKNEXTPAGE, ABLKPREVPAGE, ABLKLASTPAGE permettono di gestire la paginazione nei blocchi.

I token ADLKFIRSTPAGE, ADLKNEXTPAGE, ADLKPREVPAGE, ADLKLASTPAGE possono essere utilizzati per il blocco principale della pagina.

I campi aBLKNBELMTS e APAGEPOS visualizzano il numero totale di record e la posizione della pagina rispetto al numero totale di pagine.

I blocchi condizionati AHIDEMAINFIRSTPAGE e AHIDEMAINLASTPAGE gestiscono visualizzazione/mascheramento dei bottoni di paginazione per le prime e le ultime pagine.

Sintassi

Blocco.ADLK*

Esempio:

Paginazione con gestione della visualizzazione ad inizio e fine paginazione.

<table width="100%">
    <tr>
        <td align="left" width="20%">
        <!--Hide FirstPage and Previous actions if current page is the first page-->           
            <!adx="aHideMainFirstPage">
                <!---->
                <a href="" adx="AMAIN.aDlkFirstPage">Prima</a>
                <a href="" adx="AMAIN.aDlkPrevPage">Precedente</a>
            <!adx="aHideMainFirstPage">
        </td>
        <!--Displays page information-->
        <td align="center" width="60%">
            Pagina  : <span adx="AMAIN.aPagePos"></span> -
            Numero di elementi: <span adx="AMAIN.aBlkNbElmts"></span>
        </td>
        <td align="right" width="20%">                         
        <!--Hide LastPage and Next actions if current page is the last page--> 
            <!adx="aHideMainLastPage">
                <a href="" adx="AMAIN.aDlkNextPage">Successiva</a>
                <a href="" adx="AMAIN.aDlkLastPage">Ultima</a>
            <!adx="aHideMainLastPage">
        </td>
    </tr>
</table>

Selezione di una riga

I link dinamici ADLKSELECT e ADLKUNSELECT (azione ABLKSELECT e ABLKUNSELECT) permettono di selezionare/deselezionare una riga di un blocco.

Utilizzo

Inserire i token ADLKSELECT e ADLKUNSELECT in una delle celle della riga sia in un tag <a> sia in un tag <input type='button'>.

Il campo ABLKSELECTEDLINE contiene il range (da 1 a N) della riga selezionata.

Esempio:

Il blocco ABLKCOUNTRIES visualizza i paesi nel sito ASAMPLE con selezione della riga per visualizzare il dettaglio Valuta/Lingua del paese.

Un clic sulla prima cella (CRY) seleziona la riga.

<!adx="ABLKCOUNTRIES:xselect=false"> 
    <tr>
        <td><a adx="ADLKSELECT"><span adx="CRY"></span></a></td>
        <td adx="CRYDES"></td>    
        <td adx="CUR"></td>
        <td adx="LAN"></td>                
    </tr> 
<!adx="ABLKCOUNTRIES"> 
<!--Visualizzazione del N° di riga selezionata-->
<span adx='ABLKCOUNTRIES.ABLKSELECTEDLINE'></span>

Il parametro HTML 'xSelect=true' permette di selezionare la prima riga di default.

Se questo parametro non è presente, o se il suo valore è uguale a 'false', il blocco non ha, di default, nessuna riga selezionata.

Quando un blocco ha una riga selezionata, si possono indirizzare i campi di questa riga mediante la sintassi Blocco.Campo.

I valori dei campi della riga selezionata possono essere visualizzati o utilizzati come criteri in un blocco, un link dinamico o un blocco condizionato.

Il blocco condizionato AHIDEMAINSELECT gestisce la visualizzazione/mascheramento di un campo di HTML in funzione del fatto che il blocco principale abbia o meno una riga selezionata (vedere la pagina paese del sito ASAMPLE).

Ritorno dettaglio a elenco

L'azione ABLKRESTOREMAINCTX permette di ritornare ad una pagina elenco partendo da una pagina dettaglio senza perdere né la paginazione né la riga selezionata del blocco principale.

Il link dimanico qui di seguito permette di ritornare alla pagina FORMQUERYRES con ripristino del contesto del blocco principale.

<input type="button" value="Ritorno elenco" adx="DlkFrmQueryBack" class="xtendButton" >

Accesso diretto ai dati delle righe

La sintassi che segue permette di indirizzare direttamente i dati di una riga di un blocco:

<!--Prima riga-->
<span adx="MYBLOCK(first).MYFIELD"></span>]<br>
<!--Ultima riga-->
<span adx="MYBLOCK(last).MYFIELD"></span>]<br>
<!--Nesima riga-->
<span adx="MYBLOCK(N).MYFIELD"></span>]<br>

Accesso ai dati di un blocco in JavaScript (JSON)

La sintassi che segue permette di valorizzare una variabile JavaScript con la rappresentazione JSON di un blocco o di una riga di un blocco:

<script>
    // Dati JSON di un blocco
    var wMyBlock_JSON=<!adx="MYBLOCK(*)"><!adx="MYBLOCK(*)">;
    var wMyBlock_JSON=<!adx="MYBLOCK(*)"><!adx="MYBLOCK(*):xinclude=FIELD1,FIELD2">;
    var wMyBlock_JSON=<!adx="MYBLOCK(*)"><!adx="MYBLOCK(*):xexclude=FIELD1,FIELD2">;
    // Dati JSON di una riga
    var wMyLine_JSON=<!adx="MYBLOCK(2)"><!adx="MYBLOCK(2)">;
    var wMyLine_JSON=<!adx="MYBLOCK(2):xinclude=FIELD1,FIELD2"><!adx="MYBLOCK(2)">;
    var wMyLine_JSON=<!adx="MYBLOCK(2):xexclude=FIELD1,FIELD2"><!adx="MYBLOCK(2)">;
</script>

La variabile JSON di un blocco è un riquadro (Array) di righe:

<script>
    var wMyBlock = [{riga 1},{riga 2},...];
   
var wMyBlock = [{"STATO":1,"STATO_DESCR":"Da elaborare","PREZZO":81.35,"COD2":"30-112"},
    {"STATO":2,"STATO_DESCR":"Elaborato","PREZZO":117.9,"COD2":"31-02"},
    {"STATO":1,"STATO_DESCR":"Da elaborare","PREZZO":606.15,"COD2":"32-034"}];
</script>

La variabile JSON di una riga è un oggetto che contiene dei campi :

<script>
    var wMyLine ={"CAMPO1":"Valore1","CAMPO2":"Valore2"...};
   
var wMyLine = {"STATO":1,"STATO_DESCR":"Da elaborare","PREZZO":606.15,"COD2":"32-034"}
</script>

Per un campo il parametro xjson genera un oggetto JSON {"NomeCampo:"Valore"}. Senza parametro xjson la variabile JavaScript viene valorizzata con il valore del campo.

<script>
    // Dati JSON di un campo
    var wMyField_JSON=<!adx="MYFIELD:xjson"><!adx="MYFIELD">;
    //XTEND genera
    var wMyField_JSON={"MYFIELD":"Valore"};
   
// Valore di un campo
    var wMyField_JSON=<!adx="MYFIELD"><!adx="MYFIELD">;
    //XTEND genera
    var wMyField_JSON="Valore";
</script>

I parametri HTML

Codice

Parametro 

Effetto

xselect

True/False

Seleziona la prima riga di default

Campi di un blocco

Codice

Tipo

Descrizione

ABLKELMTIDX

Intero

Indice di un elemento in un blocco (O->ABLKNBELMTS-1)

ABLKELMTRANK

Intero

Range di un elemento in un blocco (1->ABLKNBELMTS)

ABLKLINEIDX

Intero

Indice di una riga in un blocco (O->ABLKNBLINES-1)

ABLKLINERANK

Intero

Range di una riga in un blocco (O->ABLKNBLINES)

ABLKNBELMTS

Intero

Numero di elementi (record) totale della query di un blocco

ABLKNBLINES

Intero

Range della riga selezionata di un blocco tramite l'azione ABLKSELECT

ABLKSELECTEDLINE

Intero

Numero di righe di un blocco

APAGENB

Intero

Numero di pagine di un blocco

APAGENUM

Intero

Range della pagina corrente di un blocco

APAGEPOS

Intero

APAGEPOS/APAGENUM

Blocchi predefiniti

Blocchi predefiniti

Codice

Descrizione

ACONST

Contiene tutti i campi di tipo costante

ACURRENT

Contesto di dati corrente (top) nella sequenza di dati XTEND

AHTMLFORM

Form HTML

AHTTPCOOKIE

Cookies HTTP

AMAIN

Blocco principale di una pagina definito nei parametri della pagina

APBG

Blocco sfondo di una pagina definito nei parametri della pagina

AMESS

Messaggi utente

AREFERENCE

Quando si scrive BlocRiferimento.TokenLink il blocco BlocRiferimento è chiamato 'blocco di riferimento' ;
Il contesto di dati di questo blocco è passato come parametro dell'azione

ASESSION

Contiene i dati della sessione utente

AUSERCRIT

Contiene i criteri utenti (parametro HTML xcrit)

AUSERINF

Contiene i dati utente restituiti dal login

AUSERVAR

Contiene le variabili utente create dalle funzioni JavaSCript xtdSetUserVar/xtdRemoveUserVar

Prerequisiti

SEEREFERTTO Riferirsi alla documentazione di Implementazione

Gestione videata

Testata

Campi

I seguenti campi sono presenti in questo folder :

Codice del token blocco.

  • Sito (campo FCYLIB)

Sito Web corrente.

  • Descrizione (campo INTIT)

 

Chiudi

 

Folder Generale

Presentazione

Parametri generali del blocco.

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Caratteristiche

  • Tipo (campo TYP)

  • Multi record: selezione di più entità,

  • Mono record: selezione di una sola entità.
    Se la selezione restituisce più entità, verrà visualizzata la prima.

  • Righe per blocco (campo BLCNBRLIN)
  • Celle per riga (campo LINNBROBC)

Indica le entità che verranno create a partire dal risultato della consultazione.
L'entità contiene l'interfaccia di tipo 'Accesso dati' che deve essere richiamata.

Interfaccia di tipo 'Accesso dati' che verrà richiamata.

  • campo INTTYP

Tipo di interfaccia 'Accesso dati' che verrà richiamata.

Chiudi

 

Folder Selezione

Presentazione

Parametrizzazione della selezione associata al blocco.

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Caratteristiche

  • Tipo di selezione (campo SELTYP)

Nessuna: selezione di tutti i record.

Consultazione: applicazione dei criteri di selezione del blocco.

Ultimo link cliccato: applicazione dei criteri di selezione del link dinamico cliccato per accedere alla pagina che contiene il blocco.

  • Selezione alterabile (campo SELDYNALT)

No: la query SQL associata al blocco non può essere modificata da quella di un link dinamico.

Si: la query può essere modificata da quella associata ad un link dinamico.

SEEINFO La query del blocco è la consultazione di default.

  • Ottimizzazione (campo INTOPTIMI)

Scelta dell'ottimizzazione proposta dall'interfaccia.

Nessuna: Nessuna ottimizzazione

Nessun blob: l'interfaccia non restituisce i campi di tipo blob

Nessun clob: l'interfaccia non restituisce i campi di tipo clob

Nessun clob né blob: l'interfaccia non restituisce i campi di tipo blob e clob

Sintesi selezione

  • campo RES30

Consultazione del blocco in formato testo

Riquadro Criteri di selezione

  • E/O (campo ANDOR30)

Operatore logico di concatenamento delle operazioni.

  • ( (campo BRKLFTM30)

Parentesi aperte.

  • Campo (campo FIEKEY30)

Campo dell'entità il cui valore è il primo operando dell'operazione.

  • campo OPE30

Operatore di confronto.

  • Origine (campo VALTYP30)

  • Origine costante: valore fisso inserito nella colonna 'Cost / Attrib. Web'

  • Origine 'Campo web': valore proveniente da un campo del form HTML (generalmente inserito dall'utente).
    La colonna 'Cost / Attrib. Web' contiene il nome (attributo 'NAME') del campo <input> del form HTML.

  • Origine 'Token campo': valore di un campo di un blocco i cui nomi sono inseriti nelle colonne successive.

  • Cst / Attrib. Web (campo VALEUR30)

Si inserisce qui il valore del parametro. Questo viene inserito a seconda dei casi come numero,data o codice alfanumerico. Quando il parametro è di tipo menù locale, si può a piacere inserire l'inizio della descrizione, o il valore numerico corrispondente al range della descrizione nell'elenco. Quando il codice è controllato da una tabella allegata, si può utilizzare un tasto di selezione per sceglierlo.

Codice del blocco per l'origine 'Token campo'.

 

  • Campo (campo VFIEKEY30)

Codice del campo per l'origine 'Token campo'.

  • ) (campo BRKRGTM30)

Parentesi chiuse.

  • Criterio obbligatorio (campo CRIOBY30)

  • : il valore del secondo operando deve essere non nullo, viceversa XTEND restituirà il messaggio di errore 'AERRCRITMANDATORY'.

  • No: se il valore del secondo operando è nullo, il criterio (la riga) viene ignorato.

  • Car. * per tutti (campo ALLSTAR30)

 

Entità

Indica le entità che verranno create a partire dal risultato della consultazione.
L'entità contiene l'interfaccia di tipo 'Accesso dati' che deve essere richiamata.

Interfaccia di tipo 'Accesso dati' che verrà richiamata.

  • campo INTTYPSEL

Tipo di interfaccia 'Accesso dati' che verrà richiamata.

Chiudi

 

Folder Ord

Campi

I seguenti campi sono presenti in questo folder :

Caratteristiche

  • Tipo sort (campo SRTTYP)

Selezionare un tipo di ordinamento:

  • Nessuno: i record (righe del blocco) non vengono ordinati.

  • Campo: ordinamento secondo un elenco di campi definiti nel riquadro Sort.

  • Random: l'ordine delle righe viene calcolato in modo aleatorio da un programma 4GL post-query. 'Random' viene utilizzato per visualizzare aleatoriamente una riga tra N.
  • Sort alterabile (campo SRTDYNALT)

  • No: i criteri di ordinamento non possono essere modificati da un link dinamico.

  • : i criteri di ordinamento sono modificabili da un link dinamico.

Riquadro Ord

  • Campo (campo FIEKEY31)

Nome del campo per l'origine 'Token campo'.

  • Ordinamento (campo SRTORD31)

Ordinamento Ascendente/Discendente.

Chiudi

 

Folder Avanzato

Campi

I seguenti campi sono presenti in questo folder :

Dati ottenuti dal blocco

  • Nessun dato (campo OPTDSY)

Indica ciò che deve essere visualizzato dove si trova il blocco nella pagina HTML se la selezione è vuota:

  • Non visualizzare nulla: non appare nulla.

  • Codice HTML senza token: visualizza l'HTML contenuto tra i due token che delimitano il blocco senza considerare i token.

  • Codice HTML con token: richiama il metodo di generazione dei token figli come se il blocco avesse restituito dei dati.

SEEINFO Non viene posizionato nessun contesto di dati.
I 'tokens figli' sono i token del codice HTML delimitato dai tag di inizio e fine del blocco.

Riquadro Stile per riga

  • Stile (campo LINSTY)

Riquadro Param. Accesso sottoprogramma

Codice del parametro sottoprogramma.

  • Origine (campo VALTYP41)

  • Origine costante: valore fisso inserito nella colonna 'Cost / Attrib. Web'

  • Origine 'Campo web': valore proveniente da un campo del form HTML (generalmente inserito dall'utente).
    La colonna 'Cost / Attrib. Web' contiene il nome (attributo 'NAME') del campo <input> del form HTML.

  • Origine 'Token campo': valore di un campo di un blocco i cui nomi sono inseriti nelle colonne successive.

  • Cst / Attrib. Web (campo VALEUR41)

  • Origine costante: contiene il valore della costante.

  • Origine 'Campo web': contiene il nome (attributo 'NAME') del campo <input> del form HTML.
    Il parametro verrà valorizzato con il valore di questo campo.

Codice del blocco per l'origine 'Token campo'.

 

  • Campo (campo VFIEKEY41)

Codice del campo per l'origine 'Token campo'.

Chiudi

 

Stampe

Di default, le seguenti stampe sono associate alla funzione :

 PRTSCR : Stampa Videata

Ma ciò lo si può modificare tramite parametrizzazione.

Bottoni specifici

Questo bottone permette di aggiornare il dizionario XTEND nel formato XML.

Il server X3WEB considera il dizionario solo in questo formato.

Esiste un file xml per dizionario.

Per esempio il file ACT.xml che corrisponde all'insieme delle azioni web per il sito Web corrente.

Questo bottone permette di copiare un token blocco.

Barra di menù

Strumenti / Validazione con verifica

Validazione con una verifica della coerenza dei dati del dizionario XTEND.

Messaggi di errore

Non esistono messaggi di errore ad eccezione di quelli generici.

Tabelle utilizzate

SEEREFERTTO Riferirsi alla documentazione di Implementazione