Правки по сортировке для подкатегорий, пересчет строки итого для общей статистики

parent 56c60383
...@@ -3012,6 +3012,7 @@ return [ ...@@ -3012,6 +3012,7 @@ return [
'codes' => 'codes' =>
array( array(
0 => 703883, 0 => 703883,
1 => 694422,
), ),
), ),
340 => 340 =>
...@@ -3140,6 +3141,7 @@ return [ ...@@ -3140,6 +3141,7 @@ return [
'codes' => 'codes' =>
array( array(
0 => 240241, 0 => 240241,
1 => 695592,
), ),
), ),
356 => 356 =>
......
...@@ -144,7 +144,7 @@ $(document).ready(function () { ...@@ -144,7 +144,7 @@ $(document).ready(function () {
$tableRegions = $('#table-line-regions'), $tableRegions = $('#table-line-regions'),
$tableRegionsBody = $tableRegions.find('tbody').first(), $tableRegionsBody = $tableRegions.find('tbody').first(),
codeRegions, codeCities, codeRegions, codeCities,
regionName, cityName; regionName, cityName, catName;
// Добавление впереди 0 у однозначных значений // Добавление впереди 0 у однозначных значений
...@@ -241,7 +241,7 @@ $(document).ready(function () { ...@@ -241,7 +241,7 @@ $(document).ready(function () {
codeCities = JSON.parse($('#cities-codes').val()); codeCities = JSON.parse($('#cities-codes').val());
} }
console.log('AAA dataStat = ', dataStat); //console.log('AAA dataStat = ', dataStat);
function ShowCommonStatInfo() function ShowCommonStatInfo()
{ {
...@@ -297,6 +297,40 @@ $(document).ready(function () { ...@@ -297,6 +297,40 @@ $(document).ready(function () {
} }
} }
function prepareDataForSort(dataTable, dataTableForSort)
{
for (var cat in dataTable) {
var dataTableSortItem = dataTable[cat];
dataTableSortItem['cat'] = cat;
if (dataTable[cat]['sub']) {
var subData = [];
for (var subCat in dataTable[cat]['sub']) {
var subDataItem = dataTable[cat]['sub'][subCat];
subDataItem['cat'] = subCat;
subData.push(subDataItem);
}
dataTable[cat]['sub'] = subData
}
dataTableForSort.push(dataTableSortItem);
}
}
function sortingDataByField(data, sortField, isDesc)
{
data.sort(function(a,b){
if (dateTimeFields.indexOf(sortField) > -1) {
var
aT = new Date(a[sortField]),
bT = new Date(b[sortField]);
return (isDesc) ? bT-aT : aT-bT;
} else {
return (isDesc) ? b[sortField]-a[sortField] : a[sortField]-b[sortField];
}
});
}
function getCheckedCategories() { function getCheckedCategories() {
var listCats = []; var listCats = [];
$('thead th input[type="checkbox"]', $tableCommonStat).each(function(){ $('thead th input[type="checkbox"]', $tableCommonStat).each(function(){
...@@ -438,16 +472,7 @@ $(document).ready(function () { ...@@ -438,16 +472,7 @@ $(document).ready(function () {
}); });
// Сортировка данных для таблицы: // Сортировка данных для таблицы:
dataTableForSort.sort(function(a,b){ sortingDataByField(dataTableForSort, sortField, isDesc);
if (dateTimeFields.indexOf(sortField) > -1) {
var
aT = new Date(a[sortField]),
bT = new Date(b[sortField]);
return (isDesc) ? bT-aT : aT-bT;
} else {
return (isDesc) ? b[sortField]-a[sortField] : a[sortField]-b[sortField];
}
});
// Отрисовка таблицы: // Отрисовка таблицы:
dataTableForSort.forEach(function(item){ dataTableForSort.forEach(function(item){
...@@ -489,6 +514,7 @@ $(document).ready(function () { ...@@ -489,6 +514,7 @@ $(document).ready(function () {
isDesc = true; isDesc = true;
// Определение поля для сортировки строк в таблице: // Определение поля для сортировки строк в таблице:
/*
if ($selectedField.length > 0) { if ($selectedField.length > 0) {
sortField = $selectedField.attr('id'); sortField = $selectedField.attr('id');
isDesc = $selectedField.hasClass('desc'); isDesc = $selectedField.hasClass('desc');
...@@ -497,24 +523,20 @@ $(document).ready(function () { ...@@ -497,24 +523,20 @@ $(document).ready(function () {
sortField = 'money'; sortField = 'money';
isDesc = true; isDesc = true;
} }
//console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc); console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc);
*/
sortField = 'money';
isDesc = true;
// Подготовка данных для сортировки: // Подготовка данных для сортировки:
for (var site in dataTable) { prepareDataForSort(dataTable, dataTableForSort);
var dataTableSortItem = dataTable[site];
dataTableSortItem['site'] = site;
dataTableForSort.push(dataTableSortItem);
}
// Сортировка данных для таблицы: // Сортировка данных для таблицы:
dataTableForSort.sort(function(a,b){ sortingDataByField(dataTableForSort, sortField, isDesc);
if (dateTimeFields.indexOf(sortField) > -1) { // Сортировка подкатегорий для таблицы:
var dataTableForSort.forEach(function(item, ind){
aT = new Date(a[sortField]), if (item['sub']) {
bT = new Date(b[sortField]); sortingDataByField(dataTableForSort[ind]['sub'], sortField, isDesc);
return (isDesc) ? bT-aT : aT-bT;
} else {
return (isDesc) ? b[sortField]-a[sortField] : a[sortField]-b[sortField];
} }
}); });
//console.log('AAA dataTableForSort = ', dataTableForSort); //console.log('AAA dataTableForSort = ', dataTableForSort);
...@@ -522,11 +544,11 @@ $(document).ready(function () { ...@@ -522,11 +544,11 @@ $(document).ready(function () {
// Отрисовка таблицы: // Отрисовка таблицы:
dataTableForSort.forEach(function(item){ dataTableForSort.forEach(function(item){
$row = $('<tr class="cat" data-id="' + item['site'] + '">'); $row = $('<tr class="cat" data-id="' + item['cat'] + '">');
if (item['sub']) { if (item['sub']) {
$row.append($('<td class="period">').html('<span class="group"><b class="closed">+</b><b class="open">&ndash;</b></span> ' + item['site'])); $row.append($('<td>').html('<span class="group"><b class="closed">+</b><b class="open">&ndash;</b></span> ' + item['cat']));
} else { } else {
$row.append($('<td class="period">').html(item['site'])); $row.append($('<td>').html(item['cat']));
} }
activeLinesId.forEach(function(line){ activeLinesId.forEach(function(line){
...@@ -535,14 +557,16 @@ $(document).ready(function () { ...@@ -535,14 +557,16 @@ $(document).ready(function () {
$row.appendTo($tableContent); $row.appendTo($tableContent);
if (item['sub']) { if (item['sub']) {
for (var zone in item['sub']) { item['sub'].forEach(function(itemSub){
$row = $('<tr class="subcat" data-parent="' + item['site'] + '">'); var zone = itemSub['cat'];
$row.append($('<td class="subcat-title">').html('[зона ' + zone % 100 + '] (' + item['sub'][zone]['size'] + ')')); $row = $('<tr class="subcat" data-parent="' + item['cat'] + '">');
$row.append($('<td class="subcat-title">').html('[зона ' + zone % 100 + '] (' + itemSub['size'] + ')'));
activeLinesId.forEach(function(line){ activeLinesId.forEach(function(line){
$row.append($('<td class="stat '+ line +'">').html(valueFormatTable(item['sub'][zone][line], line))); $row.append($('<td class="stat '+ line +'">').html(valueFormatTable(itemSub[line], line)));
}); });
$row.appendTo($tableContent); $row.appendTo($tableContent);
}
});
} }
}); });
...@@ -560,53 +584,33 @@ $(document).ready(function () { ...@@ -560,53 +584,33 @@ $(document).ready(function () {
var var
dataTable = dataRegionsStat, dataTable = dataRegionsStat,
dataTableForSort = [], dataTableForSort = [],
$selectedField = $('thead th b.selected', $tableRegions),
$tableContent = $('<tbody>'), $tableContent = $('<tbody>'),
$row, $row,
sortField = false, sortField = 'money',
isDesc = true;
// Определение поля для сортировки строк в таблице:
if ($selectedField.length > 0) {
sortField = $selectedField.attr('id');
isDesc = $selectedField.hasClass('desc');
}
if (!sortField) {
sortField = 'money';
isDesc = true; isDesc = true;
}
//console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc);
// Подготовка данных для сортировки: // Подготовка данных для сортировки:
for (var region in dataTable) { prepareDataForSort(dataTable, dataTableForSort);
var dataTableSortItem = dataTable[region];
dataTableSortItem['region'] = region;
dataTableForSort.push(dataTableSortItem);
}
// Сортировка данных для таблицы: // Сортировка данных для таблицы:
dataTableForSort.sort(function(a,b){ sortingDataByField(dataTableForSort, sortField, isDesc);
if (dateTimeFields.indexOf(sortField) > -1) { // Сортировка подкатегорий для таблицы:
var dataTableForSort.forEach(function(item, ind){
aT = new Date(a[sortField]), if (item['sub']) {
bT = new Date(b[sortField]); sortingDataByField(dataTableForSort[ind]['sub'], sortField, isDesc);
return (isDesc) ? bT-aT : aT-bT;
} else {
return (isDesc) ? b[sortField]-a[sortField] : a[sortField]-b[sortField];
} }
}); });
//console.log('AAA dataTableForSort = ', dataTableForSort);
// Отрисовка таблицы: // Отрисовка таблицы:
dataTableForSort.forEach(function(item){ dataTableForSort.forEach(function(item){
regionName = (codeRegions[item['region']]) ? codeRegions[item['region']] : item['region']; regionName = (codeRegions[item['cat']]) ? codeRegions[item['cat']] : item['cat'];
$row = $('<tr class="cat" data-id="' + item['region'] + '">'); $row = $('<tr class="cat" data-id="' + item['cat'] + '">');
if (item['sub']) { if (item['sub']) {
$row.append($('<td class="period">').html('<span class="group"><b class="closed">+</b><b class="open">&ndash;</b></span> ' + regionName)); $row.append($('<td>').html('<span class="group"><b class="closed">+</b><b class="open">&ndash;</b></span> ' + regionName));
} else { } else {
$row.append($('<td class="period">').html(regionName)); $row.append($('<td>').html(regionName));
} }
activeLinesId.forEach(function(line){ activeLinesId.forEach(function(line){
...@@ -615,15 +619,20 @@ $(document).ready(function () { ...@@ -615,15 +619,20 @@ $(document).ready(function () {
$row.appendTo($tableContent); $row.appendTo($tableContent);
if (item['sub']) { if (item['sub']) {
for (var city in item['sub']) {
cityName = (codeCities[city]) ? codeCities[city] : city; item['sub'].forEach(function(itemSub){
$row = $('<tr class="subcat" data-parent="' + item['region'] + '">'); var city = itemSub['cat'];
if (codeCities[city]) {
cityName = codeCities[city];
$row = $('<tr class="subcat" data-parent="' + item['cat'] + '">');
$row.append($('<td class="subcat-title">').html(cityName)); $row.append($('<td class="subcat-title">').html(cityName));
activeLinesId.forEach(function(line){ activeLinesId.forEach(function(line){
$row.append($('<td class="stat '+ line +'">').html(valueFormatTable(item['sub'][city][line], line))); $row.append($('<td class="stat '+ line +'">').html(valueFormatTable(itemSub[line], line)));
}); });
$row.appendTo($tableContent); $row.appendTo($tableContent);
} }
});
} }
}); });
......
...@@ -105,7 +105,7 @@ class CabinetAmSystem extends Common ...@@ -105,7 +105,7 @@ class CabinetAmSystem extends Common
foreach ($campaigns as $campaign_item) { foreach ($campaigns as $campaign_item) {
$campaign_id = $campaign_item['id']; $campaign_id = $campaign_item['id'];
$campaigns_stat[$campaign_id] = $stats->getCampaignsStat([$campaign_id], $campaign_item['target_action'], null); $campaigns_stat[$campaign_id] = $stats->getCampaignsStat([$campaign_id], $campaign_item['target_action'], null, false);
} }
$data['campaigns'] = $campaigns; $data['campaigns'] = $campaigns;
...@@ -159,8 +159,8 @@ class CabinetAmSystem extends Common ...@@ -159,8 +159,8 @@ class CabinetAmSystem extends Common
$date_end = $campaign->getDateEnd() ? : date("Y-m-d"); $date_end = $campaign->getDateEnd() ? : date("Y-m-d");
$dates_common = [$date_begin, $date_end_common]; $dates_common = [$date_begin, $date_end_common];
$dates = [$date_begin, $date_end]; $dates = [$date_begin, $date_end];
$campaign_stat = $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $dates_common); $campaign_stat = $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $dates_common, true);
$campaign_stat_total = $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), null); $campaign_stat_total = $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $dates_common, false);
$active_line = 'views'; $active_line = 'views';
...@@ -277,8 +277,8 @@ class CabinetAmSystem extends Common ...@@ -277,8 +277,8 @@ class CabinetAmSystem extends Common
if ($data_request['type'] == 'stat-common') { if ($data_request['type'] == 'stat-common') {
$data_stat = [ $data_stat = [
'stat' => $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $data_request['period']), 'stat' => $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $data_request['period'], true),
'total' => $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), null) 'total' => $stats->getCampaignsStat([(int)$campaign_id], $campaign->getTargetAction(), $data_request['period'], false)
]; ];
} }
......
...@@ -346,7 +346,7 @@ class Statistics ...@@ -346,7 +346,7 @@ class Statistics
} }
// Данные для статистики по кампании (баннеры) // Данные для статистики по кампании (баннеры)
public function getCampaignsStat($id_list, $taget_action, $dates) public function getCampaignsStat($id_list, $taget_action, $dates, $by_days = false)
{ {
$dataRequest = array( $dataRequest = array(
'method' => ($dates) ? 'camp_day' : 'camp_total', 'method' => ($dates) ? 'camp_day' : 'camp_total',
...@@ -356,7 +356,7 @@ class Statistics ...@@ -356,7 +356,7 @@ class Statistics
); );
if ($dates) { if ($dates) {
// последние 90 дней, если кампания долго идет
$dataRequest['data']['start_date'] = $dates[0]; $dataRequest['data']['start_date'] = $dates[0];
if ($dates[1] && $dates[1] < date("Y-m-d")) { if ($dates[1] && $dates[1] < date("Y-m-d")) {
...@@ -366,12 +366,15 @@ class Statistics ...@@ -366,12 +366,15 @@ class Statistics
} }
$dataRequest['data']['end_date'] = $date_end; $dataRequest['data']['end_date'] = $date_end;
// последние 90 дней, если кампания долго идет
//$date_start = $dates[0]; //$date_start = $dates[0];
//$interval = date($date_end)->diff(date($date_start)); // получаем разницу в виде объекта DateInterval //$interval = date($date_end)->diff(date($date_start)); // получаем разницу в виде объекта DateInterval
//$dataRequest['data']['diff'] = $interval->d; //$dataRequest['data']['diff'] = $interval->d;
if ($by_days) {
$dataRequest['data']['by_days'] = true; $dataRequest['data']['by_days'] = true;
} }
}
//return $dataRequest; //return $dataRequest;
try { try {
...@@ -408,7 +411,7 @@ class Statistics ...@@ -408,7 +411,7 @@ class Statistics
$stats['money'] = round($stats['money'], 2); $stats['money'] = round($stats['money'], 2);
}; };
if (!$dates) if (!$dates || !$by_days)
{ {
$AddSpecialFields($stats); $AddSpecialFields($stats);
$dataStats = $stats; $dataStats = $stats;
...@@ -618,8 +621,14 @@ class Statistics ...@@ -618,8 +621,14 @@ class Statistics
$stats['money'] = round($stats['money'], 2); $stats['money'] = round($stats['money'], 2);
}; };
// Убираем города у регионов Киев(703447) и empty:
foreach ([703447, 'empty'] as $region_code) {
unset($stats[$region_code]['sub']);
}
foreach ($stats as $region => $stat) { foreach ($stats as $region => $stat) {
$AddSpecialFields($stats[$region]); $AddSpecialFields($stats[$region]);
if ($stat['sub']) { if ($stat['sub']) {
foreach ($stat['sub'] as $sub => $stat) { foreach ($stat['sub'] as $sub => $stat) {
$AddSpecialFields($stats[$region]['sub'][$sub]); $AddSpecialFields($stats[$region]['sub'][$sub]);
......
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