diff --git a/html/_layouts/default.php b/html/_layouts/default.php index 6b469b87d5653486ee7696339348717f5380ac2a..7a41e4268b0a5683c5927b89f7b05259a7521dec 100644 --- a/html/_layouts/default.php +++ b/html/_layouts/default.php @@ -432,6 +432,7 @@ if( !empty($csv) ){ {% endfor %} </div> <h4 class="tabelle">Tabelle <button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="punktestand active">Punktestand</button></h2> + <div class="divTable"> <table id="tabelle_P" class="tabelle"> <thead> <tr> @@ -455,6 +456,7 @@ if( !empty($csv) ){ <tbody> </tbody> </table> + </div> <table id="tabelle_T" class="tabelle d-none"> <thead> diff --git a/html/assets/css/custom.scss b/html/assets/css/custom.scss index 1295d86cef330be06f2aca62b8e4b1855487cf30..b63ce3234db2d3339ddc4db8cae47bebef81fc4f 100644 --- a/html/assets/css/custom.scss +++ b/html/assets/css/custom.scss @@ -488,4 +488,9 @@ div.scrollen_team { .unformated { text-decoration: inherit; color: inherit; +} + +.divTable { + max-height:70vh; + overflow: auto; } \ No newline at end of file diff --git a/html/assets/js/script.js b/html/assets/js/script.js index f533f9d102589a017c50d0428edf431098d15558..521714fed0e0dbffa4e477ee7692ad3765179c77 100644 --- a/html/assets/js/script.js +++ b/html/assets/js/script.js @@ -394,6 +394,198 @@ function getCsv(saison, runde, spieltag){ $('#copypaste textarea').text('runde,spieltag,T,H,A,TH,TA,MID\n'+csv); } +function calculateEwigePunktestand(){ + var Ew = {}; + ERGEBNISSE.filter( (a) => ( a.runde == 1 ) ).forEach( + function( v ){ + var H = v.H.toLowerCase(); + var A = v.A.toLowerCase(); + if( Ew[H] == undefined ) Ew[H] = { 'S':0, 'P':0, 'Tp':0, 'Tn':0, 'Zp':0, 'Zn':0, 'Tr':[] } + Ew[H].S++; + Ew[H].P += v.TH*1 > v.TA*1 ? 3 : v.TH*1 == v.TA*1 ? 1 : 0; + Ew[H].Tr.push( v.TH*1 > v.TA*1 ? 'S' : v.TH*1 == v.TA*1 ? 'U' : 'N' ); + Ew[H].Tp += v.TH*1; + Ew[H].Tn += v.TA*1; + if( Ew[ v.A ] == undefined ) Ew[A] = { 'S':0, 'P':0, 'Tp':0, 'Tn':0, 'Zp':0, 'Zn':0, 'Tr':[] } + Ew[A].S++; + Ew[A].P += v.TA*1 > v.TH*1 ? 3 : v.TH*1 == v.TA*1 ? 1 : 0; + Ew[A].Tp += v.TA*1; + Ew[A].Tn += v.TH*1; + Ew[A].Tr.push( v.TA*1 > v.TH*1 ? 'S' : v.TH*1 == v.TA*1 ? 'U' : 'N' ); + } + ); + + var tabelle='#tabelle_P tbody'; + $(tabelle).html(''); + + var saison = 0; + var M = calculateAllPunktestand().map((a) => ( a[0][0].nt )); + + Object.entries(Ew) + .map( (a) => ( [ TEAMS.filter((b) => (b.nt == a[0] ))[0], a[1] ] ) ) + .sort( (a,b) => ( a[1].P < b[1].P || a[1].P == b[1].P && (a[1].Tp-a[1].Tn) < (b[1].Tp-b[1].Tn) ? 1 : -1 )) + .forEach( + function(v,i){ + if( v[0].nt == 'xx' ) return; + v[1].Zwk = Object.values( v[0] ).filter((a) =>( a.Zwk != undefined )).map((a) => (a.Zwk)).reduce((a,b) => (a+b)); + v[1].Td = v[1].Tp - v[1].Tn; + + var border=SAISON_SETTINGS[saison - 26] == i+1 ? 'dashed ' : ''; + + var tr = _e('tr'); + if( STARTLISTE.length > 1 ) tr.classList = 'gruppe' + j; + + var td = _e('td'); + td.classList = border; + td.innerText = (i+1); + tr.append(td); + + 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][0].nt : ''; + var master = ''; + + 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[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 && ( 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; + td.innerHTML = S; + tr.append(td); + + var td = _e('td'); + td.classList = border; + if( MANAGERVOTING ){ + var _i = _e('i'); + _i.classList = 'fas fa-thumbs-up '; + $(_i).attr('onclick', "teamVoting('"+v[0].nt+"')"); + if( SAISON_TEAMVOTED.reduce((a,b) => (a.concat(b))).indexOf(v[0].nt) > -1 ){ + _i.classList += 'done'; + _i.title = 'Manager dieses Teams hat sein Voting abgegeben!'; + } else { + _i.title = 'Manager dieses Teams hat noch kein Voting abgegeben!'; + } + td.append(_i); + } + + var img = _e('img'); + img.classList = 'flags'; + img.src = '/images/flags/'+(( v[0].flag ) ? v[0].flag : v[0].nt.toLowerCase())+'.svg'; + td.append(img); + + var span = _e('span'); + span.innerText = ' '; + td.append(span); + + var _a = _e('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[0].link; + _a.target = 'ultrasoccer'; + + var _i = _e('i'); + _i.classList = 'fas fa-link'; + _a.append(_i); + td.append(_a); + + 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[0].nt.toLowerCase() ){ + var _i = _e('i'); + _i.classList = 'fas fa-crown'; + _i.title = 'Amtierender Meister'; + td.append(_i); + } + + 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'; + td.append(_i); + } + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((pokal>0) ? pokal : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((meistertitel>0) ? meistertitel : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((finalist>0) ? finalist : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = ((managervoted>0) ? managervoted : ''); + tr.append(td); + + var td = _e('td'); + td.classList = border; + 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[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[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[1].Tr.map( (a) => '<'+a+'></'+a+'>' ).slice(-6).join(''); + td.innerText = ''; + tr.append(td); + + var td = _e('td'); + td.classList = border; + td.innerText = v[1].Tp+'/'+v[1].Tn; + tr.append(td); + + var td = _e('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[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[1].P; + tr.append(td); + + $(tabelle).append(tr); + } + ); + +} + function calculatePunktestand(saison,runde,show=true){ @@ -482,12 +674,11 @@ function calculatePunktestand(saison,runde,show=true){ STARTLISTE.forEach( function(w,j){ - 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'); if( STARTLISTE.length > 1 ) tr.classList = 'gruppe' + j; @@ -867,7 +1058,8 @@ function calculateTeam(saison,nt){ $('#tabelle_team tbody').html( n ); } function calculateEwige(){ - calculatePunktestand(0,'7'); + //calculatePunktestand(0,'7'); + calculateEwigePunktestand(); calculateTabelle(0,'T'); calculateTabelle(0,'A'); calculateTabelle(0,'Z');