Оптимизроовал код по сортировке в таблицах отчетов

parent 54fa6062
...@@ -8,7 +8,8 @@ $(document).ready(function(){ ...@@ -8,7 +8,8 @@ $(document).ready(function(){
currentActiveLine, currentActiveLine,
dataTable, dataTable,
currencyFields = ['admoney', 'salemoney', 'usdollarmoney', 'localmoney', 'AdMoney', 'OrderSum', 'Price'], currencyFields = ['admoney', 'salemoney', 'usdollarmoney', 'localmoney', 'AdMoney', 'OrderSum', 'Price'],
notFormatFields = ['Timestamp', 'Basket']; notFormatFields = ['Timestamp', 'Basket'],
dateTimeFields = ['Timestamp', 'period'];
// Шаблон содержимого ячейки Basket // Шаблон содержимого ячейки Basket
var templateBasketContent = _.template('\n'+ var templateBasketContent = _.template('\n'+
...@@ -59,12 +60,14 @@ $(document).ready(function(){ ...@@ -59,12 +60,14 @@ $(document).ready(function(){
{ {
var dataPeriod = dataLineChartStat['period']; var dataPeriod = dataLineChartStat['period'];
//dataTable = dataLineChartStat; dataTable = dataLineChartStat;
/*
dataTable = {}; dataTable = {};
for (var key in dataLineChartStat) { for (var key in dataLineChartStat) {
dataTable[key] = dataLineChartStat[key]; dataTable[key] = dataLineChartStat[key];
} }
//console.log('AAA dataTable = ', dataLineChartStat.report); console.log('AAA dataTable = ', dataLineChartStat.report);
*/
// Сортировка строк в таблице: // Сортировка строк в таблице:
var var
...@@ -77,107 +80,76 @@ $(document).ready(function(){ ...@@ -77,107 +80,76 @@ $(document).ready(function(){
isDesc = $selectedField.hasClass('desc'); isDesc = $selectedField.hasClass('desc');
} }
if (sortField) { //console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc);
//console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc); if (!sortField) {
switch(dataLineChartStat.report) {
case 'common':
var dataTableForSort = []; sortField = 'period';
isDesc = true;
dataTable.period.forEach(function(dataTableItem, ind){ break;
var dataTableSortItem = {}; case 'transaction':
dataTableSortItem['period'] = dataTableItem; sortField = 'Timestamp';
activeLines.forEach(function(activeLine){ isDesc = true;
dataTableSortItem[activeLine] = dataTable[activeLine][ind]; break;
}); default:
dataTableForSort.push(dataTableSortItem); sortField = 'period';
isDesc = true;
break;
}
}
var dataTableForSort = [];
dataTable.period.forEach(function(dataTableItem, ind){
var dataTableSortItem = {};
dataTableSortItem['period'] = dataTableItem;
activeLines.forEach(function(activeLine){
dataTableSortItem[activeLine] = dataTable[activeLine][ind];
}); });
dataTableForSort.push(dataTableSortItem);
//console.log('AAA dataTableForSort 111= ', dataTableForSort); });
dataTableForSort.sort(function(a,b){
dataTableForSort.sort(function(a,b){
if (sortField == 'Timestamp') { 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];
}
});
//console.log('AAA dataTableForSort = ', dataTableForSort);
dataTableForSort.forEach(function(item){
$row = $('<tr>');
$row.append($('<td>').html(item['period']));
activeLines.forEach(function(line){
if (line == 'Basket') {
var dataBasket = item[line];
currentActiveLine = 'Price';
$row.append($('<td class="'+ line +'">').append(templateBasketContent({data: dataBasket, formatPrice: valueFormat})));
} else if (line == 'Timestamp') {
var var
aT = new Date(a[sortField]), dateTimeValue = item[line].split(' '),
bT = new Date(b[sortField]); dateVal = dateTimeValue[0],
timeVal = dateTimeValue[1].split(':'),
return (isDesc) ? bT-aT : aT-bT; timeValCorrected = timeVal[0]+':'+timeVal[1];
$row.append($('<td class="'+ line +'">').append(templateTimestampContent({
data: {date: dateVal, time: timeValCorrected}
})));
} else { } else {
if (isDesc) { currentActiveLine = line;
return b[sortField]-a[sortField]; $row.append($('<td class="'+ line +'">').html(valueFormat(item[line])));
} else {
return a[sortField]-b[sortField];
}
} }
}); });
//console.log('AAA dataTableForSort = ', dataTableForSort); $row.appendTo($tableContent);
});
dataTableForSort.forEach(function(item){
$row = $('<tr>');
$row.append($('<td>').html(item['period']));
activeLines.forEach(function(line){
if (line == 'Basket') {
var dataBasket = item[line];
currentActiveLine = 'Price';
$row.append($('<td class="'+ line +'">').append(templateBasketContent({data: dataBasket, formatPrice: valueFormat})));
} else if (line == 'Timestamp') {
var
dateTimeValue = item[line].split(' '),
dateVal = dateTimeValue[0],
timeVal = dateTimeValue[1].split(':'),
timeValCorrected = timeVal[0]+':'+timeVal[1];
$row.append($('<td class="'+ line +'">').append(templateTimestampContent({
data: {date: dateVal, time: timeValCorrected}
})));
} else {
currentActiveLine = line;
$row.append($('<td class="'+ line +'">').html(valueFormat(item[line])));
}
});
$row.appendTo($tableContent);
});
} else {
for(var i = dataPeriod.length-1; i >= 0; i--) {
var
date = dataPeriod[i],
values = {};
activeLines.forEach(function(activeLine){
currentActiveLine = activeLine;
values[activeLine] = valueFormat(dataTable[activeLine][i]);
});
$row = $('<tr>');
$row.append($('<td>').html(date));
activeLines.forEach(function(item){
if (item == 'Basket') {
var dataBasket = values[item];
currentActiveLine = 'Price';
$row.append($('<td class="'+ item +'">').append(templateBasketContent({data: dataBasket, formatPrice: valueFormat})));
} else if (item == 'Timestamp') {
var
dateTimeValue = values[item].split(' '),
dateVal = dateTimeValue[0],
timeVal = dateTimeValue[1].split(':'),
timeValCorrected = timeVal[0]+':'+timeVal[1];
$row.append($('<td class="'+ item +'">').append(templateTimestampContent({
data: {date: dateVal, time: timeValCorrected}
})));
} else {
$row.append($('<td class="'+ item +'">').html(values[item]));
}
});
$row.appendTo($tableContent);
}
}
// Добавляем строку "Итого" для отчета 'common': // Добавляем строку "Итого" для отчета 'common':
if (dataLineChartStat.report == 'common') { if (dataLineChartStat.report == 'common') {
......
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