OVH Cloud OVH Cloud

plier/déplier tableau

33 réponses
Avatar
Toto
Bonjour,

Je recherche un moyen de présenter un tableau (X lignes+ X colonnes) en
offrant la possibilité de plier/déplier certaines parties (lignes ou
colonnes) avec sous totaux à la manière du mode plan d'Excel.
Du coté serveur (PHP) je peux gérer. C'est du coté client que je recherche
une solution.
Merci.
Et bon WE.

10 réponses

1 2 3 4
Avatar
ASM
Sans compter qu'il est plus facile
de positionner une valeur à "none" ou "" que de rajouter ou supprimer
une classe à des éléments qui parfois en contiennent déjà, parfois non.
Possible oui. Sauf par exemple quand on a un élément inline (que tu ne

contrôles pas) avec un style.display = 'block', qu'on le cache puis
l'affiche et que ohh ohh, le layout a changé...


Il me semble que ça ne pourrait arriver que si tu positionnes le
display à 'block' en JavaScript et pas s'il est positionné en CSS.
Or je n'arrive pas à imaginer un seul cas dans lequel cela pourrait
être utile (par opposition à « tordu »). En outre, si vraiment tu
arrives à imaginer un tel cas, alors on peut supposer que tu saches
quelle valeur tu as mise. Et pour faire bonne mesure, il suffit
alors de le sauver au moment de le mettre à 'none' :

hide() {
if (this.style.display != 'none') {
this.saveDisplay = this.style.display;
this.style.display = 'none';
}
}

show() {
/* il faut peut-être verifier que this.saveDisplay est défini */
this.style.display = this.saveDisplay;
}

Je me trompe ?


Dans le même genre :

showHide(quoiId) {
quoiId = document.getElementById(quoiId);
var old = typeof(quoiId.saveDisplay)!='undefined'?
quoiId.saveDisplay : quoiId.style.display;
quoiId.style.display = quoiId.style.display==old? 'none' : old;
quoiId.saveDisplay = old;
}

ou :

showHide(quoiId) {
quoiId = document.getElementById(quoiId);
if(typeof(quoiId.saveDisplay)=='undefined')
quoiId.saveDisplay = quoiId.style.display;
quoiId.style.display = quoiId.style.display==quoiId.saveDisplay?
'none' : quoiId.saveDisplay;
}



--
Stephane Moriaux et son (moins) vieux Mac



Avatar
Isammoc
Et au pire, si on veut pas s'embêter avec [].indexOf, on peut toujours
passer par un truc plus générique : les Regexps

function hasCSS(elt, cName)
{
var r;
if ( !elt || !elt.className ) { return false; }
r = new RegExp("(^|s)" + cName + "(s|$)");
return r.test(elt.className);
}



pour la regexp, j'aurais plutot utiliser :
"b" + cName + "b"

Me trompe-je ?

--
Isammoc

Avatar
Cenekemoi
Bonjour,

Je recherche un moyen de présenter un tableau (X lignes+ X colonnes)
en offrant la possibilité de plier/déplier certaines parties (lignes
ou colonnes) avec sous totaux à la manière du mode plan d'Excel.
Du coté serveur (PHP) je peux gérer. C'est du coté client que je
recherche une solution.
Merci.
Et bon WE.


Je veux juste vous parler de mon expérience.

J'ai réalisé l'année dernière une grille (Javascript, Ajax,...)
permettant de gérer le plié/déplié en ligne et en colonne. Un peu du
type du produit DynamiCube mais, lui, fonctionne exclusivement avec un
ActiveX donc limité à IE.

Je ne peux fournir de source ou d'algo ici car je l'ai développé pour ma
boîte, mais je peux fournir quelques indications intéressantes :

* L'algo inclut une partie récursive qui fonctionne très bien avec
JavaScript
* Les premiers développements ont été basés sur le DOM avec un objet
Table etc...Les tests sous FF avec plusieurs milliers de cellules ont
été concluants ; par contre, IE met un temps considérable à gérer de
gros objets DOM.
* Les seconds essais ont été basés sur la construction d'une chaîne Html
contenant les balises <table>, <td>,... puis de la mettre simplement
dans un élément DIV par innerHTML. Sous FF, les temps sont du même ordre
que avec DOM ; par contre, avec IE et cette technique, les temps
deviennent comparables à ceux de FF.

Il est facile de faire des tests pour vérifier mes dires et ne pas se
lancer dans du DOM qui risque de ne pas convenir pour de gros volumes.
Enfin, à vous de voir...

Dernier truc pour les longues chaînes de caractères :

Au lieu de:

var s = "";
(boucle) {
s += contenu_inferieur_a_4K;
}
html = s;

Faire :

var t = [];
(boucle) {
t.push(contenu_inferieur_a_4K);
}
html = t.join('');

C'est beaucoup plus efficace pour les volumes importants !...

--
Cordialement, Thierry ;-)

Avatar
filh
Toto wrote:

Bonjour,

Je recherche un moyen de présenter un tableau (X lignes+ X colonnes) en
offrant la possibilité de plier/déplier certaines parties (lignes ou
colonnes) avec sous totaux à la manière du mode plan d'Excel.
Du coté serveur (PHP) je peux gérer. C'est du coté client que je recherche
une solution.


Sinon j'ai ça :

http://uuu.enseirb.fr/~goudal/Tables/

FiLH

--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org

Avatar
ASM

Sinon j'ai ça :

http://uuu.enseirb.fr/~goudal/Tables/


Ha oui ! Pas mal !

Mon Opera me garde un anglais quand je lui demande les français


--
Stephane Moriaux et son (moins) vieux Mac

Avatar
filh
ASM wrote:


Sinon j'ai ça :

http://uuu.enseirb.fr/~goudal/Tables/


Ha oui ! Pas mal !

Mon Opera me garde un anglais quand je lui demande les français


Hum... amusant.
Comme le truc a été développé pour de l'interne (il y a même du code
inutilisé dans le js :)) je n'ai testé que sur nos navigateurs : IE,
Safari, Firefox.

Faut voir...

FiLH
--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org


Avatar
filh
FiLH wrote:

ASM wrote:


Sinon j'ai ça :

http://uuu.enseirb.fr/~goudal/Tables/


Ha oui ! Pas mal !

Mon Opera me garde un anglais quand je lui demande les français


Hum... amusant.
Comme le truc a été développé pour de l'interne (il y a même du code
inutilisé dans le js :)) je n'ai testé que sur nos navigateurs : IE,
Safari, Firefox.

Faut voir...


Ça marche bien sur l'opéra que je viens de télécharger...

Mac OSX.

FiLH

--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org



Avatar
ASM
ASM wrote:

Mon Opera me garde un anglais quand je lui demande les français


Hum... amusant.
Comme le truc a été développé pour de l'interne (il y a même du code
inutilisé dans le js :)) je n'ai testé que sur nos navigateurs : IE,
Safari, Firefox.

Faut voir...


Ben ... c'est tout vu : marche pô avec mon IE (Mac)


--
Stephane Moriaux et son (moins) vieux Mac


Avatar
ASM
FiLH wrote:

Ça marche bien sur l'opéra que je viens de télécharger...

Mac OSX.


Opera 9.0.0 MacOS 10.4.3

Mais comme de ttes façon je ne me sers d'Opera que pour voir à voir ...
ce n'est donc que pour info.
En fait il me garde Smith continuellement après la rangée inamovible.

Ha !? je viens de trier par nom : c'est Strondh qui est passé en queue
(après l'inamovible)
Bon ... FF me fait pareil, ça doit être normal ?


--
Stephane Moriaux et son (moins) vieux Mac

Avatar
filh
ASM wrote:

FiLH wrote:

Ça marche bien sur l'opéra que je viens de télécharger...

Mac OSX.


Opera 9.0.0 MacOS 10.4.3

Mais comme de ttes façon je ne me sers d'Opera que pour voir à voir ...
ce n'est donc que pour info.
En fait il me garde Smith continuellement après la rangée inamovible.


Et bien je n'en sais rien, cela marche parfaitement chez moi.


Ha !? je viens de trier par nom : c'est Strondh qui est passé en queue
(après l'inamovible)
Bon ... FF me fait pareil, ça doit être normal ?


Je n'en sais rien, j'ai un peu de mal à savoir sur quo tu cliques ni si
c'est normal ou pas...

Quant à IE mac le tableau n'est pas transformé, mais bon IE mac...
J'avoue que je m'en tappes un peu :)

FiLH

--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org


1 2 3 4