20090627 sábado junio 27, 2009

El definitivo script para ordenar una tabla html con javascript (1/2)

Posiblemente el script más necesitado y buscado, entre aquellos que tenemos que pelearnos con las interfaces en Html, sea el que permite ordenar las columnas de una tabla html.

Las leyes del mercado sugieren que dada una cantidad de necesidades existentes surjan un número proporcional de ofertas, así que maneras de resolver esto las hay hasta aburrirse. Como en otros ámbitos del software, hay dos 'principios universales' que no se cumplen en relación a esta desorbitada oferta de soluciones, el Principio de Pareto (o de 80-20) y el de Distribución Normal (Distribución de Gauss), que se debe de llamar normal porque es lo que normalmente debería de ocurrir.

Pues no, no existe al menos un 20% de código que cumpla los mínimos exigibles. Es más, yo no he encontrado ninguno.


Si eliminamos los frameworks y librerías javascript (que también hay hasta aburrir) como Prototype, Dojo, Mootools, etc..., cuyo uso ciertamente es lo más recomendable, y nos centramos en los scripts 'a pelo', estos son los mínimos exigibles:

  1. Poco peso, poca consumo de memoria y poco coste de CPU, osease que tengan una "huella" pequeña.
  2. Javascript no intrusivo. Estar programado con objetos y técnicas avanzadas. Crossbrowser sin excesivas chapuzas. Sin efectos colaterales ni conflictos con otro código.
  3. Tuneable por CSS, accesible, fácilmente integrable en el html y que respete la semántica. Con posibilidad de controlar varias tablas en la misma página sin colisiones.
  4. Paginable, o al menos con scroll, con la cabecera de las columnas siempre fijas.
  5. Licencia de fuentes abiertas (BSD, GPL, Creative Commons derivable, ...).
  6. Print friendly: Que se permita imprimir todos los datos, paginarse correctamente y con las cabeceras al inicio de cada página.

 

Pues bien, finalmente lo más parecido que he encontrado a esto es la "TinyTable JavaScript Table Sorter – 2.5KB" del genial Michael Leigeber, que en apenas 2.5KB (condensado) cumple con casi todos los requisitos, salvo el último, no es Print friendly :(. La demo puede verse desde la web del autor.

Pero dada la elegancia, limpieza y sutileza del código, me ha apetecido colaborar en la mejora (o empeoramiento según se mire) y en la próxima parte del este post, lo tunearemos lo más levemente posible para que al darle al "Vista preliminar" del navegador, o al imprimir, haga lo que se supone que debe de hacer.

Es una lástima que para ello tengamos que enturbiar tan soberbio script..


Posted by Feliciano Borrego in Java at 20090627 Comentarios[1]

Comentarios:

Muy interesante, gracias por la información. Yo encontré otro por Internet, no recuerdo ni donde y no tenia ni licencia, pero no hacía tantas cosas. Me lo apunto.

Si consigues hacerlo imprimible, seguro que el autor agradece que le mandes la mejora ;)

S!

Enviado por GreenEyed en junio 27, 2009 a las 10:22 AM CEST #

Enviar un comentario:
Los comentarios han sido deshabilitados.