diff --git a/html/_layouts/default.php b/html/_layouts/default.php index 7fc051ca856f6b3d2ad1a3fff08d16970126674e..f728b9cd06f19f83c37cbf80bbf1d1f2a1f4e6b8 100644 --- a/html/_layouts/default.php +++ b/html/_layouts/default.php @@ -79,23 +79,43 @@ if( !empty($csv) ){ } var SPIELER=<?=json_encode( db_getFromSpieler() )?>; var ERGEBNISSE=<?=json_encode( db_getFromErgebnisse() )?>; - var STAT=<?=json_encode( db_getFromStatistikBySaison(SAISON))?>; - STATISTIK={}; - STAT.forEach( + var STAT_SAISON=<?=json_encode( db_getFromStatistikBySaison(SAISON))?>; + var STAT_ALL=<?=json_encode( db_getFromStatistik())?>; + STATISTIK_SAISON={}; + STAT_SAISON.forEach( function(v,i){ - if( STATISTIK[v.SpielerID] == undefined ) STATISTIK[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 0, 'Zpos' : 0, 'Zneg' : 0, 'MID' : [] }; - STATISTIK[v.SpielerID].S++; - STATISTIK[v.SpielerID].T+=v.Tore*1; - STATISTIK[v.SpielerID].A+=v.Assists*1; - STATISTIK[v.SpielerID].Z+=v.Zwk*1; - STATISTIK[v.SpielerID].Zpos+=v.Zpos*1; - STATISTIK[v.SpielerID].Zneg+=v.Zneg*1; - STATISTIK[v.SpielerID].MID.push(v.MID); - STATISTIK[v.SpielerID].name=v.name; - STATISTIK[v.SpielerID].age=v.age*1; - STATISTIK[v.SpielerID].age_saison=v.age_saison*1; - STATISTIK[v.SpielerID].nt=v.nt; - STATISTIK[v.SpielerID].attr=v.attr; + if( STATISTIK_SAISON[v.SpielerID] == undefined ) STATISTIK_SAISON[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 0, 'Zpos' : 0, 'Zneg' : 0, 'MID' : [] }; + STATISTIK_SAISON[v.SpielerID].S++; + STATISTIK_SAISON[v.SpielerID].T+=v.Tore*1; + STATISTIK_SAISON[v.SpielerID].A+=v.Assists*1; + STATISTIK_SAISON[v.SpielerID].Z+=v.Zwk*1; + STATISTIK_SAISON[v.SpielerID].Zpos+=v.Zpos*1; + STATISTIK_SAISON[v.SpielerID].Zneg+=v.Zneg*1; + STATISTIK_SAISON[v.SpielerID].MID.push(v.MID); + STATISTIK_SAISON[v.SpielerID].name=v.name; + STATISTIK_SAISON[v.SpielerID].age=v.age*1; + STATISTIK_SAISON[v.SpielerID].age_saison=v.age_saison*1; + STATISTIK_SAISON[v.SpielerID].nt=v.nt; + STATISTIK_SAISON[v.SpielerID].attr=v.attr; + } + ); + + STATISTIK_ALL={}; + 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' : [] }; + STATISTIK_ALL[v.SpielerID].S++; + STATISTIK_ALL[v.SpielerID].T+=v.Tore*1; + STATISTIK_ALL[v.SpielerID].A+=v.Assists*1; + STATISTIK_ALL[v.SpielerID].Z+=v.Zwk*1; + STATISTIK_ALL[v.SpielerID].Zpos+=v.Zpos*1; + STATISTIK_ALL[v.SpielerID].Zneg+=v.Zneg*1; + STATISTIK_ALL[v.SpielerID].MID.push(v.MID); + STATISTIK_ALL[v.SpielerID].name=v.name; + STATISTIK_ALL[v.SpielerID].age=v.age*1; + STATISTIK_ALL[v.SpielerID].age_saison=v.age_saison*1; + STATISTIK_ALL[v.SpielerID].nt=v.nt; + STATISTIK_ALL[v.SpielerID].attr=v.attr; } ); @@ -114,8 +134,8 @@ if( !empty($csv) ){ if( check ){ $(document).ready( function(){ calculatePartien('{{ page.saison }}', '{{ page.date }}'); - calculateTabelle('{{ page.saison }}', '7'); - calculateTabelle( 0, '7'); + calculatePunktestand('{{ page.saison }}', '7'); + //calculatePunktestand( 0, '7'); calculateTore('{{ page.saison }}'); calculateAssists('{{ page.saison }}'); calculateZwk('{{ page.saison }}'); @@ -150,13 +170,17 @@ if( !empty($csv) ){ <div class="div_right"> <div id="saisons"> - <a href="./26.php"><button class="{% if page.saison == 26 %}active{% endif %}"><b>1</b><sup>26</sup></button></a> - <a href="./27.php"><button class="{% if page.saison == 27 %}active{% endif %}"><b>2</b><sup>27</sup></button></a> - <a href="./28.php"><button class="{% if page.saison == 28 %}active{% endif %}"><b>3</b><sup>28</sup></button></a> - <a href="./29.php"><button class="{% if page.saison == 29 %}active{% endif %}"><b>4</b><sup>29</sup></button></a> - <a href="./30.php"><button class="{% if page.saison == 30 %}active{% endif %}"><b>5</b><sup>30</sup></button></a> + <button id="ewige" class="" onclick="calculateEwige()"><b>EWIGE</b></button> + {% for f in site.pages %} + {% assign fn = f.name | slice:0,2 %} + {% assign fn_isnumeric = fn | is_numeric %} + {% if fn_isnumeric %} + {% assign fn = fn | times: 1 %} + <a href="./{{ fn }}.php"><button class="{% if page.saison == fn %}active{% endif %}"><b>{{ fn | minus: 25 }}</b><sup>{{ fn }}</sup></button></a> + {% endif %} + {% endfor %} </div> - <h2 class="tabelle">Tabelle <button>Ewige</button><button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="active">Punktestand</button></h2> + <h2 class="tabelle">Tabelle <button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="punktestand active">Punktestand</button></h2> <table id="tabelle_punktestand" class="tabelle"> <thead> @@ -217,23 +241,6 @@ if( !empty($csv) ){ </tbody> </table> - <table id="tabelle_ewige" class="tabelle d-none"> - <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> - <table id="tabelle_team" class="tabelle d-none" ondblclick="backToActiveTable()"> <thead> <tr> diff --git a/html/_plugins/is_numeric.rb b/html/_plugins/is_numeric.rb new file mode 100644 index 0000000000000000000000000000000000000000..a920bf625bc4232eb9f058472419715620b07c6c --- /dev/null +++ b/html/_plugins/is_numeric.rb @@ -0,0 +1,10 @@ + +module Is_Numeric + + def is_numeric(string) + true if Float(string) rescue false + end + +end + +Liquid::Template.register_filter(Is_Numeric) # register filter globally diff --git a/html/assets/js/script.js b/html/assets/js/script.js index 180751b4c8da3a1178cc5e748bbb7c261dcae9b6..76ed6a58c389fc96a0a4f48243d5a24a19562ddc 100644 --- a/html/assets/js/script.js +++ b/html/assets/js/script.js @@ -64,7 +64,7 @@ function calculatePartien(saison,date){ if( done.reduce( (a,b) => a && b ) == true ){ - var Tabelle = calculateTabelle( saison, runde, false ); + var Tabelle = calculatePunktestand( saison, runde, false ); } else { @@ -195,7 +195,7 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){ 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; + 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=''; @@ -243,7 +243,7 @@ function getCsv(saison, runde, spieltag){ $('#copypaste textarea').text('runde,spieltag,T,H,A,TH,TA,MID\n'+csv); } -function calculateTabelle(saison,runde,show=true){ +function calculatePunktestand(saison,runde,show=true){ $.each( TEAMS, function( i,v ){ @@ -304,7 +304,7 @@ function calculateTabelle(saison,runde,show=true){ return Tabelle; } - var tabelle=( saison == '0' ) ? '#tabelle_ewige tbody' : '#tabelle_punktestand tbody'; + var tabelle='#tabelle_punktestand tbody'; $(tabelle).html(''); Tabelle.forEach( @@ -331,8 +331,10 @@ function calculateTabelle(saison,runde,show=true){ } function calculateTore(saison){ + 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( function(v,i){ + console.log( v ); 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">'; @@ -348,7 +350,7 @@ function calculateTore(saison){ [ i+1, (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0), - team_flag+' '+attr+' '+(( 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_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1+parseInt(SAISON)-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>'; @@ -358,6 +360,7 @@ function calculateTore(saison){ } 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 ) ); @@ -375,7 +378,7 @@ function calculateAssists(saison){ [ i+1, (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0), - team_flag+' '+attr+' '+(( 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_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1+parseInt(SAISON)-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>'; @@ -385,6 +388,7 @@ function calculateAssists(saison){ } 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 ) ); @@ -402,7 +406,7 @@ function calculateZwk(saison){ [ i+1, (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0), - team_flag+' '+attr+' '+(( 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_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1+parseInt(SAISON)-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ), team_name, (( v[1].Z > 0 ) ? '+' : '' )+v[1].Z ].join('</td><td>')+'</td>'; @@ -440,6 +444,18 @@ function calculateTeam(saison,nt){ $('#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); +} + function backToActiveTable(){ $('table.tabelle').toggleClass('d-none',true); $('#tabelle_'+ $('button.active').text().toLowerCase() ).toggleClass('d-none'); diff --git a/html/functions/db_methods.php b/html/functions/db_methods.php index 1601358789fefee7236dd759a369e66119d99994..82fb623144eb12d165500d2ba7dd03ddd09c8b60 100644 --- a/html/functions/db_methods.php +++ b/html/functions/db_methods.php @@ -309,4 +309,36 @@ function db_getFromStatistikBySaison($saison){ } +function db_getFromStatistik(){ + + $db=new db; + + /* + $sql = 'SELECT Statistik.MID, Statistik.SpielerID, Spieler.name, Spieler.nt, Spieler.age, Teams.id, SUM(Statistik.Tore) AS "Tore", SUM(Statistik.Assists) AS "Assists", SUM(Statistik.Zpos - Statistik.Zneg) AS "Zwkbilanz" FROM Statistik + INNER JOIN Ergebnisse ON Ergebnisse.MID = Statistik.MID + LEFT JOIN Spieler ON Spieler.id = Statistik.SpielerID + LEFT JOIN Teams ON Teams.id = Spieler.teamID + WHERE Ergebnisse.saison = '.$saison.' + GROUP BY SpielerID, MID'; + */ + $sql='SELECT Statistik.MID, Statistik.SpielerID, Spieler.name, Spieler.nt, Spieler.attr, Spieler.age, Spieler.age_saison, Teams.id, Statistik.Tore, Statistik.Assists, Statistik.Zpos, Statistik.Zneg, Statistik.Zpos - Statistik.Zneg AS "Zwk" FROM Statistik + INNER JOIN Ergebnisse ON Ergebnisse.MID = Statistik.MID + LEFT JOIN Spieler ON Spieler.id = Statistik.SpielerID + LEFT JOIN Teams ON Teams.id = Spieler.teamID + GROUP BY SpielerID, MID'; + + $result = $db->query($sql); + + $ROW=Array(); + + while( $row = $result->fetch_assoc() ){ + $row['SpielerID']=bin2hex($row['SpielerID']); + $ROW[]=$row; + } + + unset($db); + return $ROW; + +} + ?>