Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/skyweb24.popuppro/admin/includes/ |
Upload File : |
<? use \Bitrix\Main\Application, Bitrix\Main\Page\Asset, Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); global $request; $statistic = new \Skyweb24\Popuppro\Statistics($idPopup, false, false); $dataConversion = $editableWindow->getStatConversion($idPopup); $dataActivePage = $statistic->getStatActivePage(); $dataDevice = $statistic->getStatDevice($idPopup); $dataClose = $statistic->getStatClose($idPopup); $dataActiveHour = $statistic->getStatActive($idPopup, "hour"); $dataActiveDays = $statistic->getStatActive($idPopup, "days"); CAdminMessage::ShowMessage([ "TYPE"=>"OK", "MESSAGE"=>Loc::getMessage("skyweb24.popuppro_STAT_INFO"), 'HTML'=>true ]); ?> <tr> <td colspan="2" style="vertical-align: top;"> <div class="stat-widget boyzone"> <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_URL");?></div> <div class="content"> <? if(!empty($dataActivePage)): ?> <div class="sort-tabs"> <label><?=GetMessage("skyweb24.popuppro_LABEL_SORT");?></label> <a href="javascript:void(0);" class="tab adm-btn" disabled data-sort="shows_popup"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_SHOW");?></a> <a href="javascript:void(0);" class="tab adm-btn" data-sort="target"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_TARGET");?></a> <a href="javascript:void(0);" class="tab adm-btn" data-sort="conversion"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_CONVERSION");?></a> </div> <script> BX.ready(function () { managerPopupPro.statSortTable.init({ idPopup: <?=$idPopup;?> }); }) </script> <table class="adm-list-table" data-number="Y"> <thead> <tr class="adm-list-table-header"> <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner">ID</div></td> <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_URL");?></div></td> <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_SHOW");?></div></td> <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_TARGET");?></div></td> <td class="adm-list-table-cell adm-list-table-cell-sort" data-sort="int"><div class="adm-list-table-cell-inner"><?=GetMessage("skyweb24.popuppro_STAT_URL_COLUMN_CONVERSION");?></div></td> </tr> </thead> <tbody id="tableStatisticPageUrl"> <? foreach($dataActivePage as $key => $nextData) : ?> <tr class="adm-list-table-row"> <td class="adm-list-table-cell"><?=++$key?></td> <td class="adm-list-table-cell"><a target="_blank" href="<?=$nextData['url'];?>"><?=$nextData['url'];?></a></td> <td class="adm-list-table-cell"><?=$nextData['shows_popup'];?></td> <td class="adm-list-table-cell"><?=$nextData['target'];?></td> <td class="adm-list-table-cell"><?=round($nextData['conversion']);?>%</td> </tr> <? endforeach; ?> </tbody> </table> <? else: ?> <div class="empty-stat"> <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span> </div> <? endif;?> </div> </div> </td> </tr> <tr> <td width="50%" style="vertical-align: top;"> <? $total['countShow'] = $dataConversion['stat_show']; $total['targetAction'] = ($dataConversion['stat_action']) ? $dataConversion['stat_action'] : 0; ?> <div class="stat-widget <?=(empty($total['countShow'] ) AND $total['targetAction'] == 0 ) ? "" : "long-height"; ?> boyzone"> <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_CONVERSION");?></div> <div class="content"> <? if(empty($total['countShow'] ) AND $total['targetAction'] == 0 ) : ?> <div class="empty-stat"> <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span> </div> <? else : ?> <div id="chartdivFunnel" style="width: 100%; height: 500px"></div> <? endif; ?> </div> </div> </td> <td width="50%" style="vertical-align: top;"> <div class="stat-widget <?=($dataActiveDays) ? "long-height" : ""; ?> boyzone"> <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_ACTIVITY");?></div> <div class="content"> <? if(!empty($dataActiveHour) OR !empty($dataActiveDays)) : ?> <div class="stat tabs"> <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> <label for="tab-btn-1"><?=GetMessage('skyweb24.popuppro_STAT_ACTIVITY_BTN_DAY');?></label> <input type="radio" name="tab-btn" id="tab-btn-2" value=""> <label for="tab-btn-2"><?=GetMessage('skyweb24.popuppro_STAT_ACTIVITY_BTN_HOUR');?></label> <div id="content-1"> <div id="chartDateDay"></div> </div> <div id="content-2"> <div id="chartDateHour"></div> </div> </div> <? else: ?> <div class="empty-stat"> <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span> </div> <? endif; ?> </div> </div> </td> </tr> <tr> <td width="50%" style="vertical-align: top;"> <div class="stat-widget boyzone"> <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_DEVICE");?></div> <div class="content"> <? if(!empty($dataDevice)) { $data = []; $i = 0; foreach($dataDevice as $key => $device) { switch ($key){ case "desktop": $key = GetMessage("skyweb24.popuppro_DEVICE_CHARTS_PC"); break; case "mobile": $key = GetMessage("skyweb24.popuppro_DEVICE_CHARTS_MOBILE"); break; case "tablet": $key = GetMessage("skyweb24.popuppro_DEVICE_CHARTS_TABLET"); break; } $data[$i]['NAME'] = $key; $data[$i]['QUANTITY'] = $device; $i ++; } $devices = \Bitrix\Main\Web\Json::encode($data); } ?> <? if(!empty($devices)) : ?> <div id="chartDevice" style="width:100%; height:500px;"></div> <? else : ?> <div class="empty-stat"><span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span></div> <? endif; ?> </div> </div> </td> <td width="50%" style="vertical-align: top;"> <div class="stat-widget boyzone"> <div class="header"><?=GetMessage("skyweb24.popuppro_TITLE_STAT_TYPE_CLOSE");?></div> <div class="content"> <? if(!empty($dataClose)) { $data = []; $i = 0; $dataTypeClose = false; foreach ($dataClose as $name => $value) { if(empty($name)) continue; switch($name) { case "closeByPopupOveray": $name = GetMessage("skyweb24.popuppro_CLOSE_BY_POPUP_OVERLAY"); break; case "closeWindow": $name = GetMessage("skyweb24.popuppro_CLOSE_WINDOW"); break; case "closeByPopupIcon": $name = GetMessage("skyweb24.popuppro_CLOSE_BY_POPUP_ICON"); break; case "closeByEsc": $name = GetMessage("skyweb24.popuppro_CLOSE_BY_ESC"); break; case "closeByTextButton": $name = GetMessage("skyweb24.popuppro_CLOSE_BY_TEXT_BUTTON"); break; default: $name = ""; break; } if(!empty($name)) { $data[$i]['NAME'] = $name; $data[$i]['QUANTITY'] = $value; $i++; } } if(!empty($data)) { $dataTypeClose = \Bitrix\Main\Web\Json::encode($data); } } ?> <? if(!empty($dataTypeClose)) : ?> <div id="chartTypeClose" style="width:100%; height:500px;"></div> <? else : ?> <div class="empty-stat"> <span><?=GetMessage("skyweb24.popuppro_STAT_NOT_DATA");?></span> </div> <? endif; ?> </div> </div> </td> </tr> <tr> <td colspan="2"> <div style="width: 100%; display: flex;"> <input type="button" data-popup-id="<?=$request->get("id");?>" class="adm-btn-save statistic_reset" value="<?=Loc::getMessage("skyweb24.popuppro_STATISTIC_RESET");?>" name="statistic_reset" style="margin-left: auto"> </div> </td> </tr> <script> BX.ready(function () { let chartDateHourObject; let chartDateDayObject; let chartdivFunnelObject; let chartDeviceObject; let chartTypeCLoseObject; <? if(!empty($dataActiveHour)) :?> let chartDateHour = AmCharts.makeChart( "chartDateHour", { "type": "serial", "theme": "none", "dataProvider": [ <? foreach ($dataActiveHour as $hour => $data): ?> {"country": <?=$hour;?>, "visits": <?=$data['showTime'];?>}, <? endforeach; ?> ], "valueAxes": [ { "gridColor": "#FFFFFF", "gridAlpha": 0.2, "dashLength": 0 } ], "gridAboveGraphs": true, "startDuration": 1, "graphs": [ { "balloonText": "[[category]]: <b>[[value]]</b>", "fillAlphas": 0.8, "lineAlpha": 0.2, "type": "column", "valueField": "visits" } ], "chartCursor": { "categoryBalloonEnabled": false, "cursorAlpha": 0, "zoomable": false }, "categoryField": "country", "categoryAxis": { "gridPosition": "start", "gridAlpha": 0, "tickPosition": "start", "tickLength": 20 }, "export": { "enabled": true } }); chartDateHour.addListener("init", function (e) { chartDateHourObject = e; }); <? endif; ?> <? if(!empty($dataActiveDays)) :?> let chartDateDay = AmCharts.makeChart( "chartDateDay", { "type": "serial", "theme": "none", "dataProvider": [ <? foreach ($dataActiveDays as $key => $value):?> {"country": "<?=$value['day']?>", "visits": '<?=$value['showTime'];?>'}, <? endforeach; ?> ], "valueAxes": [ { "gridColor": "#FFFFFF", "gridAlpha": 0.2, "dashLength": 0 } ], "gridAboveGraphs": true, "startDuration": 1, "graphs": [ { "balloonText": "[[category]]: <b>[[value]]</b>", "fillAlphas": 0.8, "lineAlpha": 0.2, "type": "column", "valueField": "visits" } ], "chartCursor": { "categoryBalloonEnabled": false, "cursorAlpha": 0, "zoomable": false }, "categoryField": "country", "categoryAxis": { "gridPosition": "start", "gridAlpha": 0, "tickPosition": "start", "tickLength": 20 }, "export": { "enabled": true } } ); chartDateDay.addListener("init", function (e) { chartDateDayObject = e; }); <? endif; ?> <? if(!empty($total['countShow'] ) OR $total['targetAction'] != 0 ) : ?> let chartdivFunnel = AmCharts.makeChart( "chartdivFunnel", { "type": "funnel", "theme": "none", "dataProvider": [ { "title": '<?=GetMessage("skyweb24.popuppro_CONVERSION_COUNT_SHOW");?>', "value": <?=$total['countShow'];?> }, { "title": '<?=GetMessage("skyweb24.popuppro_CONVERSION_COUNT_ACTION");?>', "value": <?=$total['targetAction']?> }], "titleField": "title", "marginRight": 200, "marginLeft": 15, "labelPosition": "right", "funnelAlpha": 0.9, "valueField": "value", "startX": 0, "neckWidth": "1%", "startAlpha": 0, "outlineThickness": 1, "neckHeight": "0%", "balloonText": "[[title]]:<b>[[value]]</b>", "export": { "enabled": true } } ); chartdivFunnel.addListener("init", function (e) { chartdivFunnelObject = e; }); <? endif; ?> <? if(!empty($devices)) :?> let chartDevice = {}; let data = JSON.parse('<?=$devices;?>'); sectionsDrawChartDevice(data); function sectionsDrawChartDevice(data) { let chartsData = []; for (let i in data) { chartsData.push({ name: data[i].NAME, value: data[i].QUANTITY }); } chartDevice = AmCharts.makeChart("chartDevice", { "type": "pie", "startDuration": 0, "theme": "light", "labelText": "", "addClassNames": true, "legend": { "position": "right", "marginRight": 100, "autoMargins": false, "divId": "top_chart_3_legend", }, "innerRadius": "20%", "defs": { "filter": [{ "id": "shadow", "width": "200%", "height": "200%", "feOffset": { "result": "offOut", "in": "SourceAlpha", "dx": 0, "dy": 0 }, "feGaussianBlur": { "result": "blurOut", "in": "offOut", "stdDeviation": 5 }, "feBlend": { "in": "SourceGraphic", "in2": "blurOut", "mode": "normal" } }] }, "dataProvider": chartsData, "valueField": "value", "titleField": "name", }); chartDevice.addListener("init", handleInitDevice); chartDevice.addListener("rollOverSlice", function (e) { handleRollOverDevice(e); }); } function handleInitDevice(e) { chartDeviceObject = e; chartDevice.legend.addListener("rollOverItem", handleRollOverDevice); } function handleRollOverDevice(e) { let wedge = e.dataItem.wedge.node; wedge.parentNode.appendChild(wedge); } <? endif; ?> <? if(!empty($dataTypeClose)) :?> let chartTypeCLose = {}; let data2 = JSON.parse('<?=$dataTypeClose;?>'); sectionsDrawChartTypeCLose(data2); function sectionsDrawChartTypeCLose(data) { let chartsData = []; for (let i in data) { chartsData.push({ name: data[i].NAME, value: data[i].QUANTITY }); } chartTypeCLose = AmCharts.makeChart("chartTypeClose", { "type": "pie", "startDuration": 0, "theme": "light", "labelText": "", "addClassNames": true, "legend": { "position": "right", "divId": "chartTypeCLose_legend", }, "innerRadius": "20%", "defs": { "filter": [{ "id": "shadow", "width": "200%", "height": "200%", "feOffset": { "result": "offOut", "in": "SourceAlpha", "dx": 0, "dy": 0 }, "feGaussianBlur": { "result": "blurOut", "in": "offOut", "stdDeviation": 5 }, "feBlend": { "in": "SourceGraphic", "in2": "blurOut", "mode": "normal" } }] }, "dataProvider": chartsData, "valueField": "value", "titleField": "name", }); chartTypeCLose.addListener("init", handleInitTypeCLose); chartTypeCLose.addListener("rollOverSlice", function (e) { handleRollOverTypeCLose(e); }); } function handleInitTypeCLose(e) { chartTypeCLoseObject = e; chartDevice.legend.addListener("rollOverItem", handleRollOverTypeCLose); } function handleRollOverTypeCLose(e) { let wedge = e.dataItem.wedge.node; wedge.parentNode.appendChild(wedge); } <? endif; ?> if(document.querySelector(".tabs [for=tab-btn-2]")) { document.querySelector(".tabs [for=tab-btn-2]").addEventListener("click", function () { chartDateHourObject.chart.invalidateSize(); }); } managerPopupPro.initStatCharts = function (){ if(chartDateDayObject) { chartDateDayObject.chart.invalidateSize(); } if(chartdivFunnelObject) { chartdivFunnelObject.chart.invalidateSize(); } if(chartDeviceObject) { chartDeviceObject.chart.invalidateSize(); } if( chartTypeCLoseObject) { chartTypeCLoseObject.chart.invalidateSize(); } } }) </script>