Accueil > Forum > > > > Tri à bulles d'un tableau HTML
Tri à bulles d'un tableau HTML
mercredi 15 juillet 2009 à 18:13:41 |
Tri à bulles d'un tableau HTML

Airman31
|
Tout d'abord bonjour à tous,
J'ai besoin d'un petit coup de main pour une fonction Javascript que je suis en train d'implémenter : tri à bulle sur un tableau HTML (comme dans le titre ^^)
Comment ça marche :
Un tableau HTML "simple" est affiché et, lorsque l'utilisateur clique sur une des entêtes de colonnes, l'intégralité du tableau est trié en fonction des données contenues dans cette colonne. L'idée finale étant de mettre en place un systême de datagrid.
Mon code-source est à l'heure actuelle fonctionnel mais je pense qu'il est possible de faire beaucoup mieux au niveau de l'optimisation.
En effet, effectuer ce tri à bulles sur un tableau 36(colonnes)*50(lignes) engendre un temps de traitement d'environ 2,6sec . Sachant que la version finale se devra de gérer plusieurs centaines de lignes, je pense que je dois trouver un bon moyen de réduire ce timing et c'est donc là que je sollicite votre aide .
Maintenant que l'introduction est effectuée passons aux choses sérieuses : le code source !
Donc en premier le code HTML à l'origine de l'événement :
Code HTML :
<table class="sortable">
<thead>
<tr>
<th onclick="tribulle(this,0,int,'ASC')">id</th>
<th onclick="tribulle(this,1,int,'ASC')">FK_entities</th>
<th onclick="tribulle(this,2,int,'ASC')">name</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>12</td>
<td>blabla</td>
</tr>
.
.
.
<tr>
<td>2</td>
<td>584</td>
<td>blabla</td>
</tr>
</tbody>
</table>
Enfin le code Javascript :
Code Javascript :
//fonction de tri à bulle
function tribulle(entitie,column,type,sens)
{
Debut = new Date();
// on recupere la reference au tableau passe en parametre (entitie)
var tableRef = entitie;
y=0;
while(tableRef.nodeName!="TABLE" && y<5)
{
tableRef=tableRef.parentNode;
y++;
}
//nombre de lignes du tableau
var nbl = tableRef.rows.length;
//instanciation de la variable de test sur l'ordonnancement
var en_desordre=true;
//tant que le tableau est desordonne
while(en_desordre)
{
en_desordre = false;
//on boucle sur els elements (lignes) du tableau
for(i=1;i<nbl-1;i++)
{
var val1 = tableRef.rows[i].cells[column].innerHTML;
var val2 = tableRef.rows[i+1].cells[column].innerHTML;
//parse les donnes en fonctions du parametre "type"
if(type=='int' || type=='integer'|| type=='tinyint' || type=='smallint' || type=='medint' || type=='bigint')
{val1=parseInt(val1);val2=parseInt(val2);}
else
if (type=='float' || type=='double' || type=='real' || type=='decimal' || type=='numeric')
{val1=parseFloat(val1);val2=parseFloat(val2);}
//si 2 lignes sont en desordre
if(val1 > val2)
{
//on clone la ligne suivant avant la ligne courante
clone(tableRef,tableRef.rows[i+1],i);
//on incremente le curseur a cause de l'injection de la nouvelle ligne
i++;
//on supprime la ligne qui a ete dupliquee
tableRef.deleteRow(i+1);
//le tableau est considere en desordre
en_desordre = true;
}
}
}
Fin = new Date();
alert((Fin-Debut)+ " ms d'execution javascript");
}
function clone(table,rows,index)
{
var len = rows.cells.length;
var newRow = table.insertRow(index);
for(y=0;y<len;y++)
{
var newCell = newRow.insertCell(y);
newCell.innerHTML = rows.cells[y].innerHTML;
}
}
Je suis preneur de tous conseils ou exemples mais sachez que je ne suis pas un pro du Javascript donc je vous demanderai juste de commenter ou expliquer vos post.
Je vous remercie à tous d'avance pour votre aide.
|
|
mercredi 15 juillet 2009 à 18:39:05 |
Re : Tri à bulles d'un tableau HTML
|
jeudi 16 juillet 2009 à 09:59:09 |
Re : Tri à bulles d'un tableau HTML

Airman31
|
Je viens de mettre en place et de tester ton code.
A part un petit soucis d'adapation des types, il fonctionne très bien ^^.
Je passe de 2,6sec à 320ms (90% de gain de temps) ce qui est plûtot honorable .
ça va bien m'aider dans mon projet.
En esperant pouvoir te renvoyer l'ascenceur un jour, je te remercie pour tout.
|
|
jeudi 16 juillet 2009 à 10:13:19 |
Re : Tri à bulles d'un tableau HTML
|
Cette discussion est classée dans : code, tableau, tri, html, color
Répondre à ce message
Sujets en rapport avec ce message
Tri de colonnes d'un tableau html grâce à un js [ par ebenedzer ]
SalutJe n'arrive pas à trouver comment je peux trier les colonnes d'un tableau fait en html, à l'aide d'un javascript.Est-ce que je dois mettre des ba
Trier dynamiquement un tableau HTML (à l'aide de XML, XSL, Javascript) [ par edevouge ]
Bonjour, Dans le cadre d'un stage, j'ai besoins de créer un tableau html à partir d'un fichier XML et d'un fichier XSL. Et grâce au JavaScript, je v
tableau dynamique avec jquery [ par mdh12 ]
salut, je veux savoir est ce que c'est possible de créer un tableau dynamique avec jquery en html si on fait appel à ce tableau [code=html][code=htm
Un ^peu d`aide si possible [ par SamJC ]
Bonjour, j'avais besoin de laide en JS donc je me suis inscrit a ce site, si c'est possible sa serait apprecier Donc, comme exercice pour une classe c
Problème faux popus [ par TheWav ]
Bonjour, J'ai essayé le code suivant: http://www.javascriptfr.com/codes/SYSTEME-FAUSSES-BELLES-POPUP-JS-HTML_15986.aspx et j'ai rencontré un problème
[HTML - JS. . .] Recherche sur le site [ par HACKANDROID ]
[size=200][color=gray]Bonjour, J'ai une question : Comment crée un option de recherche en ajax ou normal (Page de résultat)... Voila quelque chose
javascript et php [ par anthony428 ]
Bonjour à tous, je me suis mis à javascript depuis peu et d'habitude, je code plutôt en php mais il faut dire que les fonctions javascript offrent un
Fermer Iframe [ par midoxe ]
Bonjour les amis, je suis vraiment bloqué à cause de se problème...[^^sad1] dans une [color=blue]page1.html[/color] j'ai une image(loupe)..dès que j
Les boites de texte avec CSS [ par RoMz34 ]
Bonjour, Il y à quelques jours, je me suis lancer dans le design d'un site web, et maintenant, j'aimerais le coder ;). J'ai donc suivit quelques tuto
Probleme Rafraîchissement tableau master détails [ par aymen8219 ]
bonjour, je suis entrain de développer un interface pour la consultation des action en bourse. je viens de créer deux tableau master détails en Jquer
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|