Newer
Older
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();
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 );
var Tabelle = calculatePunktestand( saison, runde, false );
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
} 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
}
]
}
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;
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);
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 ]) );
}
}
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;
}
tmp+='<h4 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+'">';
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;
} else {
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].nt.toLowerCase()+'.svg"></td>';
tmp+='<td> - </td>';
tmp+='<td data-id="'+v[a1].nt+'"><img class="flags" src="./images/flags/'+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>:</td>';
tmp+='<td>'+ta+'</td>';
tmp+='</tr>';
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
);
} 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);
}
$.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');
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(TEAMS).filter( (a) => ( ( a.start <= saison || saison == 0 ) && ( startliste.indexOf( a.nt ) > -1 || ( 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;
}
);
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.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>'+
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 class="'+((v[saison].Td > 0 ) ? 'p' : (v[saison].Td == 0 ) ? 'u' : 'n')+'">'+((v[saison].Td > 0 ) ? '+' : '') + v[saison].Td+'</td>';
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(
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].nt+'.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*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].nt+'.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*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].nt+'.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*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
].join('</td><td>')+'</td>';
}
);
$('#tabelle_zweikampf tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
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(' ');
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');
$('h2.tabelle > button.punktestand').toggleClass('active',true);
}