<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=JQuery%3A_Tablesorter</id>
	<title>JQuery: Tablesorter - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=JQuery%3A_Tablesorter"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=JQuery:_Tablesorter&amp;action=history"/>
	<updated>2026-08-30T10:07:38Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=JQuery:_Tablesorter&amp;diff=259172&amp;oldid=prev</id>
		<title>Joan: /* Llista de municipis, curs 19-20 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=JQuery:_Tablesorter&amp;diff=259172&amp;oldid=prev"/>
		<updated>2020-04-06T16:46:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Llista de municipis, curs 19-20&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
Requeriments: Veure la teoria de JQuery: a la wiki i en un tutorial com ara w3schools:&lt;br /&gt;
*http://wiki.joanillo.org/index.php/JQuery_Framework._Teoria&lt;br /&gt;
*https://www.w3schools.com/jquery/&lt;br /&gt;
&lt;br /&gt;
'''NOTA''': per al curs 18-19 és possible fer aquesta mateixa pràctica amb la llibreria datatables (que no és JQuery):&lt;br /&gt;
*https://www.datatables.net/&lt;br /&gt;
&lt;br /&gt;
'''Tablesorter''' és un plugin de '''jQuery''' que converteix una taula HTML estàndard amb tags ''THEAD'' i ''TBODY'' en una taula que es pot ordenar per columnes, sense haver de refrescar la pàgina. '''tablesorter''' pot parsejar i ordenar de manera satisfactòria molts tipus de dades contingudes en les cel.les. Té moltes característiques com per exemple:&lt;br /&gt;
&lt;br /&gt;
*ordenació multi-columna&lt;br /&gt;
*parsers per ordenar text, URIs, enterns, monedes, floats, direccions IP, dates (ISO, long and short formats), time&lt;br /&gt;
*Support secondary &amp;quot;hidden&amp;quot; sorting (e.g., maintain alphabetical sort when sorting on other criteria)&lt;br /&gt;
*Extensibility via widget system&lt;br /&gt;
*Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+&lt;br /&gt;
*Small code size&lt;br /&gt;
&lt;br /&gt;
=Referències=&lt;br /&gt;
Curs 19-20:&lt;br /&gt;
*https://mottie.github.io/tablesorter/docs/index.html&lt;br /&gt;
En aquesta pàgina de documentació veiem que la versió actual és la 2.31.3. Allà on indica la versió tenim l'enllaç per tal de descarregar la llibreria.&lt;br /&gt;
&lt;br /&gt;
Un cop descarregat, pots provar tots els exemples que estan dins de ''docs/'', doncs aquests exercicis ja tenen les rutes correctes a la llibreria ''tablesorter'' i ''jquery''. (La llibreria jquery no cal descarregar-la, doncs inclou el fitxer ''docs/js/jquery-latest.min'').&lt;br /&gt;
&lt;br /&gt;
El primer que has de fer és provar algun dels exemples dins de ''docs/'', i veure quina és l'estructura de directoris on es va a buscar les llibreries i els CSS. Quan hagis de fer el teu exercici pots programar-lo dins de docs/. Però si vols utilitzar un altre directori, hauràs d'accedir correctament a les llibreries.&lt;br /&gt;
&lt;br /&gt;
===NOTA: No funciona? (17-18)===&lt;br /&gt;
El més pràctic &lt;br /&gt;
Alguns dels exemples de la carpeta ''tests/'' no funcionen. Per fer-los funcionar, recordar que s'ha de posar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class=&amp;quot;tablesorter&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
dins de la taula, i que la manera de referenciar el full d'estils és (en comptes de posar @import):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;../themes/blue/style.css&amp;quot; type=&amp;quot;text/css&amp;quot; id=&amp;quot;&amp;quot; media=&amp;quot;print, projection, screen&amp;quot; /&amp;gt;	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sembla ser que hi ha una incoherència entre els exemples dins la carpeta ''tests/'' i la versió que has descarregat del '''tablesorter'''. Però al final, ha d'acabar funcionant.&lt;br /&gt;
&lt;br /&gt;
=Desenvolupament=&lt;br /&gt;
==Feina per l'alumne==&lt;br /&gt;
A classe s'ha vist algun exemple extret de la web de tablesorter.com, s'ha mirat la documentació, i s'ha justificat la necessitat de tenir taules ordenables, i com gràcies a jQuery aquesta tasca pot esdevenir molt fàcil i amb poques línies de codi.&lt;br /&gt;
&lt;br /&gt;
L'alumne ha d'implementar una taula HTML a partir de dades reals (per exemple pots extreure dades del Institut Nacional d'Estadística, http://www.ine.es/ o de l'Institut Català d'Estadística, http://www.idescat.cat), i fer que les columnes siguin ordenables. Quan diem dades reals el professor vol dir taules que continguin centenars o milers de dades.&lt;br /&gt;
&lt;br /&gt;
Exemple: noms dels nadons de Catalunya:&lt;br /&gt;
*http://www.idescat.cat/nadons/&lt;br /&gt;
&lt;br /&gt;
També pots utiltizar el servei:&lt;br /&gt;
*https://jsonplaceholder.typicode.com/&lt;br /&gt;
que ens proporciona dades aleatòries en format JSON.&lt;br /&gt;
&lt;br /&gt;
==Servei Web del IDESCAT==&lt;br /&gt;
El IDESCAT ens permet accedir a les dades mitjançant una API. Anem a: ''http://www.idescat.cat/ &amp;gt; Serveis &amp;gt; API'':&lt;br /&gt;
*http://www.idescat.cat/dev/api/&lt;br /&gt;
&lt;br /&gt;
Disposem d'una documentació abundant, clara i precisa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Resum:&lt;br /&gt;
*URI base: 	http://api.idescat.cat/{servei}/v{versió principal}/{operació}.{format}[?paràmetres]&lt;br /&gt;
*Mètode: HTTP 	GET&lt;br /&gt;
*Formats de la resposta: 	xml, json, php&lt;br /&gt;
*Versió: 	1.00 (14.12.2009)&lt;br /&gt;
*Dreceres: 	Petició, Resposta&lt;br /&gt;
&lt;br /&gt;
Tenim diferents APIs disponibles, per ex, ''cerca de població'': ''pob''&lt;br /&gt;
*http://www.idescat.cat/dev/api/pob/&lt;br /&gt;
&lt;br /&gt;
Diversos exemples:&lt;br /&gt;
&lt;br /&gt;
Ex. 1: Llista d'entitats territorials que comencen amb &amp;quot;ab&amp;quot;, separades per salts de línia&lt;br /&gt;
*http://api.idescat.cat/pob/v1/sug.txt?p=q/ab&lt;br /&gt;
&lt;br /&gt;
Ex. 2: Llista de municipis i nuclis de població que comencen amb &amp;quot;ca&amp;quot;, en format json&lt;br /&gt;
*http://api.idescat.cat/pob/v1/sug.json?p=q/ca;tipus/mun,npbp&lt;br /&gt;
&lt;br /&gt;
Ex. 3: Població de totes les comarques de Catalunya, en format XML&lt;br /&gt;
*http://api.idescat.cat/pob/v1/cerca.xml?p=tipus/com&lt;br /&gt;
i en format JSON:&lt;br /&gt;
*http://api.idescat.cat/pob/v1/cerca.json?p=tipus/com&lt;br /&gt;
&lt;br /&gt;
Ex4: noms de persones que comencen per 'a':&lt;br /&gt;
*http://api.idescat.cat/onomastica/v1/noms/sug.txt?q=a&lt;br /&gt;
*http://api.idescat.cat/onomastica/v1/noms/sug.json?q=a&lt;br /&gt;
&lt;br /&gt;
Ex5: llista de tots els municipis de Catalunya, en format JSON:&lt;br /&gt;
*http://api.idescat.cat/emex/v1/dades.json?tipus=mun&lt;br /&gt;
==Llista de municipis, curs 19-20==&lt;br /&gt;
Respecte del curs anterior, a l'hora d'accedir a l'API de IDESCAT hem tingut problemes amb el CORS. Per resoldre-ho, hem mirat a:&lt;br /&gt;
*https://stackoverflow.com/questions/5750696/how-to-get-a-cross-origin-resource-sharing-cors-post-request-working&lt;br /&gt;
I la solució més senzilla que funciona és (està cap al final del post):&lt;br /&gt;
&lt;br /&gt;
script '''llista_municipis_v0.html''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Javascript Test&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;http://code.jquery.com/jquery-latest.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
        $(document).ready(function () {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    xhrFields: {cors: false},&lt;br /&gt;
                    type: &amp;quot;GET&amp;quot;,&lt;br /&gt;
                    url: &amp;quot;http://api.idescat.cat/emex/v1/dades.json?tipus=mun&amp;quot;,&lt;br /&gt;
                    success: function (data) {&lt;br /&gt;
                    alert(&amp;quot;Núm municipis: &amp;quot; + data.fitxes.cols.col.length);&lt;br /&gt;
                },&lt;br /&gt;
                error: function (x, y, z) {&lt;br /&gt;
                    alert(x.responseText + &amp;quot; :EEE: &amp;quot; + x.status);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    &amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abans de fer el '''tablesorter''', podem mostrar els municipis en una llista html, omplint una llista amb JQuery:&lt;br /&gt;
&lt;br /&gt;
script '''llista_municipis_v1.html''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Llista municipis&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;http://code.jquery.com/jquery-latest.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
        $(document).ready(function () {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    xhrFields: {cors: false},&lt;br /&gt;
                    type: &amp;quot;GET&amp;quot;,&lt;br /&gt;
                    url: &amp;quot;http://api.idescat.cat/emex/v1/dades.json?tipus=mun&amp;quot;,&lt;br /&gt;
                    success: function (data) {&lt;br /&gt;
                    //alert(&amp;quot;Núm municipis: &amp;quot; + data.fitxes.cols.col.length);&lt;br /&gt;
                    var info = data.fitxes.cols.col;&lt;br /&gt;
                    $.each(info, function(i,field) {&lt;br /&gt;
                        $(&amp;quot;#municipis&amp;quot;).append(&amp;quot;&amp;lt;li&amp;gt;&amp;quot; + field.id+&amp;quot; - &amp;quot; + field.content + &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;);&lt;br /&gt;
                    });&lt;br /&gt;
                },&lt;br /&gt;
                error: function (x, y, z) {&lt;br /&gt;
                    alert(x.responseText + &amp;quot; :EEE: &amp;quot; + x.status);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    &amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Llista de municipis, v1&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
    &amp;lt;ul id=&amp;quot;municipis&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I finalment, ara ja podeu integrar un dels codis tablesorter que us han funcionat amb les vostres dades dels municipis. Per exemple, el professor ha fet servir el codi de ''docs/index.html'' (però he tingut un problema: cursiosament la referència ''docs/js/jquery-1.2.6.min.js'' no funciona; i en canvi ''docs/js/jquery-latest.min.js'' sí que m'ha funcionat).&lt;br /&gt;
&lt;br /&gt;
script '''llista_municipis_v2.html''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Llista municipis&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Demo styling --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;./docs/css/jq.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- jQuery: required (tablesorter works with jQuery 1.2.3+) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;./docs/js/jquery-latest.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Pick a theme, load the plugin &amp;amp; initialize plugin --&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;./dist/css/theme.default.min.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;./dist/js/jquery.tablesorter.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;./dist/js/jquery.tablesorter.widgets.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
        $(document).ready(function () {&lt;br /&gt;
                $.ajax({&lt;br /&gt;
                    xhrFields: {cors: false},&lt;br /&gt;
                    type: &amp;quot;GET&amp;quot;,&lt;br /&gt;
                    url: &amp;quot;http://api.idescat.cat/emex/v1/dades.json?tipus=mun&amp;quot;,&lt;br /&gt;
                    success: function (data) {&lt;br /&gt;
                    //alert(&amp;quot;Núm municipis: &amp;quot; + data.fitxes.cols.col.length);&lt;br /&gt;
                    var info = data.fitxes.cols.col;&lt;br /&gt;
                    //$.each(info, function(i,field) {&lt;br /&gt;
                    //    $(&amp;quot;#municipis&amp;quot;).append(&amp;quot;&amp;lt;li&amp;gt;&amp;quot; + field.id+&amp;quot; - &amp;quot; + field.content + &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;);&lt;br /&gt;
                    //});&lt;br /&gt;
                    $.each(info, function(i,field) {&lt;br /&gt;
                        $('table').tablesorter({&lt;br /&gt;
                            widgets        : ['zebra', 'columns'],&lt;br /&gt;
                            usNumberFormat : false,&lt;br /&gt;
                            sortReset      : true,&lt;br /&gt;
                            sortRestart    : true&lt;br /&gt;
                        });&lt;br /&gt;
                        $(&amp;quot;tbody&amp;quot;).append(&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;+field.id+&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;+field.content+&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;);&lt;br /&gt;
                        //o bé:&lt;br /&gt;
                        //row = '&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;' + field.id + '&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;' + field.content + '&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;';&lt;br /&gt;
                        //$(&amp;quot;table/tbody:first&amp;quot;).append(row);&lt;br /&gt;
                    });&lt;br /&gt;
                    //important!:&lt;br /&gt;
                    $(&amp;quot;table&amp;quot;).trigger('update');&lt;br /&gt;
                },&lt;br /&gt;
                error: function (x, y, z) {&lt;br /&gt;
                    alert(x.responseText + &amp;quot; :EEE: &amp;quot; + x.status);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    &amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Llista de municipis, v2&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
    &amp;lt;ul id=&amp;quot;municipis&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;0&amp;quot; class=&amp;quot;tablesorter&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;thead&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Municipi&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/thead&amp;gt;&lt;br /&gt;
    &amp;lt;tbody&amp;gt;&lt;br /&gt;
    &amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'alumne, a part de l'exercici dels municipis, hauríeu de cercar alguna altra font de dades del IDESCAT.&lt;br /&gt;
&lt;br /&gt;
=Entrega=&lt;br /&gt;
Els alumnes entregaran al Schoology tots els fitxers generats (fitxers html). Entrega també una captura de la pantalla on es pugui veure el funcionament correcte de l'exercici. S'empaquetaran tots aquests fitxers i es pujaran al Schoology dins del termini d'entrega de la pràctica.&lt;br /&gt;
&lt;br /&gt;
Recorda la '''normativa''' per entregar les pràctiques al Schoology: [[ASIX-M10-UF2#Normativa_d.27entrega_de_les_pr.C3.A0ctiques_al_Schoology]]&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, abril 2018&lt;br /&gt;
[[Categoria: INS Jaume Balmes]]&lt;br /&gt;
[[Categoria: Assignatura DAW-M06-WEC]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>