From 1dedd8a60e6ff2f6d91ae5893fb0eaacfde6424a Mon Sep 17 00:00:00 2001 From: Tony Ford <tonyford@strategy-investor.de> Date: Thu, 12 Sep 2024 19:25:56 +0200 Subject: [PATCH] Optimierungen --- html/_layouts/default.php | 8 ++- html/assets/css/custom.scss | 5 ++ html/assets/js/script.js | 133 +++++++++++++++++++++--------------- 3 files changed, 89 insertions(+), 57 deletions(-) diff --git a/html/_layouts/default.php b/html/_layouts/default.php index b12f083..de3353b 100644 --- a/html/_layouts/default.php +++ b/html/_layouts/default.php @@ -82,6 +82,7 @@ if( !empty($csv) ){ T2ID[v.nt] = v.id; } ); + var STARTLISTE={{ page.startliste | jsonify }}; {% assign startliste_size = page.startliste[0] | size | append: '' %} var STARTLISTE_PARTIEN={{ site.data.partien | map: startliste_size | jsonify }}[0]; var STARTLISTE_PARTIEN_PAUSE={{ page.startliste_partien_pause | jsonify }}; @@ -132,7 +133,7 @@ if( !empty($csv) ){ STAT_ALL.forEach( function(v,i){ if( STATISTIK_ALL[v.SpielerID] == undefined ) STATISTIK_ALL[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 0, 'Zpos' : 0, 'Zneg' : 0, 'MID' : [], 'face' : '' }; - STATISTIK_ALL[v.SpielerID].S++; + STATISTIK_ALL[v.SpielerID].S+=v.Spiele*1; STATISTIK_ALL[v.SpielerID].T+=v.Tore*1; STATISTIK_ALL[v.SpielerID].A+=v.Assists*1; STATISTIK_ALL[v.SpielerID].Z+=v.Zwk*1; @@ -428,8 +429,11 @@ if( !empty($csv) ){ <th>Nt</th> <th>Spieler</th> <th>Alter</th> - <th>S/T/A</th> + <th>S</th> + <th>T</th> + <th>A</th> <th>Zwk</th> + <th></th> </tr> </thead> <tbody> diff --git a/html/assets/css/custom.scss b/html/assets/css/custom.scss index c3edab2..1295d86 100644 --- a/html/assets/css/custom.scss +++ b/html/assets/css/custom.scss @@ -263,6 +263,11 @@ tr.stats { &:nth-child(1) { width: 20px; } &:nth-child(2) { width: 30px; } &:nth-child(3) { width: 270px; } + &:nth-child(4) { width: 60px; } + &:nth-child(5) { width: 30px; text-align: right; } + &:nth-child(6) { width: 30px; text-align: right; } + &:nth-child(7) { width: 30px; text-align: right; } + &:nth-child(8) { width: 100px; text-align: center; } /* &:nth-child(4) { width: 50px; } */ } } diff --git a/html/assets/js/script.js b/html/assets/js/script.js index 13f0b9b..e7edfa7 100644 --- a/html/assets/js/script.js +++ b/html/assets/js/script.js @@ -25,7 +25,8 @@ function calculatePartien(saison,date){ var G=[]; g.forEach( function(v){ - G.push( TEAMS.filter( (a) => (a.nt == v) )[0] ); + //G.push( TEAMS.filter( (a) => (a.nt == v) )[0] ); + G.push( TEAMS.filter( (a) => (a.nt == v) ).map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))[0] ); } ); Grps.push(G); @@ -134,6 +135,7 @@ function calculatePartien(saison,date){ ); } } else if ( FINALTEAMS > 4 ){ + if( VFdone ){ } else { var Tabelle = []; @@ -268,7 +270,7 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ 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() ) ); + var ergebnis=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == spieltag && a.H.toLowerCase() == v[h1][0].nt.toLowerCase() && a.A.toLowerCase() == v[a1][0].nt.toLowerCase() ) ); if( ergebnis.length == 1 ){ @@ -280,7 +282,8 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ 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] ); + //done.push( th > ta ? TEAMS.filter((a) => (a.nt == ergebnis.H ))[0] : TEAMS.filter((a) => (a.nt == ergebnis.A ))[0] ); + done.push( th > ta ? Object.values(TEAMS).filter( (a) => ( ( a.nt == ergebnis.H ) ) ).map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))[0] : Object.values(TEAMS).filter( (a) => ( ( a.nt == ergebnis.A ) ) ).map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))[0] ); } else { done = true; } @@ -300,24 +303,24 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ } var tr = _e('tr'); - tr.classList = 'begegnungen ' + (( STARTLISTE.length > 1 ) ? 'gruppe' + i : '' ) + ' h_'+v[h1].nt+' a_'+v[a1].nt+' '+(( st ) ? 'stats' : ''); + tr.classList = 'begegnungen ' + (( STARTLISTE.length > 1 ) ? 'gruppe' + i : '' ) + ' h_'+v[h1][0].nt+' a_'+v[a1][0].nt+' '+(( st ) ? 'stats' : ''); var td = _e('td'); td.innerHTML = dt; tr.append(td); var td = _e('td'); - $(td).attr('data-id',v[h1].nt); + $(td).attr('data-id',v[h1][0].nt); var sup = _e('sup'); - sup.innerHTML = v[h1].nt.toUpperCase(); + sup.innerHTML = v[h1][0].nt.toUpperCase(); td.append(sup); var span = _e('span') - span.innerHTML = ' '+v[h1].name.replace(/\(NL\)/g,'')+' '; + span.innerHTML = ' '+v[h1][0].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'; + img.src = './images/flags/'+(( v[h1][0].flag ) ? v[h1][0].flag : v[h1][0].nt.toLowerCase())+'.svg'; td.append(img); tr.append(td); @@ -326,18 +329,18 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ tr.append(td); var td = _e('td'); - $(td).attr('data-id',v[a1].nt); + $(td).attr('data-id',v[a1][0].nt); var img = _e('img'); img.classList = 'flags'; - img.src = './images/flags/'+(( v[a1].flag ) ? v[a1].flag : v[a1].nt.toLowerCase())+'.svg'; + img.src = './images/flags/'+(( v[a1][0].flag ) ? v[a1][0].flag : v[a1][0].nt.toLowerCase())+'.svg'; td.append(img); var span = _e('span') - span.innerHTML = ' '+v[a1].name.replace(/\(NL\)/g,'')+' '; + span.innerHTML = ' '+v[a1][0].name.replace(/\(NL\)/g,'')+' '; td.append(span); var sup = _e('sup'); - sup.innerHTML = v[a1].nt.toUpperCase(); + sup.innerHTML = v[a1][0].nt.toUpperCase(); td.append(sup); tr.append(td); @@ -347,7 +350,7 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ tr.append(td); var td = _e('td'); - $(td).attr('onmouseenter', "showLastResults('"+v[h1].nt+"','"+v[a1].nt+"')" ); + $(td).attr('onmouseenter', "showLastResults('"+v[h1][0].nt+"','"+v[a1][0].nt+"')" ); $(td).attr('onmouseleave', 'hideLastResults()'); $(td).attr('onclick','ignoreHideLastResults()'); td.innerText = ':'; @@ -442,20 +445,25 @@ function calculatePunktestand(saison,runde,show=true){ 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; - return true; - } ); + var Tabelle= + Object.values(TEAMS) + .filter( (a) => ( ( a.start <= saison || saison == 0 ) && ( startliste.indexOf( a.nt ) > -2 || ( saison == 0 && a.nt != 'xx' ) ) ) ) + .map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] )) + .sort( + function(a,b){ + return a[1].P < b[1].P || + ( a[1].P == b[1].P && a[1].Td < b[1].Td ) || + ( a[1].P == b[1].P && a[1].Td == b[1].Td && a[1].Tp < b[1].Tp ) || + ( a[1].P == b[1].P && a[1].Td == b[1].Td && a[1].Tp == b[1].Tp && a.nt > b.nt ) ? 1 : -1; + } + ) + .filter( + function(b){ + if( ! b[1].active && saison != 0 ) return false; + if( b[1].P == 0 && b[1].Tp == 0 && b[1].Tn == 0 ) return false; + return true; + } + ); if( !show ){ return Tabelle; @@ -470,8 +478,10 @@ function calculatePunktestand(saison,runde,show=true){ STARTLISTE.forEach( function(w,j){ - Tabelle.filter((a) => ( w.indexOf(a.nt) > -1 )).forEach( + + Tabelle.filter((a) => ( w.indexOf(a[0].nt) > -1 )).forEach( function(v,i){ + var border=SAISON_SETTINGS[saison - 26] == i+1 ? 'dashed ' : ''; var tr = _e('tr'); @@ -482,17 +492,18 @@ function calculatePunktestand(saison,runde,show=true){ td.innerText = (i+1); tr.append(td); - var t=v[saison].Tr.map( (a) => ( a != 'X' ) ? 1 : 0 ); + var t=v[1].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 : ''; + var master=TabelleLast.length > 0 ? TabelleLast[0][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 pokal=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) > parseInt(a.TA) && a.H.toLowerCase() == v[0].nt.toLowerCase() || parseInt(a.TH) < parseInt(a.TA) && a.A.toLowerCase() == v[0].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[0].nt.toLowerCase() || parseInt(a.TH) > parseInt(a.TA) && a.A.toLowerCase() == v[0].nt.toLowerCase() ) ) ).length; + var meistertitel=M.filter( (a,i) => ( a == v[0].nt.toLowerCase() && ( i < saison - 26 || saison == 0 ) ) ).length; + var managervoted=Object.values(MANAGERVOTING_WINNER).filter((a) => (a == v[0].nt)).length; var td = _e('td'); td.classList = border; @@ -516,7 +527,7 @@ function calculatePunktestand(saison,runde,show=true){ var img = _e('img'); img.classList = 'flags'; - img.src = '/images/flags/'+(( v.flag ) ? v.flag : v.nt.toLowerCase())+'.svg'; + img.src = '/images/flags/'+(( v[0].flag ) ? v[0].flag : v[0].nt.toLowerCase())+'.svg'; td.append(img); var span = _e('span'); @@ -524,12 +535,12 @@ function calculatePunktestand(saison,runde,show=true){ 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>'); + _a.href = "javascript:calculateTeam("+((saison == 0 && false) ? SAISON_NOW : saison)+",'"+v[0].nt+"\')"; + _a.innerHTML = v[0].name.replace(/\(NL\)/g,'<sup>'+v[0].nt.toUpperCase()+'</sup></a>'); td.append(_a); var _a = _e('a'); - _a.href = v.link; + _a.href = v[0].link; _a.target = 'ultrasoccer'; var _i = _e('i'); @@ -537,21 +548,21 @@ function calculatePunktestand(saison,runde,show=true){ _a.append(_i); td.append(_a); - if( trophy.toLowerCase() == v.nt.toLowerCase() ){ + if( trophy.toLowerCase() == v[0].nt.toLowerCase() ){ var _i = _e('i'); _i.classList = 'fas fa-trophy'; _i.title = 'Amtierender Titelgewinner'; td.append(_i); } - if( master.toLowerCase() == v.nt.toLowerCase() ){ + if( master.toLowerCase() == v[0].nt.toLowerCase() ){ var _i = _e('i'); _i.classList = 'fas fa-crown'; _i.title = 'Amtierender Meister'; td.append(_i); } - if( v.nt.toLowerCase() == MANAGERVOTING_TEAM ){ + if( v[0].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'; @@ -581,42 +592,42 @@ function calculatePunktestand(saison,runde,show=true){ var td = _e('td'); td.classList = border; - td.innerText = v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b ); + td.innerText = v[1].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 ); + td.innerText = v[1].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 ); + td.innerText = v[1].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(''); + td.innerHTML = v[1].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; + td.innerText = v[1].Tp+'/'+v[1].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; + td.classList = border + ' ' + ((v[1].Td > 0 ) ? 'p' : (v[1].Td == 0 ) ? 'u' : 'n'); + td.innerText = ((v[1].Td > 0 ) ? '+' : '') + v[1].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); + td.classList = border + ' ' + ((v[1].Zwk > 0 ) ? 'p' : (v[1].Zwk == 0 ) ? 'u' : 'n'); + td.innerText = (v[1].Zwk > 0 ? '+' : '')+(v[1].Zwk / S).toFixed(2); tr.append(td); var td = _e('td'); td.classList = border; - td.innerText = v[saison].P; + td.innerText = v[1].P; tr.append(td); $(tabelle).append(tr); @@ -739,7 +750,6 @@ function calculateTeam(saison,nt){ var n=SPIELER.filter( (a) => ( a.nt == nt ) ).map( (b) => ( [ b.id, STATISTIK[b.id] ] ) ).filter( (c) => ( c[1] !== undefined ) ).map( function(v,i){ - var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) ); var tr=document.createElement('tr'); @@ -825,7 +835,15 @@ function calculateTeam(saison,nt){ tr.append(td); var td=document.createElement('td'); - td.innerText=v[1].S+'/'+v[1].T+'/'+v[1].A; + td.innerText=v[1].S; + tr.append(td); + + var td=document.createElement('td'); + td.innerText=v[1].T; + tr.append(td); + + var td=document.createElement('td'); + td.innerText=v[1].A; tr.append(td); var td=document.createElement('td'); @@ -833,6 +851,10 @@ function calculateTeam(saison,nt){ td.classList=(( v[1].Z > 0 ) ? 'p' : (( v[1].Z < 0 ) ? 'n' : 'u' ) ) tr.append(td); + var td=document.createElement('td'); + td.innerText=' '; + tr.append(td); + return tr; } ); @@ -871,12 +893,13 @@ function calculateHistorie(){ 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="'+(( MANAGERVOTING_WINNER[i+26] == nt && nt != undefined ) ? 'managervoted ' : '')+(( 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>'; + var nt=T[i][p] != undefined ? T[i][p][0].nt : undefined; + tmp+='<td class="'+(( MANAGERVOTING_WINNER[i+26] == nt && nt != undefined ) ? 'managervoted ' : '')+(( masters[i] == nt && nt != undefined ) ? 'master ' : '')+(( SAISON_SETTINGS[i] == p+1 ) ? 'dashed ' : '')+'">'+(( nt != undefined ) ? '<img class="flags" title="'+T[i][p][0].name+'" src="./images/flags/'+(( T[i][p][0].flag ) ? T[i][p].flag : T[i][p][0].nt.toLowerCase())+'.svg">' : '')+'</td>'; } tmp+='</tr>'; } -- GitLab