[spip-dev] tableaux

Salut :slight_smile:

Une petite question en passant:
A quand la gestion des tableaux complexes avec spip sans passer par les tag html ?

a+

f.

fab wrote:

A quand la gestion des tableaux complexes avec spip sans passer par les tag html ?

propose :

1/ une syntaxe compatible avec l'existant,
2/ une implementation.

permet de generer des tableaux, si mes souvenirs sont bons.

et apres ... heu ...

propose :

>
> 1/ une syntaxe compatible avec l'existant,
> 2/ une implementation.
euh, c'était juste une question :slight_smile: je ne suis pas un développeur né.

> >>>>> permet de generer des tableaux, si mes souvenirs sont bons.
oui, mais à priori, ce sont de simples tableaux (sans fusion de cellules)

f.

Marc Quinton a écrit :

Comme l'a fait remarqué Marc, il faudrait déjà trouver une syntaxe
pour décrire un tableau "complexe".
  Après, on verra si c'est "codable" sans y laisser la peau :wink:

  Décrire un tableau avec des fusions de lignes et de colonnes, c'est
vraiment galère. Ou alors faut utiliser la syntaxe de latex, mais
c'est vite imbitable.
  Ou alors faudra faire une toolbar pour éditer les tableaux (nan
antoine>arno*|fil ! pas taper ! :wink:

  Bref, si tu n'es pas développeur, tu peux essayer de trouver un
ensemble de raccourcis à utiliser pour décrire ces tableaux, voir si
ça résiste à la lisibilité et aux cas tordus, et on verra si on peut
en tirer qqchose.

À+, Pif.

A propos des tableau, un truc qui me serait bien utile, ce serait d'avoir deux types de tableaux:
Par exemple: |toto|toto| et /titi/titi/
Afin d'avoir deux types de mise en pages différentes.
Et dans mon cas, je configurerai la CSS pour avoir un type "tableau invisible" (juste pour de la mise en page dans mes articles) et un tableau normal.

C'est surement pas ce que demandait fab à l'origine mais ca me parait interessant et pas trop mortel a coder (mais la, je m'avance peut etre un peu, n'étant pas expert de SPIP :o) )

A+
Eric

Eric wrote:

A propos des tableau, un truc qui me serait bien utile, ce serait d'avoir deux types de tableaux:
Par exemple: |toto|toto| et /titi/titi/
Afin d'avoir deux types de mise en pages différentes.
Et dans mon cas, je configurerai la CSS pour avoir un type "tableau invisible" (juste pour de la mise en page dans mes articles) et un tableau normal.

C'est surement pas ce que demandait fab à l'origine mais ca me parait interessant et pas trop mortel a coder (mais la, je m'avance peut etre un peu, n'étant pas expert de SPIP :o) )

mieux encore, pouvoir, dans un tableau, lui donner de la classe, enfin
un nom de classe CSS.

on pourrait prefixer le tableau de cette maniere :

{TABLEAU:class='xyz';autre_attribut='valeur'}|
> > >

pas de contenu pour cette premiere ligne, ce qui signifique que l'on
peut ometre les ||, voir les remplacer la les ; mais d'un autre coté
ca rappelle la notion de tableaux.

{TABLEAU=class:'xyz';autre_attribut:'valeur'}| (ou une syntaxe plus CSS)
> > >

et pouquoi pas a l'interieur des cellules, mais la je n'y vois plus trop d'interet,
autant coder en HTML.

pour la fusion, la barre oblique est plutot sympa. Il faudrait
distinguer la fusion horizontale de la fusion verticale.

/ / | | | (2 cases fusionnées)

> > > >

\ | | \ | (fusion de la premiere colonne)
\ | | \ | (et de la derniere)

mieux encore, pouvoir, dans un tableau, lui donner de la classe, enfin
un nom de classe CSS.

on pourrait prefixer le tableau de cette maniere :

>{TABLEAU:class='xyz';autre_attribut='valeur'}|
> > > >
> > > >

pas de contenu pour cette premiere ligne, ce qui signifique que l'on
peut ometre les ||, voir les remplacer la les ; mais d'un autre coté
ca rappelle la notion de tableaux.

et pouquoi pas a l'interieur des cellules, mais la je n'y vois plus trop d'interet,
autant coder en HTML.

ben pour préciser des colspan et des rowspan justement :slight_smile:

pour la fusion, la barre oblique est plutot sympa. Il faudrait
distinguer la fusion horizontale de la fusion verticale.

> / / | | | (2 cases fusionnées)

> > > > >
\ | | \ | (fusion de la premiere colonne)
\ | | \ | (et de la derniere)

  Dans les 2 cas, le truc pénible, c'est que c'est uniquement quand tu
vient parser la deuxième ligne/colonne que tu découvres qu'il fallait
mettre une col/rowspan à la première.
  Ça oblige donc à tout mettre dans une structure intermédiaire qu'on
dumpe à la fin.
  D'un coté, c'est plus propre/objet, de l'autre, ça se complique
quand même pas mal.

  De plus, rien n'empèche de mettre des / dans un tableau (pour parler
de km/h par exemple), il faut donc pouvoir "échaper" ces caractères.

  Par contre, un truc de ce genre serait peut être plus simple :

{définition de styles si on veut}|
case A1 | case A2 | case A3 |
{>2} case B12 || case B3 |
case C1 |{v2} CD 2| case C3 |
case D1 | | case D3 |

Donc :
- pendant le parsing, on garde dans un coin la case où on est.
- quand on trouve un {>n} (">" parce que ça pointe à droite), on
  ajoute un colspan='n' et on note que les case +1, +2 .. +n-1
  sont à ignorer dans le source et à sauter dans l'html
- quand on trouve un |{vn} ("v" pointe vers le bas), idem avec
  un rowspan (on l'inverse, j'confond tout le temps :slight_smile:
- si le premier | est suivi d'un { et d'autre chose qu'un > ou un
  v, c'est un style qu'on ajoute au <table>
- si on veut mettre une vraie accolade dans une case, y'a qu'à
  la précéder d'un espace.

  Par contre, je le coderait pas tout de suite, j'ai déjà 3 autres
trucs en retard dans le pipeline, j'arrète là :wink:

À+, Pif

>{définition de styles si on veut}|
> case A1 | case A2 | case A3 |
>{>2} case B12 || case B3 |
> case C1 |{v2} CD 2| case C3 |
> case D1 | | case D3 |

D'un côté c'est pénible d'avoir des '/' ou '\' pour faire des tableaux,
de l'autre, ton truc est pas super clean non plus.

En gors, je trouve pas de synatxe correcte pour l'instant qui justifier
de se palucher une contrib :wink:

Un "||" peut-être ?

En gors,

on écrit "gore" :wink:

Un "||" peut-être ?

  Il doit y avoir plein d'existant ou il y a des cases vides mais non
fusionnées, écrites comme ça. Bonjour la bascule.
  et pour les colonnes ?

  sinon, entre ||| et |>> c'est pareil nan ?
  donc, plutot que |{>3} on peut mettre |>>>, et |vvv à la place
de |{v3}
  c'est vrai que c'est plus parlant quelque part.

et puis on pourrait aussi justifier les cellules :

{-}case centrée ou justifiée |{<} case a gauche|{>}case a droite
{^}case vert le haut |{v} case vers le bas|{_}case centrée verticalement

et les 2 ensembles ca doit aussi etre possible :

{-^}case vert le haut, centrée horizontal |{<v} a gauche, vers le bas|{_}case centrée verticalement

pour le parseur :

si |{>{digit} -> c'est du colspan
si |{v{digit} -> c'est du rowspan

sinon, c'est de la justification

a creuser :wink:

l'intervenant initial souhaitait realiser des tables avec ou sans bordure visible
si j'ai bien compris et pas des truc hyper compliqués.

Ouias, autant taper du html, quoi.

et puis on pourrait aussi justifier les cellules :

>{-}case centrée ou justifiée |{<} case a gauche|{>}case a droite
>{^}case vert le haut |{v} case vers le bas|{_}case centrée verticalement

  why not, mais ça me parait brouillon d'utiliser le
symbole > pour dire droite et colspan
  de plus, là, on commence un peu à mélanger fond et forme. Ça serait
mieux de spécifier des styles, définis par ailleurs.

  donc, un truc du genre |>>>{toto} ... pour dire, colspan 3 et
style=toto

l'intervenant initial souhaitait realiser des tables avec ou sans bordure visible
si j'ai bien compris et pas des truc hyper compliqués.

il y avait 2 questions au départ :
- faire des col/rowspan.
- fixer un style à l'ensemble du tableau.

  là, on ajoute la possibilité de fixer un style à chaque cellule, ce
qui n'est peut être pas vital.
  pour ce qui est de centré/haut/bas/... peut-on fixer un style au
tableau et dire en css "la première ligne d'un tableau de style toto" ?
  en général, c'est ça le besoin : mettre différemment les premières
ou dernieres lignes/colonnes et différencier pair/impair.

À+, Pif.

nan a priori on peut pas
mais ce qui est faisable, c'est que spip mette automatiquement des
classes, comme 'pair' ou 'impair', + 'premier' et 'dernier' ?

ah ben je viens de regarder et c'est manifestement deja fait :wink:
Une note en passant... ca aurait peut-être du sens de mettre des <th> au
lieu de <td> pour la 1ere ligne des tableaux ?

Julien WAJSBERG wrote:

nan a priori on peut pas

pourtant, dans ma feuille de style j'ai ca, sans etre certain
que ca fonctionne, mais c'est la.

TABLE.spip TR.row_first {
  BACKGROUND-COLOR: #fcf4d0
}
TABLE.spip TR.row_odd {
  BACKGROUND-COLOR: #c0c0c0
}
TABLE.spip TR.row_even {
  BACKGROUND-COLOR: #f0f0f0
}

ouaip
c'est pourquoi je me suis repris un peu plus loin dans le mail :slight_smile: