Strumenti Utente

Strumenti Sito


sviluppo:cityware_componenti_dinamici

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
sviluppo:cityware_componenti_dinamici [2016/03/21 10:48] – [label] m.biagiolisviluppo:cityware_componenti_dinamici [2024/10/15 09:45] (versione attuale) – modifica esterna 127.0.0.1
Linea 43: Linea 43:
 </code> </code>
  
 +===== Componenti dinamici Su Grid=====
 +Metodo:
 +**addGridComponent**($formName, $components)
 +
 +Parametri:
 +  * **$formName**: nome della form
 +  * **$components**: array di dati che rappresenta i componenti da aggiungere
 +
 +Componenti attualmente gestiti:
 +
 +==== ita-edit====
 +L'array $components deve contenere:
 +
 +  * **type**: 'ita-edit'
 +  * **id**: id componente
 +  * **onChangeEvent**: true se si vuole abilitare l'evento onChange, false altrimenti (evento 'afterSaveCell')
 +  * **model**: il nome della form su cui deve rientrare (solo se richiesta gestione eventi 'onChangeEvent')
 +  * **rowKey**: identificativo riga selezionata in griglia
 +  * **additionalClass**: da passare se si vogliono agganciare delle classi custom al componente
 +  * **properties**: array di proprietà da associare al componente(es. array('value' => 'valore') per settare il value del componente)
 +
 +==== ita-edit-date====
 +L'array $components deve contenere:
 +
 +  * **type**: 'ita-edit-date'
 +  * **id**: id componente
 +  * **onChangeEvent**: true se si vuole abilitare l'evento onChange, false altrimenti (evento 'afterSaveCell')
 +  * **model**: il nome della form su cui deve rientrare (solo se richiesta gestione eventi 'onChangeEvent')
 +  * **rowKey**: identificativo riga selezionata in griglia
 +  * **additionalClass**: da passare se si vogliono agganciare delle classi custom al componente
 +  * **properties**: array di proprietà da associare al componente(es. array('value' => 'valore') per settare il value del componente)
 +  * **formatter**: formatter da usare per ottenere il valore sulla post (se non passato di default viene messo quello standard, passare 1 solo valore).
 +
 +==== ita-select====
 +L'array $components deve contenere:
 +
 +  * **type**: 'ita-edit-date'
 +  * **id**: id componente
 +  * **onChangeEvent**: true se si vuole abilitare l'evento onChange, false altrimenti (evento 'afterSaveCell')
 +  * **model**: il nome della form su cui deve rientrare (solo se richiesta gestione eventi 'onChangeEvent')
 +  * **rowKey**: identificativo riga selezionata in griglia
 +  * **additionalClass**: da passare se si vogliono agganciare delle classi custom al componente
 +  * **properties**: array di proprietà da associare al componente(es. array('value' => 'valore') per settare il value del componente)
 +  * **options**: array di opzioni della select contenente:id,value,selected,text (opzionale, se non c'è viene messo value)
  
-===== Componenti dinamici =====+===== Componenti dinamici Su Pagine=====
  
 Metodo: Metodo:
Linea 63: Linea 107:
  
 ==== ita-button ==== ==== ita-button ====
-Chiavi: 
   * **type**: 'ita-button'   * **type**: 'ita-button'
   * **id**: id conmponente   * **id**: id conmponente
Linea 71: Linea 114:
  
 ==== ita-edit ==== ==== ita-edit ====
-  * **type**: 'ita-button'+  * **type**: 'ita-edit'
   * **id**: id conmponente   * **id**: id conmponente
   * **newline**: indica se dopo il pulsante occorre andare a capo riga   * **newline**: indica se dopo il pulsante occorre andare a capo riga
   * **properties**: array di proprietà da associare al pulsante   * **properties**: array di proprietà da associare al pulsante
   * **label**: oggetto label associato al componente   * **label**: oggetto label associato al componente
 +  * **additionalClass**: da passare se si vogliono agganciare delle classi custom al componente
 +  * **onChangeEvent**: true se si vuole abilitare l'evento onChange, false altrimenti (evento 'afterSaveCell')
 +  * **model**: il nome della form su cui deve rientrare (solo se richiesta gestione eventi 'onChangeEvent')
  
 ==== ita-edit-lookup ==== ==== ita-edit-lookup ====
Linea 105: Linea 151:
   * **label**: oggetto label associato al componente   * **label**: oggetto label associato al componente
   * **options**: array di valori che può assumere il componente   * **options**: array di valori che può assumere il componente
 +  * **onChangeEvent**: true se si vuole abilitare l'evento onChange, false altrimenti (evento 'afterSaveCell')
 +  * **model**: il nome della form su cui deve rientrare (solo se richiesta gestione eventi 'onChangeEvent')
 +  * **additionalClass**: da passare se si vogliono agganciare delle classi custom al componente
  
 ==== label ==== ==== label ====
Linea 112: Linea 161:
  
 ==== ita-select option==== ==== ita-select option====
-Chiavi: 
   * **id**: id elemento   * **id**: id elemento
   * **value**: Valore da mostrare a video   * **value**: Valore da mostrare a video
Linea 228: Linea 276:
 } }
 </code> </code>
 +
 +===== Aggiunta di una subform =====
 +Per includere dinamicamente un model (disegnato con il generator) all'interno di un div, utilizzare il metodo:
 +**includiFinestra**($src, $dest, $containerName)
 +
 +Parametri:
 +  * **src**: Nome finestra da includere
 +  * **dest**: Nome finestra di destinazione
 +  * **containerName**: Nome container dove iniettare la finestra
 +
 +In questo caso la finestra inclusa sarà vista come un'estensione della finestra ospitante, e tutti gli eventi della finestra inclusa saranno gestiti da quest'ultima.
 +
 +Esempio:
 +
 +<code>
 +cwbLibHtml::includiFinestra('cwbBtaNazion', $this->nameForm, 'divContainer');
 +</code>
 +
 +===== Aggiunta di componenti all'interno di una jqGrid =====
 +Per aggiungere dei componenti all'interno di una jqGrid, devono verificarsi innanzitutto le seguenti condizioni:
 +  * I dati devono essere presenti all'interno del model (array)
 +  * I dati devono essere caricati tutti in memoria
 +  * I dati devono essere serializzati in sessione
 +
 +Il funzionamento è il seguente:
 +  * Viene effettuato il caricamento dei dati in un array, poi serializzato in sessione
 +  * I dati vengono elaborati: viene prodotto l'html per il render dei componenti, a seconda del tipo di dato da gestire
 +  * Gestione degli eventi: i dati in memoria devono essere sincronizzati
 +
 +
 +Metodo: **addGridComponent**
 +
 +Parametri:
 +  * **component**: Array che rappresenta i dati del componente
 +
 +Questo metodo funge da wrapper per i componenti specifici, ad esempio, per 'ita-select', viene chiamato il seguente metodo: 
 +**addGridComponentItaSelect**
 +
 +Parametri:
 +  * **type**: Tipo componente ('ita-select')
 +  * **model**: Nome della form (corrisponde con $this->nameForm)
 +  * **name**: Nome del componente (serve per costruire l'id in questo modo: [model]_[name]_[rowKey])
 +  * **rowKey**: Chiave che identifica il record
 +  * **options**: Array dei valori con cui popolare il componente 'ita-select'
 +  * **additionalData**: Array di valori da restituire nel gestore degli eventi
 +
 +All'evento 'change', vengono restituiti i seguenti valori nella $_POST:  
 +  * **id**: Id del componente html
 +  * **name**: Nome componente (id, senza rowKey)
 +  * **model**: Nome della form
 +  * **value**: Nuovo valore
 +Inoltre, verranno passati tutti i valori previsti in 'additionalData' (direttamente nella $_POST).
 +
 +Esempio di utilizzo (all'interno di un metodo di elaborazione del record):
 +
 +<code>
 +private function elaboraRecordsTest($Result_tab) {
 + $numRiga = 0;
 + foreach ($Result_tab as $key => $Result_rec) {
 + $numRiga++;
 + $html = cwbLibHtml::addGridComponent(array(
 + 'type' => 'ita-select',
 + 'model' => $this->nameForm,
 + 'name' => 'selectIndirizzo',
 + 'rowKey' => $Result_tab[$key]['ID'],
 + 'options' => array(
 + array(
 + 'id' => 1,
 + 'value' => 'vai milano 1, Jesi(AN)'
 + ),
 + array(
 + 'id' => 2,
 + 'value' => 'vai ascoli piceno 2, Apiro(MC)'
 + )
 + ),
 + 'additionalData' => array(
 + 'numRiga' => $numRiga
 + )
 + ));
 +
 + $Result_tab[$key]['INDIRIZZO'] = $html;            
 + }
 + return $Result_tab;        
 +}
 +</code>
 +
 +===== Note =====
 +E' necessario dopo aver creato a runtime dei componenti particolari (date-picker , ita-button ecc) associare tramite la funzione "parseHtmlContainer" lo script js per far funzionare il componente. 
 +Ad esempio se creo una griglia editabile da codice è necessario per far funzionare tutti i sui elementi (date-picker, formatter del data-edit ecc, binocoli per lookup esterni )lanciare la function sul componente padre che poi si occuperà di propagare tale comportamento ai figli.
 +
 +<code>
 +cwbLibHtml::attivaJSElemento($this->nameForm . '_' . [TABLENAME]);
 +</code>
 +
 +{{counter}} visualizzazioni.
 +
sviluppo/cityware_componenti_dinamici.1458557288.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)