--- --- const DAY=24*3600*1000; var Grps=[]; 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; 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); } ); //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() ] ); } } var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Runde '+runde+(( Grps.length == 1 ) ? ' (Endrunde)' : '')+'</h3>'; $('#partien').append(tmp); if( runde == 1 ){ STARTLISTE_PARTIEN.forEach( function(v,i){ done.push( grpPartien(date,steps,saison,runde,i+1,v.slice(1)) ); steps+=v[0]; } ); } 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++; } } 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 ){ runde='VF'; var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Viertelfinale</h3>'; $('#partien').append(tmp); steps+=FINALS_STEP; done.push( grpPartien( date,steps,saison,runde, 1, [ 8,1, 7,2, 6,3, 5,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] ); } } 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 } ]; Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] ); } FINALTEAMS=4; } if( FINALTEAMS == 4 ){ runde='HF'; var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Halbfinale</h3>'; $('#partien').append(tmp); steps+=FINALS_STEP; done.push( grpPartien( date,steps,saison,runde, 1, [ 1,4, 2,3 ] ) ); } 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(); Grps.push( [ Tabelle.shift(), Tabelle.shift() ] ); done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); } } var St=0; function grpPartien( date,steps,saison,runde,spieltag,Bg ){ if( Grps.map( (a) => ( a.filter((b) => (b == undefined )).length > 0 ) )[0] ){ 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 partie=0; do { var h1 = Bg.shift()-1; var a1 = Bg.shift()-1; partie++; Grps.forEach( function(v,i){ 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 ); var dt=new Date(ergebnis.T).toJSON().slice(0,10); var st=STAT_SAISON.filter( (a) => ( a.MID == ergebnis.MID )).length == 12; ergebnis['partie']=partie; if( St != -1 ) St=spieltag; } 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=''; } 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 ); tmp+='</table>'; $('#partien').append(tmp); return done; } function getCsv(saison, runde, spieltag){ var tbl=$('.partien.s_'+saison+'.r_'+runde+'.t_'+spieltag)[0]; var csv= Object.values(tbl.rows).map( function(v,i){ var T=[]; T.push( runde ); T.push( spieltag ); T.push( v.cells[0].innerText.slice(0,10) ); T.push( v.cells[1].dataset.id ); T.push( v.cells[3].dataset.id ); T.push( v.cells[4].innerText ); T.push( v.cells[6].innerText ); T.push( v.cells[4].dataset.mid ); return T; } ).join('\n'); $('#copypaste').toggleClass('d-none'); $('#copypaste textarea').text('runde,spieltag,T,H,A,TH,TA,MID\n'+csv); } function calculatePunktestand(saison,runde,show=true){ $.each( TEAMS, function( i,v ){ //if( v[saison] == undefined ) TEAMS[i][saison] = { P: 0, Tp: 0, Tn: 0, Td: 0, Tr: ['X'], active: (( TEAMS[i].start <= saison )) } } ); ERGEBNISSE.filter( (a) => ( ( a.saison == saison || saison == 0 ) && $.isNumeric(a.runde) && a.runde <= runde ) ).forEach( function( v,i ){ var H=TEAMS.filter( (a) => (a.nt == v.H.toLowerCase()) ); var A=TEAMS.filter( (a) => (a.nt == v.A.toLowerCase()) ); if( H.length == 0 ){ alert('Error: Team mit Code '+v.H+' fehlt!!' ); return; } if( A.length == 0 ){ alert('Error: Team mit Code '+v.A+' fehlt!!' ); return; } H=H[0][saison]; A=A[0][saison]; //var H=DATA.teams[v.H][saison]; //var A=DATA.teams[v.A][saison]; if( v.TH == '-' || v.TA == '-' ) return; if( parseInt(v.TH) > parseInt(v.TA) ){ H.P+=3; H.Tr.push('S'); A.Tr.push('N'); } else if( parseInt(v.TH) < parseInt(v.TA) ){ A.P+=3; H.Tr.push('N'); A.Tr.push('S'); } else { H.P+=1; A.P+=1; H.Tr.push('U'); A.Tr.push('U'); } H.Tp+=parseInt(v.TH); H.Tn+=parseInt(v.TA); H.Td=H.Tp-H.Tn; A.Tp+=parseInt(v.TA); A.Tn+=parseInt(v.TH); A.Td=A.Tp-A.Tn; } ); var startliste=STARTLISTE.reduce((a,b)=>(a)); var Tabelle=Object.values(TEAMS).filter( (a) => ( ( a.start <= saison || saison == 0 ) && ( startliste.indexOf( a.nt ) > -2 || ( saison == 0 && a.nt != 'xx' ) ) ) ) .sort( function(a,b){ return a[saison].P < b[saison].P || ( a[saison].P == b[saison].P && a[saison].Td < b[saison].Td ) || ( a[saison].P == b[saison].P && a[saison].Td == b[saison].Td && a[saison].Tp < b[saison].Tp ) || ( a[saison].P == b[saison].P && a[saison].Td == b[saison].Td && a[saison].Tp == b[saison].Tp && a.nt > b.nt ) ? 1 : -1; } ).filter( function(b){ if( ! b[saison].active && saison != 0 ) return false; if( b[saison].P == 0 && b[saison].Tp == 0 && b[saison].Tn == 0 ) return false; //if( b.nt == 'xx' ) return false; return true; } ); if( !show ){ return Tabelle; } var tabelle='#tabelle_punktestand tbody'; $(tabelle).html(''); Tabelle.forEach( function(v,i){ var tmp='<td>'+(i+1)+'</td>'; var t=v[saison].Tr.map( (a) => ( a != 'X' ) ? 1 : 0 ); if( t.length == 0 ) t.push(0); tmp+='<td>'+t.reduce( (a,b) => a+b )+'</td>'; tmp+='<td><img class="flags" src="./images/flags/'+(( v.flag ) ? v.flag : v.nt.toLowerCase())+'.svg"> <a href="javascript:calculateTeam('+((saison == 0) ? 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></td>'; tmp+='<td>'+ERGEBNISSE.filter((a) => ( 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+'</td>'; tmp+='<td>'+calculateAllPunktestand().filter((a) => ( a[0].nt == v.nt.toLowerCase() ) ).length+'</td>'; tmp+='<td>'+( calculateAllPunktestand().filter((a) => ( a[1].nt == v.nt.toLowerCase() ) ).length + ERGEBNISSE.filter((a) => ( a.runde=='F' && ( a.H.toLowerCase() == v.nt.toLowerCase() && a.TH < a.TA || a.A.toLowerCase() == v.nt.toLowerCase() && a.TH > a.TA ) ) ).length )+'</td>'; tmp+='<td>'+v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'</td>'; tmp+='<td>'+v[saison].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'</td>'; tmp+='<td>'+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>'+hist+'</td>'; tmp+='<td>'+v[saison].Tp+'/'+v[saison].Tn+'</td>'; tmp+='<td class="'+((v[saison].Td > 0 ) ? 'p' : (v[saison].Td == 0 ) ? 'u' : 'n')+'">'+((v[saison].Td > 0 ) ? '+' : '') + v[saison].Td+'</td>'; tmp+='<td>'+v[saison].P+'</td>'; $(tabelle).append('<tr>'+tmp+'</tr>'); } ); } function calculateTore(saison){ var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON; var n=Object.entries( STATISTIK ).sort( function(a,b){ return ( ( a[1].T < b[1].T || ( a[1].T == b[1].T && a[1].S > b[1].S ) ) ? 1 : -1 ) } ).slice(0,10).map( function(v,i){ var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) ); if( team.length == 0 ){ var team_flag='<img class="flags" src="./images/flags/xx.svg" title="n/a">'; var team_name=''; } else { var team_flag='<img class="flags" src="./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">'; var team_name='<a href="javascript:calculateTeam('+saison+',\''+team[0].nt+'\')">'+team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup></a>')+' <a href="'+team[0].link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>'; } var attr=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' '); return '<td>'+ [ i+1, (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0), team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ), team_name, v[1].T ].join('</td><td>')+'</td>'; } ); $('#tabelle_tore tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' ); } function calculateAssists(saison){ var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON; var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1].A < b[1].A || ( a[1].A == b[1].A && a[1].S > b[1].S ) ) ? 1 : -1 ).slice(0,10).map( function(v,i){ var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) ); if( team.length == 0 ){ var team_flag='<img class="flags" src="./images/flags/xx.svg" title="n/a">'; var team_name=''; } else { var team_flag='<img class="flags" src="./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">'; var team_name='<a href="javascript:calculateTeam('+saison+',\''+team[0].nt+'\')">'+team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup></a>')+' <a href="'+team[0].link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>'; } var attr=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' '); return '<td>'+ [ i+1, (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0), team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ), team_name, v[1].A ].join('</td><td>')+'</td>'; } ); $('#tabelle_assists tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' ); } function calculateZwk(saison){ var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON; var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1].Z < b[1].Z || ( a[1].Z == b[1].Z && a[1].S > b[1].S ) ) ? 1 : -1 ).slice(0,10).map( function(v,i){ var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) ); if( team.length == 0 ){ var team_flag='<img class="flags" src="./images/flags/xx.svg" title="n/a">'; var team_name=''; } else { var team_flag='<img class="flags" src="./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">'; var team_name='<a href="javascript:calculateTeam('+saison+',\''+team[0].nt+'\')">'+team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup></a>')+' <a href="'+team[0].link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>'; } var attr=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' '); return '<td>'+ [ i+1, (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0), team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ), team_name, (( v[1].Z > 0 ) ? '+' : '' )+v[1].Z ].join('</td><td>')+'</td>'; } ); $('#tabelle_zweikampf tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' ); } function calculateTeam(saison,nt){ var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON; var n=SPIELER.filter( (a) => ( a.nt == nt ) ).map( (b) => ( STATISTIK[b.id] ) ).filter( (c) => ( c !== undefined ) ).map( function(v){ var team=TEAMS.filter( (a) => ( a.nt == v.nt ) ); if( team.length == 0 ){ var team_flag='<img class="flags" src="./images/flags/xx.svg" title="n/a">'; var team_name=''; } else { var team_flag='<img class="flags" src="./images/flags/'+team[0].nt+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">'; var team_name='<a href="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</a>'; } var attr=((v.attr != undefined) ? v.attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' '); var tmp=''; tmp+='<td>'+team_flag+' '+attr+' '+v.name+'</td>'; tmp+='<td>'+(v.age*1+saison*1-v.age_saison)+'</td>'; tmp+='<td>'+v.S+'/'+v.T+'/'+v.A+'</td>'; tmp+='<td class="'+(( v.Z > 0 ) ? 'p' : (( v.Z < 0 ) ? 'n' : 'u' ) )+'">'+v.Zpos+'/'+v.Zneg+'</td>'; return tmp; } ); $('table.tabelle').toggleClass('d-none',true); $('#tabelle_team').toggleClass('d-none',false); $('#tabelle_team tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' ); } function calculateEwige(){ calculatePunktestand(0,'7'); calculateTore(0); calculateAssists(0); calculateZwk(0); $('button.active').toggleClass('active',false); $('#ewige').toggleClass('active',true); $('table.tabelle').toggleClass('d-none',true); $('#tabelle_punktestand').toggleClass('d-none'); $('h4.tabelle > button.punktestand').toggleClass('active',true); $('h4.tabelle').toggleClass('d-none',false); } function backToActiveTable(){ $('table.tabelle').toggleClass('d-none',true); $('#tabelle_'+ $('button.active').text().toLowerCase() ).toggleClass('d-none'); } function calculateHistorie(){ $('#tabelle_historie thead tr').html('<th>Pl.</th>'); var T=[]; for( var i=0; i<=SAISON_NOW-26; i++){ $('#tabelle_historie thead tr').append('<th>'+(i+1)+'<sup>'+(i+26)+'</sup></th>'); T.push(calculatePunktestand(i+26,7,false)); } $('#tabelle_historie thead tr').append('<th class="rest"></th>'); var masters=ERGEBNISSE.filter((a) => ( a.runde == 'F' )).map((a) => (a.TH*1 > a.TA*1 ? a.H.toLowerCase(): a.A.toLowerCase() )); var mx=T.map((a)=>(a.length)).reduce((a,b) => (Math.max(a,b))); var tmp=''; for( var p=0; p<mx; p++ ){ tmp+='<tr><td>'+(p+1)+'</td>'; for( var i=0; i<=SAISON_NOW-26; i++){ var nt=T[i][p] != undefined ? T[i][p].nt : undefined; tmp+='<td class="'+(( masters[i] == nt && nt != undefined ) ? 'master ' : '')+(( SAISON_SETTINGS[i] == p+1 ) ? 'dashed ' : '')+'">'+(( nt != undefined ) ? '<img class="flags" title="'+T[i][p].name+'" src="./images/flags/'+(( T[i][p].flag ) ? T[i][p].flag : T[i][p].nt.toLowerCase())+'.svg">' : '')+'</td>'; } tmp+='</tr>'; } $('#tabelle_historie tbody').html(tmp); $('table.tabelle').toggleClass('d-none',true); $('#tabelle_historie').toggleClass('d-none',false); $('button.active').toggleClass('active',false); $('#historie').toggleClass('active',true); $('h4.tabelle').toggleClass('d-none',true); } var R=undefined; function showLastResults(H,A){ $('#lastresults').toggleClass('d-none',false); R=ERGEBNISSE.filter((a) => ( a.H==H && a.A==A || a.A==H && a.H==A) ).slice(-5); $('#lastresults table tbody').html(R.map( (c) => ( '<tr>\ <td>'+c.saison+'</td>\ <td>'+c.runde+'</td>\ <td><img class="flags" src="./images/flags/'+(( c.H == H ) ? c.H : c.A )+'.svg"></td>\ <td><img class="flags" src="./images/flags/'+(( c.A == A ) ? c.A : c.H )+'.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 d=R.map( (a) => ( { 'TH' : (( a.H == H ) ? parseInt(a.TH) : parseInt(a.TA)), 'TA' : (( a.A == A ) ? parseInt(a.TA) : parseInt(a.TH)), 'S' : (( a.H == H ) ? parseInt(a.TH) > parseInt(a.TA) : parseInt(a.TA) > parseInt(a.TH)) ? 1 : 0, 'U' : parseInt(a.TH) == parseInt(a.TA) ? 1 : 0, 'N' : (( a.H == H ) ? parseInt(a.TH) < parseInt(a.TA) : parseInt(a.TA) < parseInt(a.TH)) ? 1 : 0 } ) ).reduce( (sum,val) => ( sum.TH += val.TH, sum.TA += val.TA, sum.S += val.S, sum.U += val.U, sum.N += val.N, sum ) ); $('#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>' ); console.log( 'III',d ) } var ignore_hidelastresults=false; function hideLastResults(force=false){ if( !ignore_hidelastresults || force ) $('#lastresults').toggleClass('d-none',true); if( force ) ignore_hidelastresults=false; } function ignoreHideLastResults(){ ignore_hidelastresults=true; } function calculateAllPunktestand(){ var T=[]; for( var i=0; i<=SAISON_NOW-26; i++){ if( ERGEBNISSE.filter((a) => ( a.runde=='F' && a.saison==i+26 )).length == 1 ){ T.push( JSON.parse(JSON.stringify( calculatePunktestand(i+26,7,false) )) ); } } return T; }