Avatar billede mcclaud Nybegynder
24. april 2012 - 22:31 Der er 12 kommentarer og
1 løsning

sortering i tabel

Hej alle eksperter

Jeg har for noget tid siden fået lavet et herligt javascript, som udtrækker data fra en xml-fil, og viser det i en tabel på en htm-side.

Jeg kunne rigtig godt tænke mig, at scriptet bliver tilpasset/udvidet, så det er muligt at sortere i tabellen, når siden vises på internettet.

HTM-fil: http://www.halfmen.dk/2011/statistik.htm

Det skal være muligt at lave 4 sorteringer:

1. Sortering på kolonnen 'Kampe' (fra stor til lille). I tilfælde af ens værdi sorteres herefter på 'Navn' (fra A-Å).

2. Sortering på kolonnen 'Mål' (fra stor til lille). I tilfælde af ens værdi sorteres herefter på 'Assists' (fra stor til lille). I tilfælde af ens værdi på både 'Mål' og 'Assists' sorteres herefter på 'Navn'(fra A-Å).

3. Sortering på kolonnen 'Røde Kort' (fra stor til lille). I tilfælde af ens værdi sorteres herefter på 'Gule Kort' (fra stor til lille). I tilfælde af ens værdi af både 'Røde Kort' og 'Gule Kort' sorteres herefter på 'Navn'(fra A-Å).

4. Sortering på kolonnen 'Stemmer' (fra stor til lille). I tilfælde af ens værdi sorteres herefter på 'Navn' (fra A-Å).

Når man klikker ind på siden, skal den som standard kun være sorteret efter kolonnen 'Navn' (som den er nu).

Jeg ønsker, at sorteringen kan foretages fra fire små knapper, som er placeret netop oven over de implicerede kolonner.

Pyha, jeg håber, at alt dette kan lade sig gøre?

:o) mcclaud
Avatar billede vagnk Juniormester
25. april 2012 - 07:16 #1
Teknikken med at kunne sortere på kolonner er relativt enkel. Man sætter et <A> tag på de kolonner der må/kan sorteres lidt i retning af
<a href='statistik.htm?skift=1&sort=kampe&retn=ASC'>Kampe</a>
Altså en henvisning til statistik.htm med GET-argumenterne skift, sort og retn. Disse args behandles så i begyndelsen af siden og de felter der skal sorteres bliver sat til brug længere nede i koden.

Jeg plejer at lave det sådan at retningen A-Å eller Å-A kan flip-floppes stigende eller faldende, derfor "retn=ASC" eller "retn=DESC".
Avatar billede olsensweb.dk Ekspert
25. april 2012 - 08:36 #2
nu er det jo tabulære data, som du har lagt i en tabel, hvilke tabulære data er beregnet til så
jeg ville google js tabel sort
kig på
http://www.kryogenix.org/code/browser/sorttable/
http://tablesorter.com/docs/ (kræver jquery)
Avatar billede olsensweb.dk Ekspert
25. april 2012 - 10:04 #3
hvis du vil have alternerende farver
http://yoast.com/articles/sortable-table/
et hurtigt omskrivning af deres eks til dit
demo http://experten.olsensweb.dk/961839/
pakked http://experten.olsensweb.dk/961839/tmp.zip
Avatar billede mcclaud Nybegynder
25. april 2012 - 17:12 #4
Hej ronols

Tak for dit tilpassede script. Jeg har nu uploadet en test-version på min hjemmeside:

http://www.halfmen.dk/test/statistik-test.htm

Jeg har helt fjernet pilene, så kun overskrifterne er klikbare, dog kunne jeg godt tænke mig nogle forandringer, som jeg håber, at du evt. kan hjælpe med:  :o)

1. De nederste to rækker (skrevet i gråt) skal ikke sorteres med. De skal altid være placeret nederst. Jeg ved ikke, om dette er muligt?

2. Når man laver sin sortering skifter den hvide og den grå baggrundsfarve i tabellen plads. Jeg ønsker, at dette ikke ændres, så den øverste række under overskrifterne altid er grå, den næste hvid osv.

3. Er det muligt, at første klik på en overskrift kan resultere i en sortering fra stor til lille, andet klik omvendt osv. Lige resulterer første klik i en sortering fra lille til stor?

4. Er det muligt at sortere tabellen på en sådan måde, at spillerne står i alfabetisk orden i tilfælde af ens værdier i sorteringen?

På forhånd mange tak...

:o) mcclaud
Avatar billede olsensweb.dk Ekspert
25. april 2012 - 18:42 #5
det hurtige svar er tilføj sortbottom til de 2 rækker
if (sTeam=="øvrige spillere") {
    elmRow.className = bOdd ? "marking odd" : "marking";
}
else if (sTeam=="modstander") {
    elmRow.className = bOdd ? "marking odd" : "marking";
}


rettes til
if (sTeam=="øvrige spillere") {
    elmRow.className = bOdd ? "sortbottom marking odd" : "sortbottom marking";
}
else if (sTeam=="modstander") {
    elmRow.className = bOdd ? "sortbottom marking odd" : "sortbottom marking";
}



de to nederste linjer bliver så låst i bunden, men de bytter så stadig plads :(
jeg tænker på om man skulle kigge på <tfooter> om man kunne ligge en af de 2 linjer ned i footeren, men de kræver dybere indsigt i scriptet
Avatar billede olsensweb.dk Ekspert
25. april 2012 - 19:42 #6
min ide med <tfoot> var ikke helt hen i vejret :), jeg har indført <tfoot> og omskrevet olebole's scriptet lidt, demo i #3 opdateret
der er stadig lidt forbedringer der skla laves :)

og slap jeg af med sortbottom classen
Avatar billede mcclaud Nybegynder
26. april 2012 - 12:27 #7
Hej ronols

Det ser rigtig spændende ud indtil videre...

:o) mcclaud
Avatar billede olsensweb.dk Ekspert
26. april 2012 - 13:15 #8
prøv at implamenterer det som det er nu, og kom evt med forbedringer, jeg bruger nu dine CSS'er, og jeg har rettet i sortable.js, så den ikke henter pile img fra deres server

rettelse i sortable.js
fra
var image_path = "http://www.joostdevalk.nl/code/sortable-table/";

til
var image_path = "";

hvilke bevirker at pile img ligger i sammen folder som js filen

alle filer fra #3 er rettet

>sortering skifter den hvide og den grå baggrundsfarve i tabellen plads
gjorde min vertion det før ?, igivet fald gør den det ikke mere
Avatar billede mcclaud Nybegynder
26. april 2012 - 22:37 #9
Hej ronols

Så har jeg uploadet siden påny, og det ser rigtigt fint ud:

http://www.halfmen.dk/test/statistik-test.htm

Der er nogle småting, som jeg godt kunne tænke mig blev forbedret en lille smule, hvis det er muligt:

A. Jeg kunne godt tænke mig, at der, når man hopper ind på siden, er en lille pil, som peger opad til højre for titlen 'SPILLER', så man straks bliver klar over, at det er muligt at sortere tabellen, og at den som udgangspunkt er sorteret efter 'SPILLER' fra A-Å.

B. Jeg kunne godt tænke mig, at det første klik på en overskrift udløser en sortering, som går fra stor til lille (altså den største værdi først). Folk vil f.eks. helst se spilleren, som har scoret flest mål øverst, og det gælder ligeledes de andre kolonner. Ved næste klik på samme overskrift ændrer sorteringen sig så til det modsatte - altså fra lille til stor.

C. Jeg kunne godt tænke mig, at den første række - lige under overskrifts-rækken - er grå. Rækken derefter må så meget gerne være hvid. Altså lige modsat af, hvad det er nu.

D. Hvis det er nogenlunde enkelt, kunne jeg godt tænke mig, at ens værdier i sorteringen udløser en undersortering, som gælder spillerens navn. Altså hvis to spillere f.eks. har spillet lige mange kampe, f.eks. Michael K. Jensen og Claus Madsen, som hver spillede 10 kampe den sæson. Her ønskes det, at Claus står placeret først efterfulgt af Michael - i alfabetisk orden.

Dette sidste punkt (D) er dog det mindst vigtige. De første tre (A, B og C) er de vigtige...

Fedt at det kunne lade sig gøre, at de nederste to rækker ikke bliver sorteret med.  :o)

:o) mcclaud
Avatar billede olsensweb.dk Ekspert
27. april 2012 - 13:58 #10
re B.  det kan ikke lade sig gøre :(
http://www.kryogenix.org/code/browser/sorttable/#sortonload

et alternativ er at bruge den fra juery, der er pilene er på fra starten, og man kan selv bestemme start rækkefølgen
bruger den selv her http://olsensweb.dk/myownapps/datetime/holiday/holiday.php


re C.
byt om på farverne for odd og even i CSS
dette laves
.odd {
    background-color: #f2f2f2;
}

om til
.odd {
    background-color: #ffffff;
}
.even{ // tilføjet
background-color: #f2f2f2;
}

og i js
elmRow.className = bOdd ? "even" : "odd";
   
if(sTeam==="øvrige spillere" || sTeam==="modstander"){
    elmRow.className = bOdd ? "marking even" : "marking odd";
    elmFooter.appendChild(elmRow);
}
else{
    elmDispl.appendChild(elmRow);
}


demo http://experten.olsensweb.dk/961839/ver0/
komple source http://experten.olsensweb.dk/961839/ver0/tmp.zip

med jquery
demo http://experten.olsensweb.dk/961839/jq/
source http://experten.olsensweb.dk/961839/jq/tmp.zip
Avatar billede mcclaud Nybegynder
28. april 2012 - 14:23 #11
Hej ronols

Jeg siger mange tak for hjælpen. Sorteringsfunktionen er nu implementeret på hjemmesiden, og det virker rigtig fint.

http://www.halfmen.dk/2012/statistik.htm

Smid et svar, så kommer pointene.

:o) mcclaud
Avatar billede olsensweb.dk Ekspert
28. april 2012 - 14:42 #12
får du her
Avatar billede mcclaud Nybegynder
28. april 2012 - 14:47 #13
Perfekt. Ha' en rigtig go' weekend...  :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester