1/* 2Copyright (C) 2008 Harald Herberth 3Licence BSD 4Darf frei verwendet werden, solange damit keine Werbung in die erzeugten Tabellen eingefügt wird 5 6Dokumentation siehe im help.html file 7 8BITTE BEACHTEN DASS var server ANGEPASST WERDEN MUSS (weiter unten) 9wird er so gelassen, dann werden die Daten von selben server geladen von dem die Seite geladen wird (dies wird dann die Vereinsseite sein) 10 11Beispiele 12<!-- Einbinden der CSS und JS Dateien --> 13<link rel="stylesheet" type="text/css" href="//SERVER/pfad/tabellen.css"> 14<script src="//SERVER/pfad/jquery.js" type="text/javascript"></script> 15<script src="//SERVER/pfad/tabellen.js" type="text/javascript"></script> 16 17<!-- Erzeugt einen Eintrag mit Links auf alle Tabellen, die in die Seite eingebaut wurden --> 18<div class="srsLinks"></div> 19 20<!-- Tabelle mit voller Anzeige --> 21<div class="srsTab" srsurl="..." srsVerein="Zirndorf"></div> 22 23<!-- Spielplan für eineKlasse --> 24<div class="srsPlan" srsurl="..." srsVerein="Zirndorf" srsAlle=1></div> 25 26<!-- Gesamt-Spielplan für einen Verein --> 27<div class="srsPlanVerein" srsclub="..." srsAlle=1></div> 28 29*/ 30jQuery(document).ready(function($){ 31 if (window.srsLoaded) return; 32 window.srsLoaded = true; 33 $.ajaxSettings.cache = false; 34 // basis ist die URL von der später dann fetch_table.php aufzurufen ist. 35 // kann auch leer oder unverändert gelassen werden, dann wir der Server genommen von dem aus die Seite geladen wurde 36 // http oder https wird automatisch aus location.protocol bestimmt 37 // SERVER kann ersetzt werden durch den echten Server auf dem fetch_table.php installiert oder genutzt werden soll 38 // immer mit // beginnen und mit / beenden!! Auf das Verzeichnis im Server wo fetch_table installiert ist 39 // und immer mit oder ohne www. davor, abhaengig davon, ob ihr eure Seite mit oder ohne aufruft. Also nur das http(s):: davor weglassen 40 //var server = "//SERVER/pfad/"; // OHNE http: vorne, also nicht http://EuerServer... sondern nur //EuerServer... 41 var server = "//tsv-ottobeuren-handball.de/nutab/"; // OHNE http: vorne, also nicht http://EuerServer... sondern nur //EuerServer... 42 var options = setOptions(server); 43 server = options.server; 44 // da so viele Probleme mit der Server Konfiguration haben, testen wir das gleich 45 if (server && server.indexOf("//") !== 0 || server === "//") { 46 alert("Bitte var server='..' richtig konfigurieren. Ist derzeit: " + server); 47 return; 48 } 49 var basis = !server || window.location.href.match(/localhost/) || server.match(/SERVER/) ? "" : window.location.protocol + server; 50 var links = $("div.srsLinks").empty(); 51 var anchors = []; 52 // Eine einzelne Tabelle aus den Daten erstellen 53 var create_table = function(header, fields, data) { 54 var h = '<table class="srs">'; 55 if (header !== '-') { 56 h += '<tr class="srs">'; 57 $.each(header.split(/;/), function(i,val) { 58 h += '<th class="srs">' + val + '</th>'; 59 }); 60 h += '</tr>'; 61 } 62 $.each(data.constructor == Array ? data : [data], function(i, val) { 63 h += '<tr class="srs">'; 64 $.each(fields.split(/;/), function(j, f) { 65 var i, fv, ff, fe, fev, pat, allnull, href; 66 // wird eine Zelle aus mehreren Werten zusamengebaut? (expr+expr+expr...) 67 fv = ""; allnull = true; 68 href = null; 69 if (f.match(/@/)) { 70 // haben wir ein @ 71 href = f.split(/@/); 72 f = href[0]; 73 href = href[1]; 74 href = (val[href] ? val[href] : ''); 75 if (href) href = atob(href); 76 } 77 fe = f.split(/\+/); 78 for (i = 0; i < fe.length; i++) { 79 // ein Ausdruck 80 // feld started mit %, also Konstante 81 if (fe[i].match(/^%/)) 82 fev = fe[i].substr(1); 83 else { 84 ff = fe[i].split(/\/|!|\xa7/); // xa7 = § 85 fev = (val[ff[0]] ? val[ff[0]] : ''); 86 if (fev.length > 0) allnull = false; 87 // is there a pattern match and replace in the field expression (field/pat/replace) 88 ff = fe[i].split(/\//); 89 if (ff.length == 3) { 90 pat = new RegExp(ff[1]); 91 fev = fev.replace(pat,ff[2]); 92 } 93 // is there a substring expression (field§start§len or sep by !) 94 ff = fe[i].split(/\xa7/); 95 if (ff.length == 3) { 96 fev = fev.substr(ff[1],ff[2]); 97 } 98 ff = fe[i].split(/!/); 99 if (ff.length == 3) { 100 fev = fev.substr(ff[1],ff[2]); 101 } 102 } 103 fv = fv + fev; 104 } 105 if (allnull) fv = ""; 106 if (href && fv) { 107 fv = '<a target="_blank" href="' + href + '">' + fv + '</a>'; 108 } 109 h += '<td class="srs">' + (fv == '' ? ' ' : fv) + '</td>'; 110 }); 111 h += '</tr>'; 112 }); 113 h += '</table>'; 114 return h; 115 }; 116 // eine tabelle in ein div mit formatieren 117 var show_table = function(div, data, p) { 118 $(div).empty(); 119 if (!data) return; 120 if (!p.class) p.class = "srsTable";
121 var h = create_table(p.header, p.fields, data); 122 $(div).html(h); 123 // class für tabelle und felder setzen 124 $(div).find("table.srs").addClass(p.class); 125 var t = $(div).find("tr.srs"); 126 $.each(p.classCol.split(/;/), function (i, val) { 127 t.find("td.srs:eq("+i+")").addClass(val).end() 128 .find("th.srs:eq("+i+")").addClass(val).end(); 129 }); 130 // eigenen Verein einfärben 131 if (p.verein) t.filter(":contains('"+p.verein+"')").addClass("srsHome"); 132 }; 133 // alle tabellen (spiele und tabelle) fuer eine klasse 134 var show_tables = function(div, data, p) { 135 $(div).find(".srsLaden").remove(); 136 if (!data) return; 137 if (data.error) {$(div).append(data.error); return;} 138 if (+p.minitab) p.auchspiele = ""; 139 var d; // temporary div to hold one table 140 var aa; 141 var tennis; 142 tennis = +(data.Aktueller_Spielplan.Tennis ? data.Aktueller_Spielplan.Tennis : 0); 143 // show vorherige_Spiele 144 if (p.auchspiele > 0 && data.Aktueller_Spielplan && data.Aktueller_Spielplan.vorherige_Spiele) { 145 p.header = plan_format[tennis == 1 ? 4 : tennis == 2 ? 6 : 0].header; 146 p.fields = plan_format[tennis == 1 ? 4 : tennis == 2 ? 6 : 0].fields; 147 p.classCol = plan_format[tennis == 1 ? 4 : tennis == 2 ? 6 : 0].classCol; 148 d = $(document.createElement("div")); 149 aa = data.Aktueller_Spielplan.vorherige_Spiele; 150 show_table(d[0], aa, p); 151 $(div).append(d); 152 } 153 // show Tabelle 154 if (data.Aktueller_Spielplan && data.Aktueller_Spielplan.Tabelle) { 155 d = $(document.createElement("div")); 156 if (tennis == 1) { 157 p.header = p.tabellenkopf || "Platz;Mannschaft;Beg.;S;U;N;Punkte;MatchP;S\xe4tze;Spiele"; 158 p.fields = p.tabellenspalten || "Platz;Team_Kurzname;Spiele;SpieleGewonnen;SpieleUnentschieden;SpieleVerloren;PlusPunkte+%:+MinusPunkte;PlusMatchPunkte+%:+MinusMatchPunkte;PlusSaetze+%:+MinusSaetze;PlusSpiele+%:+MinusSpiele"; 159 p.classCol = p.tabellenformat || "r;l;c;c;c;c;c;c;c;c"; 160 } else if (tennis == 2) { 161 p.header = p.tabellenkopf || "Rang;LK;Name, Vorname;Einzel;Doppel;gesamt"; 162 p.fields = p.tabellenspalten || "Platz;LK;Team_Kurzname;PlusEinzel+%:+MinusEinzel;PlusDoppel+%:+MinusDoppel;PlusGesamt+%:+MinusGesamt"; 163 p.classCol = p.tabellenformat || "r;l;l;c;c;c"; 164 } else { 165 p.header = p.tabellenkopf || "Platz;Mannschaft;Spiele;S;U;N;Tore;Diff;Punkte"; 166 p.fields = p.tabellenspalten || "Platz;Team_Kurzname;Spiele;SpieleGewonnen;SpieleUnentschieden;SpieleVerloren;PlusTore+%:+MinusTore;DiffTore;PlusPunkte+%:+MinusPunkte"; 167 p.classCol = p.tabellenformat || "r;l;c;c;c;c;c;c;c"; 168 } 169 if (+p.minitab) { 170 p.header = "Platz;Mannschaft;Punkte"; 171 p.fields = "Platz;Team_Kurzname;PlusPunkte"; 172 p.classCol = "r;l;c"; 173 } 174 show_table(d[0], data.Aktueller_Spielplan.Tabelle, p); 175 // delete unwanted rows 176 // welche Spalte hat denn den Platz, nicht das wir zuviel löschen 177 var sp = $.inArray("Platz", p.fields.split(/;/)); 178 if (+p.keineak > 0) { 179 $(d).find("tr.srs").find("td.srs:eq("+sp+"):contains('254')").parents("tr.srs").remove(); 180 } 181 if (+p.keineex > 0) { 182 $(d).find("tr.srs").find("td.srs:eq("+sp+"):contains('255')").parents("tr.srs").remove(); 183 } 184 $(div).append(d); 185 } else if (data.Teams) { 186 p.header = "Team"; 187 p.fields = "sShortName"; 188 p.classCol = "l"; 189 d = $(document.createElement("div")); 190 show_table(d[0], data.Teams.Teams, p); 191 $(div).append(d); 192 } else { 193 $(div).html("Tabelle nicht gefunden"); 194 } 195 // show kommende_Spiele 196 if (p.auchspiele > 0 && data.Aktueller_Spielplan && data.Aktueller_Spielplan.kommende_Spiele) { 197 p.header = plan_format[tennis == 1 ? 4 : tennis == 2 ? 6 : 0].header; 198 p.fields = plan_format[tennis == 1 ? 4 : tennis == 2 ? 6 : 0].fields; 199 p.classCol = plan_format[tennis == 1 ? 4 : tennis == 2 ? 6 : 0].classCol; 200 d = $(document.createElement("div")); 201 show_table(d[0], data.Aktueller_Spielplan.kommende_Spiele, p); 202 $(div).append(d); 203 } 204 }; 205 // alle Tabellen suchen, und anzeigen 206 var lookup_tables = function() { 207 var divs = $("div.srsTab"); 208 divs.each(function(i) { 209 var o = $(this); 210 var div = this; 211 var p = {}; 212 var m; 213 // get all attributes srs* 214 $.each([ 215 "srsURL", 216 "srsTitle","srsVerein","srsMinitab","srsAuchSpiele","srsKeineAK", "srsAuchAK", "srsKeine
216Ex", 217 "srsTabellenSpalten", "srsTabellenKopf", "srsTabellenFormat", "srsClass" 218 ], function(i, val) { 219 var m = val.match(/^srs(.*)/); 220 if (m && o.attr(val)) {p[m[1].toLowerCase()] = o.attr(val); } 221 val = "data-" + val; 222 if (m && o.attr(val)) {p[m[1].toLowerCase()] = o.attr(val); } 223 }); 224 if (+p.auchak > 0 && p.keineak !== undefined) p.keineak = 0; 225 if (p.title) m = "<p>"+p.title+"</p>"; else m = ""; 226 if (divs.length > 1 && links.length > 0) { 227 m = "<a name=\"srs_a_"+i+"\"></a>" + m; 228 anchors.push('<a href="#srs_a_'+i+'">'+(p.title?p.title:p.klasse?p.klasse:"Tab "+i)+'</a>'); 229 } 230 o.html(m+"<p class=\"srsLaden\">" + (window.srsTabMsg || "Tabelle " + (p.klasse || p.liganummer || "")+ " wird geladen") + "</p>"); 231 $.ajax({ 232 type: "GET", 233 url: basis + "fetch_table.php", 234 data : p, 235 dataType: options.ajaxDataType, 236 success: function(data, textstatus) { 237 show_tables(div, data, p); 238 }, 239 error: function(XMLHttpRequest, textStatus, errorThrown) { 240 o.html("Error in GET srsTab: " + textStatus); 241 } 242 }); 243 }); 244 // Links setzen, wenn alle Ligen (ohne daten) im DOM sind 245 if (anchors.length > 0) links.append(anchors.join(" | ")); 246 }; 247 // Tabellen suchen und darstellen 248 lookup_tables(); 249 // haben wir Spielpläne für eine bestimmte Klasse und Verein 250 // diese ausgeben als datum, zeit, halle, heim, gast 251 $("div.srsPlan").each(function() { 252 var o = $(this); 253 var p = {}; 254 var m; 255 // get all attributes srs* 256 $.each([ 257 "srsURL", 258 "srsTitle","srsVerein","srsAlle","srsHeimGast", 259 "srsVon", "srsBis","srsAktuell","srsNeueVorne", 260 "srsNurHalle", "srsOhneHalle", "srsMaxZeilen", "srsClass", 261 "srsTabellenSpalten", "srsTabellenKopf", "srsTabellenFormat" 262 ], function(i, val) { 263 var m = val.match(/^srs(.*)/); 264 if (m && o.attr(val)) {p[m[1].toLowerCase()] = o.attr(val); } 265 val = "data-" + val; 266 if (m && o.attr(val)) {p[m[1].toLowerCase()] = o.attr(val); } 267 }); 268 if (!p.verein && !+p.alle && !+p.aktuell) { 269 p.alle = "1"; 270 //o.html("Keinen Verein angegeben"); 271 //return; 272 } 273 if (p.title) m = "<p>"+p.title+"</p>"; else m = ""; 274 o.html(m+"<p class=\"srsLaden\">" + (window.srsPlanMsg || "Spielplan " + (p.klasse || p.liganummer || "") + " wird geladen") + "</p>"); 275 p.spielplan = 1; 276 $.ajax({ 277 type: "GET", 278 url: basis + "fetch_table.php", 279 data : p, 280 dataType: options.ajaxDataType, 281 success: function(data, textstatus) { 282 show_plan(o.get(), data, p); 283 }, 284 error: function(XMLHttpRequest, textStatus, errorThrown) { 285 o.html("Error in GET srsPlan: " + textStatus); 286 } 287 }); 288 }); 289 // Ausgabeformat fuer den Plan 290 var plan_format = [ 291 { // alles fuer plan 292 "header": "Datum;Zeit;Halle;Heim;Gast;Ergebnis", 293 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;Halle_Kuerzel;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb", 294 "classCol": "l;c;l;l;l;c" 295 }, 296 { // alles fuer planverein 297 "header": "Datum;Zeit;Liga;Halle;Heim;Gast;Ergebnis", 298 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;Liga_Name_kurz;Halle_Kuerzel;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb", 299 "classCol": "l;c;l;l;l;l;c" 300 }, 301 { // ohne halle fuer plan 302 "header": "Datum;Zeit;Heim;Gast;Ergebnis", 303 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb", 304 "classCol": "l;c;l;l;c" 305 }, 306 { // ohne halle fuer planverein 307 "header": "Datum;Zeit;Liga;Heim;Gast;Ergebnis", 308 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;Liga_Name_kurz;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb", 309 "classCol": "l;c;l;l;l;c" 310 }, 311 { // alles fuer plan Tennis 312 "header": "Datum;Zeit;Heim;Gast;MatchPunkte;S\xe4tze;Spiele", 313 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb;Saetze_Heim+%:+Saetze_Gast;Spiele_Heim+%:+Spiele_Gast", 314 "classCol": "l;c;l;l;c;c;c" 315 }, 316 { // alles fuer planverein Tennis 317 "header": "Datum;Zeit;Liga;Heim;Gast;MatchPunkte;S\xe4tze;Spiele", 318 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;Liga_Name_kurz;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb;Saetze_Heim+%:+Saetze_Gast;Spiele_Heim+%:+Spiele_Gast", 319 "classCol": "l;c;l;l;c;c;c" 320 }, 321 { // alles fuer plan Tennis Team 322 "header": "Datum;Zeit;Heim;Gast;MatchPunkte", 323 "fields": "Spieldatum/^..(..).(..).(..).*/$3.$2.$1;Spieldatum/.*T(..:..).*/$1;HeimTeam_Name_kurz;GastTeam_Name_kurz;Heim+%:+Gast@sbb", 324 "classCol": "l;c;l;l;c" 325 }, 326 ];
327 // einen Plan als table ausgeben 328 var show_plan = function(div, data, p) { 329 var o = $(div); 330 var d, dd, tennis; 331 o.find(".srsLaden").remove(); 332 if (data && data.error) {$(div).append(data.error); return;} 333 if (data && data.Spielplan && data.Spielplan.Spielplan) { 334 tennis = +(data.Spielplan.Tennis ? data.Spielplan.Tennis : 0); 335 d = 0; 336 if (tennis == 1) d = 4; 337 if (p.spielplanverein) d += 1; 338 if (+p.ohnehalle && !tennis) d += 2; 339 if (tennis == 2) d = 6; 340 p.header = p.tabellenkopf || plan_format[d].header; 341 p.fields = p.tabellenspalten || plan_format[d].fields; 342 p.classCol = p.tabellenformat || plan_format[d].classCol; 343 // filtern nach von und bis 344 if (data.Spielplan.von && data.Spielplan.bis && data.Spielplan.von > '' && data.Spielplan.bis > '') { 345 dd = []; 346 $.each(data.Spielplan.Spielplan, function(i, val) { 347 if (val.SpieldatumTag >= data.Spielplan.von 348 && val.SpieldatumTag <= data.Spielplan.bis) 349 dd.push(val); 350 }); 351 data.Spielplan.Spielplan = dd; 352 } 353 // filtern nach nach Halle 354 if (p.nurhalle && p.nurhalle > '') { 355 dd = []; 356 var re = new RegExp(p.nurhalle.replace(",", "|")); 357 $.each(data.Spielplan.Spielplan, function(i, val) { 358 if (val.Halle_Kuerzel && val.Halle_Kuerzel.match(re)) 359 dd.push(val); 360 }); 361 data.Spielplan.Spielplan = dd; 362 } 363 var h = create_table(p.header, p.fields, data.Spielplan.Spielplan); 364 d = $(document.createElement("div")); 365 d.html(h); 366 if (!p.class) p.class = "srsTable"; 367 d.find("table.srs").addClass(p.class); 368 var t = d.find("tr.srs"); 369 $.each(p.classCol.split(/;/), function (i, val) { 370 t.find("td.srs:eq("+i+")").addClass(val).end() 371 .find("th.srs:eq("+i+")").addClass(val).end(); 372 }); 373 // eigenen Verein einfärben 374 if (p.verein) { 375 t = d.find("tr.srs:gt(0)"); 376 t.filter(":contains('"+p.verein+"')").addClass("srsHome"); 377 // rest löschen 378 if (!+p.alle || +p.heimgast) { 379 d.find("tr.srs:gt(0):not(.srsHome)").remove(); 380 d.find("tr.srsHome").removeClass("srsHome"); 381 } 382 // heim und ausw (Spalte über format bestimmen) 383 var sh = $.inArray("HeimTeam_Name_kurz", p.fields.split(/;/)); 384 var sa = $.inArray("GastTeam_Name_kurz", p.fields.split(/;/)); 385 t = d.find("tr.srs:gt(0)"); 386 t.find("td.srs:eq("+sh+"):contains('"+p.verein+"')").parents("tr.srs").addClass("srsHeim"); 387 t.find("td.srs:eq("+sa+"):contains('"+p.verein+"')").parents("tr.srs").addClass("srsAusw"); 388 t.find("td.srs:contains('"+p.verein+"')").addClass("srsTabHome"); 389 // nur heim oder gast stehen lassen 390 if (+p.heimgast === 1) { 391 d.find("tr.srs:gt(0):not(.srsHeim)").remove(); 392 } 393 if (+p.heimgast === 2) { 394 d.find("tr.srs:gt(0):not(.srsAusw)").remove(); 395 } 396 } 397 // überzählige löschen 398 if (+p.maxzeilen > 0) d.find("tr.srs:gt(" + (+p.maxzeilen) + ")").remove(); 399 // gestrichene Spiele markieren, Die Zeit ist bei solchen Spielen "00:0." 400 d.find("tr.srs td.srs:contains('00:0')").parents("tr.srs").addClass("srsSpielGestrichen"); 401 o.append(d); 402 } else { 403 o.append("<p>Keine Spiele gefunden, die den Suchbedingungen entsprechen</p>"); 404 } 405 406 } 407 // Gesamtspielplan für einen Verein 408 $("div.srsPlanVerein").each(function() { 409 var o = $(this); 410 var p = {}; 411 var m; 412 // get all attributes srs* 413 $.each([ 414 "srsClub", "srsVerband", "srsSportart", 415 "srsTitle","srsVerein","srsAlle", "srsHeimGast", 416 "srsVon", "srsBis", "srsNeueVorne", 417 "srsNurHalle", "srsOhneHalle", "srsMaxZeilen", "srsClass", 418 "srsTabellenSpalten", "srsTabellenKopf", "srsTabellenFormat" 419 ], function(i, val) { 420 var m = val.match(/^srs(.*)/); 421 if (m && o.attr(val)) {p[m[1].toLowerCase()] = o.attr(val); } 422 val = "data-" + val; 423 if (m && o.attr(val)) {p[m[1].toLowerCase()] = o.attr(val); } 424 }); 425 if (!p.verein && !p.club) { 426 o.html("Keinen Verein angegeben"); 427 return; 428 } 429 // sind mehrere clubs zu mischen 430 p.club = p.club || ""; 431 var clubs = p.club.split(","); 432 var dataAll = []; 433 p.club = clubs.shift(); 434 if (p.title) m = "<p>"+p.title+"</p>"; else m = ""; 435 o.html(m+"<p class=\"srsLaden\">" + (window.srsPlanMsg || "Gesamt-Spielplan " + "" + " wird geladen") + "</p>"); 436 p.spielplanverein = 1; 437 var processPart = function() { 438 var ligen = p.club.split("/"); 439 p.club = ligen.shift(); 440 if (ligen.length) ligen = ligen.join("/").toLowerCase().split(";"); 441 $.ajax({
442 type: "GET", 443 url: basis + "fetch_table.php", 444 data : p, 445 dataType: options.ajaxDataType, 446 success: function(data, textstatus) { 447 if (data && data.error) {show_plan(o.get(), data, p); return;} 448 if (data && data.Spielplan && data.Spielplan.Spielplan) { 449 dataAll = dataAll.concat(data.Spielplan.Spielplan.filter(function(x) { 450 if (!x.Liga_Name_kurz) return true; 451 return ligen.length == 0 || ligen.indexOf(x.Liga_Name_kurz.toLowerCase()) >= 0; 452 })); 453 } 454 if (clubs.length > 0) { 455 p.club = clubs.shift(); 456 processPart(); 457 return; 458 } 459 if (dataAll.length) { 460 dataAll.sort(function(a,b) { 461 if (a.Spieldatum < b.Spieldatum) return (p.neuevorne > 0 ? 1 : -1); 462 if (a.Spieldatum > b.Spieldatum) return (p.neuevorne > 0 ? -1 : 1); 463 return 0; 464 }); 465 } 466 data.Spielplan.Spielplan = dataAll; 467 p.alle = 0; 468 show_plan(o.get(), data, p); 469 }, 470 error: function(XMLHttpRequest, textStatus, errorThrown) { 471 o.html("Error in GET srsPlanVerein: " + textStatus); 472 } 473 }); 474 } 475 processPart(); 476 }); 477 function setOptions(server) { 478 var o = { 479 server: server, 480 ajaxDataType: "json", 481 }; 482 $("div.srsConf").each(function() { 483 var c = $(this); 484 for (var x in o) { 485 var aname = "srs" + x; 486 if (c.attr(aname)) o[x] = c.attr(aname); 487 aname = "data-" + aname; 488 if (c.attr(aname)) o[x] = c.attr(aname); 489 } 490 }); 491 return o; 492 } 493}); 494
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.