diff --git a/html/26.php b/html/26.php index ab25f4eb0bf99deb4465f4e99a7c9a32615d4ee5..09056415625dc73f37658ffd927fc2aee1f53a40 100644 --- a/html/26.php +++ b/html/26.php @@ -1,184 +1,15 @@ --- -saison: '26' +layout: default +saison: 26 +saison_now: 27 date: '2021-10-11' ligaspieltag: 17 step: 1 finals_step: 2 +startliste: + - + - bw + - cm + - is + - xx --- -<?php - -include_once('functions/db_connect.php'); -include_once('functions/db_methods.php'); - -$csv=$_POST['csv']; -$saison='{{ page.saison }}'; -$secret=''; - -if( !empty($csv) ){ - - $secret=$_POST['secret']; - $user=db_checkSecret($secret); - if( $user ){ - $C=preg_split('/ -/',$csv); - if( trim($C[0]) == 'runde,spieltag,T,H,A,TH,TA,MID' ){ - foreach( $C as $i=>$v ){ - if( $i > 0 ) db_addErgebnisse($saison.','.$v,$secret); - } - } else if( trim($C[0]) == 'MatchID,L,Pos,SpielerID,Spieler,Z+,Z-,T,A,Bk' ) { - foreach( $C as $i=>$v ){ - if( $i > 0 ) db_addStatistik($v,$secret); - } - } else if( trim($C[0]) == 'TeamID,N,SpielerID,Attr,Spieler,Alter,Pos,S,T,A,Z+,Z-,Zd,Mw' ){ - foreach( $C as $i=>$v ){ - if( $i > 0 ) db_addSpieler($v,$secret); - } - } - } - -} - -?> -<!DOCTYPE html> -<html> - -<head> - <link rel="stylesheet" href="assets/css/custom.css"> - <script src="assets/js/jquery.min.js"></script> - <script src="assets/js/script26.js"></script> -</head> - -<body> - - <script> - - var DATA={{ site.data | jsonify }}; - var TEAMS=<?=json_encode( db_getFromTeams() )?>; - var T2ID={}; - TEAMS.forEach( - function(v){ - T2ID[v.nt] = v.id; - } - ); - var SPIELER=<?=json_encode( db_getFromSpieler() )?>; - var ERGEBNISSE=<?=json_encode( db_getFromErgebnisse() )?>; - var STAT=<?=json_encode( db_getFromStatistikBySaison($saison))?>; - STATISTIK={}; - STAT.forEach( - function(v,i){ - if( STATISTIK[v.SpielerID] == undefined ) STATISTIK[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 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].MID.push(v.MID); - STATISTIK[v.SpielerID].name=v.name; - STATISTIK[v.SpielerID].age=v.age; - STATISTIK[v.SpielerID].nt=v.nt; - } - ); - - const STEP={{ page.step | default: '1' }}; - const FINALS_STEP={{ page.finals_step | default: '0' }}; - const LIGASPIELTAG={{ page.ligaspieltag | default: '1' }}; - $(document).ready( function(){ - calculatePartien('{{ page.saison }}', '{{ page.date }}'); - calculateTabelle('{{ page.saison }}', '7'); - calculateTore('{{ page.saison }}'); - calculateAssists('{{ page.saison }}'); - calculateZwk('{{ page.saison }}'); - - $('h2.tabelle button').on('click', - function(){ - $('h2.tabelle button').toggleClass('active',false); - $(this).toggleClass('active',true); - $('table.tabelle').toggleClass('d-none',true); - $('#tabelle_'+$(this).text().toLowerCase()).toggleClass('d-none',false); - } - ); - - } - ); - - </script> - - <form method="POST"> - <div id="copypaste" class="d-none" ondblclick="$(this).toggleClass('d-none')"> - <button type="submit">update</button> - <input type="text" name="secret" placeholder="secret" value="<?=$secret?>"> - <textarea name="csv"></textarea> - </div> - </form> - - - <div id="partien" class="div_left"> - </div> - - <div class="div_right"> - <h2 class="tabelle">Tabelle <button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="active">Punktestand</button></h2> - - <table id="tabelle_punktestand" class="tabelle"> - <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_tore" class="tabelle d-none"> - <thead> - <tr> - <th>Pl.</th> - <th>Sp.</th> - <th>Name</th> - <th>Team</th> - <th>T</th> - </tr> - </thead> - <tbody> - </tbody> - </table> - - <table id="tabelle_assists" class="tabelle d-none"> - <thead> - <tr> - <th>Pl.</th> - <th>Sp.</th> - <th>Name</th> - <th>Team</th> - <th>A</th> - </tr> - </thead> - <tbody> - </tbody> - </table> - - <table id="tabelle_zweikampf" class="tabelle d-none"> - <thead> - <tr> - <th>Pl.</th> - <th>Sp.</th> - <th>Name</th> - <th>Team</th> - <th>A</th> - </tr> - </thead> - <tbody> - </tbody> - </table> - - </div> - - -</body> - -</html> diff --git a/html/27.html b/html/27.html deleted file mode 100644 index 358476c0200dadb384129a730477c4d2e32f6fc3..0000000000000000000000000000000000000000 --- a/html/27.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -saison: '27' -date: '2021-11-16T10:00Z' -ligaspieltag: 18 -step: 1 -finals_step: 2 ---- - -<!DOCTYPE html> -<html> - -<head> - <link rel="stylesheet" href="assets/css/custom.css"> - <script src="assets/js/jquery.min.js"></script> - <script src="assets/js/script27.js"></script> -</head> - -<body> - - <script> - - var DATA={{ site.data | jsonify }}; - delete DATA.teams.XX; - const STEP={{ page.step | default: '1' }}; - const FINALS_STEP={{ page.finals_step | default: '0' }}; - const LIGASPIELTAG={{ page.ligaspieltag | default: '1' }}; - $(document).ready( function(){ - calculatePartien('{{ page.saison }}', '{{ page.date }}'); - calculateTabelle('{{ page.saison }}', '7'); - } - ); - - </script> - - <div id="partien" class="div_left"> - </div> - - <div class="div_right"> - <h2 class="tabelle">Tabelle</h2> - <table id="tabelle" class="tabelle"> - <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> - </div> - -</body> - -</html> diff --git a/html/27.php b/html/27.php new file mode 100644 index 0000000000000000000000000000000000000000..7bdc4438e1a9971017271cfe67e45c7d09d40681 --- /dev/null +++ b/html/27.php @@ -0,0 +1,30 @@ +--- +layout: default +saison: 27 +saison_now: 27 +date: '2021-10-16' +ligaspieltag: 18 +step: 1 +finals_step: 2 +startliste: + - + - bw + - cm + - co + - cz + - fr + - hu + - is + - it + - pl +startliste_partien_pause: + - 1 + - 2 + - 1 + - 2 + - 1 + - 2 + - 1 + - 2 + - 0 +--- diff --git a/html/_data/ergebnisse/26/1/1.csv b/html/_data/ergebnisse/26/1/1.csv deleted file mode 100644 index 59728d9880771fb03fb5f01f05a2ba87081d8708..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/1/1.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-11,BW,CM,0,2,885778 -2021-10-11,XX,IS,0,2,0 diff --git a/html/_data/ergebnisse/26/1/2.csv b/html/_data/ergebnisse/26/1/2.csv deleted file mode 100644 index fb0899a253a8fa38fd51cb7c786d8f8fa9a50290..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/1/2.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-12,BW,XX,2,0,0 -2021-10-12,CM,IS,3,1,885797 diff --git a/html/_data/ergebnisse/26/1/3.csv b/html/_data/ergebnisse/26/1/3.csv deleted file mode 100644 index f6baa1cb48b7c0fdff396e160f0fe566b154bb21..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/1/3.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-13,BW,IS,0,0,885800 -2021-10-13,CM,XX,2,0,0 diff --git a/html/_data/ergebnisse/26/1/4.csv b/html/_data/ergebnisse/26/1/4.csv deleted file mode 100644 index 474db4c9032f2ae7796dfcd9d88121f33c06ab10..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/1/4.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-14,CM,BW,0,1,885813 -2021-10-14,IS,XX,2,0,0 diff --git a/html/_data/ergebnisse/26/1/5.csv b/html/_data/ergebnisse/26/1/5.csv deleted file mode 100644 index 05393245394307005d443127e45e83484727d761..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/1/5.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-15,XX,BW,0,2,0 -2021-10-15,IS,CM,0,2,885837 diff --git a/html/_data/ergebnisse/26/1/6.csv b/html/_data/ergebnisse/26/1/6.csv deleted file mode 100644 index 0c2e6a1f7a218150fb2a35ac4549eaf89d22c02b..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/1/6.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-16,IS,BW,1,0,885840 -2021-10-16,XX,CM,0,2,0 diff --git a/html/_data/ergebnisse/26/F/1.csv b/html/_data/ergebnisse/26/F/1.csv deleted file mode 100644 index e921efa382625913a61a4a070dc6e31a5986fe0d..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/F/1.csv +++ /dev/null @@ -1,2 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-24,CM,IS,3,0,885893 diff --git a/html/_data/ergebnisse/26/HF/1.csv b/html/_data/ergebnisse/26/HF/1.csv deleted file mode 100644 index f2a4dfac423c804b0db20ba770ef1d16986dcc24..0000000000000000000000000000000000000000 --- a/html/_data/ergebnisse/26/HF/1.csv +++ /dev/null @@ -1,3 +0,0 @@ -T,H,A,TH,TA,MID -2021-10-22,CM,XX,2,0,0 -2021-10-22,BW,IS,0,3,885873 diff --git a/html/_data/partien/4.yml b/html/_data/partien/4.yml new file mode 100644 index 0000000000000000000000000000000000000000..4ec56bac099da42783595545a61baa951a793dc8 --- /dev/null +++ b/html/_data/partien/4.yml @@ -0,0 +1,6 @@ +- [ 1, 1,2, 4,3 ] +- [ 1, 1,4, 2,3 ] +- [ 1, 1,3, 2,4 ] +- [ 1, 2,1, 3,4 ] +- [ 1, 4,1, 3,2 ] +- [ 1, 3,1, 4,2 ] diff --git a/html/_data/partien/9.yml b/html/_data/partien/9.yml new file mode 100644 index 0000000000000000000000000000000000000000..47b70cd30786389d32a3c1f90c0d67d19371d2f6 --- /dev/null +++ b/html/_data/partien/9.yml @@ -0,0 +1,9 @@ +- [ 1, 2,9, 3,8, 4,7, 5,6 ] +- [ 1, 1,2, 9,3, 8,4, 7,5 ] +- [ 1, 1,3, 4,9, 5,8, 6,7 ] +- [ 1, 1,4, 2,3, 9,5, 6,8 ] +- [ 1, 5,1, 2,4, 6,9, 7,8 ] +- [ 1, 1,6, 2,5, 3,4, 7,9 ] +- [ 1, 7,1, 6,2, 3,5, 8,9 ] +- [ 1, 8,1, 2,7, 3,6, 4,5 ] +- [ 1, 9,1, 8,2, 3,7, 4,6 ] diff --git a/html/_data/teams/BW.yml b/html/_data/teams/BW.yml deleted file mode 100644 index a35ca1aefa5ed68568e17170dd3b4ad19e304a92..0000000000000000000000000000000000000000 --- a/html/_data/teams/BW.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Afrika -id: BW -name: Botswana (NL) -link: 'https://ultrasoccer.de/players/?id=1452' -manager: FC Lampertheim -start: 26 diff --git a/html/_data/teams/CM.yml b/html/_data/teams/CM.yml deleted file mode 100644 index 603d759b4a88732c065db5230dc0479cab3d8c21..0000000000000000000000000000000000000000 --- a/html/_data/teams/CM.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Afrika -id: CM -name: KAMERUN (NL) -link: 'https://ultrasoccer.de/players/?id=687' -manager: lipeco -start: 26 diff --git a/html/_data/teams/CO.yml b/html/_data/teams/CO.yml deleted file mode 100644 index 927f003bb6d006287bfd6afb94035c0d3e109889..0000000000000000000000000000000000000000 --- a/html/_data/teams/CO.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Südamerika -id: CO -name: Kolumbien (NL) -link: 'https://ultrasoccer.de/players/?id=1374' -manager: J.. -start: 27 diff --git a/html/_data/teams/CZ.yml b/html/_data/teams/CZ.yml deleted file mode 100644 index f809b05b0dc7281e6d6b0ce934a7a883cff54f52..0000000000000000000000000000000000000000 --- a/html/_data/teams/CZ.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Europa -id: CZ -name: Tschechien (NL) -link: 'https://ultrasoccer.de/players/?id=1538' -manager: Skiller09 -start: 27 diff --git a/html/_data/teams/FR.yml b/html/_data/teams/FR.yml deleted file mode 100644 index 393772d47f9260bfc751fbb34178a44c4734f465..0000000000000000000000000000000000000000 --- a/html/_data/teams/FR.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Europa -id: FR -name: Frankreich (NL) -link: 'https://ultrasoccer.de/players/?id=2685' -manager: Schmetterling -start: 27 diff --git a/html/_data/teams/HU.yml b/html/_data/teams/HU.yml deleted file mode 100644 index 3ac8db69b091ef59f8cfcd6b12cbeee6811789ec..0000000000000000000000000000000000000000 --- a/html/_data/teams/HU.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Europa -id: HU -name: Ungarn (NL) -link: 'https://ultrasoccer.de/players/?id=2663' -manager: 'Michel:-)' -start: 27 diff --git a/html/_data/teams/IS.yml b/html/_data/teams/IS.yml deleted file mode 100644 index 51ec88c92b7623e7d95b3719807a3b85b6f6798f..0000000000000000000000000000000000000000 --- a/html/_data/teams/IS.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Europa -id: IS -name: Island (NL) -link: 'https://ultrasoccer.de/players/?id=2233' -manager: Tony Ford -start: 26 diff --git a/html/_data/teams/IT.yml b/html/_data/teams/IT.yml deleted file mode 100644 index 947ff375baa8be70b8d9f548410f069278eb84ba..0000000000000000000000000000000000000000 --- a/html/_data/teams/IT.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Europa -id: IT -name: Italien (NL) -link: '' -manager: Hans Eckenpower -start: 27 diff --git a/html/_data/teams/PL.yml b/html/_data/teams/PL.yml deleted file mode 100644 index 5bd41bf2509a59b9fec35b55c074f617d5eb0716..0000000000000000000000000000000000000000 --- a/html/_data/teams/PL.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Europa -id: PL -name: Polen (NL) -link: 'https://ultrasoccer.de/players/?id=1019' -manager: M. de Biel -start: 27 diff --git a/html/_data/teams/XX.yml b/html/_data/teams/XX.yml deleted file mode 100644 index 3efa6497bfef47725075a2cd454f7328dd0b28dd..0000000000000000000000000000000000000000 --- a/html/_data/teams/XX.yml +++ /dev/null @@ -1,6 +0,0 @@ -kontinent: Dummy -id: XX -name: <i>Dummy (NL)</i> -link: 'https://ultrasoccer.de/players/?id=2233' -manager: Dummy -start: 26 diff --git a/html/_layouts/default.php b/html/_layouts/default.php new file mode 100644 index 0000000000000000000000000000000000000000..98a564eecce20e85f2beac45df84f803af83fff1 --- /dev/null +++ b/html/_layouts/default.php @@ -0,0 +1,208 @@ +<?php + +define( 'SAISON', '{{ page.saison }}' ); +define( 'SAISON_NOW', '{{ page.saison_now }}' ); + +include_once('functions/db_connect.php'); +include_once('functions/db_methods.php'); + +$csv=$_POST['csv']; +$secret=''; + +if( !empty($csv) ){ + + $secret=$_POST['secret']; + $user=db_checkSecret($secret); + if( $user ){ + $C=preg_split('/ +/',$csv); + if( trim($C[0]) == 'runde,spieltag,T,H,A,TH,TA,MID' ){ + foreach( $C as $i=>$v ){ + if( $i > 0 ) db_addErgebnisse(SAISON.','.$v,$secret); + } + } else if( trim($C[0]) == 'MatchID,L,Pos,SpielerID,Spieler,Z+,Z-,T,A,Bk' ) { + foreach( $C as $i=>$v ){ + if( $i > 0 ) db_addStatistik($v,$secret); + } + } else if( trim($C[0]) == 'TeamID,N,SpielerID,Attr,Spieler,Alter,Pos,S,T,A,Z+,Z-,Zd,Mw' ){ + foreach( $C as $i=>$v ){ + if( $i > 0 ) db_addSpieler($v,$secret); + } + } + } + +} + +?> +<!DOCTYPE html> +<html> + +<head> + <link rel="stylesheet" href="assets/css/custom.css"> + <script src="assets/js/jquery.min.js"></script> + <script src="assets/js/script.js"></script> +</head> + +<body> + + <script> + + var DATA={{ site.data | jsonify }}; + var TEAMS=<?=json_encode( db_getFromTeams() )?>; + var T2ID={}; + TEAMS.forEach( + function(v){ + 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 }}; + if( $.isArray( STARTLISTE_PARTIEN_PAUSE ) ){ + STARTLISTE_PARTIEN.forEach( + function(v,i){ + if( STARTLISTE_PARTIEN_PAUSE[i] != undefined ){ + STARTLISTE_PARTIEN[i][0]=STARTLISTE_PARTIEN_PAUSE[i]; + } + } + ); + } + var SPIELER=<?=json_encode( db_getFromSpieler() )?>; + var ERGEBNISSE=<?=json_encode( db_getFromErgebnisse() )?>; + var STAT=<?=json_encode( db_getFromStatistikBySaison(SAISON))?>; + STATISTIK={}; + STAT.forEach( + function(v,i){ + if( STATISTIK[v.SpielerID] == undefined ) STATISTIK[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 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].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; + } + ); + + const STEP={{ page.step | default: '1' }}; + const FINALS_STEP={{ page.finals_step | default: '0' }}; + const LIGASPIELTAG={{ page.ligaspieltag | default: '1' }}; + + // check ob alle Teams der Startliste in DB vorhanden sind + var check= + STARTLISTE.map( + (a) => ( + a.map( (b) => ( T2ID[b] != undefined ) ) + ) + ).reduce(( c,d ) => ( c && d )).reduce(( e,f ) => ( e && f )); + + if( check ){ + $(document).ready( function(){ + calculatePartien('{{ page.saison }}', '{{ page.date }}'); + calculateTabelle('{{ page.saison }}', '7'); + calculateTore('{{ page.saison }}'); + calculateAssists('{{ page.saison }}'); + calculateZwk('{{ page.saison }}'); + + $('h2.tabelle button').on('click', + function(){ + $('h2.tabelle button').toggleClass('active',false); + $(this).toggleClass('active',true); + $('table.tabelle').toggleClass('d-none',true); + $('#tabelle_'+$(this).text().toLowerCase()).toggleClass('d-none',false); + } + ); + + } + ); + } else { + alert( 'Error: Nicht alle Teams der Startliste sind in der DB vorhanden!'); + } + + + + + </script> + + <form method="POST"> + <div id="copypaste" class="d-none" ondblclick="$(this).toggleClass('d-none')"> + <button type="submit">update</button> + <input type="text" name="secret" placeholder="secret" value="<?=$secret?>"> + <textarea name="csv"></textarea> + </div> + </form> + + + <div id="partien" class="div_left"> + </div> + + <div class="div_right"> + <h2 class="tabelle">Tabelle <button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="active">Punktestand</button></h2> + + <table id="tabelle_punktestand" class="tabelle"> + <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_tore" class="tabelle d-none"> + <thead> + <tr> + <th>Pl.</th> + <th>Sp.</th> + <th>Name</th> + <th>Team</th> + <th>T</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + + <table id="tabelle_assists" class="tabelle d-none"> + <thead> + <tr> + <th>Pl.</th> + <th>Sp.</th> + <th>Name</th> + <th>Team</th> + <th>A</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + + <table id="tabelle_zweikampf" class="tabelle d-none"> + <thead> + <tr> + <th>Pl.</th> + <th>Sp.</th> + <th>Name</th> + <th>Team</th> + <th>A</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + + </div> + + +</body> + +</html> diff --git a/html/assets/js/script.js b/html/assets/js/script.js index ec5810c13bcd6cd55bdd2f4632fb570ada845628..492e91f8253b243478d239dc6fd9b6621f8681bc 100644 --- a/html/assets/js/script.js +++ b/html/assets/js/script.js @@ -1,86 +1,7 @@ +--- +--- const DAY=24*3600*1000; -function calculateTabelle(saison,runde,show=true){ - - $.each( DATA.teams, - function( i,v ){ - //if( v[saison] == undefined ) - DATA.teams[i][saison] = { P: 0, Tp: 0, Tn: 0, Td: 0, Tr: ['X'], active: (( DATA.teams[i].start <= saison )) } - } - ); - - $.each( ( ( DATA.ergebnisse[saison] != undefined ) ? DATA.ergebnisse[saison] : {} ), - function(k,z){ - $.each(z, - function(j,w){ - w.forEach( - function( v,i ){ - if( runde < k || !$.isNumeric(k) ) return; - var H=DATA.teams[v.H][saison]; - var A=DATA.teams[v.A][saison]; - 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'); - } else { - H.P+=1; - A.P+=1; - H.Tr.push('U'); - A.Tr.push('U'); - } - 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(DATA.teams).filter( (a) => ( a.start <= saison+1 ) ) - .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.id > b.id ) ? 1 : -1; - } - ); - - if( !show ){ - return Tabelle; - } - - $('#tabelle tbody').html(''); - - Tabelle.forEach( - function(v,i){ - if( ! v[saison].active ) return; - 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.id.toLowerCase()+'.svg"> <a href="'+v.link+'" target="ultrasoccer">'+v.name.replace(/\(NL\)/g,'<sup>'+v.id+'</sup>')+'</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>'+v[saison].Td+'</td>'; - tmp+='<td>'+v[saison].P+'</td>'; - $('#tabelle tbody').append('<tr>'+tmp+'</tr>') - } - ); - -} - - var Grps=[]; function calculatePartien(saison,date){ @@ -92,34 +13,97 @@ function calculatePartien(saison,date){ var runde=0; date=new Date(date).getTime(); + var steps=0; do { var done=[]; runde++; - // kalkuliere Tabelle der vergangenen Saison - var Tabelle=calculateTabelle( ( parseInt(saison)-(( runde == 1 ) ? 1 : 0 ) ).toString(), ((runde == 1) ? 7 : runde-1 ) , false); - // stelle die 4er Gruppen zusammen + + // stelle die 4er Gruppen, sowie Startgruppen zusammen Grps=[] - while( Tabelle.length > 3 ){ - Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.pop(), Tabelle.pop() ] ); + 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); - // Hinrunde - done.push( grpPartien(new Date(date),saison,runde,1,0,1,2,3) ); - ; - done.push( grpPartien(new Date(date+=DAY*STEP),saison,runde,2,0,2,1,3) ); - done.push( grpPartien(new Date(date+=DAY*STEP),saison,runde,3,0,3,1,2) ); - // Rückrunde - done.push( grpPartien(new Date(date+=DAY*STEP),saison,runde,4,1,0,3,2) ); - done.push( grpPartien(new Date(date+=DAY*STEP),saison,runde,5,2,0,3,1) ); - done.push( grpPartien(new Date(date+=DAY*STEP),saison,runde,6,3,0,2,1) ); + + + 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 = calculateTabelle( saison, runde, false ); + 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() ] ); @@ -127,101 +111,296 @@ function calculatePartien(saison,date){ runde='HF'; var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Halbfinale</h3>'; $('#partien').append(tmp); - done.push( grpPartien(new Date(date+=DAY*FINALS_STEP),saison,runde,1,0,3,1,2) ); + + steps+=FINALS_STEP; + done.push( grpPartien( date,steps,saison,runde, 1, [ 1,4, 2,3 ] ) ); + steps+=FINALS_STEP; if( done.reduce( (a,b) => a && b ) == true ){ + Grps.shift(); Grps.push([]); - var p1=DATA.ergebnisse[saison][runde][1][0]; - if( p1.TH >= p1.TA ){ Grps[0].push( DATA.teams[p1.H] ); } else { Grps[0].push( DATA.teams[p1.A] ); } + 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); - var p2=DATA.ergebnisse[saison][runde][1][1]; - if( p2.TH >= p2.TA ){ Grps[0].push( DATA.teams[p2.H] ); } else { Grps[0].push( DATA.teams[p2.A] ); } + done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); + } else { runde='F' var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Finale</h3>'; $('#partien').append(tmp); - done.push( grpPartien(new Date(date+=DAY*FINALS_STEP),saison,runde,1,0,1,-1,-1) ); - } + 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,saison,runde,spieltag,h1,a1,h2,a2 ){ +} + +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; + } var done=true; var tmp=''; - tmp+='<h4 class="spieltag s_'+saison+' r_'+runde+' t_'+spieltag+'">Spieltag '+spieltag+'</h4>'; + 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+'">'; + var partie=0; - Grps.forEach( - function(v,i){ + 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=''; + } - if( h1 == -1 || a1 == -1 ) return; + 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>'; - if( DATA.ergebnisse[saison] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date).toJSON().slice(0,10)+'</i>'; done=false; var match=''; - } else if( DATA.ergebnisse[saison][runde] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date).toJSON().slice(0,10)+'</i>'; done=false; var match=''; - } else if( DATA.ergebnisse[saison][runde][spieltag] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date).toJSON().slice(0,10)+'</i>'; done=false; var match=''; - } else { - var result=DATA.ergebnisse[saison][runde][spieltag].filter( (a) => ( a.H == v[h1].id && a.A == v[a1].id ) )[0]; + tmp+='<td data-mid="'+(( ergebnis.MID != undefined ) ? ergebnis.MID : '0' )+'">'+th+'</td>'; + tmp+='<td>:</td>'; + tmp+='<td>'+ta+'</td>'; + tmp+='</tr>'; - var th=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TH+'</a>' : result.TH ) : '-' ); - var ta=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TA+'</a>' : result.TA ) : '-' ); - var dt=(( result != undefined ) ? new Date(result.T).toJSON().slice(0,10) : '<i>'+new Date(date).toJSON().slice(0,10)+'</i>' ); - if( result == undefined ) done=false; } + ); + } 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 )) } + } + ); - tmp+='<tr class="begegnungen h_'+v[h1].id+' a_'+v[a1].id+'">'; - tmp+='<td>'+dt+'</td>'; - tmp+='<td><sup>'+v[h1].id+'</sup> '+v[h1].name.replace(/\(NL\)/g,'')+' <img class="flags" src="./images/flags/'+v[h1].id.toLowerCase()+'.svg"></td>'; - tmp+='<td> - </td>'; - tmp+='<td><img class="flags" src="./images/flags/'+v[a1].id.toLowerCase()+'.svg"> '+v[a1].name.replace(/\(NL\)/g,'<sup>'+v[a1].id+'</sup>')+'</td>'; - - tmp+='<td>'+th+'</td>'; - tmp+='<td>:</td>'; - tmp+='<td>'+ta+'</td>'; - tmp+='</tr>'; - - if( h2 == -1 || a2 == -1 ) return; - - if( DATA.ergebnisse[saison] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date).toJSON().slice(0,10)+'</i>'; done=false; - } else if( DATA.ergebnisse[saison][runde] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date).toJSON().slice(0,10)+'</i>'; done=false; - } else if( DATA.ergebnisse[saison][runde][spieltag] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date).toJSON().slice(0,10)+'</i>'; done=false; + ERGEBNISSE.filter( (a) => ( a.saison == saison && $.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'); } else { - var result=DATA.ergebnisse[saison][runde][spieltag].filter( (a) => a.H == v[h2].id && a.A == v[a2].id )[0]; - var th=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TH+'</a>' : result.TH ) : '-' ); - var ta=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TA+'</a>' : result.TA ) : '-' ); - var dt=(( result != undefined ) ? new Date(result.T).toJSON().slice(0,10) : '<i>'+new Date(date).toJSON().slice(0,10)+'</i>' ); - if( result == undefined ) done=false; + H.P+=1; + A.P+=1; + H.Tr.push('U'); + A.Tr.push('U'); } + 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; + } + ); - tmp+='<tr class="begegnungen h_'+v[h2].id+' a_'+v[a2].id+'">'; - tmp+='<td>'+dt+'</td>'; - tmp+='<td><sup>'+v[h2].id+'</sup> '+v[h2].name.replace(/\(NL\)/g,'')+' <img class="flags" src="./images/flags/'+v[h2].id.toLowerCase()+'.svg"></td>'; - tmp+='<td> - </td>'; - tmp+='<td><img class="flags" src="./images/flags/'+v[a2].id.toLowerCase()+'.svg"> '+v[a2].name.replace(/\(NL\)/g,'<sup>'+v[a2].id+'</sup>')+'</td>'; - tmp+='<td>'+th+'</td>'; - tmp+='<td>:</td>'; - tmp+='<td>'+ta+'</td>'; - tmp+='</tr>'; + var startliste=STARTLISTE.reduce((a,b)=>(a)); + + var Tabelle=Object.values(TEAMS).filter( (a) => ( a.start <= saison && startliste.indexOf( a.nt ) > -1 ) ) + .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; + } + ); - //tmp+='<tr><td colspan="7"><hr></td></tr>'; + if( !show ){ + return Tabelle; + } + $('#tabelle_punktestand tbody').html(''); + Tabelle.forEach( + function(v,i){ + if( ! v[saison].active ) return; + 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="'+v.link+'" target="ultrasoccer">'+v.name.replace(/\(NL\)/g,'<sup>'+v.nt.toUpperCase()+'</sup>')+'</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>'+v[saison].Td+'</td>'; + tmp+='<td>'+v[saison].P+'</td>'; + $('#tabelle_punktestand tbody').append('<tr>'+tmp+'</tr>') } ); - tmp+='</table>'; - $('#partien').append(tmp); +} - return done; +function calculateTore(saison){ + var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1].T < b[1].T || ( a[1].T == b[1].T && a[1].S > b[1].S ) ) ).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="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</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 ) ) ).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="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</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 ) ) ).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="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</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].Z + ].join('</td><td>')+'</td>'; + } + ); + + $('#tabelle_zweikampf tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' ); } diff --git a/html/assets/js/script26.js b/html/assets/js/script26.js deleted file mode 100644 index 8d668ae351ff61219c8ace72c2d830b89f96d982..0000000000000000000000000000000000000000 --- a/html/assets/js/script26.js +++ /dev/null @@ -1,453 +0,0 @@ -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(); - var steps=0; - - do { - var done=[]; - runde++; - // kalkuliere Tabelle der vergangenen Saison - var Tabelle=calculateTabelle( ( parseInt(saison)-(( runde == 1 ) ? 0 : 0 ) ).toString(), ((runde == 1) ? 7 : runde-1 ) , false); - // stelle die 4er Gruppen zusammen - - Grps=[] - if( runde == 1 ){ - 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 ){ - - done.push( grpPartien(date,steps,saison,runde,1,[ 1,2, 4,3 ]) ); steps++; - done.push( grpPartien(date,steps,saison,runde,2,[ 1,4, 2,3 ]) ); steps++; - done.push( grpPartien(date,steps,saison,runde,3,[ 1,3, 2,4 ]) ); steps++; - 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 ); - - - 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; - - if( done.reduce( (a,b) => a && b ) == true ){ - - Grps.shift(); Grps.push([]); - - 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); - - done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); - - } else { - - 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 ){ - - var done=true; - - var tmp=''; - 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+'">'; - var partie=0; - - 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=''; - } - - - /* - - if( DATA.ergebnisse[saison] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; - } else if( DATA.ergebnisse[saison][runde] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; - } else if( DATA.ergebnisse[saison][runde][spieltag] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; - } else { - var result=DATA.ergebnisse[saison][runde][spieltag].filter( (a) => ( a.H == v[h1].id && a.A == v[a1].id ) )[0]; - - var th=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TH+'</a>' : result.TH ) : '-' ); - var ta=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TA+'</a>' : result.TA ) : '-' ); - var dt=(( result != undefined ) ? new Date(result.T).toJSON().slice(0,10) : '<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i>' ); - if( result == undefined ){ - done=false; - } else if( result.TA == '-' || result.TH == '-' ){ - done=false; - } - } - - */ - - - 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>'; - - } - ); - } 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 && $.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'); - } else { - H.P+=1; - A.P+=1; - H.Tr.push('U'); - A.Tr.push('U'); - } - 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; - } - ); - - - /* - - $.each( ( ( DATA.ergebnisse[saison] != undefined ) ? DATA.ergebnisse[saison] : {} ), - function(k,z){ - $.each(z, - function(j,w){ - w.forEach( - function( v,i ){ - if( runde < k || !$.isNumeric(k) ) return; - 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'); - } else { - H.P+=1; - A.P+=1; - H.Tr.push('U'); - A.Tr.push('U'); - } - 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 ) ) - .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.id > b.id ) ? 1 : -1; - } - ); - - if( !show ){ - return Tabelle; - } - - $('#tabelle_punktestand tbody').html(''); - - Tabelle.forEach( - function(v,i){ - if( ! v[saison].active ) return; - 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="'+v.link+'" target="ultrasoccer">'+v.name.replace(/\(NL\)/g,'<sup>'+v.nt.toUpperCase()+'</sup>')+'</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>'+v[saison].Td+'</td>'; - tmp+='<td>'+v[saison].P+'</td>'; - $('#tabelle_punktestand tbody').append('<tr>'+tmp+'</tr>') - } - ); - -} - -function calculateTore(saison){ - var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1].T < b[1].T || ( a[1].T == b[1].T && a[1].S > b[1].S ) ) ).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="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</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+')' : '<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 ) ) ).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="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</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+')' : '<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 ) ) ).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="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</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+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ), - team_name, - v[1].Z - ].join('</td><td>')+'</td>'; - } - ); - - $('#tabelle_zweikampf tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' ); -} diff --git a/html/assets/js/script27.js b/html/assets/js/script27.js deleted file mode 100644 index 9130dbba2dbeac80b56f5dd6a2194149d05b02fd..0000000000000000000000000000000000000000 --- a/html/assets/js/script27.js +++ /dev/null @@ -1,291 +0,0 @@ -const DAY=24*3600*1000; - -function calculateTabelle(saison,runde,show=true){ - - $.each( DATA.teams, - function( i,v ){ - //if( v[saison] == undefined ) - DATA.teams[i][saison] = { P: 0, Tp: 0, Tn: 0, Td: 0, Tr: ['X'], active: (( DATA.teams[i].start <= saison )) } - } - ); - - $.each( ( ( DATA.ergebnisse[saison] != undefined ) ? DATA.ergebnisse[saison] : {} ), - function(k,z){ - $.each(z, - function(j,w){ - w.forEach( - function( v,i ){ - if( runde < k || !$.isNumeric(k) ) return; - var H=DATA.teams[v.H][saison]; - var A=DATA.teams[v.A][saison]; - 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'); - } else { - H.P+=1; - A.P+=1; - H.Tr.push('U'); - A.Tr.push('U'); - } - 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(DATA.teams).filter( (a) => ( a.start <= saison+1 ) ) - .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.id > b.id ) ? 1 : -1; - } - ); - - if( !show ){ - return Tabelle; - } - - $('#tabelle tbody').html(''); - - Tabelle.forEach( - function(v,i){ - if( ! v[saison].active ) return; - 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.id.toLowerCase()+'.svg"> <a href="'+v.link+'" target="ultrasoccer">'+v.name.replace(/\(NL\)/g,'<sup>'+v.id+'</sup>')+'</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>'+v[saison].Td+'</td>'; - tmp+='<td>'+v[saison].P+'</td>'; - $('#tabelle tbody').append('<tr>'+tmp+'</tr>') - } - ); - -} - - -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(); - var steps=0; - - do { - var done=[]; - runde++; - // kalkuliere Tabelle der vergangenen Saison - var Tabelle=calculateTabelle( ( parseInt(saison)-(( runde == 1 ) ? 0 : 0 ) ).toString(), ((runde == 1) ? 7 : runde-1 ) , false); - // stelle die 4er Gruppen zusammen - - Grps=[] - if( runde == 1 ){ - Grps.push( Object.values( DATA.teams ).sort( (a,b) => ( b.id < a.id ) ? 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 ){ - - done.push( grpPartien(date,steps,saison,runde,1,[ 2,9, 3,8, 4,7, 5,6 ]) ); steps++; - done.push( grpPartien(date,steps,saison,runde,2,[ 1,2, 9,3, 8,4, 7,5 ]) ); steps+=2; - done.push( grpPartien(date,steps,saison,runde,3,[ 1,3, 4,9, 5,8, 6,7 ]) ); steps++; - done.push( grpPartien(date,steps,saison,runde,4,[ 1,4, 2,3, 9,5, 6,8 ]) ); steps+=2; - done.push( grpPartien(date,steps,saison,runde,5,[ 5,1, 2,4, 6,9, 7,8 ]) ); steps++; - done.push( grpPartien(date,steps,saison,runde,6,[ 1,6, 2,5, 3,4, 7,9 ]) ); steps+=2; - done.push( grpPartien(date,steps,saison,runde,7,[ 7,1, 6,2, 3,5, 8,9 ]) ); steps++; - done.push( grpPartien(date,steps,saison,runde,8,[ 8,1, 2,7, 3,6, 4,5 ]) ); steps+=2; - done.push( grpPartien(date,steps,saison,runde,9,[ 9,1, 8,2, 3,7, 4,6 ]) ); - - } - - } while( done.reduce( (a,b) => a && b ) == true && Grps.length > 1 ); - - if( done.reduce( (a,b) => a && b ) == true ){ - - var Tabelle = calculateTabelle( saison, runde, false ); - - } else { - - var Tabelle = [ - { - 'kontinent' : 'dummy', - 'id': 'XX', - 'name': '<i>Platz 1</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'id': 'XX', - 'name': '<i>Platz 2</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'id': 'XX', - 'name': '<i>Platz 3</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'id': '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; - - if( done.reduce( (a,b) => a && b ) == true ){ - Grps.shift(); Grps.push([]); - - var p1=DATA.ergebnisse[saison][runde][1][0]; - if( p1.TH >= p1.TA ){ Grps[0].push( DATA.teams[p1.H] ); } else { Grps[0].push( DATA.teams[p1.A] ); } - - var p2=DATA.ergebnisse[saison][runde][1][1]; - if( p2.TH >= p2.TA ){ Grps[0].push( DATA.teams[p2.H] ); } else { Grps[0].push( DATA.teams[p2.A] ); } - - - runde='F' - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Finale</h3>'; - $('#partien').append(tmp); - - done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) ); - - } else { - - runde='F' - var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Finale</h3>'; - $('#partien').append(tmp); - - var Tabelle = [ - { - 'kontinent' : 'dummy', - 'id': 'XX', - 'name': '<i>Sieger 1/4</i>', - 'link': '', - 'manager': 'dummy', - 'start': 27 - }, - { - 'kontinent' : 'dummy', - 'id': 'XX', - 'name': '<i>Sieger 2/3</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 ){ - - var done=true; - - var tmp=''; - tmp+='<h4 class="spieltag s_'+saison+' r_'+runde+' t_'+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; - Grps.forEach( - function(v,i){ - - if( h1 == -1 || a1 == -1 ) return; - - if( DATA.ergebnisse[saison] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; - } else if( DATA.ergebnisse[saison][runde] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; - } else if( DATA.ergebnisse[saison][runde][spieltag] == undefined ){ - var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; done=false; var match=''; - } else { - var result=DATA.ergebnisse[saison][runde][spieltag].filter( (a) => ( a.H == v[h1].id && a.A == v[a1].id ) )[0]; - - var th=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TH+'</a>' : result.TH ) : '-' ); - var ta=(( result != undefined ) ? (( result.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+result.MID+'" target="ultrasoccer">'+result.TA+'</a>' : result.TA ) : '-' ); - var dt=(( result != undefined ) ? new Date(result.T).toJSON().slice(0,10) : '<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i>' ); - if( result == undefined ) done=false; - } - - tmp+='<tr class="begegnungen h_'+v[h1].id+' a_'+v[a1].id+'">'; - tmp+='<td>'+dt+'</td>'; - tmp+='<td><sup>'+v[h1].id+'</sup> '+v[h1].name.replace(/\(NL\)/g,'')+' <img class="flags" src="./images/flags/'+v[h1].id.toLowerCase()+'.svg"></td>'; - tmp+='<td> - </td>'; - tmp+='<td><img class="flags" src="./images/flags/'+v[a1].id.toLowerCase()+'.svg"> '+v[a1].name.replace(/\(NL\)/g,'')+' <sup>'+v[a1].id+'</sup></td>'; - - tmp+='<td>'+th+'</td>'; - tmp+='<td>:</td>'; - tmp+='<td>'+ta+'</td>'; - tmp+='</tr>'; - - } - ); - } while( Bg.length > 0 ); - - - tmp+='</table>'; - $('#partien').append(tmp); - - return done; -} diff --git a/html/functions/db_methods.php b/html/functions/db_methods.php index 11bbedcd6db3450e1bfe84975cb44624b7d09d41..8d3bc10e33c20564ad2aa535e804e0b988c3d4d7 100644 --- a/html/functions/db_methods.php +++ b/html/functions/db_methods.php @@ -48,6 +48,10 @@ function db_addPartie( $csv ){ function db_addErgebnisse( $csv, $secret ){ $C=preg_split('/,/',$csv); + + if( !is_numeric($C[6]) || !is_numeric($C[7]) ){ + return db_removeErgebnisse( $csv, $secret ); + } $C[1]='"'.$C[1].'"'; $C[3]='"'.$C[3].'"'; $C[4]='"'.$C[4].'"'; @@ -60,10 +64,7 @@ function db_addErgebnisse( $csv, $secret ){ $csv=implode($C,','); - - $db=new db; - $sql = "REPLACE INTO Ergebnisse VALUES ( ".$csv." )"; if ( $db->query( $sql ) === TRUE) { @@ -92,6 +93,7 @@ function db_addSpieler( $csv, $secret ){ unset($C[12]); unset($C[13]); + $C[]=SAISON_NOW; $user=db_checkSecret($secret); if( empty( $user ) ) return false; @@ -146,6 +148,31 @@ function db_addStatistik( $csv, $secret ){ return $result; } +function db_removeErgebnisse( $csv, $secret ){ + + $C=preg_split('/,/',$csv); + + $user=db_checkSecret($secret); + if( empty( $user ) ) return false; + + $db=new db; + $sql = "DELETE FROM Ergebnisse WHERE + saison=".$C[0]." + AND runde='".$C[1]."' + AND spieltag=".$C[2]." + AND H='".$C[4]."' + AND A='".$C[5]."'"; + + if ( $db->query( $sql ) === TRUE) { + // success + $result=array( 'success' => true, 'message' => 'Ergebnis erfolgreich entfernt!', 'data' => [] ); + } else { + echo 'SQL-Error: '.$sql.'<br>'; + } + + unset($db); + return $result; +} function db_checkSecret($secret){ @@ -242,7 +269,7 @@ function db_getFromStatistikBySaison($saison){ WHERE Ergebnisse.saison = '.$saison.' GROUP BY SpielerID, MID'; */ - $sql='SELECT Statistik.MID, Statistik.SpielerID, Spieler.name, Spieler.nt, Spieler.age, Teams.id, Statistik.Tore, Statistik.Assists, Statistik.Zpos - Statistik.Zneg AS "Zwk" FROM Statistik + $sql='SELECT Statistik.MID, Statistik.SpielerID, Spieler.name, Spieler.nt, Spieler.age, Spieler.age_saison, Teams.id, Statistik.Tore, Statistik.Assists, 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 @@ -263,170 +290,4 @@ function db_getFromStatistikBySaison($saison){ } -function db_updateListSetStatus( $n, $status ){ - $db=new db; - - $sql = "UPDATE stargate_list SET status='".$status."' WHERE n=".$n; - - if ( $db->query($sql) === TRUE && $db->conn->affected_rows == 1 ) { - // success - $result=array('success' => true, 'message' => 'orderlist status successfully set!', 'n' => $n, 'status' => $status ); - } else { - // check if already exists - $result=array('success' => false, 'message' => 'sql conflict!', 'info' => $sql ); - } - - unset($db); - return $result; -} -function db_updateListSetSupporterTxhash( $n, $supporter, $txhash ){ - $db=new db; - - $sql = "UPDATE stargate_list SET supporter=".$supporter.", txhash=0x".$txhash." WHERE n=".$n; - - if ( $db->query($sql) === TRUE && $db->conn->affected_rows == 1 ) { - // success - $result=array('success' => true, 'message' => 'orderlist supporter successfully set!', 'n' => $n, 'supporter' => $supporter ); - } else { - // check if already exists - $result=array('success' => false, 'message' => 'sql conflict!', 'info' => $sql ); - } - - unset($db); - return $result; -} -function db_updateMembersSetLatitudeLongitudeByMemberSignature($member, $latitude, $longitude, $location, $default_currency, $signature ){ - - $db=new db; - - $sql = "UPDATE stargate_members SET latitude=".$latitude.", longitude=".$longitude.", location='".$location."', default_currency='".$default_currency."', signature=0x".bin2hex(base64_decode($signature)).", status='active' WHERE ( status='active' OR status='init' ) AND id=".$member; - - if ($db->query($sql) === TRUE) { - // success - $result=array('success' => true, 'message' => 'member profile updated successfully!'); - } else { - // error return false - $result=array('success' => false, 'message' => 'member profile could not be updated!', 'info' => $sql ); - } - - unset($db); - return $result; - -} -function db_updateMembersSetSessionkey($member, $sessionkey ){ - - $db=new db; - - $sql = "UPDATE stargate_members SET sessionkey=0x".$sessionkey." WHERE ( status='active' OR status='init' ) AND id=".$member; - - if ($db->query($sql) === TRUE) { - // success - $result=array('success' => true, 'message' => 'member sessionkey updated successfully!'); - } else { - // error return false - $result=array('success' => false, 'message' => 'member sessionkey could not be updated!', 'info' => $sql ); - } - - unset($db); - return $result; - -} -function db_updateMembersSetToken( $member, $token ){ - - $db=new db; - $m=db_getFromMembersById($member); - if( regex( $m['status'], 'init|active') ){ - if( $m['session_expiration'] > time() ){ - $result=array('success' => true, 'message' => 'member token updated successfully!', 'token' => $m['token'] ); - } else { - $sql = "UPDATE stargate_members SET token='".$token."', session_expiration=UNIX_TIMESTAMP()+".SESSION_EXPIRATION." WHERE ( status='active' OR status='init' ) AND id=".$member; - if ($db->query($sql) === TRUE) { - // success - $result=array('success' => true, 'message' => 'member token updated successfully!', 'token' => $token ); - } else { - // error return false - $result=array('success' => false, 'message' => 'member token could not be updated!', 'info' => $sql ); - } - } - } else { - $result=array('success' => false, 'message' => 'member not active', 'status' => $m['status'] ); - } - - unset($db); - return $result; - -} - -function db_updateMessagesSetReceipientStatus( $m, $receipient, $receipient_status ){ - - $db=new db; - - $sql = "UPDATE stargate_messages SET receipient_status='".$receipient_status."' WHERE receipient=".$receipient." AND m=".$m; - - if ( $db->query($sql) === TRUE && $db->conn->affected_rows == 1 ) { - // success - $result=array('success' => true, 'message' => 'message successfully marked as read!', 'm' => $m, 'status' => $receipient_status ); - } else { - // check if already exists - $result=array('success' => false, 'message' => 'sql conflict!', 'info' => $sql ); - } - - unset($db); - return $result; -} -function db_updateMessagesSetTxhash( $sender_address, $amount, $txhash ){ - - $db=new db; - - $sender=db_getFromMembersByFairAddress($sender_address); - $msg=db_getFromMessagesBySenderAmount($sender['id'], $amount); - if( count( $msg ) != 1 ){ - return array('success' => false, 'message' => 'message tx on blockchain does not match with database!', 'info' => '' ); - } - - $sql = "UPDATE stargate_messages SET txhash=0x".$txhash." WHERE m=".$msg['m']." AND fee=".$amount." AND txhash IS NULL"; - - if ( $db->query($sql) === TRUE && $db->conn->affected_rows == 1 ) { - // success - $result=array('success' => true, 'message' => 'message successfully marked as read!', 'm' => $m, 'status' => $receipient_status ); - } else { - // check if already exists - $result=array('success' => false, 'message' => 'sql conflict!', 'info' => $sql ); - } - - unset($db); - return $result; -} -function db_updateMessages( $n, $sender, $receipient, $message, $signature, $fee, $txhash ){ - - $db=new db; - - $signature_hex=bin2hex( base64_decode($signature) ); - $sql = "UPDATE stargate_messages SET n".(empty( $n ) ? "=NULL" : "='".$n."'").", message='".$message."', signature=0x".$signature_hex.", txhash=0x".$txhash." WHERE sender=".$sender." AND receipient=".$receipient." AND message IS NULL AND fee=".$fee; - - if ( $db->query($sql) === TRUE) { - // success - $result=array('success' => true, 'message' => 'message successfully saved!', 'data' => db_getFromMessagesByTxhash($txhash) ); - } else { - // check if already exists - $result=array('success' => false, 'message' => 'sql conflict!', 'info' => $sql ); - } - - unset($db); - return $result; -} - - -function db_removeFromFairauth(){ - $db=new db; - - $sql = 'DELETE FROM stargate_fairauth WHERE CAST(tstamp as date) < CAST( NOW() as date)'; - $result = $db->query($sql); - - if( ! $result ) return 0; - - return true; -} - - ?> diff --git a/html/index.php b/html/index.php index b3f91a0331a1ec8b1aef8ed766b351e53d1ad69c..c6b1d4fcddf4d588df45156694e13f313f5cf9fa 100644 --- a/html/index.php +++ b/html/index.php @@ -1,5 +1,5 @@ --- --- <html> -<meta http-equiv="refresh" content="0;URL=./27.html"> +<meta http-equiv="refresh" content="0;URL=./27.php"> </html>