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

parent 48d23c10
......@@ -46,12 +46,25 @@
.form-group-data
{
display: none;
position: relative;
}
.form-group-data.selected
{
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
{
......@@ -286,7 +299,9 @@ textarea#cities-codes
.chart-graph-stat-info,
.chart-graph-stat-error,
.sites-stats-info,
.sites-stats-error,
.regions-stats-info,
.regions-stats-error
{
display: none;
......
......@@ -649,11 +649,6 @@
z-index: 1;
}
.b-content__loading
{
}
span.block-info
{
display: none;
......
......@@ -3,19 +3,27 @@ $(document).ready(function () {
/* Стр. кампании пользователя */
// Переключение данных вкладок для отображения
$('.switch-item').on('click', function(){
(function(){
// Переключение данных вкладок для отображения
var
$this = $(this),
type = $this.data('type'),
$switchItems = $('.switch-item'),
$formGroups = $('.form-group-data'),
classSelected = 'selected';
$('.switch-item').removeClass(classSelected);
$this.addClass(classSelected);
$switchItems.on('click', function(){
var
$this = $(this),
type = $this.data('type');
$switchItems.removeClass(classSelected);
$this.addClass(classSelected);
$('.form-group-data').removeClass(classSelected);
$('.form-group-data[data-type="' + type + '"]').addClass(classSelected);
});
$formGroups.removeClass(classSelected);
$('.form-group-data[data-type="' + type + '"]').addClass(classSelected);
});
})();
// Превьюшки:
(function(){
......@@ -108,7 +116,7 @@ $(document).ready(function () {
autoClose: true,
maxDate: nowDate,
onSelect: function(fd, d, picker) {
selectDataPicker(fd, d, picker);
},
}).data('datepicker'),
datepicker2 = $dateTo.datepicker({
......@@ -116,12 +124,13 @@ $(document).ready(function () {
autoClose: true,
maxDate: nowDate,
onSelect: function(fd, d, picker) {
selectDataPicker(fd, d, picker);
},
}).data('datepicker'),
dataSitesStat,
$statSitesWrap = $('.form-group-data.stat-sites'),
$statSitesInfo = $('.sites-stats-info', $statRegionsWrap),
$statSitesError = $('.sites-stats-error', $statSitesWrap),
$statSitesTableWrap = $('.b-table_wrapp', $statSitesWrap),
$tableSites = $('#table-line-sites'),
......@@ -129,6 +138,7 @@ $(document).ready(function () {
dataRegionsStat,
$statRegionsWrap = $('.form-group-data.stat-regions'),
$statRegionsInfo = $('.regions-stats-info', $statRegionsWrap),
$statRegionsError = $('.regions-stats-error', $statRegionsWrap),
$statRegionsTableWrap = $('.b-table_wrapp', $statRegionsWrap),
$tableRegions = $('#table-line-regions'),
......@@ -152,6 +162,7 @@ $(document).ready(function () {
return date.getFullYear() +'-'+ pad(date.getMonth()+1) +'-'+ pad(date.getDate());
}
// Форматирование значений для графика
function valueFormat(value, ratio, id)
{
var
......@@ -171,6 +182,7 @@ $(document).ready(function () {
}
}
// Форматирование значений меток для графика
function valueFormatTick(value)
{
var
......@@ -180,6 +192,7 @@ $(document).ready(function () {
return format(value);
}
// Форматирование значений для таблицы
function valueFormatTable(value, currentActiveLine)
{
var
......@@ -201,7 +214,7 @@ $(document).ready(function () {
dataStat = JSON.parse($('#campaign-stat').val());
dataStatTotal = JSON.parse($('#campaign-stat-total').val());
} else {
ShowError();
ShowCommonStatError();
}
// Получение данных для статистики по сайтам:
......@@ -233,7 +246,7 @@ $(document).ready(function () {
//console.log('AAA codeRegions = ', codeRegions);
//console.log('AAA codeCities = ', codeCities);
function ShowInfo()
function ShowCommonStatInfo()
{
$statInfo.show();
$statError.hide();
......@@ -241,7 +254,21 @@ $(document).ready(function () {
$statTableWrap.hide();
}
function ShowError()
function ShowSitesStatInfo()
{
$statSitesInfo.show();
$statSitesError.hide();
$statSitesTableWrap.hide();
}
function ShowRegionsStatInfo()
{
$statRegionsInfo.show();
$statRegionsError.hide();
$statRegionsTableWrap.hide();
}
function ShowCommonStatError()
{
$statError.show();
$statInfo.hide();
......@@ -252,15 +279,27 @@ $(document).ready(function () {
function ShowSitesStatError()
{
$statSitesError.show();
$statSitesInfo.hide();
$statSitesTableWrap.hide();
}
function ShowRegionsStatError()
{
$statRegionsError.show();
$statRegionsInfo.hide();
$statRegionsTableWrap.hide();
}
function EnableLoadingState($target, isLoading)
{
var $loading = $('.b-content__loading', $target);
if (isLoading) {
$loading.show();
} else {
$loading.hide();
}
}
function getCheckedCategories() {
var listCats = [];
$('thead th input[type="checkbox"]', $tableCommonStat).each(function(){
......@@ -436,6 +475,9 @@ $(document).ready(function () {
$tableCommonBody.html('').append($tableContent.children());
$statTableWrap.show();
$statError.hide();
$statInfo.hide();
};
function renderSitesTable() {
......@@ -513,6 +555,9 @@ $(document).ready(function () {
$tableSitesBody.html('').append($tableContent.children());
$statSitesTableWrap.show();
$statSitesError.hide();
$statSitesInfo.hide();
}
function renderRegionsTable() {
......@@ -591,8 +636,79 @@ $(document).ready(function () {
$tableRegionsBody.html('').append($tableContent.children());
$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';
activeLines = JSON.parse($('#campaign-stat-cats').val());
activeLinesId = Object.keys(activeLines);
......@@ -601,13 +717,13 @@ $(document).ready(function () {
if (dataStat) {
// Отрисовка графика и таблицы по стартовым данным:
if (dataStat.status == 'Error') {
ShowError();
ShowCommonStatError();
} else {
renderCommonChart();
renderCommonTable();
}
} else {
ShowInfo();
ShowCommonStatInfo();
$statChart.hide();
$statTableWrap.hide();
}
......
......@@ -66,10 +66,10 @@ class CabinetAmSystem extends Common
{
if($request->getMethod() == 'POST') {
/*
try {
switch ($request->getAttribute('action')) {
case self::ACTION_STAT:
case self::ACTION_ITEM:
$response = $this->getStatData($request);
break;
default:
......@@ -82,7 +82,7 @@ class CabinetAmSystem extends Common
$response = new JsonResponse($data);
}
return $response;
*/
}
elseif($request->getAttribute('action') == self::ACTION_LIST)
{
......@@ -147,8 +147,9 @@ class CabinetAmSystem extends Common
$cities = $this->container->get('config')['amsystem_conf']['city'];
/** @var \App\Model\AmSystem\Campaigns $campaignsModel */
$campaignsModel = $this->container->get(\App\Model\AmSystem\Campaigns::class);
$campaign = $campaignsModel->findOne(['id' => $campaign_id]);
//$campaignsModel = $this->container->get(\App\Model\AmSystem\Campaigns::class);
//$campaign = $campaignsModel->findOne(['id' => $campaign_id]);
$campaign = $campaign_item;
/** @var \App\Model\Statistics $stats */
$stats = $this->container->get(\App\Model\Statistics::class);
......@@ -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) {
$target_class = ($campaign_target_action == 'load') ? 'load-target' : '';
$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) {
<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">
......@@ -376,6 +378,8 @@ if (!$error) {
<!-- Общая статистика -->
<div class="form-group-data stat-common" data-type="stat-common">
<div class="b-content__loading"></div>
<div class="campaign-stat">
<textarea id="campaign-stat"><?= ($campaign_stat ? json_encode($campaign_stat) : '')?></textarea>
......@@ -430,6 +434,7 @@ if (!$error) {
<!-- По сайтам -->
<div class="form-group-data stat-sites" data-type="stat-sites">
<div class="b-content__loading"></div>
<!-- Дата -->
<div class="form-group">
<label for="campaign-date-begin"><?= _t('Дата')?></label>
......@@ -442,6 +447,10 @@ if (!$error) {
<div class="sites-stats">
<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">
<h2>Ошибка в статистике</h2>
<div class="message"></div>
......@@ -473,6 +482,7 @@ if (!$error) {
<!-- По регионам -->
<div class="form-group-data stat-regions" data-type="stat-regions">
<div class="b-content__loading"></div>
<!-- Дата -->
<div class="form-group">
<label for="campaign-date-begin"><?= _t('Дата')?></label>
......@@ -487,6 +497,9 @@ if (!$error) {
<textarea id="regions-codes"><?= ($code_regions ? json_encode($code_regions) : '')?></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">
<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