Запросы для статистики по кампании при выборке по времени

parent 48d23c10
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
.form-group-data .form-group-data
{ {
display: none; display: none;
position: relative;
} }
.form-group-data.selected .form-group-data.selected
...@@ -53,6 +54,18 @@ ...@@ -53,6 +54,18 @@
display: block; display: block;
} }
.form-group-data .b-content__loading
{
display: none;
position: absolute;
width: 100%;
height: 100%;
background: #FFF url('../img/gif-load.gif') center center no-repeat;
opacity: 0.5;
z-index: 1;
}
.form-group .form-control .form-group .form-control
{ {
font-family: monospace; font-family: monospace;
...@@ -286,7 +299,9 @@ textarea#cities-codes ...@@ -286,7 +299,9 @@ textarea#cities-codes
.chart-graph-stat-info, .chart-graph-stat-info,
.chart-graph-stat-error, .chart-graph-stat-error,
.sites-stats-info,
.sites-stats-error, .sites-stats-error,
.regions-stats-info,
.regions-stats-error .regions-stats-error
{ {
display: none; display: none;
......
...@@ -649,11 +649,6 @@ ...@@ -649,11 +649,6 @@
z-index: 1; z-index: 1;
} }
.b-content__loading
{
}
span.block-info span.block-info
{ {
display: none; display: none;
......
...@@ -3,20 +3,28 @@ $(document).ready(function () { ...@@ -3,20 +3,28 @@ $(document).ready(function () {
/* Стр. кампании пользователя */ /* Стр. кампании пользователя */
(function(){
// Переключение данных вкладок для отображения // Переключение данных вкладок для отображения
$('.switch-item').on('click', function(){
var var
$this = $(this), $switchItems = $('.switch-item'),
type = $this.data('type'), $formGroups = $('.form-group-data'),
classSelected = 'selected'; classSelected = 'selected';
$('.switch-item').removeClass(classSelected); $switchItems.on('click', function(){
var
$this = $(this),
type = $this.data('type');
$switchItems.removeClass(classSelected);
$this.addClass(classSelected); $this.addClass(classSelected);
$('.form-group-data').removeClass(classSelected); $formGroups.removeClass(classSelected);
$('.form-group-data[data-type="' + type + '"]').addClass(classSelected); $('.form-group-data[data-type="' + type + '"]').addClass(classSelected);
}); });
})();
// Превьюшки: // Превьюшки:
(function(){ (function(){
...@@ -108,7 +116,7 @@ $(document).ready(function () { ...@@ -108,7 +116,7 @@ $(document).ready(function () {
autoClose: true, autoClose: true,
maxDate: nowDate, maxDate: nowDate,
onSelect: function(fd, d, picker) { onSelect: function(fd, d, picker) {
selectDataPicker(fd, d, picker);
}, },
}).data('datepicker'), }).data('datepicker'),
datepicker2 = $dateTo.datepicker({ datepicker2 = $dateTo.datepicker({
...@@ -116,12 +124,13 @@ $(document).ready(function () { ...@@ -116,12 +124,13 @@ $(document).ready(function () {
autoClose: true, autoClose: true,
maxDate: nowDate, maxDate: nowDate,
onSelect: function(fd, d, picker) { onSelect: function(fd, d, picker) {
selectDataPicker(fd, d, picker);
}, },
}).data('datepicker'), }).data('datepicker'),
dataSitesStat, dataSitesStat,
$statSitesWrap = $('.form-group-data.stat-sites'), $statSitesWrap = $('.form-group-data.stat-sites'),
$statSitesInfo = $('.sites-stats-info', $statRegionsWrap),
$statSitesError = $('.sites-stats-error', $statSitesWrap), $statSitesError = $('.sites-stats-error', $statSitesWrap),
$statSitesTableWrap = $('.b-table_wrapp', $statSitesWrap), $statSitesTableWrap = $('.b-table_wrapp', $statSitesWrap),
$tableSites = $('#table-line-sites'), $tableSites = $('#table-line-sites'),
...@@ -129,6 +138,7 @@ $(document).ready(function () { ...@@ -129,6 +138,7 @@ $(document).ready(function () {
dataRegionsStat, dataRegionsStat,
$statRegionsWrap = $('.form-group-data.stat-regions'), $statRegionsWrap = $('.form-group-data.stat-regions'),
$statRegionsInfo = $('.regions-stats-info', $statRegionsWrap),
$statRegionsError = $('.regions-stats-error', $statRegionsWrap), $statRegionsError = $('.regions-stats-error', $statRegionsWrap),
$statRegionsTableWrap = $('.b-table_wrapp', $statRegionsWrap), $statRegionsTableWrap = $('.b-table_wrapp', $statRegionsWrap),
$tableRegions = $('#table-line-regions'), $tableRegions = $('#table-line-regions'),
...@@ -152,6 +162,7 @@ $(document).ready(function () { ...@@ -152,6 +162,7 @@ $(document).ready(function () {
return date.getFullYear() +'-'+ pad(date.getMonth()+1) +'-'+ pad(date.getDate()); return date.getFullYear() +'-'+ pad(date.getMonth()+1) +'-'+ pad(date.getDate());
} }
// Форматирование значений для графика
function valueFormat(value, ratio, id) function valueFormat(value, ratio, id)
{ {
var var
...@@ -171,6 +182,7 @@ $(document).ready(function () { ...@@ -171,6 +182,7 @@ $(document).ready(function () {
} }
} }
// Форматирование значений меток для графика
function valueFormatTick(value) function valueFormatTick(value)
{ {
var var
...@@ -180,6 +192,7 @@ $(document).ready(function () { ...@@ -180,6 +192,7 @@ $(document).ready(function () {
return format(value); return format(value);
} }
// Форматирование значений для таблицы
function valueFormatTable(value, currentActiveLine) function valueFormatTable(value, currentActiveLine)
{ {
var var
...@@ -201,7 +214,7 @@ $(document).ready(function () { ...@@ -201,7 +214,7 @@ $(document).ready(function () {
dataStat = JSON.parse($('#campaign-stat').val()); dataStat = JSON.parse($('#campaign-stat').val());
dataStatTotal = JSON.parse($('#campaign-stat-total').val()); dataStatTotal = JSON.parse($('#campaign-stat-total').val());
} else { } else {
ShowError(); ShowCommonStatError();
} }
// Получение данных для статистики по сайтам: // Получение данных для статистики по сайтам:
...@@ -233,7 +246,7 @@ $(document).ready(function () { ...@@ -233,7 +246,7 @@ $(document).ready(function () {
//console.log('AAA codeRegions = ', codeRegions); //console.log('AAA codeRegions = ', codeRegions);
//console.log('AAA codeCities = ', codeCities); //console.log('AAA codeCities = ', codeCities);
function ShowInfo() function ShowCommonStatInfo()
{ {
$statInfo.show(); $statInfo.show();
$statError.hide(); $statError.hide();
...@@ -241,7 +254,21 @@ $(document).ready(function () { ...@@ -241,7 +254,21 @@ $(document).ready(function () {
$statTableWrap.hide(); $statTableWrap.hide();
} }
function ShowError() function ShowSitesStatInfo()
{
$statSitesInfo.show();
$statSitesError.hide();
$statSitesTableWrap.hide();
}
function ShowRegionsStatInfo()
{
$statRegionsInfo.show();
$statRegionsError.hide();
$statRegionsTableWrap.hide();
}
function ShowCommonStatError()
{ {
$statError.show(); $statError.show();
$statInfo.hide(); $statInfo.hide();
...@@ -252,15 +279,27 @@ $(document).ready(function () { ...@@ -252,15 +279,27 @@ $(document).ready(function () {
function ShowSitesStatError() function ShowSitesStatError()
{ {
$statSitesError.show(); $statSitesError.show();
$statSitesInfo.hide();
$statSitesTableWrap.hide(); $statSitesTableWrap.hide();
} }
function ShowRegionsStatError() function ShowRegionsStatError()
{ {
$statRegionsError.show(); $statRegionsError.show();
$statRegionsInfo.hide();
$statRegionsTableWrap.hide(); $statRegionsTableWrap.hide();
} }
function EnableLoadingState($target, isLoading)
{
var $loading = $('.b-content__loading', $target);
if (isLoading) {
$loading.show();
} else {
$loading.hide();
}
}
function getCheckedCategories() { function getCheckedCategories() {
var listCats = []; var listCats = [];
$('thead th input[type="checkbox"]', $tableCommonStat).each(function(){ $('thead th input[type="checkbox"]', $tableCommonStat).each(function(){
...@@ -436,6 +475,9 @@ $(document).ready(function () { ...@@ -436,6 +475,9 @@ $(document).ready(function () {
$tableCommonBody.html('').append($tableContent.children()); $tableCommonBody.html('').append($tableContent.children());
$statTableWrap.show(); $statTableWrap.show();
$statError.hide();
$statInfo.hide();
}; };
function renderSitesTable() { function renderSitesTable() {
...@@ -513,6 +555,9 @@ $(document).ready(function () { ...@@ -513,6 +555,9 @@ $(document).ready(function () {
$tableSitesBody.html('').append($tableContent.children()); $tableSitesBody.html('').append($tableContent.children());
$statSitesTableWrap.show(); $statSitesTableWrap.show();
$statSitesError.hide();
$statSitesInfo.hide();
} }
function renderRegionsTable() { function renderRegionsTable() {
...@@ -591,8 +636,79 @@ $(document).ready(function () { ...@@ -591,8 +636,79 @@ $(document).ready(function () {
$tableRegionsBody.html('').append($tableContent.children()); $tableRegionsBody.html('').append($tableContent.children());
$statRegionsTableWrap.show(); $statRegionsTableWrap.show();
$statRegionsError.hide();
$statRegionsInfo.hide();
} }
// Выбор времени:
function selectDataPicker(fd, d, picker)
{
var type = picker.$el.parents('.form-group-data').data('type');
requestDataPeriod(type);
}
// Запрос данных за временной период:
function requestDataPeriod(type)
{
var
$groupWrap = $('.form-group-data[data-type="' + type + '"]'),
$dateFrom = $('.campaign-date-begin', $groupWrap),
$dateTo = $('.campaign-date-end', $groupWrap),
dataRequest = {type: type, period: [$dateFrom.val(),$dateTo.val()]};
EnableLoadingState($groupWrap, true);
$.ajax({
url: $('#campaign-create-form').attr('action'),
method: 'POST',
data: dataRequest,
success: function(res) {
EnableLoadingState($groupWrap, false);
if (res) {
if (res.data == null || res.data.stat == null) {
if (type == 'stat-common') ShowCommonStatInfo();
if (type == 'stat-sites') ShowSitesStatInfo();
if (type == 'stat-regions') ShowRegionsStatInfo();
} else if (res.status == 'Error') {
if (type == 'stat-common') ShowCommonStatError();
if (type == 'stat-sites') ShowSitesStatError();
if (type == 'stat-regions') ShowRegionsStatError();
} else {
//console.log("AAA requestDataStat SUCCESS res: ", res);
if (res.type == 'stat-common') {
dataStat = res.data.stat;
dataStatTotal = res.data.total;
renderCommonChart();
renderCommonTable();
}
if (res.type == 'stat-sites') {
dataSitesStat = res.data;
renderSitesTable();
}
if (res.type == 'stat-regions') {
dataRegionsStat = res.data;
renderRegionsTable();
}
}
} else {
if (type == 'stat-common') ShowCommonStatError();
if (type == 'stat-sites') ShowSitesStatError();
if (type == 'stat-regions') ShowRegionsStatError();
}
},
error: function (e) {
console.log('error: ', e);
EnableLoadingState($groupWrap, false);
}
});
}
activeLine = 'views'; activeLine = 'views';
activeLines = JSON.parse($('#campaign-stat-cats').val()); activeLines = JSON.parse($('#campaign-stat-cats').val());
activeLinesId = Object.keys(activeLines); activeLinesId = Object.keys(activeLines);
...@@ -601,13 +717,13 @@ $(document).ready(function () { ...@@ -601,13 +717,13 @@ $(document).ready(function () {
if (dataStat) { if (dataStat) {
// Отрисовка графика и таблицы по стартовым данным: // Отрисовка графика и таблицы по стартовым данным:
if (dataStat.status == 'Error') { if (dataStat.status == 'Error') {
ShowError(); ShowCommonStatError();
} else { } else {
renderCommonChart(); renderCommonChart();
renderCommonTable(); renderCommonTable();
} }
} else { } else {
ShowInfo(); ShowCommonStatInfo();
$statChart.hide(); $statChart.hide();
$statTableWrap.hide(); $statTableWrap.hide();
} }
......
...@@ -66,10 +66,10 @@ class CabinetAmSystem extends Common ...@@ -66,10 +66,10 @@ class CabinetAmSystem extends Common
{ {
if($request->getMethod() == 'POST') { if($request->getMethod() == 'POST') {
/*
try { try {
switch ($request->getAttribute('action')) { switch ($request->getAttribute('action')) {
case self::ACTION_STAT: case self::ACTION_ITEM:
$response = $this->getStatData($request); $response = $this->getStatData($request);
break; break;
default: default:
...@@ -82,7 +82,7 @@ class CabinetAmSystem extends Common ...@@ -82,7 +82,7 @@ class CabinetAmSystem extends Common
$response = new JsonResponse($data); $response = new JsonResponse($data);
} }
return $response; return $response;
*/
} }
elseif($request->getAttribute('action') == self::ACTION_LIST) elseif($request->getAttribute('action') == self::ACTION_LIST)
{ {
...@@ -147,8 +147,9 @@ class CabinetAmSystem extends Common ...@@ -147,8 +147,9 @@ class CabinetAmSystem extends Common
$cities = $this->container->get('config')['amsystem_conf']['city']; $cities = $this->container->get('config')['amsystem_conf']['city'];
/** @var \App\Model\AmSystem\Campaigns $campaignsModel */ /** @var \App\Model\AmSystem\Campaigns $campaignsModel */
$campaignsModel = $this->container->get(\App\Model\AmSystem\Campaigns::class); //$campaignsModel = $this->container->get(\App\Model\AmSystem\Campaigns::class);
$campaign = $campaignsModel->findOne(['id' => $campaign_id]); //$campaign = $campaignsModel->findOne(['id' => $campaign_id]);
$campaign = $campaign_item;
/** @var \App\Model\Statistics $stats */ /** @var \App\Model\Statistics $stats */
$stats = $this->container->get(\App\Model\Statistics::class); $stats = $this->container->get(\App\Model\Statistics::class);
...@@ -233,5 +234,50 @@ class CabinetAmSystem extends Common ...@@ -233,5 +234,50 @@ class CabinetAmSystem extends Common
} }
private function getStatData(ServerRequestInterface $request)
{
/** @var UserService $auth */
$auth = $this->container->get(UserService::class);
$userId = $auth->getIdentity()->getId();
$campaign_id = $request->getAttribute('id');
/** @var \App\Model\AmSystem\Campaigns $campaignsModel */
$campaignsModel = $this->container->get(\App\Model\AmSystem\Campaigns::class);
$campaign = $campaignsModel->findById($campaign_id);
if ($campaign) {
if ($campaign->getUserId() == $userId){
/** @var \App\Model\Statistics $stats */
$stats = $this->container->get(\App\Model\Statistics::class);
$data_request = $request->getParsedBody();
if ($data_request['type'] == 'stat-common') {
$data_stat = [
'stat' => $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $data_request['period']),
'total' => $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), null)
];
}
if ($data_request['type'] == 'stat-sites') {
$data_stat = $stats->getCampaignsSitesStat((int)$campaign_id, $campaign->getTargetAction(), $data_request['period']);
}
if ($data_request['type'] == 'stat-regions') {
$data_stat = $stats->getCampaignsRegionsStat((int)$campaign_id, $campaign->getTargetAction(), $data_request['period']);
}
return new JsonResponse([
'type' => $data_request['type'],
'data' => $data_stat
]);
}
}
return new JsonResponse(null);
}
} }
\ No newline at end of file
...@@ -95,6 +95,8 @@ if (!$error) { ...@@ -95,6 +95,8 @@ if (!$error) {
$target_class = ($campaign_target_action == 'load') ? 'load-target' : ''; $target_class = ($campaign_target_action == 'load') ? 'load-target' : '';
$link_campaigns_list = $this->url('user.cabinet.amsystem', ['lang' => $lang]); $link_campaigns_list = $this->url('user.cabinet.amsystem', ['lang' => $lang]);
$data_request_link = $this->url('user.cabinet.campaign', ['lang' => $lang]);
} }
?> ?>
...@@ -111,7 +113,7 @@ if (!$error) { ...@@ -111,7 +113,7 @@ if (!$error) {
<section class="b-content__work inner"> <section class="b-content__work inner">
<form id="campaign-create-form" method="post" action=""> <form id="campaign-create-form" method="post" action="<?= $data_request_link ?>">
<div class="panel panel-info"> <div class="panel panel-info">
...@@ -376,6 +378,8 @@ if (!$error) { ...@@ -376,6 +378,8 @@ if (!$error) {
<!-- Общая статистика --> <!-- Общая статистика -->
<div class="form-group-data stat-common" data-type="stat-common"> <div class="form-group-data stat-common" data-type="stat-common">
<div class="b-content__loading"></div>
<div class="campaign-stat"> <div class="campaign-stat">
<textarea id="campaign-stat"><?= ($campaign_stat ? json_encode($campaign_stat) : '')?></textarea> <textarea id="campaign-stat"><?= ($campaign_stat ? json_encode($campaign_stat) : '')?></textarea>
...@@ -430,6 +434,7 @@ if (!$error) { ...@@ -430,6 +434,7 @@ if (!$error) {
<!-- По сайтам --> <!-- По сайтам -->
<div class="form-group-data stat-sites" data-type="stat-sites"> <div class="form-group-data stat-sites" data-type="stat-sites">
<div class="b-content__loading"></div>
<!-- Дата --> <!-- Дата -->
<div class="form-group"> <div class="form-group">
<label for="campaign-date-begin"><?= _t('Дата')?></label> <label for="campaign-date-begin"><?= _t('Дата')?></label>
...@@ -442,6 +447,10 @@ if (!$error) { ...@@ -442,6 +447,10 @@ if (!$error) {
<div class="sites-stats"> <div class="sites-stats">
<textarea id="campaign-sites-stat"><?= ($sites_stats ? json_encode($sites_stats) : '')?></textarea> <textarea id="campaign-sites-stat"><?= ($sites_stats ? json_encode($sites_stats) : '')?></textarea>
<div class="sites-stats-info">
<h2>По заданным параметрам статистика отсутствует</h2>
</div>
<div class="sites-stats-error"> <div class="sites-stats-error">
<h2>Ошибка в статистике</h2> <h2>Ошибка в статистике</h2>
<div class="message"></div> <div class="message"></div>
...@@ -473,6 +482,7 @@ if (!$error) { ...@@ -473,6 +482,7 @@ if (!$error) {
<!-- По регионам --> <!-- По регионам -->
<div class="form-group-data stat-regions" data-type="stat-regions"> <div class="form-group-data stat-regions" data-type="stat-regions">
<div class="b-content__loading"></div>
<!-- Дата --> <!-- Дата -->
<div class="form-group"> <div class="form-group">
<label for="campaign-date-begin"><?= _t('Дата')?></label> <label for="campaign-date-begin"><?= _t('Дата')?></label>
...@@ -487,6 +497,9 @@ if (!$error) { ...@@ -487,6 +497,9 @@ if (!$error) {
<textarea id="regions-codes"><?= ($code_regions ? json_encode($code_regions) : '')?></textarea> <textarea id="regions-codes"><?= ($code_regions ? json_encode($code_regions) : '')?></textarea>
<textarea id="cities-codes"><?= ($code_cities ? json_encode($code_cities) : '')?></textarea> <textarea id="cities-codes"><?= ($code_cities ? json_encode($code_cities) : '')?></textarea>
<div class="regions-stats-info">
<h2>По заданным параметрам статистика отсутствует</h2>
</div>
<div class="regions-stats-error"> <div class="regions-stats-error">
<h2>Ошибка в статистике</h2> <h2>Ошибка в статистике</h2>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment