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:09] 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 sestessa, 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 159: Linea 170:
                 $albero[$inc]['isLeaf'] = 'true';                 $albero[$inc]['isLeaf'] = 'true';
 </code> </code>
-Possiamo notare che la variabile $inc viene settata con il conteggio totale dei record in $albero.\\ +Possiamo notare che la variabile **$inc**  viene settata con il conteggio totale dei record in **$albero**.\\ 
 \\  \\ 
-Successivamente, sempre all'interno del foreach, verrà controllato se il rercord che sta passando è o meno un menu :\\ +Successivamente, sempre all'interno del **foreach**, verrà controllato se il rercord che sta passando è o meno un menu :\\ 
 <code> <code>
                 .....                 .....
Linea 168: Linea 179:
        if ($Ita_puntimenu_rec['pm_categoria'] == 'ME') {        if ($Ita_puntimenu_rec['pm_categoria'] == 'ME') {
                     $albero[$inc]['isLeaf'] = 'false';                     $albero[$inc]['isLeaf'] = 'false';
 +                    
 +                    $sql = "SELECT * FROM ita_menu WHERE me_menu = '" . $Ita_puntimenu_rec['pm_voce'] . "'";
 +                    $Ita_menu_giu_rec = ItaDB::DBSQLSelect($this->ITALSOFT_DB, $sql, false);
 +                    $me_id = $Ita_menu_giu_rec['me_id'];
 +                    
 </code> </code>
-Nel caso in cui sia un **Menu**, possiamo subito notare l'impostazione del campo obbligatorio **'isLeaf'**definita **false**, in quanto si tratta di un Nodo e non una foglia.\\     +Nel caso in cui si tratti di un **Menu**, possiamo subito notare l'impostazione del campo obbligatorio **'isLeaf'**definita **false**, in quanto si tratta di un Nodo e non una foglia.\\ 
-Dopo di che verrà eseguita una Select:\\ +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":
 <code> <code>
-                $sql = "SELECT * FROM ita_menu WHERE me_menu = '" $Ita_puntimenu_rec['pm_voce'"'"; +                ....
-                $Ita_menu_giu_rec = ItaDB::DBSQLSelect($this->ITALSOFT_DB, $sql, false);+
                 $me_id = $Ita_menu_giu_rec['me_id'];                 $me_id = $Ita_menu_giu_rec['me_id'];
- 
                 $save_count = count($albero);                 $save_count = count($albero);
  
                 $albero = $this->caricaTreeLegami($me_id, $albero, $level + 1, $inc, $only_menu, $filtro);                 $albero = $this->caricaTreeLegami($me_id, $albero, $level + 1, $inc, $only_menu, $filtro);
-                if ($save_count == count($albero)) {      // Fa riferimento a sestessa incrementando però il level di 1. (Fino a che non arriverà a 10, come da controllo impostata all'inizio della menLib,nella funzione caricaTreeLegami) +                if ($save_count == count($albero)) {      
-                        $albero[$inc]['isLeaf'] = 'true'; +                         $albero[$inc]['isLeaf'] = 'true';
-                    } else { +
-                        if (!$filtro) { +
-                            $albero[$inc]['pm_descrizione'] = "<span style=\"font-weight:bold;color:darkred;\">" . $albero[$inc]['pm_descrizione'] . "</span>"; +
-                        }+
                     }                     }
                 }                 }
Linea 192: Linea 204:
     }     }
 </code> </code>
 +Possiamo notare che nell'assegnazione della funzione ricorsiva i valori **$chiave,$level** e **$parent** subiscono delle variazioni:
 +\\ 
 +  * alla variabile **$chiave** viene assegnato il valore **$me_id**
 +  * la variabile **$level** viene incrementata di **1** 
 +  * 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.1351177763.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)