diff --git a/html/26.html b/html/26.html index fd6055c8be5cd91987ed24be7a069bd07e5a8494..050c353eb34d357cb3e1ce3ddd5d4608edc39b2b 100644 --- a/html/26.html +++ b/html/26.html @@ -1,6 +1,7 @@ --- saison: '26' date: '2021-10-11' +ligaspieltag: 17 step: 1 finals_step: 2 --- @@ -11,7 +12,7 @@ finals_step: 2 <head> <link rel="stylesheet" href="assets/css/custom.css"> <script src="assets/js/jquery.min.js"></script> - <script src="assets/js/script.js"></script> + <script src="assets/js/script26.js"></script> </head> <body> @@ -21,6 +22,7 @@ finals_step: 2 var DATA={{ site.data | jsonify }}; const STEP={{ page.step | default: '1' }}; const FINALS_STEP={{ page.finals_step | default: '0' }}; + const LIGASPIELTAG={{ page.ligaspieltag : default: '1' }}; $(document).ready( function(){ calculatePartien('{{ page.saison }}', '{{ page.date }}'); calculateTabelle('{{ page.saison }}', '7'); diff --git a/html/27.html b/html/27.html new file mode 100644 index 0000000000000000000000000000000000000000..5e95483a3d13bf4486885a010966fd528b2f0e23 --- /dev/null +++ b/html/27.html @@ -0,0 +1,60 @@ +--- +saison: '27' +date: '2021-11-16T10:00Z' +ligaspieltag: 18 +step: 1 +finals_step: 2 +--- + +<!DOCTYPE html> +<html> + +<head> + <link rel="stylesheet" href="assets/css/custom.css"> + <script src="assets/js/jquery.min.js"></script> + <script src="assets/js/script27.js"></script> +</head> + +<body> + + <script> + + var DATA={{ site.data | jsonify }}; + delete DATA.teams.XX; + const STEP={{ page.step | default: '1' }}; + const FINALS_STEP={{ page.finals_step | default: '0' }}; + const LIGASPIELTAG={{ page.ligaspieltag : default: '1' }}; + $(document).ready( function(){ + calculatePartien('{{ page.saison }}', '{{ page.date }}'); + calculateTabelle('{{ page.saison }}', '7'); + } + ); + + </script> + + <div id="partien" class="div_left"> + </div> + + <div class="div_right"> + <h2 class="tabelle">Tabelle</h2> + <table id="tabelle" class="tabelle"> + <thead> + <tr> + <th>Pl.</th> + <th>Sp.</th> + <th>Team</th> + <th>S/U/N</th> + <th>Hist.</th> + <th>Tore</th> + <th>Dif</th> + <th>Pkt.</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + +</body> + +</html> diff --git a/html/_data/teams/CO.yml b/html/_data/teams/CO.yml new file mode 100644 index 0000000000000000000000000000000000000000..927f003bb6d006287bfd6afb94035c0d3e109889 --- /dev/null +++ b/html/_data/teams/CO.yml @@ -0,0 +1,6 @@ +kontinent: Südamerika +id: CO +name: Kolumbien (NL) +link: 'https://ultrasoccer.de/players/?id=1374' +manager: J.. +start: 27 diff --git a/html/_data/teams/CZ.yml b/html/_data/teams/CZ.yml new file mode 100644 index 0000000000000000000000000000000000000000..f809b05b0dc7281e6d6b0ce934a7a883cff54f52 --- /dev/null +++ b/html/_data/teams/CZ.yml @@ -0,0 +1,6 @@ +kontinent: Europa +id: CZ +name: Tschechien (NL) +link: 'https://ultrasoccer.de/players/?id=1538' +manager: Skiller09 +start: 27 diff --git a/html/_data/teams/FR.yml b/html/_data/teams/FR.yml new file mode 100644 index 0000000000000000000000000000000000000000..393772d47f9260bfc751fbb34178a44c4734f465 --- /dev/null +++ b/html/_data/teams/FR.yml @@ -0,0 +1,6 @@ +kontinent: Europa +id: FR +name: Frankreich (NL) +link: 'https://ultrasoccer.de/players/?id=2685' +manager: Schmetterling +start: 27 diff --git a/html/_data/teams/HU.yml b/html/_data/teams/HU.yml new file mode 100644 index 0000000000000000000000000000000000000000..3ac8db69b091ef59f8cfcd6b12cbeee6811789ec --- /dev/null +++ b/html/_data/teams/HU.yml @@ -0,0 +1,6 @@ +kontinent: Europa +id: HU +name: Ungarn (NL) +link: 'https://ultrasoccer.de/players/?id=2663' +manager: 'Michel:-)' +start: 27 diff --git a/html/_data/teams/IT.yml b/html/_data/teams/IT.yml new file mode 100644 index 0000000000000000000000000000000000000000..947ff375baa8be70b8d9f548410f069278eb84ba --- /dev/null +++ b/html/_data/teams/IT.yml @@ -0,0 +1,6 @@ +kontinent: Europa +id: IT +name: Italien (NL) +link: '' +manager: Hans Eckenpower +start: 27 diff --git a/html/_data/teams/PL.yml b/html/_data/teams/PL.yml new file mode 100644 index 0000000000000000000000000000000000000000..5bd41bf2509a59b9fec35b55c074f617d5eb0716 --- /dev/null +++ b/html/_data/teams/PL.yml @@ -0,0 +1,6 @@ +kontinent: Europa +id: PL +name: Polen (NL) +link: 'https://ultrasoccer.de/players/?id=1019' +manager: M. de Biel +start: 27 diff --git a/html/assets/css/custom.scss b/html/assets/css/custom.scss index cd5000cf4000ffc251ac677f2de4496e2fe4b651..bec28137c11c24eb7e384a6868e67d5c737057ad 100644 --- a/html/assets/css/custom.scss +++ b/html/assets/css/custom.scss @@ -122,7 +122,7 @@ n { } tr.begegnungen { - &:nth-child(4n+1), &:nth-child(4n+2){ + &:nth-child(4n+1), &:nth-child(4n+3){ background: ghostwhite; } td a { diff --git a/html/assets/js/script26.js b/html/assets/js/script26.js new file mode 100644 index 0000000000000000000000000000000000000000..75fdab2c093e851153fe5c2ca6db39c85c22fae4 --- /dev/null +++ b/html/assets/js/script26.js @@ -0,0 +1,289 @@ +const DAY=24*3600*1000; + +function calculateTabelle(saison,runde,show=true){ + + $.each( DATA.teams, + function( i,v ){ + //if( v[saison] == undefined ) + DATA.teams[i][saison] = { P: 0, Tp: 0, Tn: 0, Td: 0, Tr: ['X'], active: (( DATA.teams[i].start <= saison )) } + } + ); + + $.each( ( ( DATA.ergebnisse[saison] != undefined ) ? DATA.ergebnisse[saison] : {} ), + function(k,z){ + $.each(z, + function(j,w){ + w.forEach( + function( v,i ){ + if( runde < k || !$.isNumeric(k) ) return; + var H=DATA.teams[v.H][saison]; + var A=DATA.teams[v.A][saison]; + 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 Tabelle=Object.values(DATA.teams).filter( (a) => ( a.start <= saison ) ) + .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.id > b.id ) ? 1 : -1; + } + ); + + if( !show ){ + return Tabelle; + } + + $('#tabelle tbody').html(''); + + Tabelle.forEach( + function(v,i){ + if( ! v[saison].active ) return; + 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.id.toLowerCase()+'.svg"> <a href="'+v.link+'" target="ultrasoccer">'+v.name.replace(/\(NL\)/g,'<sup>'+v.id+'</sup>')+'</a></td>'; + tmp+='<td>'+ + v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'/'+ + v[saison].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'/'+ + 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>'+v[saison].Td+'</td>'; + tmp+='<td>'+v[saison].P+'</td>'; + $('#tabelle tbody').append('<tr>'+tmp+'</tr>') + } + ); + +} + + +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++; + // kalkuliere Tabelle der vergangenen Saison + var Tabelle=calculateTabelle( ( parseInt(saison)-(( runde == 1 ) ? 0 : 0 ) ).toString(), ((runde == 1) ? 7 : runde-1 ) , false); + // stelle die 4er Gruppen zusammen + + Grps=[] + if( runde == 1 ){ + Grps.push( Object.values( DATA.teams ).filter( (c) => c.start<=saison ).sort( (a,b) => ( b.id < a.id ) ? 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 ){ + + done.push( grpPartien(date,steps,saison,runde,1,[ 1,2, 4,3 ]) ); steps++; + done.push( grpPartien(date,steps,saison,runde,2,[ 1,4, 2,3 ]) ); steps++; + done.push( grpPartien(date,steps,saison,runde,3,[ 1,3, 2,4 ]) ); steps++; + 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 = calculateTabelle( saison, runde, false ); + + } else { + + var Tabelle = [ + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 1</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 2</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 3</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 4</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ] + + } + + Grps.shift(); + Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] ); + + 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 p1=DATA.ergebnisse[saison][runde][1][0]; + if( p1.TH >= p1.TA ){ Grps[0].push( DATA.teams[p1.H] ); } else { Grps[0].push( DATA.teams[p1.A] ); } + + var p2=DATA.ergebnisse[saison][runde][1][1]; + if( p2.TH >= p2.TA ){ Grps[0].push( DATA.teams[p2.H] ); } else { Grps[0].push( DATA.teams[p2.A] ); } + + + 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', + 'id': 'XX', + 'name': '<i>Sieger 1/4</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Sieger 2/3</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ]; + + Grps.shift(); + + Grps.push( [ Tabelle.shift(), Tabelle.shift() ] ); + + done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); + + } + + +} + + +function grpPartien( date,steps,saison,runde,spieltag,Bg ){ + + var done=true; + + var tmp=''; + tmp+='<h4 class="spieltag s_'+saison+' r_'+runde+' t_'+spieltag+'">Spieltag '+spieltag+'</h4>'; + tmp+='<table class="partien s_'+saison+' r_'+runde+' t_'+spieltag+'">'; + + do { + var h1 = Bg.shift()-1; + var a1 = Bg.shift()-1; + Grps.forEach( + function(v,i){ + + if( h1 == -1 || a1 == -1 ) return; + + if( DATA.ergebnisse[saison] == undefined ){ + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; + } else if( DATA.ergebnisse[saison][runde] == undefined ){ + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; + } else if( DATA.ergebnisse[saison][runde][spieltag] == undefined ){ + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; + } else { + var result=DATA.ergebnisse[saison][runde][spieltag].filter( (a) => ( a.H == v[h1].id && a.A == v[a1].id ) )[0]; + + var th=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TH+'</a>' : result.TH ) : '-' ); + var ta=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TA+'</a>' : result.TA ) : '-' ); + var dt=(( result != undefined ) ? new Date(result.T).toJSON().slice(0,10) : '<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i>' ); + if( result == undefined ) done=false; + } + + tmp+='<tr class="begegnungen h_'+v[h1].id+' a_'+v[a1].id+'">'; + tmp+='<td>'+dt+'</td>'; + tmp+='<td><sup>'+v[h1].id+'</sup> '+v[h1].name.replace(/\(NL\)/g,'')+' <img class="flags" src="./images/flags/'+v[h1].id.toLowerCase()+'.svg"></td>'; + tmp+='<td> - </td>'; + tmp+='<td><img class="flags" src="./images/flags/'+v[a1].id.toLowerCase()+'.svg"> '+v[a1].name.replace(/\(NL\)/g,'')+' <sup>'+v[a1].id+'</sup></td>'; + + tmp+='<td>'+th+'</td>'; + tmp+='<td>:</td>'; + tmp+='<td>'+ta+'</td>'; + tmp+='</tr>'; + + } + ); + } while( Bg.length > 0 ); + + + tmp+='</table>'; + $('#partien').append(tmp); + + return done; +} diff --git a/html/assets/js/script27.js b/html/assets/js/script27.js new file mode 100644 index 0000000000000000000000000000000000000000..9130dbba2dbeac80b56f5dd6a2194149d05b02fd --- /dev/null +++ b/html/assets/js/script27.js @@ -0,0 +1,291 @@ +const DAY=24*3600*1000; + +function calculateTabelle(saison,runde,show=true){ + + $.each( DATA.teams, + function( i,v ){ + //if( v[saison] == undefined ) + DATA.teams[i][saison] = { P: 0, Tp: 0, Tn: 0, Td: 0, Tr: ['X'], active: (( DATA.teams[i].start <= saison )) } + } + ); + + $.each( ( ( DATA.ergebnisse[saison] != undefined ) ? DATA.ergebnisse[saison] : {} ), + function(k,z){ + $.each(z, + function(j,w){ + w.forEach( + function( v,i ){ + if( runde < k || !$.isNumeric(k) ) return; + var H=DATA.teams[v.H][saison]; + var A=DATA.teams[v.A][saison]; + 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 Tabelle=Object.values(DATA.teams).filter( (a) => ( a.start <= saison+1 ) ) + .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.id > b.id ) ? 1 : -1; + } + ); + + if( !show ){ + return Tabelle; + } + + $('#tabelle tbody').html(''); + + Tabelle.forEach( + function(v,i){ + if( ! v[saison].active ) return; + 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.id.toLowerCase()+'.svg"> <a href="'+v.link+'" target="ultrasoccer">'+v.name.replace(/\(NL\)/g,'<sup>'+v.id+'</sup>')+'</a></td>'; + tmp+='<td>'+ + v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'/'+ + v[saison].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'/'+ + 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>'+v[saison].Td+'</td>'; + tmp+='<td>'+v[saison].P+'</td>'; + $('#tabelle tbody').append('<tr>'+tmp+'</tr>') + } + ); + +} + + +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++; + // kalkuliere Tabelle der vergangenen Saison + var Tabelle=calculateTabelle( ( parseInt(saison)-(( runde == 1 ) ? 0 : 0 ) ).toString(), ((runde == 1) ? 7 : runde-1 ) , false); + // stelle die 4er Gruppen zusammen + + Grps=[] + if( runde == 1 ){ + Grps.push( Object.values( DATA.teams ).sort( (a,b) => ( b.id < a.id ) ? 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 ){ + + done.push( grpPartien(date,steps,saison,runde,1,[ 2,9, 3,8, 4,7, 5,6 ]) ); steps++; + done.push( grpPartien(date,steps,saison,runde,2,[ 1,2, 9,3, 8,4, 7,5 ]) ); steps+=2; + done.push( grpPartien(date,steps,saison,runde,3,[ 1,3, 4,9, 5,8, 6,7 ]) ); steps++; + done.push( grpPartien(date,steps,saison,runde,4,[ 1,4, 2,3, 9,5, 6,8 ]) ); steps+=2; + done.push( grpPartien(date,steps,saison,runde,5,[ 5,1, 2,4, 6,9, 7,8 ]) ); steps++; + done.push( grpPartien(date,steps,saison,runde,6,[ 1,6, 2,5, 3,4, 7,9 ]) ); steps+=2; + done.push( grpPartien(date,steps,saison,runde,7,[ 7,1, 6,2, 3,5, 8,9 ]) ); steps++; + done.push( grpPartien(date,steps,saison,runde,8,[ 8,1, 2,7, 3,6, 4,5 ]) ); steps+=2; + done.push( grpPartien(date,steps,saison,runde,9,[ 9,1, 8,2, 3,7, 4,6 ]) ); + + } + + } while( done.reduce( (a,b) => a && b ) == true && Grps.length > 1 ); + + if( done.reduce( (a,b) => a && b ) == true ){ + + var Tabelle = calculateTabelle( saison, runde, false ); + + } else { + + var Tabelle = [ + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 1</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 2</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 3</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Platz 4</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ] + + } + + Grps.shift(); + Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] ); + + 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 p1=DATA.ergebnisse[saison][runde][1][0]; + if( p1.TH >= p1.TA ){ Grps[0].push( DATA.teams[p1.H] ); } else { Grps[0].push( DATA.teams[p1.A] ); } + + var p2=DATA.ergebnisse[saison][runde][1][1]; + if( p2.TH >= p2.TA ){ Grps[0].push( DATA.teams[p2.H] ); } else { Grps[0].push( DATA.teams[p2.A] ); } + + + 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', + 'id': 'XX', + 'name': '<i>Sieger 1/4</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + }, + { + 'kontinent' : 'dummy', + 'id': 'XX', + 'name': '<i>Sieger 2/3</i>', + 'link': '', + 'manager': 'dummy', + 'start': 27 + } + ]; + + Grps.shift(); + + Grps.push( [ Tabelle.shift(), Tabelle.shift() ] ); + + done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); + + } + + +} + + +function grpPartien( date,steps,saison,runde,spieltag,Bg ){ + + var done=true; + + var tmp=''; + tmp+='<h4 class="spieltag s_'+saison+' r_'+runde+' t_'+spieltag+'">Spieltag '+spieltag+'</h4>'; + tmp+='<table class="partien s_'+saison+' r_'+runde+' t_'+spieltag+'">'; + + do { + var h1 = Bg.shift()-1; + var a1 = Bg.shift()-1; + Grps.forEach( + function(v,i){ + + if( h1 == -1 || a1 == -1 ) return; + + if( DATA.ergebnisse[saison] == undefined ){ + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; + } else if( DATA.ergebnisse[saison][runde] == undefined ){ + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; + } else if( DATA.ergebnisse[saison][runde][spieltag] == undefined ){ + var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; + } else { + var result=DATA.ergebnisse[saison][runde][spieltag].filter( (a) => ( a.H == v[h1].id && a.A == v[a1].id ) )[0]; + + var th=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TH+'</a>' : result.TH ) : '-' ); + var ta=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TA+'</a>' : result.TA ) : '-' ); + var dt=(( result != undefined ) ? new Date(result.T).toJSON().slice(0,10) : '<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i>' ); + if( result == undefined ) done=false; + } + + tmp+='<tr class="begegnungen h_'+v[h1].id+' a_'+v[a1].id+'">'; + tmp+='<td>'+dt+'</td>'; + tmp+='<td><sup>'+v[h1].id+'</sup> '+v[h1].name.replace(/\(NL\)/g,'')+' <img class="flags" src="./images/flags/'+v[h1].id.toLowerCase()+'.svg"></td>'; + tmp+='<td> - </td>'; + tmp+='<td><img class="flags" src="./images/flags/'+v[a1].id.toLowerCase()+'.svg"> '+v[a1].name.replace(/\(NL\)/g,'')+' <sup>'+v[a1].id+'</sup></td>'; + + tmp+='<td>'+th+'</td>'; + tmp+='<td>:</td>'; + tmp+='<td>'+ta+'</td>'; + tmp+='</tr>'; + + } + ); + } while( Bg.length > 0 ); + + + tmp+='</table>'; + $('#partien').append(tmp); + + return done; +}