Таблицы статистики по сайтам и регионам, формат данных, логика рендера

parent e846e1a5
......@@ -13,6 +13,45 @@
min-height: 300px;
text-align: center;
}
.switch-data
{
margin-bottom: 20px;
padding-bottom: 10px;
line-height: 30px;
border-bottom: 1px solid #BCE8F1;
}
.switch-item
{
padding: 5px;
border: 1px solid #2E6DA4;
color: #2E6DA4;
border-radius: 4px;
cursor: pointer;
}
.switch-item:hover
{
color: #FFFFFF;
background-color: #2E6DA4;
}
.switch-item.selected
{
color: #FFFFFF;
background-color: #2E6DA4;
}
.form-group-data
{
display: none;
}
.form-group-data.selected
{
display: block;
}
.form-group .form-control
{
......@@ -236,13 +275,19 @@ table.campaign-banners tbody tr td {
textarea#campaign-stat,
textarea#campaign-stat-total,
textarea#campaign-stat-cats
textarea#campaign-stat-cats,
textarea#campaign-sites-stat,
textarea#campaign-regions-stat,
textarea#regions-codes,
textarea#cities-codes
{
display: none;
}
.chart-graph-stat-info,
.chart-graph-stat-error
.chart-graph-stat-error,
.sites-stats-error,
.regions-stats-error
{
display: none;
padding-top: 160px;
......@@ -259,7 +304,7 @@ textarea#campaign-stat-cats
/*
#table-stat
*/
.b-table_wrapp.report
.b-table_wrapp
{
display: none;
margin-top: 30px;
......@@ -313,4 +358,63 @@ textarea#campaign-stat-cats
font-weight: bold;
}
\ No newline at end of file
.table.table-by-cats span.group
{
display: inline-block;
min-width: 12px;
color: #697075;
cursor: pointer;
}
.table.table-by-cats span.group b.open
{
display: none;
}
.table.table-by-cats span.group.open b.closed
{
display: none;
}
.table.table-by-cats span.group.open b.open
{
display: inline;
}
.table.table-by-cats tr.subcat
{
display: none;
}
.table.table-by-cats tr.subcat.open
{
display: table-row;
}
.table.table-by-cats td.subcat-title
{
padding-left: 30px;
}
.table.table-by-cats
{
white-space: nowrap;
}
.table.table-by-cats th:not(.period)
{
width: 1px;
}
.table.table-by-cats th.zone-size
{
width: 90px;
}
.table.table-by-cats td.stat
{
font-family: monospace;
text-align: right;
}
\ No newline at end of file
This diff is collapsed.
......@@ -154,6 +154,7 @@ class CabinetAmSystem extends Common
$stats = $this->container->get(\App\Model\Statistics::class);
$date_begin = $campaign->getDateBegin();
$date_end = $campaign->getDateEnd() ? : date("Y-m-d");
// последние 90 дней, если кампания долго идет
$dates = [$date_begin, $date_end];
$campaign_stat = $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $dates);
$campaign_stat_total = $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), null);
......@@ -194,12 +195,18 @@ class CabinetAmSystem extends Common
}
$sites_stats = $stats->getCampaignsSitesStat((int)$campaign_id, $campaign->getTargetAction(), $dates);
$regions_stats = $stats->getCampaignsRegionsStat((int)$campaign_id, $campaign->getTargetAction(), $dates);
$data['campaign'] = $campaign;
$data['countries'] = $countries;
$data['regions'] = $regions;
$data['cities'] = $cities;
$data['banners'] = $banners;
$data['banners_stats'] = $banners_stats;
$data['sites_stats'] = $sites_stats;
$data['regions_stats'] = $regions_stats;
$data['campaign_stat'] = $campaign_stat;
$data['campaign_stat_total'] = $campaign_stat_total;
$data['campaign_stat_cats'] = self::CAMPAIGN_STAT_CATS;
......
......@@ -345,7 +345,7 @@ class Statistics
return $stats;
}
// Данные по статистике для кампании (баннеры)
// Данные для статистики по кампании (баннеры)
public function getCampaignsStat($id_list, $taget_action, $dates)
{
$dataRequest = array(
......@@ -462,9 +462,8 @@ class Statistics
return $dataStats;
}
// Данные по статистике для баннеров
// Данные для статистики по баннерам
public function getBannersStat($banners_id_list, $dates)
{
$dataRequest = array(
......@@ -488,6 +487,131 @@ class Statistics
return $stats;
}
// Данные для статистики кампании по сайтам
public function getCampaignsSitesStat($id, $taget_action, $dates)
{
$dataRequest = array(
'method' => 'camp_zone',
'data' => array(
'id' => $id,
'start_date' => $dates[0],
'end_date' => $dates[1]
)
);
//return $dataRequest;
try {
$stats = $this->apiRequest($dataRequest);
} catch (\Exception $e) {
$stats['status'] = 'Error';
return $stats;
}
//return $stats;
if ($stats) {
// Добавляем спец. поля
$AddSpecialFields = function(&$stats)
{
if ($taget_action == 'load') {
$stats['views'] = $stats['loads'];
$stats['reach'] = $stats['reach_load'];
} else {
$stats['reach'] = $stats['reach_view'];
}
unset($stats['loads']);
unset($stats['reach_load']);
unset($stats['reach_view']);
$views = $stats['views'];
$money = $stats['money'];
$clicks = $stats['clicks'];
$stats['ctr'] = ($views != 0) ? round(($clicks/$views)*100, 2) : 0;
$stats['cpm'] = ($views != 0) ? round(($money/$views)*1000, 3) : 0;
$stats['cpc'] = ($clicks != 0) ? round(($money/$clicks)*100, 1) : 0;
$stats['money'] = round($stats['money'], 2);
};
foreach ($stats as $site => $stat) {
$AddSpecialFields($stats[$site]);
if ($stat['sub']) {
foreach ($stat['sub'] as $sub => $stat) {
$AddSpecialFields($stats[$site]['sub'][$sub]);
}
}
}
$dataStats = $stats;
}
return $dataStats;
}
// Данные для статистики кампании по регионам
public function getCampaignsRegionsStat($id, $taget_action, $dates)
{
$dataRequest = array(
'method' => 'camp_geo',
'data' => array(
'id' => $id,
'start_date' => $dates[0],
'end_date' => $dates[1]
)
);
//return $dataRequest;
try {
$stats = $this->apiRequest($dataRequest);
} catch (\Exception $e) {
$stats['status'] = 'Error';
return $stats;
}
//return $stats;
if ($stats) {
// Добавляем спец. поля
$AddSpecialFields = function(&$stats)
{
if ($taget_action == 'load') {
$stats['views'] = $stats['loads'];
$stats['reach'] = $stats['reach_load'];
} else {
$stats['reach'] = $stats['reach_view'];
}
unset($stats['loads']);
unset($stats['reach_load']);
unset($stats['reach_view']);
$views = $stats['views'];
$money = $stats['money'];
$clicks = $stats['clicks'];
$stats['ctr'] = ($views != 0) ? round(($clicks/$views)*100, 2) : 0;
$stats['cpm'] = ($views != 0) ? round(($money/$views)*1000, 3) : 0;
$stats['cpc'] = ($clicks != 0) ? round(($money/$clicks)*100, 1) : 0;
$stats['money'] = round($stats['money'], 2);
};
foreach ($stats as $region => $stat) {
$AddSpecialFields($stats[$region]);
if ($stat['sub']) {
foreach ($stat['sub'] as $sub => $stat) {
$AddSpecialFields($stats[$region]['sub'][$sub]);
}
}
}
$dataStats = $stats;
}
return $dataStats;
}
// Запрос к API:
......
This diff is collapsed.
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