[html(5) & jquery] Table sorteren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Craven
  • Registratie: Februari 2007
  • Laatst online: 13:43
FYI, i'm an idiot als het op html en jquery aankomt. Ben van oorsprong een server beheerder en onderstaande meuk word allemaal aangemaakt vanuit een powershell script om tot een visueel aantrekkelijk rapport te komen.

That being said, ik snap het niet meer. Ik had als basis een mooi HTML document waarin ik met een hoop google-fu mooie opmaak in had aangebracht in meerdere tabellen om tot een server overzicht te komen.

Nu wil ik echter dat de kijker zelf 1 van de tabellen kan sorteren. Ik was er al achter dat dit niet met html(5) kan maar dat ik mijn uitvlucht moet zoeken in jquery en javascript. Ok, jammer maar het is niet anders. Na wat zoeken kwam ik bij http://tablesorter.com/docs/ uit wat lijkt te doen wat ik wil. Alleen lukt het implementeren in mijn bestaande HTML niet helemaal.

Code snippet:
code:
1
2
3
4
5
6
7
8
9
    <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//EN http://www.w3.org/TR/html4/frameset.dtd>
    <html><head><title>Citrix Maintenance Report</title>
    
    <script type="text/javascript" src="C:/Users/user/Desktop/TableSorter/jquery-latest.js"></script> 
    <script type="text/javascript" src="C:/Users/user/Desktop/TableSorter/jquery.tablesorter.js"></script> 
    <script type="text/javascript" src="C:/Users/user/Desktop/TableSorter/my.js"></script> 
    
    <style type=text/css>
    <!--

Deze 3 scripts zitten nu in in mijn header. Maar ff quick en dirty het lokale pad helemaal aangegeven om daarin problemen uit te sluiten. Nr 1 en 2 komen uit de jquery lib. De laatste heb ik zelf ingevoegd en is een eigen baksel. Dat is tenminste als ik dit topic op stack overflow goed heb begrepen waar ik onderstaande code snippet moet laten

In de my.js zit de code:
code:
1
2
3
4
5
$(document).ready(function() 
    { 
        $("#ServerInfo").tablesorter(); 
    } 
);

Waarbij ik begrepen heb dat #ServerInfo het ID van de table is die ik wilt sorteren en tablesorter de aan te roepen functie is.

Als laatste heb ik de <thead> en <tbody> geopend en gesloten in de table zelf om aan te geven welke data gesorteert moet worden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<table id="ServerInfo" class=ServerList>
    <thead>
    <tr bgcolor=#ECECEC><u>
    <th>Server</th><th>Silo</th><th>Status</th><th>Load Eval</th><th>Sessions</th><th>Startup Error</th><th>Cycle Error</th><th>Uptime (hours)</th><th>IMA Service</th>
    </u></tr>
    </thead>
    <tbody>
    <tr bgcolor=#FFFFFF>
    <td>Server01</td><td>StandardServers</td><td>Up</td><td bgcolor=>Online</td><td>1</td><td>False</td><td>False</td><td bgcolor=#F88017>102</td><td bgcolor=>Running</td>
        </tr>
        
    <tr bgcolor=#ECECEC>
    <td>Server02</td><td>StandardServers</td><td>Up</td><td bgcolor=>Online</td><td>0</td><td>False</td><td>False</td><td bgcolor=>30</td><td bgcolor=>Running</td>
        </tr>
        
    <tr bgcolor=#FFFFFF>
    <td>Server03</td><td>StandardServers</td><td>Up</td><td bgcolor=>Online</td><td>0</td><td>False</td><td>False</td><td bgcolor=>6</td><td bgcolor=>Running</td>
        </tr>
        
    <tr bgcolor=#ECECEC>
    <td>Server04</td><td>StandardServers</td><td>Up</td><td bgcolor=>Online</td><td>0</td><td>False</td><td>False</td><td bgcolor=>30</td><td bgcolor=>Running</td>
        </tr>
    </tbody>    
    </table>


Volgens mij ben ik er volgens hun documentatie nu helemaal. Echter hij doet het dus niet. Ik ook nu geen idee hoe ik dit moet troubleshooten en mijn google-fu laat ook te wensen over omdat ik mijn god niet weet wat er nu mis is.

Kan iemand mijn google-fu op weg helpen met wat relevant leesmateriaal? Of waar ik meer bang voor ben. Mij erop wijzen dat ik ergens een noob-fuckup heb gemaakt.

Acties:
  • 0 Henk 'm!

  • MarcoC
  • Registratie: September 2003
  • Laatst online: 09:11
Druk op F12 in je browser. Dan kan je van alles debuggen (Chrome debugger vind ik persoonlijk het fijnst). Een andere optie is hulp vragen d.m.v. jsfiddle.net. Probeer daar het probleem te reduceren in de meest basic vorm.

Acties:
  • 0 Henk 'm!

  • Knopsje
  • Registratie: November 2006
  • Laatst online: 15:56
Zet in je document.ready function eens even iets als
code:
1
console.log("Hello World");

om te kijken of die überhaupt wordt aangeroepen?
Grote kans dat als de rest van de resources niet lokaal is dat lokale JS dan niet mag worden ingeladen. Maar zoals al gezegd, Developer Tools in de browser is de gouden tool hier.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
MarcoC schreef op donderdag 26 maart 2015 @ 11:28:
Druk op F12 in je browser. Dan kan je van alles debuggen (Chrome debugger vind ik persoonlijk het fijnst). Een andere optie is hulp vragen d.m.v. jsfiddle.net. Probeer daar het probleem te reduceren in de meest basic vorm.
^ Dat. Gebruik je debugger: Firefox Firebug of Dev.tools / IE F12 Dev.tools / Chrome Dev.tools / Safari Dev.tools
Craven schreef op donderdag 26 maart 2015 @ 11:25:
code:
1
    <script type="text/javascript" src="C:/Users/user/Desktop/TableSorter/jquery-latest.js"></script>
Dat moet, volgens mij, "file://...." zijn. Maar op "lokale files" ontwikkelen is sowieso een slecht idee; zorg dat je een WAMP o.i.d. installeert zodat je je pagina's via HTTP kunt benaderen; op file:// gelden allerlei restricties en whatnots dat de situatie nooit helemaal vergelijkbaar is met "online".

[ Voor 71% gewijzigd door RobIII op 26-03-2015 11:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Craven
  • Registratie: Februari 2007
  • Laatst online: 13:43
Ga ik eerst even prutsen met developer tools.

een webserver gaat overigens nooit in de picture komen. De .html file en eventuele andere resources worden uiteindelijk ergens op een share geplaatst. Dus ik blijf nu even lokaal devven. Zal straks nog wel even kijken of ik over kan naar relatieve paden. Dat maakt het allemaal wat makkelijker.

Edit: ik kom er uiteindelijk wel. 8) Ik ben er in ieder geval achter dat de .js files gevonden worden. Zoals ik het in TS had staan kan. Maar ook dit kan:
code:
1
2
3
<script type="text/javascript" src="/TableSorter/jquery-latest.js"></script> 
<script type="text/javascript" src="/TableSorter/jquery.tablesorter.js"></script> 
<script type="text/javascript" src="/TableSorter/my.js"></script>


Zodra ik er wat anders van maak dan komen de firefox dev tools met een error dat de file niet gevonden kan worden.

Edit2: nog een stukje verder. Volgens mij worden de .js files niet geladen. Ik kreeg bij het aanroepen van:
code:
1
2
3
4
5
    <script type="text/javascript"> 
        $(function() {
            $("table").tablesorter({debug: true});
        });
    </script>

De melding: "ReferenceError: $ is not defined"

Wat weer schijnt te komen doordat jquery niet geladen is. Nu heb ik dus ergens anders de jquery lib vandaan gehaald met tablesorter nog lokaal:
code:
1
2
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/TableSorter/jquery.tablesorter.js"></script>

Vervolgens zie ik in mijn dev tools dat er een GET word gedaan op de jquery file van jquery.com maar die zie ik op de lokale niet voorbij komen. Klopt dat?

Overigens zie ik ook nog een SyntaxError: illegal character voorbij komen. Maar dat is volgens mij op de inhoud van de jquery library.

YAEdit:
Poep, jquery van lokaal inladen blijkt toch niet echt standaard te zijn :)
Knopsje schreef op donderdag 26 maart 2015 @ 11:37:
Zet in je document.ready function eens even iets als
code:
1
console.log("Hello World");

om te kijken of die überhaupt wordt aangeroepen?
Grote kans dat als de rest van de resources niet lokaal is dat lokale JS dan niet mag worden ingeladen. Maar zoals al gezegd, Developer Tools in de browser is de gouden tool hier.
Staat erin maar komt inderdaad niet naar voren. Dus er gaat iets mis.

Gekke is alles met jquery erin heb ik nu 1 op 1 overgenomen uit 1 van hun voorbeelden. Echter werkt het niet. Hello world in dat voorbeeld zetten werkt wel gewoon.
* Craven gaat weer verder met prutsen.

[ Voor 96% gewijzigd door Craven op 26-03-2015 13:46 ]


Acties:
  • 0 Henk 'm!

  • Craven
  • Registratie: Februari 2007
  • Laatst online: 13:43
Ok dit is dergelijk interessant dat ik het een nieuwe post waardig vind. Ik heb het opgelost maar snap er geen snars van hoe. Ik ben maar stukje voor stukje mijn code in 1 van de voorbeelden gaan kopiëren. Toen ik eenmaal alles over had gekopieerd bleef alles nog steeds functioneren.

Vervolgens heb ik een compare gedraaid van mijn niet functionerende html en het nieuwe voorbeeld met al mijn inhoud erin die wel functioneerde. Tot mijn verbazing rapporteerde notepad++ compare dat ze identiek waren...
Ik vind het leuk dat het nu allemaal werkt maar wat heb ik gemist?

Acties:
  • 0 Henk 'm!

  • Knopsje
  • Registratie: November 2006
  • Laatst online: 15:56
Zeer waarschijnlijk een caching issue: de browser hield een oude versie van de pagina nog in z'n geheugen en liet die zien. Dat, of zoals RobIII al aangaf een vage restrictie of andere error afkomstig van het offline ontwikkelen

Acties:
  • 0 Henk 'm!

  • Craven
  • Registratie: Februari 2007
  • Laatst online: 13:43
Ja daar dacht ik ook al aan. Ik dacht echter dat ctrl + f5 alles opnieuw binnenhaalde. Niet dus.
Pagina: 1