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 );
65
66
67
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
if( done.reduce( (a,b) => a && b ) == true ){
var Tabelle = calculateTabelle( 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
}
]
}
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.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
246
247
248
249
250
251
252
253
);
} 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 calculateTabelle(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');
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 tabelle=( saison == '0' ) ? '#tabelle_ewige tbody' : '#tabelle_punktestand tbody';
$(tabelle).html('');
console.log( tabelle, saison, Tabelle )
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+',\''+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 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].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>';
}
return '<td>'+
[
i+1,
(( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
team_flag+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+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 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>';
}
return '<td>'+
[
i+1,
(( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
team_flag+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+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 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>';
}
return '<td>'+
[
i+1,
(( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
team_flag+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
team_name,
].join('</td><td>')+'</td>';
}
);
$('#tabelle_zweikampf tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
function calculateTeam(saison,nt){
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 tmp='';
tmp+='<td>'+team_flag+' '+v.name+'</td>';
tmp+='<td>'+(v.age+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 backToActiveTable(){
$('table.tabelle').toggleClass('d-none',true);
$('#tabelle_'+ $('button.active').text().toLowerCase() ).toggleClass('d-none');
}