Categories > TinyButStrong general (FR) >

Désolidariser les blocks ?

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Daniel
Date: 2006-07-04
Time: 23:42

Désolidariser les blocks ?

Bonjour,

j'ai le code suivant  pour développer 1 agenda :

// affichage de la colonne des heures
$separateur = ":";
$theures = array();
$x = 0;
$k=$hdebut;
While($k<=$hfin)
{
  $theures[$x] = m2h($k, $separateur);
  $k = $k + $periode;
  $x++;
}

// table des rendez-vous pour 1 journée donnée
$tbl_rdv[] = array('type' =>'libre', 'hd' =>8, 'hf' =>9, 'dif' =>4, 'lib' =>'label 1');
$tbl_rdv[] = array('type' =>'rdv', 'hd' =>9, 'hf' =>10, 'dif' =>4, 'lib' =>'label 2');
$tbl_rdv[] = array('type' =>'nl', 'hd' =>10, 'hf' =>11, 'dif' =>4, 'lib' =>'label 3');
$tbl_rdv[] = array('type' =>'rdv', 'hd' =>11, 'hf' =>12, 'dif' =>4, 'lib' =>'label 4');

$TBS->MergeBlock('rdv', 'array', $tbl_rdv);
$TBS->MergeBlock('jb', 'array', $tbl_j_o);
$TBS->MergeBlock('hb', 'array', $theures);

?>

le template suivant ( qui ne donne pas le bon résultat mais je ne vois pas comment faire autrement ) :

<html>
<body>
<table>
<tr
  <td>&nbsp;</td>
  <td>
      [jb.val; block=td]
  </td>
</tr>
<tr>
<td>
[hb.val; block=tr]
</td>
<td rowspan="[rdv.dif; block=tr]">
      [rdv.lib]
</td>
</tr>
</body>
</html>

et je voudrais l'affichage suivant :

          Lundi     Mardi   ...

8:0        label 1       
8:15         
8:30         
8:45         
9:0        label 2  
9:15         
9:30         
9:45         
10:0    label 3        

le triple problème avec ce code est que TBS :

- duplique les labels pour chaque block TR alors que je ne voudrais qu'une seule valeur de chaque
- les places vhacune dans 1 colonne différente alors que je voudrais qu'ils restent tous dans la première colonne
- ne place pas les label tout au long de la table comme je le voudrais en jouant sur la valeur valeur de rowspan

Existe-il une méthode élégante pour obtenir un affichage de rendez-vous ou dois-je "bidouiller" ?

Merci d'avance
By: Skrol29
Date: 2006-07-05
Time: 12:36

Re: Désolidariser les blocks ?

Bonjour Daniel,

J'ai déjà eu à élaoborer un tableau de ce type. la difficulté vient du fait qu'il y a des cellules vides à affiher qui ne sont liée à aucune données.
Je connais deux méthodes qui marchent bien pour résoudre ça.

Méth.1 : si la grille (le calendrier) n'est pas très grosse, on peut fusionner les colonnes puis les lignes à la manière de l'exemple en ligne "colonnes dynamique". Dans les cellules centrales on aura placé un champ [var] qui affiche l'info correspondante grâce à des nom d'item et sous items dynamiques (voir exemple en ligne). Dans ce champ var, on ajoute le paramètre "noerr" pour que si l'info est abente, rien ne s'affiche.
Cette méthode marche bien mais si le tableau est gros, ça fait beaucoup de champs [var] à fusionner ce qui n'est pas super optimisé.

Méth.2 : Pour les grilles plus grosses, je conseille simplement de préparer les lignes à afficher dans un tableau PHP en vue d'une fusion TBS simple. Ca fait une boucle avec sous boucle côté PHP mais après, la fusion est plus simple et plus rapide.
Avant de fusionner le bloc par ligne, il faudra de toute façon faire une fusion de colonne dynamique avant.