Vorlage:BV-BgPreisIndex
Aus BogenWiki
(Unterschied zwischen Versionen)
Nugman (Diskussion | Beiträge) |
Nugman (Diskussion | Beiträge) |
||
Zeile 4: | Zeile 4: | ||
BVBgList = []; | BVBgList = []; | ||
BVBgPreise = []; | BVBgPreise = []; | ||
- | |||
function OnBgListLoad(BgList,Param) | function OnBgListLoad(BgList,Param) | ||
{ | { | ||
console.log('[OnBgListLoad]'); | console.log('[OnBgListLoad]'); | ||
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, | + | 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. | + | console.log('[OnBgLoad] Bogen.length='+Bogen.length); |
+ | BVBgList = Bogen; | ||
+ | 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++) { | ||
- | + | var sDKZ = '-'; | |
- | BVBgList[b] = | + | var sBZN = ''; |
- | + | for (var brs = 0; brs < BVBgList[b].BRS.length; brs++) { | |
- | + | 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) { | |
- | var | + | 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; | |
- | + | var bPreis = ((BVBgList[b].Eingang.Art == 'AZ') || (BVBgList[b].Eingang.Art == 'K')); | |
- | + | if (bPreis) { | |
- | + | 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 | + | |
- | var | + | |
- | for ( | + | |
- | if ( | + | |
- | + | ||
} | } | ||
- | var | + | var sGroupByValue = ''; |
- | + | for (g = 0; g < aGroupBy.length; g++) { | |
- | + | sGroupByValue += BVGetBgFieldValue(BVBgList[b],aGroupBy[g])+'::'; | |
- | + | ||
} | } | ||
- | + | 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 { | } 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 += '</table>'; | + | 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>'; | |
- | + | if (eBgList) eBgList.innerHTML = sTabHTML; | |
- | + | var eBgPreise = document.getElementById('BVBgPreise.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr); | |
- | + | var aGroupBy = ''; | |
- | + | for (o = 0; o < aOptions.length; o++) { | |
- | + | if (aOptions[o].split(':')[0] == 'GroupBy') | |
- | + | aGroupBy = aOptions[o].split(':')[1].split('+'); | |
- | + | } | |
+ | sTabHTML = '<table id="BVBgPreise.'+Param.Gebiet+'.'+Param.Gebiet1+'.'+Param.KatNr+'.Tab" style="background:silver" cellpadding=1 cellspacing=1>'+ | ||
+ | ' <tr style="background:#E0E0E0" valign=top>'; | ||
+ | for (g = 0; g < aGroupBy.length; g++) | ||
+ | sTabHTML += ' <td><div style="'+sCellPadding+'"><b>'+aGroupBy[g]+'</b></div></td>'; | ||
+ | sTabHTML += ' <td><div style="'+sCellPadding+'"><b>Min</b></div></td>'+ | ||
+ | ' <td><div style="'+sCellPadding+'"><b>Avg.</b></div></td>'+ | ||
+ | ' <td><div style="'+sCellPadding+'"><b>Med.</b></div></td>'+ | ||
+ | ' <td><div style="'+sCellPadding+'"><b>Max</b></div></td>'+ | ||
+ | ' <td><div style="'+sCellPadding+'"><b>Anz.</b></div></td>'+ | ||
+ | ' </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>'; | ' </tr>'; | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
} | } | ||
+ | sTabHTML += '</table>'; | ||
+ | eBgPreise.innerHTML = sTabHTML; | ||
} | } | ||
function median(arr) { | function median(arr) { |
Version vom 20:38, 24. Sep. 2023
Template BV_BgPreisIndex: Invalid value for parameter Cmd ("empty")!!!