Skip to content
Snippets Groups Projects
script.js 24.6 KiB
Newer Older
TonyFord's avatar
TonyFord committed
---
---
TonyFord's avatar
TonyFord committed
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();
TonyFord's avatar
TonyFord committed
  var steps=0;
TonyFord's avatar
TonyFord committed

  do {
    var done=[];
    runde++;
TonyFord's avatar
TonyFord committed

    // stelle die 4er Gruppen, sowie Startgruppen zusammen
TonyFord's avatar
TonyFord committed
    Grps=[]
TonyFord's avatar
TonyFord committed
    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() ] );
      }
TonyFord's avatar
TonyFord committed
    }

    var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Runde '+runde+(( Grps.length == 1 ) ? ' (Endrunde)' : '')+'</h3>';
    $('#partien').append(tmp);
TonyFord's avatar
TonyFord committed


    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++;
    }
TonyFord's avatar
TonyFord committed

  } while( done.reduce( (a,b) => a && b ) == true && Grps.length > 1 );


TonyFord's avatar
TonyFord committed
  if( done.reduce( (a,b) => a && b ) == true ){

TonyFord's avatar
TonyFord committed
    var Tabelle = calculatePunktestand( saison, runde, false );
TonyFord's avatar
TonyFord committed

  } 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
TonyFord's avatar
TonyFord committed
      },
      {
        'kontinent' : 'dummy',
        'nt': 'xx',
        'name': '<i>Platz 5</i>',
        'link': '',
        'manager': 'dummy',
        'start': 27
      },
      {
        'kontinent' : 'dummy',
        'nt': 'xx',
        'name': '<i>Platz 6</i>',
        'link': '',
        'manager': 'dummy',
        'start': 27
      },
      {
        'kontinent' : 'dummy',
        'nt': 'xx',
        'name': '<i>Platz 7</i>',
        'link': '',
        'manager': 'dummy',
        'start': 27
      },
      {
        'kontinent' : 'dummy',
        'nt': 'xx',
        'name': '<i>Platz 8</i>',
        'link': '',
        'manager': 'dummy',
        'start': 27
TonyFord's avatar
TonyFord committed
      }
    ]

  }
TonyFord's avatar
TonyFord committed

  Grps.shift();
TonyFord's avatar
TonyFord committed
  //Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() , Tabelle.shift() , Tabelle.shift() , Tabelle.shift() ] );

  if( FINALTEAMS == 8 ){
    runde='VF';
    var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Viertelfinale</h3>';
    $('#partien').append(tmp);

    steps+=FINALS_STEP;
    done.push( grpPartien( date,steps,saison,runde, 1, [ 8,1, 7,2, 6,3, 5,4 ] ) );

    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] ); }
      var p=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == 1 && a.partie == 3 ) )[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 == 4 ) )[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] ); }

    } else {
      Grps.shift();
      var Tabelle = [
        {
          'kontinent' : 'dummy',
          'nt': 'xx',
          'name': '<i>Sieger VF1</i>',
          'link': '',
          'manager': 'dummy',
          'start': 27
        },
        {
          'kontinent' : 'dummy',
          'nt': 'xx',
          'name': '<i>Sieger VF2</i>',
          'link': '',
          'manager': 'dummy',
          'start': 27
        },
        {
          'kontinent' : 'dummy',
          'nt': 'xx',
          'name': '<i>Sieger VF3</i>',
          'link': '',
          'manager': 'dummy',
          'start': 27
        },
        {
          'kontinent' : 'dummy',
          'nt': 'xx',
          'name': '<i>Sieger VF4</i>',
          'link': '',
          'manager': 'dummy',
          'start': 27
        }
      ];
      Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] );
    }

    FINALTEAMS=4;

  }

  if( FINALTEAMS == 4 ){
    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 ] ) );
  }
TonyFord's avatar
TonyFord committed

  steps+=FINALS_STEP;
TonyFord's avatar
TonyFord committed

  if( done.reduce( (a,b) => a && b ) == true ){
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
    Grps.shift(); Grps.push([]);

TonyFord's avatar
TonyFord committed
    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);
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
    done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  } else {
TonyFord's avatar
TonyFord committed

    runde='F'
    var tmp='<h3 class="runde s_'+saison+' r_'+runde+'">Finale</h3>';
    $('#partien').append(tmp);

TonyFord's avatar
TonyFord committed
    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
      }
    ];
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
    Grps.shift();

    Grps.push( [ Tabelle.shift(), Tabelle.shift() ] );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
    done.push( grpPartien(date,steps++,saison,runde,1,[ 1,2 ]) );

  }
TonyFord's avatar
TonyFord committed


TonyFord's avatar
TonyFord committed
}

TonyFord's avatar
TonyFord committed
var St=0;
TonyFord's avatar
TonyFord committed
function grpPartien( date,steps,saison,runde,spieltag,Bg ){
TonyFord's avatar
TonyFord committed

  if( Grps.map( (a) => ( a.filter((b) => (b == undefined )).length > 0 ) )[0] ){
TonyFord's avatar
TonyFord committed
    alert( 'Error: Einige Teams existieren nicht in der DB' );
    return;
  }
TonyFord's avatar
TonyFord committed
  var done=true;

  var tmp='';
TonyFord's avatar
TonyFord committed
  tmp+='<h4 id="st'+spieltag+'" class="spieltag s_'+saison+' r_'+runde+' t_'+spieltag+'" ondblclick="getCsv('+saison+',\''+runde+'\','+spieltag+')">Spieltag '+spieltag+'</h4>';
TonyFord's avatar
TonyFord committed
  tmp+='<table class="partien s_'+saison+' r_'+runde+' t_'+spieltag+'">';
TonyFord's avatar
TonyFord committed
  var partie=0;
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  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);
TonyFord's avatar
TonyFord committed
          var st=STAT_SAISON.filter( (a) => ( a.MID == ergebnis.MID )).length == 12;
TonyFord's avatar
TonyFord committed
          ergebnis['partie']=partie;
TonyFord's avatar
TonyFord committed
          if( St != -1 ) St=spieltag;
TonyFord's avatar
TonyFord committed
        } else {
TonyFord's avatar
TonyFord committed
          if( St > 0 ){
TonyFord's avatar
TonyFord committed
            var anker=St;
            setTimeout( function(){ window.location.href='#st'+anker; },500 );
TonyFord's avatar
TonyFord committed
            St=-1;
TonyFord's avatar
TonyFord committed
          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='';
        }
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
        tmp+='<tr class="begegnungen h_'+v[h1].nt+' a_'+v[a1].nt+' '+(( st ) ? 'stats' : '')+'">';
        tmp+='<td>'+dt+'</td>';
TonyFord's avatar
TonyFord committed
        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].flag ) ? v[h1].flag : v[h1].nt.toLowerCase())+'.svg"></td>';
TonyFord's avatar
TonyFord committed
        tmp+='<td> - </td>';
TonyFord's avatar
TonyFord committed
        tmp+='<td data-id="'+v[a1].nt+'"><img class="flags" src="./images/flags/'+(( v[a1].flag ) ? v[a1].flag : v[a1].nt.toLowerCase())+'.svg"> '+v[a1].name.replace(/\(NL\)/g,'')+' <sup>'+v[a1].nt.toUpperCase()+'</sup></td>';
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
        tmp+='<td data-mid="'+(( ergebnis.MID != undefined ) ? ergebnis.MID : '0' )+'">'+th+'</td>';
TonyFord's avatar
TonyFord committed
        tmp+='<td onmouseenter="showLastResults(\''+v[h1].nt+'\',\''+v[a1].nt+'\')" onmouseleave="hideLastResults()" onclick="ignoreHideLastResults()">:</td>';
TonyFord's avatar
TonyFord committed
        tmp+='<td>'+ta+'</td>';
        tmp+='</tr>';
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
      },spieltag
TonyFord's avatar
TonyFord committed
    );
  } 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);
}

TonyFord's avatar
TonyFord committed
function calculatePunktestand(saison,runde,show=true){
TonyFord's avatar
TonyFord committed

  $.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 )) }
    }
  );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  ERGEBNISSE.filter( (a) => ( ( a.saison == saison || saison == 0 ) && $.isNumeric(a.runde) && a.runde <= runde  ) ).forEach(
TonyFord's avatar
TonyFord committed
    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');
TonyFord's avatar
TonyFord committed
      } else {
TonyFord's avatar
TonyFord committed
        H.P+=1;
        A.P+=1;
        H.Tr.push('U');
        A.Tr.push('U');
TonyFord's avatar
TonyFord committed
      }
TonyFord's avatar
TonyFord committed
      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;
    }
  );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  var startliste=STARTLISTE.reduce((a,b)=>(a));

TonyFord's avatar
TonyFord committed
  var Tabelle=Object.values(TEAMS).filter( (a) => ( ( a.start <= saison || saison == 0 ) && ( startliste.indexOf( a.nt ) > -2 || ( saison == 0 && a.nt != 'xx' ) ) ) )
TonyFord's avatar
TonyFord committed
  .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;
    }
TonyFord's avatar
TonyFord committed
  ).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;
      //if( b.nt == 'xx' ) return false;
      return true;
    } );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  if( !show ){
    return Tabelle;
  }
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  var tabelle='#tabelle_punktestand tbody';
TonyFord's avatar
TonyFord committed
  $(tabelle).html('');

TonyFord's avatar
TonyFord committed
  Tabelle.forEach(
    function(v,i){
      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>';
TonyFord's avatar
TonyFord committed
      tmp+='<td><img class="flags" src="./images/flags/'+(( v.flag ) ? v.flag : v.nt.toLowerCase())+'.svg"> <a href="javascript:calculateTeam('+((saison == 0) ? SAISON_NOW : saison)+',\''+v.nt+'\')">'+v.name.replace(/\(NL\)/g,'<sup>'+v.nt.toUpperCase()+'</sup></a>')+' <a href="'+v.link+'" target="ultrasoccer"><i class="fas fa-link"></i></a></td>';
TonyFord's avatar
TonyFord committed
      tmp+='<td>'+
      v[saison].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'/'+
      v[saison].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'/'+
      v[saison].Tr.map( (a) => ( ( a == 'N') ? 1 : 0 ) ).reduce( (a,b) => a+b )+'</td>';
      var hist=v[saison].Tr.map( (a) => '<'+a+'></'+a+'>' ).slice(-6).join('');
      tmp+='<td>'+hist+'</td>';
      tmp+='<td>'+v[saison].Tp+'/'+v[saison].Tn+'</td>';
      tmp+='<td class="'+((v[saison].Td > 0 ) ? 'p' : (v[saison].Td == 0 ) ? 'u' : 'n')+'">'+((v[saison].Td > 0 ) ? '+' : '') + v[saison].Td+'</td>';
TonyFord's avatar
TonyFord committed
      tmp+='<td>'+v[saison].P+'</td>';
TonyFord's avatar
TonyFord committed
      $(tabelle).append('<tr>'+tmp+'</tr>');
TonyFord's avatar
TonyFord committed
    }
  );

TonyFord's avatar
TonyFord committed
}
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
function calculateTore(saison){
TonyFord's avatar
TonyFord committed
  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
TonyFord's avatar
TonyFord committed
  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(
TonyFord's avatar
TonyFord committed
    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 {
TonyFord's avatar
TonyFord committed
        var team_flag='<img class="flags" src="./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">';
TonyFord's avatar
TonyFord committed
        var team_name='<a href="javascript:calculateTeam('+saison+',\''+team[0].nt+'\')">'+team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup></a>')+' <a href="'+team[0].link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>';
TonyFord's avatar
TonyFord committed
      }

TonyFord's avatar
TonyFord committed
      var attr=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' ');

TonyFord's avatar
TonyFord committed
      return '<td>'+
      [
        i+1,
        (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
TonyFord's avatar
TonyFord committed
        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
TonyFord's avatar
TonyFord committed
        team_name,
        v[1].T
      ].join('</td><td>')+'</td>';
    }
  );
  $('#tabelle_tore tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
}
function calculateAssists(saison){
TonyFord's avatar
TonyFord committed
  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
TonyFord's avatar
TonyFord committed
  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(
TonyFord's avatar
TonyFord committed
    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 {
TonyFord's avatar
TonyFord committed
        var team_flag='<img class="flags" src="./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">';
TonyFord's avatar
TonyFord committed
        var team_name='<a href="javascript:calculateTeam('+saison+',\''+team[0].nt+'\')">'+team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup></a>')+' <a href="'+team[0].link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>';
TonyFord's avatar
TonyFord committed
      }

TonyFord's avatar
TonyFord committed
      var attr=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' ');

TonyFord's avatar
TonyFord committed
      return '<td>'+
      [
        i+1,
        (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
TonyFord's avatar
TonyFord committed
        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
TonyFord's avatar
TonyFord committed
        team_name,
        v[1].A
      ].join('</td><td>')+'</td>';
    }
  );
  $('#tabelle_assists tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
}
function calculateZwk(saison){
TonyFord's avatar
TonyFord committed
  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
TonyFord's avatar
TonyFord committed
  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(
TonyFord's avatar
TonyFord committed
    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 {
TonyFord's avatar
TonyFord committed
        var team_flag='<img class="flags" src="./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">';
TonyFord's avatar
TonyFord committed
        var team_name='<a href="javascript:calculateTeam('+saison+',\''+team[0].nt+'\')">'+team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup></a>')+' <a href="'+team[0].link+'" target="ultrasoccer"><i class="fas fa-link"></i></a>';
TonyFord's avatar
TonyFord committed
      }

TonyFord's avatar
TonyFord committed
      var attr=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' ');

TonyFord's avatar
TonyFord committed
      return '<td>'+
      [
        i+1,
        (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
TonyFord's avatar
TonyFord committed
        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
TonyFord's avatar
TonyFord committed
        team_name,
        (( v[1].Z > 0 ) ? '+' : '' )+v[1].Z
TonyFord's avatar
TonyFord committed
      ].join('</td><td>')+'</td>';
    }
  );

  $('#tabelle_zweikampf tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
TonyFord's avatar
TonyFord committed
}
TonyFord's avatar
TonyFord committed
function calculateTeam(saison,nt){
TonyFord's avatar
TonyFord committed
  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;

TonyFord's avatar
TonyFord committed
  var n=SPIELER.filter( (a) => ( a.nt == nt ) ).map( (b) => ( STATISTIK[b.id] ) ).filter( (c) => ( c !== undefined ) ).map(
    function(v){

      var team=TEAMS.filter( (a) => ( a.nt == v.nt ) );
      if( team.length == 0 ){
        var team_flag='<img class="flags" src="./images/flags/xx.svg" title="n/a">';
        var team_name='';
      } else {
        var team_flag='<img class="flags" src="./images/flags/'+team[0].nt+'.svg" title="'+team[0].name.split('(NL)')[0].trim()+'">';
        var team_name='<a href="'+team[0].link+'" target="ultrasoccer">'+team[0].name+'</a>';
      }

TonyFord's avatar
TonyFord committed
      var attr=((v.attr != undefined) ? v.attr : '').split(' ').map( (a) => ( a != '' ? '<i class="fas '+a+'"></i>' : '' ) ).join(' ');

TonyFord's avatar
TonyFord committed
      var tmp='';
TonyFord's avatar
TonyFord committed
      tmp+='<td>'+team_flag+' '+attr+' '+v.name+'</td>';
TonyFord's avatar
TonyFord committed
      tmp+='<td>'+(v.age*1+saison*1-v.age_saison)+'</td>';
TonyFord's avatar
TonyFord committed
      tmp+='<td>'+v.S+'/'+v.T+'/'+v.A+'</td>';
      tmp+='<td class="'+(( v.Z > 0 ) ? 'p' : (( v.Z < 0 ) ? 'n' : 'u' ) )+'">'+v.Zpos+'/'+v.Zneg+'</td>';
      return tmp;
    }
  );
  $('table.tabelle').toggleClass('d-none',true);
  $('#tabelle_team').toggleClass('d-none',false);
  $('#tabelle_team tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
}
TonyFord's avatar
TonyFord committed
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');
TonyFord's avatar
TonyFord committed
  $('h4.tabelle > button.punktestand').toggleClass('active',true);
  $('h4.tabelle').toggleClass('d-none',false);
TonyFord's avatar
TonyFord committed
}

TonyFord's avatar
TonyFord committed
function backToActiveTable(){
  $('table.tabelle').toggleClass('d-none',true);
  $('#tabelle_'+ $('button.active').text().toLowerCase() ).toggleClass('d-none');
}
TonyFord's avatar
TonyFord committed

function calculateHistorie(){
  $('#tabelle_historie thead tr').html('<th>Pl.</th>');
  var T=[];
  for( var i=0; i<=SAISON_NOW-26; i++){
    $('#tabelle_historie thead tr').append('<th>'+(i+1)+'<sup>'+(i+26)+'</sup></th>');
    T.push(calculatePunktestand(i+26,7,false));
  }
  $('#tabelle_historie thead tr').append('<th class="rest"></th>');

  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;
TonyFord's avatar
TonyFord committed
      tmp+='<td class="'+(( 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>';
TonyFord's avatar
TonyFord committed
    }
    tmp+='</tr>';
  }
  $('#tabelle_historie tbody').html(tmp);
  $('table.tabelle').toggleClass('d-none',true);
  $('#tabelle_historie').toggleClass('d-none',false);
  $('button.active').toggleClass('active',false);
  $('#historie').toggleClass('active',true);
  $('h4.tabelle').toggleClass('d-none',true);
}
TonyFord's avatar
TonyFord committed

var R=undefined;

function showLastResults(H,A){
  $('#lastresults').toggleClass('d-none',false);
  R=ERGEBNISSE.filter((a) => ( a.H==H && a.A==A || a.A==H && a.H==A) ).slice(-5);
  $('#lastresults table tbody').html(R.map(
    (c) =>
    ( '<tr>\
        <td>'+c.saison+'</td>\
        <td>'+c.runde+'</td>\
        <td><img class="flags" src="./images/flags/'+(( c.H == H ) ? c.H : c.A )+'.svg"></td>\
        <td><img class="flags" src="./images/flags/'+(( c.A == A ) ? c.A : c.H )+'.svg"></td>\
        <td><a href="https://ultrasoccer.de/match/?id='+c.MID+'" target="ultrasoccer">'+(( c.H == H ) ? c.TH : c.TA )+'</a></td>\
        <td>:</td>\
        <td><a href="https://ultrasoccer.de/match/?id='+c.MID+'" target="ultrasoccer">'+(( c.A == A ) ? c.TA : c.TH )+'</a></td>\
      </tr>' )
    )
  );

  var d=R.map(
    (a) =>
    (
      { 'TH' : (( a.H == H ) ? parseInt(a.TH) : parseInt(a.TA)),
        'TA' : (( a.A == A ) ? parseInt(a.TA) : parseInt(a.TH)),
        'S' : (( a.H == H ) ? parseInt(a.TH) > parseInt(a.TA) : parseInt(a.TA) > parseInt(a.TH)) ? 1 : 0,
        'U' : parseInt(a.TH) == parseInt(a.TA) ? 1 : 0,
        'N' : (( a.H == H ) ? parseInt(a.TH) < parseInt(a.TA) : parseInt(a.TA) < parseInt(a.TH)) ? 1 : 0
      }
    )
  ).reduce(
    (sum,val) =>
    (
      sum.TH += val.TH,
      sum.TA += val.TA,
      sum.S  += val.S,
      sum.U  += val.U,
      sum.N  += val.N,
      sum
    )
  );

  $('#lastresults table tbody').append(
  '<tr class="lastresults_summe">\
   <td colspan="4">Tore</td><\
   <td>'+d.TH+'</td>\
   <td>:</td>\
   <td>'+d.TA+'</td>\
  </tr>\
  <tr class="lastresults_summe">\
   <td colspan="4">S/U/N</td><\
   <td>'+d.S+'</td>\
   <td>'+d.U+'</td>\
   <td>'+d.N+'</td>\
  </tr>'
  );

  console.log( 'III',d )

}

var ignore_hidelastresults=false;

function hideLastResults(force=false){
  if( !ignore_hidelastresults || force ) $('#lastresults').toggleClass('d-none',true);
  if( force ) ignore_hidelastresults=false;
}

function ignoreHideLastResults(){
  ignore_hidelastresults=true;
}