@datarailsshared/dr_renderer 1.2.309 → 1.2.310-dragons
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/dr_pivottable.js +13 -2
- package/src/highcharts_renderer.js +90 -199
- package/src/pivottable.js +1 -0
- package/tests/highcharts_renderer.test.js +0 -12
package/package.json
CHANGED
package/src/dr_pivottable.js
CHANGED
@@ -91,6 +91,7 @@ let initDRPivotTable = function($, window, document) {
|
|
91
91
|
|
92
92
|
DRPivotData.prototype.arrSort = function(attrs) {
|
93
93
|
var a, sortersArr;
|
94
|
+
const sortByValueAttrs = this.sortByValueAttrs;
|
94
95
|
sortersArr = (function() {
|
95
96
|
var l, len1, results;
|
96
97
|
results = [];
|
@@ -100,11 +101,21 @@ let initDRPivotTable = function($, window, document) {
|
|
100
101
|
}
|
101
102
|
return results;
|
102
103
|
}).call(this);
|
104
|
+
|
103
105
|
return function(a, b) {
|
104
106
|
var comparison, i, sorter;
|
105
107
|
for (i in sortersArr) {
|
106
|
-
|
107
|
-
|
108
|
+
const index = parseInt(i);
|
109
|
+
sorter = sortersArr[index];
|
110
|
+
if (sortByValueAttrs.indexOf(attrs[index]) !== -1) {
|
111
|
+
|
112
|
+
// For case current Field attrs[index] is sorted by value we are concatenating values passed to sorter function
|
113
|
+
// Concatenation is done from first field in a block (first axis or first series) until current field index.
|
114
|
+
// Cause for this case sorting will be as list of these concatenated strings (which is prepared in getSortingByValueOrderList)
|
115
|
+
comparison = sorter(a.slice(0, index + 1).join(','), b.slice(0, index + 1).join(','));
|
116
|
+
} else {
|
117
|
+
comparison = sorter(a[index], b[index]);
|
118
|
+
}
|
108
119
|
if (comparison !== 0) {
|
109
120
|
return comparison;
|
110
121
|
}
|
@@ -1150,6 +1150,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1150
1150
|
ob.name = row_n_value.join(highchartsRenderer.delimer)
|
1151
1151
|
.replace(highchartsRenderer.DR_OTHERS_KEY, othersName);
|
1152
1152
|
}
|
1153
|
+
|
1153
1154
|
lodash.forEach(col_n_keys, function (col_n_value, index) {
|
1154
1155
|
var agg = pivotData.getAggregator(row_n_value, col_n_value);
|
1155
1156
|
var val = agg.value();
|
@@ -1391,6 +1392,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1391
1392
|
if (opts.trendLine) {
|
1392
1393
|
const a = ((ySum * squareXSum) - (xSum * xySum)) / ((n * squareXSum) - (xSum * xSum));
|
1393
1394
|
const b = ((n * xySum) - (xSum* ySum)) / ((n * squareXSum) - (xSum * xSum));
|
1395
|
+
|
1394
1396
|
const trendSeries = lodash.clone(chart_series[chart_series.length - 1]);
|
1395
1397
|
trendSeries.className = 'trendSeries';
|
1396
1398
|
trendSeries.name = highchartsRenderer.getTrendSeriesName(trendSeries);
|
@@ -1401,6 +1403,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1401
1403
|
if (colors && colors[i]) {
|
1402
1404
|
trendSeries.color = colors[i];
|
1403
1405
|
}
|
1406
|
+
|
1404
1407
|
trendSerieses.push(trendSeries);
|
1405
1408
|
}
|
1406
1409
|
i++;
|
@@ -1417,6 +1420,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1417
1420
|
}
|
1418
1421
|
|
1419
1422
|
let weights = { line: 2,spline: 3 ,area:-2, areaspline: -1, scatter:4, column: 1 };
|
1423
|
+
|
1420
1424
|
if (opts.comboOptions && lodash.includes(chartType,'combo') && !lodash.isEqual(row_n_keys, EMPTY_ROW_N_KEYS)) {
|
1421
1425
|
chart_series.forEach((series, seriesIndex) => {
|
1422
1426
|
const savedSeriesOption = lodash.find(opts.comboOptions.seriesOptions, {series: series.name});
|
@@ -1636,19 +1640,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1636
1640
|
? lodash.get(waterfallOptions, 'colors', {}).increase || baseColor.increase
|
1637
1641
|
: lodash.get(waterfallOptions, 'colors', {}).decrease || baseColor.decrease;
|
1638
1642
|
}
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1651
|
-
}
|
1643
|
+
|
1644
|
+
resultObject.data.push({
|
1645
|
+
y: val,
|
1646
|
+
name: lodash.replace(
|
1647
|
+
lodash.unescape(name), highchartsRenderer.DR_OTHERS_KEY, highchartsRenderer.getOthersName(opts)
|
1648
|
+
),
|
1649
|
+
totalIndex: value.trend === 'total' ? index : undefined,
|
1650
|
+
isSum: value.trend === 'total',
|
1651
|
+
isTotal: value.trend === 'total',
|
1652
|
+
color,
|
1653
|
+
colsForTotal: value.trend === 'total' ? keys : null,
|
1654
|
+
});
|
1652
1655
|
});
|
1653
1656
|
chart_series.push(resultObject);
|
1654
1657
|
chart_series.push(
|
@@ -2672,7 +2675,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2672
2675
|
}
|
2673
2676
|
};
|
2674
2677
|
}
|
2675
|
-
|
2678
|
+
|
2676
2679
|
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
2677
2680
|
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
2678
2681
|
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
@@ -4408,72 +4411,42 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4408
4411
|
return ret_str;
|
4409
4412
|
};
|
4410
4413
|
|
4411
|
-
highchartsRenderer.
|
4412
|
-
let rowAttrs, rowKeys, colKeys, colAttrs;
|
4413
|
-
rowAttrs = pivotData.rowAttrs;
|
4414
|
-
rowKeys = pivotData.rowKeys;
|
4415
|
-
colKeys = pivotData.colKeys;
|
4416
|
-
colAttrs = pivotData.colAttrs;
|
4417
|
-
|
4418
|
-
|
4419
|
-
if (!colAttrs || colAttrs.length == 0) {
|
4420
|
-
return null;
|
4421
|
-
}
|
4422
|
-
|
4414
|
+
highchartsRenderer.getSortingByValueOrderList = function (pivotData, sortingOptions, keysArray, attrs, fieldIndex, widget) {
|
4423
4415
|
let values_names_arr = [];
|
4424
|
-
let keysArray = sortingOptions.field ? rowKeys : colKeys;
|
4425
|
-
|
4426
4416
|
lodash.forEach(keysArray, function (val) {
|
4427
|
-
|
4428
|
-
|
4429
|
-
|
4430
|
-
|
4431
|
-
if (
|
4432
|
-
|
4433
|
-
|
4434
|
-
|
4435
|
-
|
4436
|
-
|
4437
|
-
|
4438
|
-
|
4439
|
-
|
4440
|
-
// ORDERING
|
4441
|
-
let sorting_vector = ['asc'];
|
4442
|
-
if (sortingOptions && sortingOptions.type == 'largestToSmallest') {
|
4443
|
-
sorting_vector = ['desc'];
|
4444
|
-
}
|
4445
|
-
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
4446
|
-
|
4447
|
-
// map only names
|
4448
|
-
let attr_sorted_values = lodash.map(values_names_arr, 'name');
|
4449
|
-
return {name: sortingOptions.field ? rowAttrs[0] : colAttrs[0], values: attr_sorted_values};
|
4450
|
-
};
|
4451
|
-
|
4452
|
-
highchartsRenderer.getNewAttrSortingForRow = function (pivotData, sortingOptions) {
|
4453
|
-
let rowAttrs, rowKeys, colKeys, colAttrs;
|
4454
|
-
rowAttrs = pivotData.rowAttrs;
|
4455
|
-
rowKeys = pivotData.rowKeys;
|
4456
|
-
colKeys = pivotData.colKeys;
|
4457
|
-
colAttrs = pivotData.colAttrs;
|
4417
|
+
const firstArray = [];
|
4418
|
+
const secondArray = val.slice(0, fieldIndex + 1);
|
4419
|
+
|
4420
|
+
let valueForComparison;
|
4421
|
+
if (sortingOptions.sort_by === 'variance') {
|
4422
|
+
const varianceConfig = widget.options.chartOptions.delta_column;
|
4423
|
+
const data = pivotData.input;
|
4424
|
+
const varianceField = varianceConfig.field === 'category' ? widget.cols[0] : widget.rows[0];
|
4425
|
+
const varianceRowsForCurrentKey = lodash.filter(data, row =>
|
4426
|
+
row[varianceField.name] === varianceConfig.name
|
4427
|
+
&& lodash.every(secondArray, (item, index) => row[attrs[index]] === item)
|
4428
|
+
);
|
4458
4429
|
|
4459
|
-
|
4460
|
-
|
4461
|
-
|
4430
|
+
valueForComparison = lodash.reduce(varianceRowsForCurrentKey, (a, d) => a + d[widget.vals[0].name], 0);
|
4431
|
+
} else {
|
4432
|
+
let getAggregatorParams = [firstArray, secondArray];
|
4462
4433
|
|
4463
|
-
|
4464
|
-
|
4434
|
+
if (lodash.includes(pivotData.rowAttrs, attrs[fieldIndex])) {
|
4435
|
+
getAggregatorParams = lodash.reverse(getAggregatorParams);
|
4436
|
+
}
|
4437
|
+
|
4438
|
+
let aggregator_subtotal = pivotData.getAggregator(...getAggregatorParams);
|
4465
4439
|
|
4466
|
-
|
4467
|
-
|
4468
|
-
|
4469
|
-
|
4440
|
+
if (aggregator_subtotal) {
|
4441
|
+
valueForComparison = aggregator_subtotal.value();
|
4442
|
+
}
|
4443
|
+
}
|
4470
4444
|
|
4471
|
-
if (
|
4472
|
-
|
4473
|
-
|
4474
|
-
value_subtotal = Math.abs(value_subtotal);
|
4445
|
+
if (!lodash.isNil(valueForComparison)) {
|
4446
|
+
if (sortingOptions && sortingOptions.is_absolute && !isNaN(parseFloat(valueForComparison))) {
|
4447
|
+
valueForComparison = Math.abs(valueForComparison);
|
4475
4448
|
}
|
4476
|
-
values_names_arr.push({name:
|
4449
|
+
values_names_arr.push({name: secondArray.join(','), value: valueForComparison});
|
4477
4450
|
}
|
4478
4451
|
});
|
4479
4452
|
|
@@ -4485,36 +4458,33 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4485
4458
|
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
4486
4459
|
|
4487
4460
|
// map only names
|
4488
|
-
|
4489
|
-
return {name: sortingOptions.field ? colAttrs[0] : rowAttrs[0], values: attr_sorted_values};
|
4461
|
+
return lodash.map(values_names_arr, 'name');
|
4490
4462
|
};
|
4491
4463
|
|
4492
|
-
highchartsRenderer.generateSortingFunctionByValues = function (
|
4493
|
-
let new_map;
|
4494
|
-
let axis = highchartsRenderer.getAxis(sortingOptions.axis, opts);
|
4495
|
-
if (axis == 'col_total') {
|
4496
|
-
new_map = highchartsRenderer.getNewAttrSortingForCol(pivotData, sortingOptions);
|
4497
|
-
} else if (axis == 'row_total') {
|
4498
|
-
new_map = highchartsRenderer.getNewAttrSortingForRow(pivotData, sortingOptions);
|
4499
|
-
}
|
4500
|
-
|
4464
|
+
highchartsRenderer.generateSortingFunctionByValues = function (sortByValueSettings, pivotData, opts, widget) {
|
4501
4465
|
let old_sorters_function = opts.sorters;
|
4502
4466
|
if (!old_sorters_function) {
|
4503
4467
|
old_sorters_function = function () {
|
4504
4468
|
};
|
4505
4469
|
}
|
4506
|
-
|
4507
|
-
|
4508
|
-
|
4509
|
-
|
4510
|
-
|
4511
|
-
|
4512
|
-
|
4513
|
-
|
4470
|
+
return function (attr) {
|
4471
|
+
const sortingOptions = lodash.find(sortByValueSettings, fieldSorting => fieldSorting.name === attr);
|
4472
|
+
if (sortingOptions) {
|
4473
|
+
const axis = highchartsRenderer.getAxis(_.includes(pivotData.colAttrs, attr) ? 'col_total' : 'row_total', opts);
|
4474
|
+
const isColumnSort = axis === 'col_total';
|
4475
|
+
const fieldIndex = lodash.findIndex(isColumnSort ? pivotData.colAttrs : pivotData.rowAttrs, name => name === attr);
|
4476
|
+
const orderedNamesList = highchartsRenderer.getSortingByValueOrderList(
|
4477
|
+
pivotData,
|
4478
|
+
sortingOptions.sorting,
|
4479
|
+
pivotData[isColumnSort ? 'colKeys' : 'rowKeys'],
|
4480
|
+
pivotData[isColumnSort ? 'colAttrs' : 'rowAttrs'],
|
4481
|
+
fieldIndex,
|
4482
|
+
widget
|
4483
|
+
);
|
4484
|
+
return $.pivotUtilities.sortAs(orderedNamesList);
|
4485
|
+
} else {
|
4486
|
+
return old_sorters_function(attr);
|
4514
4487
|
}
|
4515
|
-
return new_sorters_function;
|
4516
|
-
} else {
|
4517
|
-
return old_sorters_function;
|
4518
4488
|
}
|
4519
4489
|
};
|
4520
4490
|
|
@@ -4718,6 +4688,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4718
4688
|
result = null;
|
4719
4689
|
try {
|
4720
4690
|
pivotData = $.pivotUtilities.getPivotDataModel(rowData, opts);
|
4691
|
+
pivotData.sortByValueAttrs = [];
|
4721
4692
|
try {
|
4722
4693
|
if (options && options.onlyOptions) {
|
4723
4694
|
if (!opts.rendererOptions) {
|
@@ -4725,9 +4696,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4725
4696
|
}
|
4726
4697
|
opts.rendererOptions.onlyOptions = true;
|
4727
4698
|
}
|
4728
|
-
|
4729
|
-
|
4730
|
-
|
4699
|
+
|
4700
|
+
const sortByValueSettings = lodash.filter(
|
4701
|
+
lodash.get(widget, 'options.sortingFields', []),
|
4702
|
+
sortingField => lodash.includes(['field_values', 'variance'], lodash.get(sortingField, 'sorting.sort_by'))
|
4703
|
+
);
|
4704
|
+
|
4705
|
+
if (sortByValueSettings.length) {
|
4706
|
+
pivotData.sortByValueAttrs = lodash.map(sortByValueSettings, fieldSorting => fieldSorting.name);
|
4707
|
+
let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(sortByValueSettings, pivotData, opts, widget);
|
4731
4708
|
opts.sorters = new_sorting_function;
|
4732
4709
|
optsFiltered.sorters = new_sorting_function;
|
4733
4710
|
pivotData.sorters = new_sorting_function;
|
@@ -5042,19 +5019,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5042
5019
|
};
|
5043
5020
|
|
5044
5021
|
highchartsRenderer.isSystemField = function (field) {
|
5045
|
-
|
5046
|
-
const dynamicSystemFields = [];
|
5047
|
-
|
5048
|
-
const areMultipleAndScenarioTags = lodash.includes(features, 'multiple_dimension_tags')
|
5049
|
-
&& lodash.includes(features, 'use_new_scenario_tag');
|
5050
|
-
|
5051
|
-
if (areMultipleAndScenarioTags) {
|
5052
|
-
dynamicSystemFields.push('Scenario', 'Budget Cycle');
|
5053
|
-
}
|
5054
|
-
|
5055
|
-
const regexDelimer = '|';
|
5056
|
-
const dynamicSystemFieldsRegex = dynamicSystemFields.length ? dynamicSystemFields.join(regexDelimer) + regexDelimer : '';
|
5057
|
-
var regex = new RegExp(`^(${dynamicSystemFieldsRegex}Calc_Model_Name|Calc_Model_ID|Parent_Name|Parent_Id|FileBox_ID|FileBox_Name|DataMapper_Name|Doc_ID|Doc_version|Label|Submission_Date|User|table_id|Latest_In_Dim|Tab_name|CP_Name|DT_.+|VT_.+|System_.+)$`, "m");
|
5022
|
+
var regex = new RegExp("^(Calc_Model_Name|Calc_Model_ID|Parent_Name|Parent_Id|FileBox_ID|FileBox_Name|DataMapper_Name|Doc_ID|Doc_version|Label|Submission_Date|User|table_id|Latest_In_Dim|Tab_name|CP_Name|DT_.+|VT_.+|System_.+)$", "m");
|
5058
5023
|
|
5059
5024
|
return (field.category && field.category.includes("")) || regex.test(field.name)
|
5060
5025
|
};
|
@@ -7090,18 +7055,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
7090
7055
|
value_name: 'is_percentage',
|
7091
7056
|
default_value: false,
|
7092
7057
|
hidden: true,
|
7093
|
-
}, {
|
7094
|
-
element_type: 'checkbox',
|
7095
|
-
element_label: 'Sort by variance',
|
7096
|
-
value_name: 'sort_by_variance',
|
7097
|
-
default_value: false,
|
7098
|
-
hidden: true
|
7099
|
-
}, {
|
7100
|
-
element_type: 'checkbox',
|
7101
|
-
element_label: 'Sort by absolute variance',
|
7102
|
-
value_name: 'sort_by_absolute_variance',
|
7103
|
-
default_value: false,
|
7104
|
-
hidden: true
|
7105
7058
|
}]
|
7106
7059
|
},
|
7107
7060
|
'delta_column_for_drill_down': {
|
@@ -7168,18 +7121,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
7168
7121
|
value_name: 'is_percentage',
|
7169
7122
|
default_value: false,
|
7170
7123
|
hidden: true,
|
7171
|
-
}, {
|
7172
|
-
element_type: 'checkbox',
|
7173
|
-
element_label: 'Sort by variance',
|
7174
|
-
value_name: 'sort_by_variance',
|
7175
|
-
default_value: false,
|
7176
|
-
hidden: true
|
7177
|
-
}, {
|
7178
|
-
element_type: 'checkbox',
|
7179
|
-
element_label: 'Sort by absolute variance',
|
7180
|
-
value_name: 'sort_by_absolute_variance',
|
7181
|
-
default_value: false,
|
7182
|
-
hidden: true
|
7183
7124
|
}, {
|
7184
7125
|
element_type: 'checkbox',
|
7185
7126
|
element_label: 'Filter zero values',
|
@@ -8696,7 +8637,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8696
8637
|
const isCustomSorting = widget.options.sortingFields && Array.isArray(widget.options.sortingFields) && widget.options.sortingFields.length > 0;
|
8697
8638
|
if (isCustomSorting) {
|
8698
8639
|
lodash.forEach(datesFields, function (field) {
|
8699
|
-
const fieldToSort = lodash.find(
|
8640
|
+
const fieldToSort = lodash.find(
|
8641
|
+
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
8642
|
+
);
|
8700
8643
|
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8701
8644
|
});
|
8702
8645
|
}
|
@@ -8778,7 +8721,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8778
8721
|
});
|
8779
8722
|
} else if (isCustomSorting) {
|
8780
8723
|
lodash.forEach(rowsAndCols, function (field) {
|
8781
|
-
const fieldToSort = lodash.find(
|
8724
|
+
const fieldToSort = lodash.find(
|
8725
|
+
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
8726
|
+
);
|
8782
8727
|
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8783
8728
|
});
|
8784
8729
|
}
|
@@ -8813,61 +8758,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8813
8758
|
}
|
8814
8759
|
|
8815
8760
|
/****** END *******/
|
8816
|
-
|
8817
|
-
|
8818
|
-
|
8819
|
-
(widget.options.chartOptions.delta_column.sort_by_variance ||
|
8820
|
-
widget.options.chartOptions.delta_column.sort_by_absolute_variance) &&
|
8821
|
-
widget.rows.length > 0 &&
|
8822
|
-
widget.cols.length > 0 &&
|
8823
|
-
widget.vals.length
|
8824
|
-
) {
|
8825
|
-
let variance_config = widget.options.chartOptions.delta_column;
|
8826
|
-
let val_field = widget.vals[0];
|
8827
|
-
let field_for_sorting = null;
|
8828
|
-
let field_with_variant = null;
|
8829
|
-
if (variance_config.field == "series") {
|
8830
|
-
field_for_sorting = widget.cols[0];
|
8831
|
-
field_with_variant = widget.rows[0];
|
8832
|
-
} else if (variance_config.field == "category") {
|
8833
|
-
field_for_sorting = widget.rows[0];
|
8834
|
-
field_with_variant = widget.cols[0];
|
8835
|
-
}
|
8836
|
-
|
8837
|
-
let data_sorted = lodash.filter(data, function (data_row) {
|
8838
|
-
return data_row[field_with_variant.name] == variance_config.name && data_row[field_for_sorting.name] != undefined;
|
8839
|
-
});
|
8840
|
-
|
8841
|
-
const sorting_variance = widget.options.total_value_options && widget.options.total_value_options.sorting_variance === '' ? 'asc' : 'desc';
|
8842
|
-
|
8843
|
-
if (widget.options.chartOptions.delta_column.sort_by_absolute_variance) {
|
8844
|
-
data_sorted = lodash.sortBy(data_sorted, function (o) {
|
8845
|
-
if (sorting_variance === 'desc') {
|
8846
|
-
return Math.abs(o[val_field.name]) * -1;
|
8847
|
-
}
|
8848
|
-
|
8849
|
-
return Math.abs(o[val_field.name]) * 1;
|
8850
|
-
});
|
8851
|
-
} else {
|
8852
|
-
data_sorted = lodash.orderBy(data_sorted, [val_field.name], [sorting_variance]);
|
8853
|
-
}
|
8854
|
-
|
8855
|
-
let values_for_sort = lodash.map(data_sorted, function (data_row) {
|
8856
|
-
return data_row[field_for_sorting.name];
|
8857
|
-
});
|
8858
|
-
|
8859
|
-
values_for_sort = lodash.uniq(values_for_sort);
|
8860
|
-
|
8861
|
-
if (values_for_sort.length > 0) {
|
8862
|
-
let field = lodash.find(datesFields, {name: field_for_sorting.name});
|
8863
|
-
if (field) {
|
8864
|
-
field.values = values_for_sort;
|
8865
|
-
field.sorting = null;
|
8866
|
-
} else {
|
8867
|
-
datesFields.push({name: field_for_sorting.name, values: values_for_sort});
|
8868
|
-
}
|
8869
|
-
}
|
8870
|
-
} else if (widget.options && widget.options.sortingValues) {
|
8761
|
+
|
8762
|
+
// TODO: Remove. sortingValues looks like lagacy which is not in use neither in webclient nor in renderer
|
8763
|
+
if (widget.options && widget.options.sortingValues) {
|
8871
8764
|
var field = lodash.find(datesFields, {name: widget.options.sortingValues.field});
|
8872
8765
|
if (field) {
|
8873
8766
|
field.values = widget.options.sortingValues.values;
|
@@ -9202,19 +9095,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9202
9095
|
|
9203
9096
|
// if it is not total value - then add it as rowData data row and sum it up
|
9204
9097
|
// else - add total with calculated sum as new rowData data row (totals do not initially exist in BE response)
|
9205
|
-
if (value
|
9098
|
+
if (value.trend !== 'total') {
|
9206
9099
|
const rowIndex = lodash.findIndex(rowData, (responseRow) =>
|
9207
9100
|
lodash.every(categoryFields, (field, fieldKey) => responseRow[field.name] === value.key[fieldKey])
|
9208
9101
|
);
|
9209
|
-
|
9210
|
-
|
9211
|
-
|
9212
|
-
rowData.splice(rowIndex, 1);
|
9213
|
-
}
|
9102
|
+
modifiedRowData.push(rowData[rowIndex]);
|
9103
|
+
sum += rowData[rowIndex][valueField.name];
|
9104
|
+
rowData.splice(rowIndex, 1);
|
9214
9105
|
} else {
|
9215
9106
|
const totalRow = {};
|
9216
9107
|
lodash.forEach(categoryFields, (field, fieldKey) => {
|
9217
|
-
totalRow[field.name] = value
|
9108
|
+
totalRow[field.name] = value.key[fieldKey];
|
9218
9109
|
});
|
9219
9110
|
totalRow[valueField.name] = sum;
|
9220
9111
|
modifiedRowData.push(totalRow);
|
package/src/pivottable.js
CHANGED
@@ -1154,18 +1154,6 @@ describe('highcharts_renderer', () => {
|
|
1154
1154
|
};
|
1155
1155
|
expect(highchartsRenderer.isSystemField(field)).toBe(false);
|
1156
1156
|
});
|
1157
|
-
|
1158
|
-
describe('dynamic system fields', () => {
|
1159
|
-
it('should count Scenario & Budget Cycle as system field', () => {
|
1160
|
-
lodash.set(document, 'ReportHippo.user.features', ['multiple_dimension_tags', 'use_new_scenario_tag']);
|
1161
|
-
|
1162
|
-
const fieldWithScenario = { name: 'Scenario' };
|
1163
|
-
expect(highchartsRenderer.isSystemField(fieldWithScenario)).toBe(true);
|
1164
|
-
|
1165
|
-
const fieldWithBudgetCycle = { name: 'Budget Cycle' };
|
1166
|
-
expect(highchartsRenderer.isSystemField(fieldWithBudgetCycle)).toBe(true);
|
1167
|
-
});
|
1168
|
-
});
|
1169
1157
|
});
|
1170
1158
|
|
1171
1159
|
describe('function getFieldColorClass', () => {
|