e-dostavka.by - Статистика
4 years ago in HTML
<html><head>
<meta charset="utf-8"/>
<style type="text/css">
.draganddrop {
position: absolute;
visibility: hidden;
text-decoration: none;
color: #007bff;
}
.draganddrop:visited {
text-decoration: none;
}
.draganddrop:before {
content: "Перетяни меня в закладки";
visibility: visible;
font-size: 25px;
text-decoration: none;
}
.container {
position: absolute;
margin: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 300px;
height: 300px;
}
</style></head><body><div class="container"><a class="draganddrop" href="javascript:async function getData(t){return $.ajax({url:t,type:'GET'})}async function getProductInfo(t,e){const r=await getData(t);return{url:t,category:$('.breadcrumbs > ol > li:nth-child(3) > a > span',r).text(),id:e,price:$('.price meta',r).attr('content')}}async function buildMoneyPerMonthChart(t,e){const r=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];let a=new Date(-864e13),i=new Date(864e13);for(let e=0;e<t.length;e++)t[e].date>=a&&(a=t[e].date),t[e].date<=i&&(i=t[e].date);var n=a.getMonth()+12*a.getFullYear()-(i.getMonth()+12*i.getFullYear()),o=[];for(let e=0;e<=n;e++){var s=new Date(i.getFullYear(),i.getMonth()+e,1),l=0;for(let e=0;e<t.length;e++)t[e].date.getMonth()===s.getMonth()&&t[e].date.getFullYear()===s.getFullYear()&&(l+=t[e].price);var d=r[s.getMonth()]+' '+s.getFullYear().toString();o.push({label:d,y:l})}var c={animationEnabled:!0,title:{text:'Расходы в месяц'},axisY:{title:'расходы',suffix:'р',includeZero:!1},axisX:{title:'Месяцы'},data:[{type:'column',dataPoints:o}]};$('#chartContainer').CanvasJSChart(c)}function buildPriceChangeChart(t,e){var r=[],a=0;for(const p of e){var i=[],n=-1/0,o=1/0,s='';for(const e of t)if(p.id===e.id){if(!isNaN(parseFloat(p.price))&&0===i.length){var l=parseFloat(p.price);i.push({y:l,x:new Date})}s=e.title;var d=e.price/e.quantity;i.push({y:d,x:e.date}),d<=o&&(o=d),d>=n&&(n=d)}var c=(n-o)/n;c>=a&&(a=c),r.push({label:s+' арт. '+p.id,name:s,points:i,priceChangeRate:c})}var p=r.find(t=>t.priceChangeRate===a);$('#productDropDown').autocomplete({source:r,minLength:2,focus:function(t,e){return!1},select:function(t,e){return $('#productDropDown').val(e.item.name),drawPriceChangeChart(e.item.points,e.item.name),!1}}),$('#productDropDown').val(p.name),$('#productDropDown').dblclick(function(){$('#productDropDown').val('')}),drawPriceChangeChart(p.points,p.name)}function drawPriceChangeChart(t,e){var r={animationEnabled:!0,theme:'light2',title:{text:'Динамика цены товара'},axisX:{valueFormatString:'DD MMM'},axisY:{title:'Цена товара, р',suffix:'р',minimum:0},toolTip:{shared:!0},legend:{cursor:'pointer',verticalAlign:'bottom',horizontalAlign:'left',dockInsidePlotArea:!0},data:[{type:'line',showInLegend:!0,name:e,markerType:'square',xValueFormatString:'DD MMM, YYYY',color:'#F08080',yValueFormatString:'0.00',dataPoints:t}]};$('#priceChangeChartContainer').CanvasJSChart(r)}function findCategory(t,e){for(let r=0;r<t.length;r++)if(t[r].url===e)return t[r].category}function buildMoneyPerCategory(t,e){var r=[],a=0;for(let o=0;o<t.length;o++){var i=t[o];if(!isNullOrEmpty(i.url)&&'undefined'!==i.price){var n=findCategory(e,i.url);isNullOrEmpty(n)||(void 0===r[n]&&(r[n]=0),r[n]+=i.price,a+=i.price)}}var o=[];for(curCategory in r)o.push({label:curCategory,y:(100*r[curCategory]/a).toFixed(2)});var s={title:{text:'Расходы по категориям'},data:[{type:'pie',startAngle:45,showInLegend:'true',legendText:'{label}',indexLabel:'{label} ({y})',yValueFormatString:'0.0',dataPoints:o}]};$('#chartContainerPie').CanvasJSChart(s)}function parseDate(t){var e=t.split(' ',3),r=e[0],a=['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'].indexOf(e[1]),i=e[2];return new Date(i,a,r)}function main(){'e-dostavka.by'===window.location.hostname?$('.wrapper').html('<a id=startButton class=ui-button style=font-size:250%;margin:100px;20px; onclick=javascript:buildStat() href=#>Собрать статистику</a><div id=progresscontainer style=margin:100px;20px;display:none;font-size:14px;><div id=messageBox style=font-size:16px;font-color:#a01919></div><div id=progressbar></div></div><div id=answerContainer style=display:none;><div style=margin:30px;5px;><div id=chartContainer style=height:370px;width:100%;></div></div><div style=margin:30px;5px;><div id=chartContainerPie style=height:370px;width:100%;></div></div><div style=margin:30px;5px;><div style=width:100%;><label for=productDropDown style=min-width:100px;font-size:16px;width:20%;>Продукт: </label><input id=productDropDown style=width:80%;></div><div id=priceChangeChartContainer style=height:370px;width:100%;></div></div></div><script src=https://code.jquery.com/ui/1.12.1/jquery-ui.js><\/script><script src=https://canvasjs.com/assets/script/jquery.canvasjs.min.js><\/script>'):alert('Скрипт работает только на e-dostavka.by')}function isNullOrEmpty(t){return void 0===t||''===t}async function buildStat(){$('#progressbar').progressbar({value:0}),$('#progresscontainer').show(),$('#startButton').hide(),$('#messageBox').html('Идет сбор статистики, это может занять несколько минут...');var t=[],e=[];const r=await getData('https://e-dostavka.by/cabinet/history/');var a=$('.number a',r),i=a.length;if(0!==i){for(let r=0;r<i;r++){var n=$(a[r]).attr('href');const w=await getData(n);var o=100*r/i;if($('#progressbar').progressbar({value:o}),$('.fa-home',w).length>0){var s=$('.date_order',w);s.find('b').remove();var l=parseDate(s.text()),d=$('.description',w);for(let r=0;r<d.length;r++){var c=$('.itog',d[r]);c.find('strong').remove(),c.find('b').remove();var p=$('.cent',c).text();c.find('span').remove();var u=c.text(),h=parseFloat(u)+parseFloat(p)/100,g=$('.title',d[r]).text(),v=$('.title a',d[r]).attr('href'),f=$('.row-item',d[r]).filter(function(){return'Количество:'===$('strong',this).text().trim()});f.find('strong').remove(),f.find('span').remove();var m=parseFloat(f.text()),y=$('.row-item',d[r]).filter(function(){return'Артикул:'===$('strong',this).text().trim()});y.find('strong').remove();var x=y.text().trim(),C={date:l,title:g,url:v,price:h,quantity:m,id:x};if(0===e.filter(t=>t.id===x).length&&!isNullOrEmpty(v)){const t=await getProductInfo(v,x);e.push(t)}t.push(C)}}}$('#progresscontainer').hide(),$('#answerContainer').show(),buildMoneyPerMonthChart(t,e),buildMoneyPerCategory(t,e),buildPriceChangeChart(t,e)}else $('#messageBox').html('Нет доступа к истории заказов или история заказов пуста.')}main();" title="Перетяни меня в закладки">e-dostavka Статистика</a></div></body></html>