diff --git a/html/assets/css/custom.scss b/html/assets/css/custom.scss index f3ffa695003cea89955e95d91e0e9efbd4611dbc..4b104d81f293267f2b9e96762d53f3ffdd43c2c6 100644 --- a/html/assets/css/custom.scss +++ b/html/assets/css/custom.scss @@ -462,4 +462,20 @@ div.scrollen { div.scrollen_team { overflow: auto; max-height: 80vh; +} + +.gruppe0 { + background: beige !important; +} + +.gruppe1 { + background: aliceblue !important; +} + +.gruppe2 { + background: lightsteelblue !important; +} + +.gruppe3 { + background: lavender !important; } \ No newline at end of file diff --git a/html/assets/js/script.js b/html/assets/js/script.js index 37bf6d6ee6f5e5982cdef50ec44488360b13a052..357d37a3bbb249c17c9bc7e2461e3cbf5ed5cf1b 100644 --- a/html/assets/js/script.js +++ b/html/assets/js/script.js @@ -4,267 +4,237 @@ const DAY=24*3600*1000; var Grps=[]; +var _e = (el) => ( document.createElement(el) ); + +var TTTT = []; function calculatePartien(saison,date){ $('#partien').append('<h2 class="saison s_'+saison+'">Saison '+saison+'</h2>'); - - // prüfe ob alle Rundenpartien gespielt und generiere neue Rundenpartien - var runde=0; + // ####################################################################### + // Erstelle Partien der Runde 1 ( Hauptrunde ) / Spiel Jeder gegen Jeden + var runde=1; date=new Date(date).getTime(); var steps=0; - - do { - var done=[]; - runde++; - - // stelle die 4er Gruppen, sowie Startgruppen zusammen - Grps=[] - if( runde == 1 ){ - STARTLISTE.forEach( - function(g){ - var G=[]; - g.forEach( - function(v){ - G.push( TEAMS.filter( (a) => (a.nt == v) )[0] ); - } - ); - Grps.push(G); + var done=[]; + + // stelle Gruppen zusammen + STARTLISTE.forEach( + function(g){ + var G=[]; + g.forEach( + function(v){ + G.push( TEAMS.filter( (a) => (a.nt == v) )[0] ); } ); - //Grps.push( Object.values( TEAMS ).filter( (c) => c.start<=saison ).sort( (a,b) => ( b.nt < a.nt ) ? 1 : -1 ) ); - } else { - while( Tabelle.length > 3 ){ - Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.pop(), Tabelle.pop() ] ); - } + Grps.push(G); } + ); - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Runde '+runde+(( Grps.length == 1 ) ? ' (Endrunde)' : '')+'</h3>'; - $('#partien').append(tmp); + var h3= _e('h3'); + h3.classList = 'runde s_'+saison+' r_'+runde; + h3.innerHTML = 'Runde '+runde+ ' (Hauptrunde)'; + $('#partien').append(h3); + + // erzeuge die Partien und prüfe, ob diese bereits gespielt wurden + STARTLISTE_PARTIEN.forEach( + function(v,i){ + done.push( grpPartien(date,steps,saison,runde,i+1,v.slice(1)) ); steps+=v[0]; + } + ); + var AFdone = false; - if( runde == 1 ){ - STARTLISTE_PARTIEN.forEach( - function(v,i){ - done.push( grpPartien(date,steps,saison,runde,i+1,v.slice(1)) ); steps+=v[0]; + // ################################################################################## + // Erstelle Viertelfinale ( Finalrunde ) / KO-Spiele + if( FINALTEAMS == 8 ){ + if( done.reduce( (a,b) => a && b ) == true ){ + var Tabelle = calculatePunktestand( saison, runde, false ); + } else { + var Tabelle = []; + STARTLISTE.forEach( + function(w,g){ + for( var i = 0; i < FINALTEAMS / STARTLISTE.length; i++ ){ + Tabelle.push( + { + 'kontinent' : 'dummy', + 'nt': 'xx', + 'name': '<i>Gruppe ' + (g+1) + '.'+ (i+1) + '</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ); + } } ); + } + } else if ( FINALTEAMS > 8 ){ + if( AFdone ){ } else { - done.push( grpPartien(date,steps,saison,runde,1,[ 1,2, 4,3 ]) ); steps+=STEP; - done.push( grpPartien(date,steps,saison,runde,2,[ 1,4, 2,3 ]) ); steps+=STEP; - done.push( grpPartien(date,steps,saison,runde,3,[ 3,1, 2,4 ]) ); steps+=STEP; - //done.push( grpPartien(date,steps,saison,runde,4,[ 2,1, 3,4 ]) ); steps++; - //done.push( grpPartien(date,steps,saison,runde,5,[ 4,1, 3,2 ]) ); steps++; - //done.push( grpPartien(date,steps,saison,runde,6,[ 3,1, 4,2 ]) ); steps++; + var Tabelle = []; + [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16].forEach( + function(i){ + Tabelle.push( + { + 'kontinent' : 'dummy', + 'nt': 'xx', + 'name': '<i>AF ' + (i) + '</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ); + } + ); } - - } while( done.reduce( (a,b) => a && b ) == true && Grps.length > 1 ); - - - if( done.reduce( (a,b) => a && b ) == true ){ - - var Tabelle = calculatePunktestand( saison, runde, false ); - - } else { - - var Tabelle = [ - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 1</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 2</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 3</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 4</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 5</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 6</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 7</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Platz 8</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - } - ] - } - Grps.shift(); - //Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] ); - - Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() , Tabelle.shift() , Tabelle.shift() , Tabelle.shift() ] ); + if( FINALTEAMS >= 8 ){ + Grps = []; + Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() , Tabelle.shift() , Tabelle.shift() , Tabelle.shift() ] ); - if( FINALTEAMS == 8 ){ runde='VF'; - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Viertelfinale</h3>'; - $('#partien').append(tmp); - + var h3 = _e('h3'); + h3.classList = 'runde s_'+saison+' r_'+runde; + h3.innerText = 'Viertelfinale'; + $('#partien').append(h3); steps+=FINALS_STEP; + var done = []; done.push( grpPartien( date,steps,saison,runde, 1, [ 8,1, 7,2, 6,3, 5,4 ] ) ); + if( done[0].filter((a) => (a == false )).length == 0 ){ + var VFdone = true; + var Tabelle = done[0]; + } + } + // ################################################################################## + // Erstelle Halbfinale ( Finalrunde ) / KO-Spiele + if( FINALTEAMS == 4 ){ if( done.reduce( (a,b) => a && b ) == true ){ - Grps.shift(); Grps.push([]); - - var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 1 ) )[0]; - if( p.TH*1 >= p.TA*1 ){ Grps[0].push( TEAMS.filter( (a) => (a.nt == p.H.toLowerCase() ) )[0] ); } else { Grps[0].push( TEAMS.filter( (a) => (a.nt == p.A.toLowerCase() ) )[0] ); } - var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 2 ) )[0]; - if( p.TH*1 >= p.TA*1 ){ Grps[0].push( TEAMS.filter( (a) => (a.nt == p.H.toLowerCase() ) )[0] ); } else { Grps[0].push( TEAMS.filter( (a) => (a.nt == p.A.toLowerCase() ) )[0] ); } - var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 3 ) )[0]; - if( p.TH*1 >= p.TA*1 ){ Grps[0].push( TEAMS.filter( (a) => (a.nt == p.H.toLowerCase() ) )[0] ); } else { Grps[0].push( TEAMS.filter( (a) => (a.nt == p.A.toLowerCase() ) )[0] ); } - var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 4 ) )[0]; - if( p.TH*1 >= p.TA*1 ){ Grps[0].push( TEAMS.filter( (a) => (a.nt == p.H.toLowerCase() ) )[0] ); } else { Grps[0].push( TEAMS.filter( (a) => (a.nt == p.A.toLowerCase() ) )[0] ); } - + var Tabelle = calculatePunktestand( saison, runde, false ); } else { - Grps.shift(); - var Tabelle = [ - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Sieger VF1</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Sieger VF2</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Sieger VF3</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Sieger VF4</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 + var Tabelle = []; + STARTLISTE.forEach( + function(w,g){ + for( var i = 0; i < FINALTEAMS / STARTLISTE.length; i++ ){ + Tabelle.push( + { + 'kontinent' : 'dummy', + 'nt': 'xx', + 'name': '<i>Gruppe ' + (g+1) + '.'+ (i+1) + '</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ); + } } - ]; - Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] ); + ); + } + } else if ( FINALTEAMS > 4 ){ + if( VFdone ){ + } else { + var Tabelle = []; + [1,2,3,4,5,6,7,8].forEach( + function(i){ + Tabelle.push( + { + 'kontinent' : 'dummy', + 'nt': 'xx', + 'name': '<i>VF ' + (i) + '</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ); + } + ); } - - FINALTEAMS=4; - } - if( FINALTEAMS == 4 ){ - runde='HF'; - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Halbfinale</h3>'; - $('#partien').append(tmp); + if( FINALTEAMS >= 4 ){ + Grps = []; + Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] ); + runde='HF'; + var h3 = _e('h3'); + h3.classList = 'runde s_'+saison+' r_'+runde; + h3.innerText = 'Halbfinale'; + $('#partien').append(h3); steps+=FINALS_STEP; + var done = []; done.push( grpPartien( date,steps,saison,runde, 1, [ 1,4, 2,3 ] ) ); + if( done[0].filter((a) => (a == false )).length == 0 ){ + var HFdone = true; + var Tabelle = done[0]; + } } - steps+=FINALS_STEP; - - if( done.reduce( (a,b) => a && b ) == true ){ - - Grps.shift(); Grps.push([]); - - var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 1 ) )[0]; - if( p.TH*1 >= p.TA*1 ){ Grps[0].push( TEAMS.filter( (a) => (a.nt == p.H.toLowerCase() ) )[0] ); } else { Grps[0].push( TEAMS.filter( (a) => (a.nt == p.A.toLowerCase() ) )[0] ); } - var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 2 ) )[0]; - if( p.TH*1 >= p.TA*1 ){ Grps[0].push( TEAMS.filter( (a) => (a.nt == p.H.toLowerCase() ) )[0] ); } else { Grps[0].push( TEAMS.filter( (a) => (a.nt == p.A.toLowerCase() ) )[0] ); } - - runde='F' - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Finale</h3>'; - $('#partien').append(tmp); - - done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); - - } else { - - runde='F' - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Finale</h3>'; - $('#partien').append(tmp); - - var Tabelle = [ - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Sieger HF1</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'nt': 'xx', - 'name': '<i>Sieger HF2</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - } - ]; - - Grps.shift(); + // ################################################################################## + // Erstelle Finale ( Finalrunde ) / KO-Spiele + if( FINALTEAMS == 2 ){ + if( done.reduce( (a,b) => a && b ) == true ){ + var Tabelle = calculatePunktestand( saison, runde, false ); + } else { + var Tabelle = []; + STARTLISTE.forEach( + function(w,g){ + for( var i = 0; i < FINALTEAMS / STARTLISTE.length; i++ ){ + Tabelle.push( + { + 'kontinent' : 'dummy', + 'nt': 'xx', + 'name': '<i>Gruppe ' + (g+1) + '.'+ (i+1) + '</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ); + } + } + ); + } + } else if ( FINALTEAMS > 2 ){ + if( HFdone ){ + } else { + var Tabelle = []; + [1,2].forEach( + function(i){ + Tabelle.push( + { + 'kontinent' : 'dummy', + 'nt': 'xx', + 'name': '<i>HF ' + (i) + '</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ); + } + ); + } + } + if( FINALTEAMS >= 2 ){ + Grps = []; Grps.push( [ Tabelle.shift(), Tabelle.shift() ] ); - done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); - + runde='F'; + var h3 = _e('h3'); + h3.classList = 'runde s_'+saison+' r_'+runde; + h3.innerText = 'Finale'; + $('#partien').append(h3); + steps+=FINALS_STEP; + var done = []; + done.push( grpPartien( date,steps,saison,runde, 1, [ 1,2 ] ) ); + if( done[0].filter((a) => (a == false )).length == 0 ){ + var Fdone = true; + var Tabelle = done[0]; + } } - } var St=0; @@ -275,25 +245,33 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ alert( 'Error: Einige Teams existieren nicht in der DB' ); return; } - var done=true; - - var tmp=''; - tmp+='<h4 id="r'+runde+'st'+spieltag+'" class="spieltag s_'+saison+' r_'+runde+' t_'+spieltag+'" ondblclick="getCsv('+saison+',\''+runde+'\','+spieltag+')">Spieltag '+spieltag+'</h4>'; - tmp+='<table class="partien s_'+saison+' r_'+runde+' t_'+spieltag+'">'; + + var done = ( runde == 'VF' || runde == 'HF' || runde == 'F' ) ? [] : false; + + var h4 = _e('h4'); + h4.classList = 'spieltag s_'+saison+' r_'+runde+' t_'+spieltag; + h4.id = 'r'+runde+'st'+spieltag; + $(h4).attr( 'ondblclick', 'getCsv('+saison+',\''+runde+'\','+spieltag+')' ); + h4.innerText = 'Spieltag '+spieltag; + $('#partien').append(h4); + var tbl = _e('table'); + tbl.classList = 'partien s_'+saison+' r_'+runde+' t_'+spieltag; var partie=0; - do { - var h1 = Bg.shift()-1; - var a1 = Bg.shift()-1; - partie++; - Grps.forEach( - function(v,i){ + Grps.forEach( + function(v,i){ + var BG = JSON.parse(JSON.stringify(Bg)); + do { + + var h1 = BG.shift()-1; + var a1 = BG.shift()-1; + partie++; if( h1 == -1 || a1 == -1 ) return; - var ergebnis=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == spieltag && a.H.toLowerCase() == v[h1].nt.toLowerCase() && a.A.toLowerCase() == v[a1].nt.toLowerCase() ) ); if( ergebnis.length == 1 ){ + ergebnis=ergebnis[0]; var th=(( ergebnis.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+ergebnis.MID+'" target="ultrasoccer">'+ergebnis.TH+'</a>' : ergebnis.TH ); var ta=(( ergebnis.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+ergebnis.MID+'" target="ultrasoccer">'+ergebnis.TA+'</a>' : ergebnis.TA ); @@ -301,32 +279,90 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ var st=STAT_SAISON.filter( (a) => ( a.MID == ergebnis.MID )).length == 12; ergebnis['partie']=partie; if( St != -1 ) St=spieltag; + if( runde == 'VF' || runde == 'HF' || runde == 'F' ){ + done.push( th > ta ? TEAMS.filter((a) => (a.nt == ergebnis.H ))[0] : TEAMS.filter((a) => (a.nt == ergebnis.A ))[0] ); + } else { + done = true; + } + } else { if( St > 0 ){ var anker=St; setTimeout( function(){ window.location.href='#r'+runde+'st'+anker; },500 ); St=-1; } - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; var st=false; done=false; var match=''; + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; var st=false; var match=''; + if( runde == 'VF' || runde == 'HF' || runde == 'F' ){ + done.push(false); + } else { + done = false; + } } - tmp+='<tr class="begegnungen h_'+v[h1].nt+' a_'+v[a1].nt+' '+(( st ) ? 'stats' : '')+'">'; - tmp+='<td>'+dt+'</td>'; - tmp+='<td data-id="'+v[h1].nt+'"><sup>'+v[h1].nt.toUpperCase()+'</sup> '+v[h1].name.replace(/\(NL\)/g,'')+' <img class="flags" src="./images/flags/'+(( v[h1].flag ) ? v[h1].flag : v[h1].nt.toLowerCase())+'.svg"></td>'; - tmp+='<td> - </td>'; - tmp+='<td data-id="'+v[a1].nt+'"><img class="flags" src="./images/flags/'+(( v[a1].flag ) ? v[a1].flag : v[a1].nt.toLowerCase())+'.svg"> '+v[a1].name.replace(/\(NL\)/g,'')+' <sup>'+v[a1].nt.toUpperCase()+'</sup></td>'; - - tmp+='<td data-mid="'+(( ergebnis.MID != undefined ) ? ergebnis.MID : '0' )+'">'+th+'</td>'; - tmp+='<td onmouseenter="showLastResults(\''+v[h1].nt+'\',\''+v[a1].nt+'\')" onmouseleave="hideLastResults()" onclick="ignoreHideLastResults()">:</td>'; - tmp+='<td>'+ta+'</td>'; - tmp+='</tr>'; - - },spieltag - ); - } while( Bg.length > 0 ); + var tr = _e('tr'); + tr.classList = 'begegnungen ' + (( STARTLISTE.length > 1 ) ? 'gruppe' + i : '' ) + ' h_'+v[h1].nt+' a_'+v[a1].nt+' '+(( st ) ? 'stats' : ''); + var td = _e('td'); + td.innerHTML = dt; + tr.append(td); + + var td = _e('td'); + $(td).attr('data-id',v[h1].nt); + var sup = _e('sup'); + sup.innerHTML = v[h1].nt.toUpperCase(); + td.append(sup); + + var span = _e('span') + span.innerHTML = ' '+v[h1].name.replace(/\(NL\)/g,'')+' '; + td.append(span); + + var img = _e('img'); + img.classList = 'flags'; + img.src = './images/flags/'+(( v[h1].flag ) ? v[h1].flag : v[h1].nt.toLowerCase())+'.svg'; + td.append(img); + tr.append(td); + + var td = _e('td'); + td.innerText = ' - '; + tr.append(td); + + var td = _e('td'); + $(td).attr('data-id',v[a1].nt); + var img = _e('img'); + img.classList = 'flags'; + img.src = './images/flags/'+(( v[a1].flag ) ? v[a1].flag : v[a1].nt.toLowerCase())+'.svg'; + td.append(img); + + var span = _e('span') + span.innerHTML = ' '+v[a1].name.replace(/\(NL\)/g,'')+' '; + td.append(span); + + var sup = _e('sup'); + sup.innerHTML = v[a1].nt.toUpperCase(); + td.append(sup); + tr.append(td); + + var td = _e('td'); + $(td).attr('data-mid',(( ergebnis.MID != undefined ) ? ergebnis.MID : '0' ) ); + td.innerHTML = th; + tr.append(td); + + var td = _e('td'); + $(td).attr('onmouseenter', "showLastResults('"+v[h1].nt+"','"+v[a1].nt+"')" ); + $(td).attr('onmouseleave', 'hideLastResults()'); + $(td).attr('onclick','ignoreHideLastResults()'); + td.innerText = ':'; + tr.append(td); + + var td = _e('td'); + td.innerHTML = ta; + tr.append(td); + + tbl.append(tr); + } while( BG.length > 0 ); + },spieltag + ); - tmp+='</table>'; - $('#partien').append(tmp); + $('#partien').append(tbl); return done; } @@ -430,41 +466,162 @@ function calculatePunktestand(saison,runde,show=true){ var TabelleLast= ( saison > 26 ) ? calculateAllPunktestand()[saison-27] : []; var M = calculateAllPunktestand().map((a) => ( a[0].nt )); - Tabelle.forEach( - function(v,i){ - var border=SAISON_SETTINGS[saison - 26] == i+1 ? 'dashed ' : ''; - - var tmp='<td class="'+border+'">'+(i+1)+'</td>'; - var t=v[saison].Tr.map( (a) => ( a != 'X' ) ? 1 : 0 ); - var trophy=ERGEBNISSE.filter((a) => ( a.saison==SAISON-1 && a.runde=='F')).map((a) => ( a.TH > a.TA ? a.H : a.A ))[0]; - trophy = trophy == undefined ? '' : trophy; - var master=TabelleLast.length > 0 ? TabelleLast[0].nt : ''; - if( t.length == 0 ) t.push(0); - - - var S=t.reduce( (a,b) => a+b ); - var pokal=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) > parseInt(a.TA) && a.H.toLowerCase() == v.nt.toLowerCase() || parseInt(a.TH) < parseInt(a.TA) && a.A.toLowerCase() == v.nt.toLowerCase() ) ) ).length; - var finalist=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) < parseInt(a.TA) && a.H.toLowerCase() == v.nt.toLowerCase() || parseInt(a.TH) > parseInt(a.TA) && a.A.toLowerCase() == v.nt.toLowerCase() ) ) ).length; - var meistertitel=M.filter( (a,i) => ( a == v.nt.toLowerCase() && ( i < saison - 26 || saison == 0 ) ) ).length; - var managervoted=Object.values(MANAGERVOTING_WINNER).filter((a) => (a == v.nt)).length; - - tmp+='<td class="'+border+'">'+S+'</td>'; - tmp+='<td class="'+border+'">'+(( MANAGERVOTING ) ? '<i class="fas fa-thumbs-up'+(( SAISON_TEAMVOTED.reduce((a,b) => (a.concat(b))).indexOf(v.nt) > -1 ) ? ' done" title="Manager dieses Teams hat sein Voting abgegeben!"' : '" title="Manager dieses Teams hat noch kein Voting abgegeben!"' )+' onclick="teamVoting(\''+v.nt+'\')"></i> ' : '') + '<img class="flags" src="./images/flags/'+(( v.flag ) ? v.flag : v.nt.toLowerCase())+'.svg"> <a href="javascript:calculateTeam('+((saison == 0 && false) ? SAISON_NOW : saison)+',\''+v.nt+'\')">'+v.name.replace(/\(NL\)/g,'<sup>'+v.nt.toUpperCase()+'</sup></a>')+' <a href="'+v.link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>'+(( trophy.toLowerCase() == v.nt.toLowerCase() ) ? ' <i class="fas fa-trophy" title="Amtierender Titelgewinner"></i>' : '') + - ' '+(( master.toLowerCase() == v.nt.toLowerCase() ) ? ' <i class="fas fa-crown" title="Amtierender Meister"></i>' : '') +' '+(( v.nt.toLowerCase() == MANAGERVOTING_TEAM ) ? ' <i class="managervoted fas fa-thumbs-up" title="Team der Saison, gewählt von den Managern"></i>' : '') + '</td>'; - tmp+='<td class="'+border+'">'+((pokal>0) ? pokal : '')+'</td>'; - tmp+='<td class="'+border+'">'+((meistertitel>0) ? meistertitel : '')+'</td>'; - tmp+='<td class="'+border+'">'+((finalist>0) ? finalist : '')+'</td>'; - tmp+='<td class="'+border+'">'+((managervoted>0) ? managervoted : '')+'</td>'; - tmp+='<td class="'+border+'">'+v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'</td>'; - tmp+='<td class="'+border+'">'+v[saison].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'</td>'; - tmp+='<td class="'+border+'">'+v[saison].Tr.map( (a) => ( ( a == 'N') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'</td>'; - var hist=v[saison].Tr.map( (a) => '<'+a+'></'+a+'>' ).slice(-6).join(''); - tmp+='<td class="'+border+'">'+hist+'</td>'; - tmp+='<td class="'+border+'">'+v[saison].Tp+'/'+v[saison].Tn+'</td>'; - tmp+='<td class="'+((v[saison].Td > 0 ) ? 'p' : (v[saison].Td == 0 ) ? 'u' : 'n')+' '+border+'">'+((v[saison].Td > 0 ) ? '+' : '') + v[saison].Td+'</td>'; - tmp+='<td class="'+((v[saison].Zwk > 0 ) ? 'p' : (v[saison].Zwk == 0 ) ? 'u' : 'n')+' '+border+'">'+(v[saison].Zwk > 0 ? '+' : '')+(v[saison].Zwk / S).toFixed(2) +'</td>'; - tmp+='<td class="'+border+'">'+v[saison].P+'</td>'; - $(tabelle).append('<tr>'+tmp+'</tr>'); + + STARTLISTE.forEach( + function(w,j){ + + Tabelle.filter((a) => ( w.indexOf(a.nt) > -1 )).forEach( + function(v,i){ + var border=SAISON_SETTINGS[saison - 26] == i+1 ? 'dashed ' : ''; + + var tr = _e('tr'); + if( STARTLISTE.length > 1 ) tr.classList = 'gruppe' + j; + + var td = _e('td'); + td.classList = border; + td.innerText = (i+1); + tr.append(td); + + var t=v[saison].Tr.map( (a) => ( a != 'X' ) ? 1 : 0 ); + var trophy=ERGEBNISSE.filter((a) => ( a.saison==SAISON-1 && a.runde=='F')).map((a) => ( a.TH > a.TA ? a.H : a.A ))[0]; + trophy = trophy == undefined ? '' : trophy; + var master=TabelleLast.length > 0 ? TabelleLast[0].nt : ''; + if( t.length == 0 ) t.push(0); + + var S=t.reduce( (a,b) => a+b ); + var pokal=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) > parseInt(a.TA) && a.H.toLowerCase() == v.nt.toLowerCase() || parseInt(a.TH) < parseInt(a.TA) && a.A.toLowerCase() == v.nt.toLowerCase() ) ) ).length; + var finalist=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) < parseInt(a.TA) && a.H.toLowerCase() == v.nt.toLowerCase() || parseInt(a.TH) > parseInt(a.TA) && a.A.toLowerCase() == v.nt.toLowerCase() ) ) ).length; + var meistertitel=M.filter( (a,i) => ( a == v.nt.toLowerCase() && ( i < saison - 26 || saison == 0 ) ) ).length; + var managervoted=Object.values(MANAGERVOTING_WINNER).filter((a) => (a == v.nt)).length; + + var td = _e('td'); + td.classList = border; + td.innerHTML = S; + tr.append(td); + + var td = _e('td'); + td.classList = border; + if( MANAGERVOTING ){ + var _i = _e('i'); + _i.classList = 'fas fa-thumbs-up '; + $(_i).attr('onclick', "teamVoting('+v.nt+')"); + if( SAISON_TEAMVOTED.reduce((a,b) => (a.concat(b))).indexOf(v.nt) > -1 ){ + _i.classList += 'done'; + _i.title = 'Manager dieses Teams hat sein Voting abgegeben!'; + } else { + _i.title = 'Manager dieses Teams hat noch kein Voting abgegeben!'; + } + td.append(_i); + } + + var img = _e('img'); + img.classList = 'flags'; + img.src = '/images/flags/'+(( v.flag ) ? v.flag : v.nt.toLowerCase())+'.svg'; + td.append(img); + + var span = _e('span'); + span.innerText = ' '; + td.append(span); + + var _a = _e('a'); + _a.href = "javascript:calculateTeam("+((saison == 0 && false) ? SAISON_NOW : saison)+"','"+v.nt+"\')"; + _a.innerHTML = v.name.replace(/\(NL\)/g,'<sup>'+v.nt.toUpperCase()+'</sup></a>'); + td.append(_a); + + var _a = _e('a'); + _a.href = v.link; + _a.target = 'ultrasoccer'; + + var _i = _e('i'); + _i.classList = 'fas fa-link'; + _a.append(_i); + td.append(_a); + + if( trophy.toLowerCase() == v.nt.toLowerCase() ){ + var _i = _e('i'); + _i.classList = 'fas fa-trophy'; + _i.title = 'Amtierender Titelgewinner'; + td.append(_i); + } + + if( master.toLowerCase() == v.nt.toLowerCase() ){ + var _i = _e('i'); + _i.classList = 'fas fa-crown'; + _i.title = 'Amtierender Meister'; + td.append(_i); + } + + if( v.nt.toLowerCase() == MANAGERVOTING_TEAM ){ + var _i = _e('i'); + _i.classList = 'managervoted fas fa-thumbs-up'; + _i.title = 'Team der Saison, gewählt von den Managern'; + td.append(_i); + } + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((pokal>0) ? pokal : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((meistertitel>0) ? meistertitel : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((finalist>0) ? finalist : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((managervoted>0) ? managervoted : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b ); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = v[saison].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b ); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = v[saison].Tr.map( (a) => ( ( a == 'N') ? 1 : 0 ) ).reduce( (a,b) => a+b ); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerHTML = v[saison].Tr.map( (a) => '<'+a+'></'+a+'>' ).slice(-6).join(''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = v[saison].Tp+'/'+v[saison].Tn; + tr.append(td); + + var td = _e('td'); + td.classList = border + ' ' + ((v[saison].Td > 0 ) ? 'p' : (v[saison].Td == 0 ) ? 'u' : 'n'); + td.innerText = ((v[saison].Td > 0 ) ? '+' : '') + v[saison].Td; + tr.append(td); + + var td = _e('td'); + td.classList = border + ' ' + ((v[saison].Zwk > 0 ) ? 'p' : (v[saison].Zwk == 0 ) ? 'u' : 'n'); + td.innerText = (v[saison].Zwk > 0 ? '+' : '')+(v[saison].Zwk / S).toFixed(2); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = v[saison].P; + tr.append(td); + + $(tabelle).append(tr); + } + ); } ); @@ -744,15 +901,52 @@ function showLastResults(H,A){ teamHflag = teamH[0].flag ? teamH[0].flag : teamH[0].nt; var teamA=TEAMS.filter( (a) => ( a.nt == c.A ) ); teamAflag = teamA[0].flag ? teamA[0].flag : teamA[0].nt; - return '<tr>\ - <td>'+c.saison+'</td>\ - <td>'+c.runde+'</td>\ - <td><img class="flags" src="./images/flags/'+(( c.H == H ) ? teamHflag : teamAflag )+'.svg"></td>\ - <td><img class="flags" src="./images/flags/'+(( c.A == A ) ? teamAflag : teamHflag )+'.svg"></td>\ - <td><a href="https://ultrasoccer.de/match/?id='+c.MID+'" target="ultrasoccer">'+(( c.H == H ) ? c.TH : c.TA )+'</a></td>\ - <td>:</td>\ - <td><a href="https://ultrasoccer.de/match/?id='+c.MID+'" target="ultrasoccer">'+(( c.A == A ) ? c.TA : c.TH )+'</a></td>\ - </tr>'; + + var tr = _e('tr'); + + var td = _e('td'); + td.innerText = c.saison; + tr.append(td); + + var td = _e('td'); + td.innerText = c.runde; + tr.append(td); + + var td = _e('td'); + var img = _e('img'); + img.classList = 'flags'; + img.src = './images/flags/'+(( c.H == H ) ? teamHflag : teamAflag )+'.svg'; + td.append(img); + tr.append(td); + + var td = _e('td'); + var img = _e('img'); + img.classList = 'flags'; + img.src = './images/flags/'+(( c.A == A ) ? teamAflag : teamHflag )+'.svg'; + td.append(img); + tr.append(td); + + var td = _e('td'); + var _a = _e('a'); + _a.href = 'https://ultrasoccer.de/match/?id='+c.MID; + _a.target = 'ultrasoccer'; + _a.innerText = (( c.H == H ) ? c.TH : c.TA ); + td.append(_a); + tr.append(td); + + var td = _e('td'); + td.innerText = ':'; + tr.append(td); + + var td = _e('td'); + var _a = _e('a'); + _a.href = 'https://ultrasoccer.de/match/?id='+c.MID; + _a.target = 'ultrasoccer'; + _a.innerText = (( c.A == A ) ? c.TA : c.TH ); + td.append(_a); + tr.append(td); + + return tr; } ) ); @@ -779,20 +973,49 @@ function showLastResults(H,A){ ) ); - $('#lastresults table tbody').append( - '<tr class="lastresults_summe">\ - <td colspan="4">Tore</td><\ - <td>'+d.TH+'</td>\ - <td>:</td>\ - <td>'+d.TA+'</td>\ - </tr>\ - <tr class="lastresults_summe">\ - <td colspan="4">S/U/N</td><\ - <td>'+d.S+'</td>\ - <td>'+d.U+'</td>\ - <td>'+d.N+'</td>\ - </tr>' - ); + var tr = _e('tr'); + tr.classList = 'lastresults_summe'; + + var td = _e('td'); + td.colspan = 4; + td.innerText = 'Tore'; + tr.append(td); + + var td = _e('td'); + td.innerText = d.TH; + tr.append(td); + + var td = _e('td'); + td.innerText = ':'; + tr.append(td); + + var td = _e('td'); + td.innerText = d.TA; + tr.append(td); + + $('#lastresults table tbody').append(tr); + + var tr = _e('tr'); + tr.classList = 'lastresults_summe'; + + var td = _e('td'); + td.colspan = 4; + td.innerText = 'S/U/N'; + tr.append(td); + + var td = _e('td'); + td.innerText = d.S; + tr.append(td); + + var td = _e('td'); + td.innerText = d.U; + tr.append(td); + + var td = _e('td'); + td.innerText = d.N; + tr.append(td); + + $('#lastresults table tbody').append(tr); }