Persönliche Werkzeuge

Vorlage:BV-BgPreisIndex

Aus BogenWiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
(Der Versionsvergleich bezieht 45 dazwischenliegende Versionen mit ein.)
Zeile 4: Zeile 4:
BVBgList    = [];
BVBgList    = [];
BVBgPreise  = [];
BVBgPreise  = [];
-
BVBgLoadCount = 0;
+
BVBgPrStat  = {Total:{Count:0, DateFrom:'9999-99-99', DateTo:''},
 +
              ebay: {Count:0, DateFrom:'9999-99-99', DateTo:''},
 +
              AH:  {Count:0, DateFrom:'9999-99-99', DateTo:''}};
function OnBgListLoad(BgList,Param)
function OnBgListLoad(BgList,Param)
{
{
-
   console.log('[OnBgListLoad]');
+
   console.log('[OnBgListLoad] BgList.length='+BgList.length);
   BVBgList = BgList;
   BVBgList = BgList;
 +
  var aBogenNr = [];
   for (var b = 0; b < BVBgList.length; b++)
   for (var b = 0; b < BVBgList.length; b++)
-
     BVGetBogen(Param.WikiUser,Param.Gebiet,Param.Gebiet1,Param.KatNr,BVBgList[b].BogenNr,Param.Options,OnBgLoad);
+
     aBogenNr.push(BVBgList[b].BogenNr);
 +
  BVGetBogen(Param.WikiUser,Param.Gebiet,Param.Gebiet1,Param.KatNr,aBogenNr,Param.Options,OnBgLoad);
}
}
function OnBgLoad(Bogen,Param)
function OnBgLoad(Bogen,Param)
{
{
-
   console.log('[OnBgLoad] Bogen.BogenNr='+Bogen.BogenNr);
+
   console.log('[OnBgLoad] Bogen.length='+Bogen.length);
 +
  var BVBgList = Bogen;
 +
  var aOptions = Param.Options.split(';');
 +
  var aGroupBy = [];
 +
  for (o = 0; o < aOptions.length; o++) {
 +
    if (aOptions[o].split(':')[0] == 'GroupBy')
 +
      aGroupBy = aOptions[o].split(':')[1].split('+');
 +
  }
 +
  var sCellPadding = 'padding:0px; padding-left:4px; padding-right:4px;';
 +
  var eBgList = document.getElementById('BVBgList.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr);
 +
  var sTabHTML = '<table id="BVBgList.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr+'.Tab" style="background:silver" cellpadding=1 cellspacing=1>'+
 +
                '  <tr style="background:#E0E0E0" valign=top>'+
 +
                '    <td rowspan=2><div style="'+sCellPadding+'"><b>BogenNr.</b><br>'+BVBgList.length+'</div></td>'+
 +
                '    <td colspan=2><div style="'+sCellPadding+'"><b>Eigenschaften</b></div></td>'+
 +
                '    <td colspan=3><div style="'+sCellPadding+'"><b>Preis</b></div></td>'+
 +
                '  </tr>'+
 +
                '  <tr style="background:#E0E0E0" valign=top>'+
 +
                '    <td><div style="'+sCellPadding+'"><b>DKZ</b></div></td>'+
 +
                '    <td><div style="'+sCellPadding+'"><b>BZN</b></div></td>'+
 +
                '    <td><div style="'+sCellPadding+'"><b>Datum</b></div></td>'+
 +
                '    <td><div style="'+sCellPadding+'"><b>Zuschlag</b></div></td>'+
 +
                '    <td><div style="'+sCellPadding+'"><b>AH</b></div></td>'+
 +
                '  </tr>';
   for (var b = 0; b < BVBgList.length; b++) {
   for (var b = 0; b < BVBgList.length; b++) {
-
     if (BVBgList[b].BogenNr == Bogen.BogenNr) {
+
     var sDKZ = '-';
-
       BVBgList[b] = Bogen;
+
    var sBZN = '';
-
       BVBgLoadCount++;
+
    for (var brs = 0; brs < BVBgList[b].BRS.length; brs++) {
-
      console.log('[OnBgLoad] BVBgList['+b+'] BVBgLoadCount='+BVBgLoadCount);
+
       if (BVBgList[b].BRS[brs].Type == 'DKZ') sDKZ = BVBgList[b].BRS[brs].Key;
 +
       if (BVBgList[b].BRS[brs].Type == 'BZN') sBZN = BVBgList[b].BRS[brs].Text;
     }
     }
 +
    var sAH = '';
 +
    switch (BVBgList[b].Eingang.Quelle) {
 +
      case 'eb': sAH = 'ebay'; break;
 +
      case 'ah': sAH = BVBgList[b].Eingang.Name; break;
 +
    }
 +
    var sBN = BVBgList[b].BogenNr;
 +
    if (BVBgList[b].BogenWiki == 'X')
 +
      sBN = '<a href="/bogenwiki/index.php?title=Bund MiNr. '+BVBgList[b].BogenNr+' groß">'+BVBgList[b].BogenNr+'</a>';
 +
    var sPreis = BVBgList[b].Eingang.Preis;
 +
    console.log('BVGetBgFieldValue(BVBgList['+b+'],"Zustand") = '+BVGetBgFieldValue(BVBgList[b],'Zustand'));
 +
    if (!BVCheckPrice(sPreis,BVBgList[b].Eingang.Art,BVGetBgFieldValue(BVBgList[b],'EM.Art.Key'),BVGetBgFieldValue(BVBgList[b],'Erhaltung'),BVGetBgFieldValue(BVBgList[b],'Zustand')))
 +
      sPreis = '<span style="color:silver;"><i>'+sPreis+'€</i></span>';
 +
    sTabHTML += '  <tr style="background:#FCFCFC" valign=top>'+
 +
                '    <td><div style="'+sCellPadding+'">'+sBN+'</div></td>'+
 +
                '    <td align=center><div style="'+sCellPadding+'">'+sDKZ+'</div></td>'+
 +
                '    <td align=center><div style="'+sCellPadding+'">'+sBZN+'</div></td>'+
 +
                '    <td><div style="'+sCellPadding+'">'+BVBgList[b].Eingang.Datum+'</div></td>'+
 +
                '    <td align=right><div style="'+sCellPadding+'">'+sPreis+'</div></td>'+
 +
                '    <td><div style="'+sCellPadding+'">'+sAH+'</div></td>'+
 +
                '  </tr>';
   }
   }
-
   if (BVBgLoadCount == BVBgList.length) {
+
  sTabHTML += '</table>';
-
    var sCellPadding = 'padding:0px; padding-left:4px; padding-right:4px;';
+
   if (eBgList) eBgList.innerHTML = sTabHTML;
-
    var eBgList = document.getElementById('BVBgList.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr);
+
  var eBgPreise = document.getElementById('BVBgPreise.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr);
-
    var sTabHTML = '<table id="BVBgList.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr+'.Tab" style="background:silver" cellpadding=1 cellspacing=1>'+
+
  var BVBgPreise = BVCalcPriceIndex(Bogen,aGroupBy);
-
                  '  <tr style="background:#E0E0E0" valign=top>'+
+
  console.log('BVBgPreise.length = '+BVBgPreise.length);
-
                  '    <td rowspan=2><div style="'+sCellPadding+'"><b>BogenNr.</b><br>'+BVBgList.length+'</div></td>'+
+
  sTabHTML = '<table id="BVBgPreise.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr+'.Tab" style="background:silver" cellpadding=1 cellspacing=1>'+
-
                  '    <td colspan=2><div style="'+sCellPadding+'"><b>Eigenschaften</b></div></td>'+
+
            '  <tr style="background:#E0E0E0" valign=top>';
-
                  '   <td colspan=3><div style="'+sCellPadding+'"><b>Preis</b></div></td>'+
+
  for (g = 0; g < aGroupBy.length; g++) {
-
                  ' </tr>'+
+
    var aGroupByParts = aGroupBy[g].split('.');
-
                  ' <tr style="background:#E0E0E0" valign=top>'+
+
    var sGroupByText = aGroupByParts[0];
-
                  '    <td><div style="'+sCellPadding+'"><b>DKZ</b></div></td>'+
+
    if (aGroupByParts[0] == 'Erhaltung') sGroupByText = 'Erh.';
-
                  '    <td><div style="'+sCellPadding+'"><b>BZN</b></div></td>'+
+
    if (aGroupByParts[0] == 'Eingang') sGroupByText = aGroupByParts[1];
-
                  '    <td><div style="'+sCellPadding+'"><b>Datum</b></div></td>'+
+
    if (aGroupByParts[0] == 'Ausgang') sGroupByText = aGroupByParts[1];
-
                  '    <td><div style="'+sCellPadding+'"><b>Zuschlag</b></div></td>'+
+
    if (aGroupByParts[0] == 'BRS') sGroupByText = aGroupByParts[1];
-
                  '    <td><div style="'+sCellPadding+'"><b>AH</b></div></td>'+
+
    if (aGroupByParts[0] == 'PF') sGroupByText = aGroupByParts[0];
-
                  '  </tr>';
+
    if (aGroupByParts[0] == 'EM') sGroupByText = aGroupByParts[1];
-
    for (var b = 0; b < BVBgList.length; b++) {
+
    sTabHTML += '    <td><div style="'+sCellPadding+'">'+sGroupByText+'</div></td>';
-
      var sDKZ = '-';
+
  }
-
      var sBZN = '';
+
  sTabHTML += '    <td align=center><div style="'+sCellPadding+'">Mittel</div></td>'+
-
      for (var brs = 0; brs < BVBgList[b].BRS.length; brs++) {
+
              '    <td align=center><div style="'+sCellPadding+'">Median</div></td>'+
-
        if (BVBgList[b].BRS[brs].Type == 'DKZ') sDKZ = BVBgList[b].BRS[brs].Key;
+
              '    <td align=center><div style="'+sCellPadding+'">Min - Max</div></td>'+
-
        if (BVBgList[b].BRS[brs].Type == 'BZN') sBZN = BVBgList[b].BRS[brs].Text;
+
              '    <td align=center><div style="'+sCellPadding+'">Anz.</div></td>'+
-
      }
+
              '  </tr>';
-
      var sAH = '';
+
  if (BVBgPreise.length > 0) {
-
      switch (BVBgList[b].Eingang.Quelle) {
+
    TotalCount = 0;
-
         case 'eb': sAH = 'ebay'; break;
+
    TotalDateFrom = '';
-
         case 'ah': sAH = BVBgList[b].Eingang.Name; break;
+
    TotalDateTo = '';
-
      }
+
    TotalEbayCount = 0;
-
      var sBN = BVBgList[b].BogenNr;
+
    TotalEbayDateFrom = '';
-
      if (BVBgList[b].BogenWiki == 'X')
+
    TotalEbayDateTo = '';
-
        sBN = '<a href="/bogenwiki/index.php?title=Bund MiNr. '+BVBgList[b].BogenNr+' groß">'+BVBgList[b].BogenNr+'</a>';
+
    TotalAHCount = 0;
-
      var sPreis = BVBgList[b].Eingang.Preis;
+
    TotalAHDateFrom = '';
-
      var bPreis = ((BVBgList[b].Eingang.Art == 'AZ') || (BVBgList[b].Eingang.Art == 'K'));
+
    TotalAHDateTo = '';
-
      if (bPreis) {
+
    for (var p = 0; p < BVBgPreise.length; p++) {
-
        var aOptions = Param.Options.split(';');
+
      console.log('BVBgPreise['+p+'].GroupValue = "'+BVBgPreise[p].GroupValue+'"');
-
        var aGroupBy = '';
+
      if (BVBgPreise[p].GroupValue.indexOf('::') > 0) {
-
        for (o = 0; o < aOptions.length; o++) {
+
        var aGroupValues = BVBgPreise[p].GroupValue.split('::');
-
          if (aOptions[o].split(':')[0] == 'GroupBy')
+
         sTabHTML += ' <tr style="background:#FCFCFC" valign=top>';
-
             aGroupBy = aOptions[o].split(':')[1].split('+');
+
         for (v = 0; v < aGroupValues.length-1; v++) {
 +
          var aGroupByParts = aGroupBy[v].split('.');
 +
          var sGroupByValueText = aGroupValues[v];
 +
          console.log('aGroupByParts['+v+']="'+aGroupByParts[v]+'"; aGroupValues['+v+']="'+aGroupValues[v]+'"');
 +
          if (aGroupByParts[v] == 'Erhaltung') {
 +
            switch (aGroupValues[v]) {
 +
              case 'Pf': sGroupByValueText = '<div style="padding-top:2px"><img src="/bogenwiki/images/Symbol_Pfr1T.png" width="27" height="14" alt="**" title="postfrisch"></div>'; break;
 +
              case 'Gs': sGroupByValueText = '<div style="padding-top:2px"><img src="/bogenwiki/images/Symbol_GesT1.png" width="13" height="14" alt="**" title="gestempelt"></div>'; break;
 +
              case 'Ug': sGroupByValueText = '<div style="padding-top:2px"><img src="/bogenwiki/images/Symbol_UgsT1.png" width="13" height="14" alt="**" title="ungebraucht"></div>'; break;
 +
              case 'Bt': sGroupByValueText = '<span title="Bogentasche">BT</span>'; break;
 +
             }
 +
          }
 +
          sTabHTML += '   <td><div style="'+sCellPadding+'">'+sGroupByValueText+'</div></td>';
         }
         }
-
         var sGroupByValue = '';
+
         sTabHTML += '   <td align=right><div style="'+sCellPadding+'">'+BVBgPreise[p].Avg.toFixed(2).replace(/\./,',')+'€</div></td>'+
-
        for (g = 0; g < aGroupBy.length; g++) {
+
                    '    <td align=right><div style="'+sCellPadding+'">'+BVBgPreise[p].Median.toFixed(2).replace(/\./,',')+'€</div></td>'+
-
           sGroupByValue += BVGetBgFieldValue(BVBgList[b],aGroupBy[g])+'::';
+
                    '    <td align=center><div style="'+sCellPadding+'">'+BVBgPreise[p].Min.toFixed(2).replace(/\./,',')+'€ - '+BVBgPreise[p].Max.toFixed(2).replace(/\./,',')+'€</div></td>'+
 +
                    '    <td align=center><div style="'+sCellPadding+'">'+BVBgPreise[p].Count+'</div></td>'+
 +
                    '  </tr>';
 +
      } else {
 +
        switch (BVBgPreise[p].GroupValue) {
 +
           case '':
 +
            TotalCount = BVBgPreise[p].Count;
 +
            TotalDateFrom = BVBgPreise[p].DateFrom;
 +
            TotalDateTo = BVBgPreise[p].DateTo;
 +
            break;
 +
          case '[src:eb]':
 +
            TotalEbayCount = BVBgPreise[p].Count;
 +
            TotalEbayDateFrom = BVBgPreise[p].DateFrom;
 +
            TotalEbayDateTo = BVBgPreise[p].DateTo;
 +
            break;
 +
          case '[src:ah]':
 +
            TotalAHCount = BVBgPreise[p].Count;
 +
            TotalAHDateFrom = BVBgPreise[p].DateFrom;
 +
            TotalAHDateTo = BVBgPreise[p].DateTo;
 +
            break;
         }
         }
-
        var nPreis = parseFloat(sPreis.replace(/,/,'.'))
 
-
        var nGroupIdx = -1;
 
-
        for (var p = 0; p < BVBgPreise.length; p++)
 
-
          if (BVBgPreise[p].GroupValue == sGroupByValue) nGroupIdx = p;
 
-
        if (nGroupIdx < 0) {
 
-
          BVBgPreise.push({GroupValue:sGroupByValue, Min:nPreis, Sum:nPreis, Max:nPreis, Count:1, Preise:[nPreis]});
 
-
        } else {
 
-
          if (nPreis < BVBgPreise[nGroupIdx].Min) BVBgPreise[nGroupIdx].Min = nPreis;
 
-
          if (nPreis > BVBgPreise[nGroupIdx].Max) BVBgPreise[nGroupIdx].Max = nPreis;
 
-
          BVBgPreise[nGroupIdx].Sum += nPreis;
 
-
          BVBgPreise[nGroupIdx].Count++;
 
-
          BVBgPreise[nGroupIdx].Preise.push(nPreis);
 
-
        }
 
-
      } else {
 
-
        sPreis = '<span style="color:silver;"><i>'+BVBgList[b].Eingang.Preis+'€</i></span>';
 
       }
       }
-
      sTabHTML += '  <tr style="background:#FCFCFC" valign=top>'+
 
-
                  '    <td><div style="'+sCellPadding+'">'+sBN+'</div></td>'+
 
-
                  '    <td align=center><div style="'+sCellPadding+'">'+sDKZ+'</div></td>'+
 
-
                  '    <td align=center><div style="'+sCellPadding+'">'+sBZN+'</div></td>'+
 
-
                  '    <td><div style="'+sCellPadding+'">'+BVBgList[b].Eingang.Datum+'</div></td>'+
 
-
                  '    <td align=right><div style="'+sCellPadding+'">'+sPreis+'</div></td>'+
 
-
                  '    <td><div style="'+sCellPadding+'">'+sAH+'</div></td>'+
 
-
                  '  </tr>';
 
     }
     }
-
     sTabHTML += '</table>';
+
    nColSpan = aGroupBy.length + 4;
-
    if (eBgList) eBgList.innerHTML = sTabHTML;
+
     sTabHTML += ' <tr style="background:#FCFCFC" valign=top>'+
-
    var eBgPreise = document.getElementById('BVBgPreise.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr);
+
                '    <td align=left colspan='+nColSpan+'><div style="'+sCellPadding+'">'+
-
    var aGroupBy = '';
+
                      '<table id="BVBgPrStat.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr+'.Tab" style="background:transparent" cellpadding=0 cellspacing=0>'+
-
    for (o = 0; o < aOptions.length; o++) {
+
                        '<tr style="background:transparent" valign=top>'+
-
      if (aOptions[o].split(':')[0] == 'GroupBy')
+
                          '<td colspan=3><b>Datenbasis:</b></td>'+
-
        aGroupBy = aOptions[o].split(':')[1].split('+');
+
                        '</tr>'+
-
    }
+
                        '<tr style="background:transparent" valign=top>'+
-
    sTabHTML = '<table id="BVBgPreise.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr+'.Tab" style="background:silver" cellpadding=1 cellspacing=1>'+
+
                          '<td>Gesamt:&nbsp;</td>'+
-
              ' <tr style="background:#E0E0E0" valign=top>';
+
                          '<td align=right>'+TotalCount+'&nbsp;</td>'+
-
    for (g = 0; g < aGroupBy.length; g++)
+
                          '<td>('+TotalDateFrom+' - '+TotalDateTo+')</td>'+
-
      sTabHTML += '   <td><div style="'+sCellPadding+'"><b>'+aGroupBy[g]+'</b></div></td>';
+
                        '</tr>'+
-
    sTabHTML += '   <td><div style="'+sCellPadding+'"><b>Min</b></div></td>'+
+
                        '<tr style="background:transparent" valign=top>'+
-
                '   <td><div style="'+sCellPadding+'"><b>Avg.</b></div></td>'+
+
                          '<td>&nbsp;&nbsp;davon ebay:&nbsp;</td>'+
-
                '   <td><div style="'+sCellPadding+'"><b>Med.</b></div></td>'+
+
                          '<td align=right>'+TotalEbayCount+'&nbsp;</td>'+
-
                '   <td><div style="'+sCellPadding+'"><b>Max</b></div></td>'+
+
                          '<td>'+(TotalEbayCount>0 ? '('+TotalEbayDateFrom+' - '+TotalEbayDateTo+')' : ' ')+'</td>'+
-
                '   <td><div style="'+sCellPadding+'"><b>Anz.</b></div></td>'+
+
                        '</tr>'+
 +
                        '<tr style="background:transparent" valign=top>'+
 +
                          '<td>&nbsp;&nbsp;davon AH:&nbsp;</td>'+
 +
                          '<td align=right>'+TotalAHCount+'&nbsp;</td>'+
 +
                          '<td>'+(TotalAHCount>0 ? '('+TotalAHDateFrom+' - '+TotalAHDateTo+')' : ' ')+'</td>'+
 +
                        '</tr>'+
 +
                      '</table>'+
 +
                '    </div></td>'+
                 '  </tr>';
                 '  </tr>';
-
    BVBgPreise.sort((a, b) => a.GroupValue > b.GroupValue ? 1 : -1);
+
 
-
    for (var p = 0; p < BVBgPreise.length; p++) {
+
-
      var aGroupValues = BVBgPreise[p].GroupValue.split('::');
+
-
      sTabHTML += '  <tr style="background:#FCFCFC" valign=top>';
+
-
      for (v = 0; v < aGroupValues.length-1; v++)
+
-
        sTabHTML += '    <td><div style="'+sCellPadding+'">'+aGroupValues[v]+'</div></td>';
+
-
      sTabHTML += '    <td align=right><div style="'+sCellPadding+'">'+BVBgPreise[p].Min.toFixed(2).replace(/\./,',')+'€</div></td>'+
+
-
                  '    <td align=right><div style="'+sCellPadding+'">'+(BVBgPreise[p].Sum/BVBgPreise[p].Count).toFixed(2).replace(/\./,',')+'€</div></td>'+
+
-
                  '    <td align=right><div style="'+sCellPadding+'">'+median(BVBgPreise[p].Preise).toFixed(2).replace(/\./,',')+'€</div></td>'+
+
-
                  '    <td align=right><div style="'+sCellPadding+'">'+BVBgPreise[p].Max.toFixed(2).replace(/\./,',')+'€</div></td>'+
+
-
                  '    <td align=center><div style="'+sCellPadding+'">'+BVBgPreise[p].Count+'</div></td>'+
+
-
                  '  </tr>';
+
-
    }
+
-
    sTabHTML += '</table>';
+
-
    eBgPreise.innerHTML = sTabHTML;
+
-
  }
+
-
}
+
-
function median(arr) {
+
-
  const mid = Math.floor(arr.length / 2);
+
-
  const sortedArr = arr.sort((a, b) => a - b);
+
-
  if (arr.length % 2 === 0) {
+
-
    return (sortedArr[mid - 1] + sortedArr[mid]) / 2;
+
   } else {
   } else {
-
     return sortedArr[mid];
+
     nColSpan = aGroupBy.length + 4;
 +
    sTabHTML += '  <tr style="background:#FCFCFC" valign=top>'+
 +
                '    <td align=left colspan='+nColSpan+'><div style="'+sCellPadding+'">Keine Auktionsergebnisse vorhanden</div></td>'+
 +
                '  </tr>';
   }
   }
 +
  sTabHTML += '</table>';
 +
  eBgPreise.innerHTML = sTabHTML;
}
}
</script></html>
</script></html>

Aktuelle Version vom 18:16, 1. Dez. 2023

Template BV_BgPreisIndex: Invalid value for parameter Cmd ("empty")!!!