Strumenti Utente

Strumenti Sito


sviluppo:proggridalbero

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:proggridalbero [2012/10/25 15:26] a.muccisviluppo:proggridalbero [2018/03/19 10:45] (versione attuale) – modifica esterna 127.0.0.1
Linea 5: Linea 5:
   * [[grid_albero#Model| Codice nel Model]]   * [[grid_albero#Model| Codice nel Model]]
   * [[grid_albero#menLib|Codici in menLib]]   * [[grid_albero#menLib|Codici in menLib]]
-      * [[grid_albero#Funzione GetMenu|Funzione GetMenu]] +      * [[proggridalbero#Funzione GetMenu|Funzione GetMenu]] 
-      * [[grid_albero#Funzine caricaTreeLegami|Funzine caricaTreeLegami]]+      * [[proggridalbero#Funzione caricaTreeLegami|Funzine caricaTreeLegami]]
  
 \\  \\ 
Linea 15: Linea 15:
  
 Come abbiamo già visto il treeGridModel utilizzato è quello Adjacency.\\  Come abbiamo già visto il treeGridModel utilizzato è quello Adjacency.\\ 
-E' importante definire, nella parte di programmazione, che comportamendo dovranno assumere i vari campi.\\ +E' importante definire, nella parte di programmazione, che comportamento dovranno assumere i vari campi.\\ 
 Le possibili configurazioni sono: Le possibili configurazioni sono:
   * **Level :** Che assume valori integer, e indica il livello di profondità   * **Level :** Che assume valori integer, e indica il livello di profondità
Linea 70: Linea 70:
         $albero[$inc]['INDICE'] = $inc;         $albero[$inc]['INDICE'] = $inc;
 </code> </code>
-\\ +\\  
 Nella funzione getMenu possiamo notare che:\\  Nella funzione getMenu possiamo notare che:\\ 
 **$inc** viene settato a **0**\\  **$inc** viene settato a **0**\\ 
Linea 117: Linea 117:
     }        }   
 </code> </code>
-Possiamo notare che: +In questo esempio possiamo notare che nell'assegnazione dei valori della funzione caricaTreeLegami
-  * al campo $level viene assegnato il valore 1 +  * al campo **$level** assegna il valore 1 (1 perchè in questo esempio è il livello successivo al primo parent (0), ma è possibile inserire anche un autoincrementazione ) 
-  * al campo $parent viene assegnato il valore $inc, che in questo caso vale (I livelli che verranno creati avranno quindi come parent 0)+  * al campo **$parent** assegna il valore **$inc,** ($inc perchè vi è contenuto il valore del parent iniziale, che in questo caso è 0
 + 
 +\\  
 +La condizione ci serve per capire se abbiamo un risultato dalla funzione. Infatti potrebbe essere che non ci sia nessun sottolivello e che quindi il primo livelo (in questo casosia solo una foglia, viene quindi impostato in isLeaf = True.\\
  
 \\  \\ 
 \\  \\ 
  
-==Funzine caricaTreeLegami== +==Funzione caricaTreeLegami==  
 +La funzione caricaTreeLegami è una funzione ricorsiva che:  
 +  - ispeziona un gruppo di dati,  
 +  - scorre la tabella estratta, 
 +  - si ripete se trova altri sottolivelli.  
 +  
 +In breve stabilisce quali record nell'array sono dei "Rami" e quali le "foglie".
 <code> <code>
     public function caricaTreeLegami($chiave, $albero, $level, $indice, $only_menu = false, $filtro = true) {     public function caricaTreeLegami($chiave, $albero, $level, $indice, $only_menu = false, $filtro = true) {
Linea 139: Linea 148:
                 }                 }
 </code> </code>
-In questa prima parte di codice, possiamo notare un primo controllo: **if ($level == 10)**.\\  +In questa prima parte di codice, possiamo notare un primo controllo: **if ($level == 10)**, per evitare che la ricorrenza avvenga all'infinito.\\  
-Questo controllo serve ad evitare che la funzione venga ripetuta all'infinito,perchè come vedremo più avanti farà riferimento a se stessa, e serve a definire anche un numero massimo di sottolivelli che si possono avere. (In genere è impostata a **10** perchè è praticamente impossibile che si presenti un menu con più di 10 sottolivelli.)\\  +\\  
-Possiamo notare anche la presenza di una **SELECT**di un foreach.\\ +In questo esempio si vedono chiaramente anche una **SELECT** e un foreach.\\ 
 All'interno di quest'ultimo è possibile notare una if, dove viene controllato se il campo **$only_menu** e il campo **'pm_categoria'** nel record **ita_puntimenu_rec** non sono di tipo **ME** (Menu).\\ All'interno di quest'ultimo è possibile notare una if, dove viene controllato se il campo **$only_menu** e il campo **'pm_categoria'** nel record **ita_puntimenu_rec** non sono di tipo **ME** (Menu).\\
-Questo controllo ci serve per capire se il record che stiamo passando è o meno una Foglia.+Nell'esempio questo controllo è utilizzato per capire se il record che sta passando è o meno una Foglia.
 \\  \\ 
 All'interno del **foreach** continueremo con l'impostazione dei campi obligatori, per quanto riguarda l'impostazione delle foglie:\\  All'interno del **foreach** continueremo con l'impostazione dei campi obligatori, per quanto riguarda l'impostazione delle foglie:\\ 
 +\\ 
 +\\ 
 <code> <code>
                 .....                  ..... 
Linea 177: Linea 188:
 E' inoltre presente una **Select**, che assegnerà alla variabile $me_id il valore **'me_id'** risultante dalla query. E' inoltre presente una **Select**, che assegnerà alla variabile $me_id il valore **'me_id'** risultante dalla query.
 \\      \\     
-Dopo di che verrà salvato il conteggio totale in $save_count dei record contenuti in $albero e la funzione avrà un "autorichiamo":+Dopo di che verrà salvato il conteggio totale in **$save_count** dei record contenuti in **$albero** e la funzione avrà un "autorichiamo":
 <code> <code>
                 ....                 ....
Linea 193: Linea 204:
     }     }
 </code> </code>
-Come già accennato la funzione con:\\  +Possiamo notare che nell'assegnazione della funzione ricorsiva i valori **$chiave,$level** e **$parent** subiscono delle variazioni:
-$albero = $this->caricaTreeLegami($me_id, $albero, $level + 1, $inc, $only_menu, $filtro);\\  +
-Effettua quindi un riferimento a sestessa, utilizzato per assegnare a tutti i livelli i vari legami.\\+
 \\  \\ 
-Possiamo inoltre notare che durante il riferimento a se stessa i valori **$chiave,$level** e **$parent** assumono delle variazioni: 
   * alla variabile **$chiave** viene assegnato il valore **$me_id**   * alla variabile **$chiave** viene assegnato il valore **$me_id**
   * la variabile **$level** viene incrementata di **1**    * la variabile **$level** viene incrementata di **1** 
-  * e alla variabile **$parent** viene assegnato il valore contenuto in **$inc**, in questo caso **0**+  * e alla variabile **$parent** viene assegnato il valore contenuto in **$inc** 
 + 
 +Viene inoltre riutilizzata la condizione  **if ($save_count == count($albero))** che come prima ha il compito di controllare se il risultato è differente( quindi nuovo livello) o non è variato (quindi foglia). 
 + 
 +Infine vi è il ritorno di $albero : **return $albero;** 
 + 
 +Per concludere: 
 +<code> 
 +        ..... 
 +        $this->tree = $this->menLib->getMenu($voceMenu$only_menu = false, $gruppo, $return_model = 'adjacency', $filtro = false); 
 +        $arr = array('arrayTable' => $this->tree,   
 +            'rowIndex' => 'idx'); 
 + 
 +        $griglia = new TableView($this->tableId, $arr); 
 +        $griglia->setPageNum(1); 
 +        $griglia->setPageRows('1000'); 
 + .... 
 +</code> 
 + 
 +**tree** a questo punto contiene tutto il nostro albero.\\  
 +Come è già stato detto in precedenza nel Generetor il nostro elemento è stato definito treeGrid, e attraverso la selezione del 'arrayTable' e la funzione TableView , il nostro albero verrà inserito nella grid. 
  
sviluppo/proggridalbero.1351178788.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)