@datarailsshared/dr_renderer 1.2.299 → 1.2.301-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 +7 -1
- package/src/highcharts_renderer.js +46 -82
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,16 @@ 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
108
|
sorter = sortersArr[i];
|
107
|
-
|
109
|
+
if (sortByValueAttrs.indexOf(attrs[parseInt(i)]) !== -1) {
|
110
|
+
comparison = sorter(a.slice(0, parseInt(i) + 1).join(','), b.slice(0, parseInt(i) + 1).join(','));
|
111
|
+
} else {
|
112
|
+
comparison = sorter(a[i], b[i]);
|
113
|
+
}
|
108
114
|
if (comparison !== 0) {
|
109
115
|
return comparison;
|
110
116
|
}
|
@@ -1155,6 +1155,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1155
1155
|
ob.name = row_n_value.join(highchartsRenderer.delimer)
|
1156
1156
|
.replace(highchartsRenderer.DR_OTHERS_KEY, othersName);
|
1157
1157
|
}
|
1158
|
+
|
1158
1159
|
lodash.forEach(col_n_keys, function (col_n_value, index) {
|
1159
1160
|
var agg = pivotData.getAggregator(row_n_value, col_n_value);
|
1160
1161
|
var val = agg.value();
|
@@ -1396,6 +1397,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1396
1397
|
if (opts.trendLine) {
|
1397
1398
|
const a = ((ySum * squareXSum) - (xSum * xySum)) / ((n * squareXSum) - (xSum * xSum));
|
1398
1399
|
const b = ((n * xySum) - (xSum* ySum)) / ((n * squareXSum) - (xSum * xSum));
|
1400
|
+
|
1399
1401
|
const trendSeries = lodash.clone(chart_series[chart_series.length - 1]);
|
1400
1402
|
trendSeries.className = 'trendSeries';
|
1401
1403
|
trendSeries.name = highchartsRenderer.getTrendSeriesName(trendSeries);
|
@@ -1406,6 +1408,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1406
1408
|
if (colors && colors[i]) {
|
1407
1409
|
trendSeries.color = colors[i];
|
1408
1410
|
}
|
1411
|
+
|
1409
1412
|
trendSerieses.push(trendSeries);
|
1410
1413
|
}
|
1411
1414
|
i++;
|
@@ -1422,6 +1425,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1422
1425
|
}
|
1423
1426
|
|
1424
1427
|
let weights = { line: 2,spline: 3 ,area:-2, areaspline: -1, scatter:4, column: 1 };
|
1428
|
+
|
1425
1429
|
if (opts.comboOptions && lodash.includes(chartType,'combo') && !lodash.isEqual(row_n_keys, EMPTY_ROW_N_KEYS)) {
|
1426
1430
|
chart_series.forEach((series, seriesIndex) => {
|
1427
1431
|
const savedSeriesOption = lodash.find(opts.comboOptions.seriesOptions, {series: series.name});
|
@@ -4393,72 +4397,25 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4393
4397
|
return ret_str;
|
4394
4398
|
};
|
4395
4399
|
|
4396
|
-
highchartsRenderer.
|
4397
|
-
let rowAttrs, rowKeys, colKeys, colAttrs;
|
4398
|
-
rowAttrs = pivotData.rowAttrs;
|
4399
|
-
rowKeys = pivotData.rowKeys;
|
4400
|
-
colKeys = pivotData.colKeys;
|
4401
|
-
colAttrs = pivotData.colAttrs;
|
4402
|
-
|
4403
|
-
|
4404
|
-
if (!colAttrs || colAttrs.length == 0) {
|
4405
|
-
return null;
|
4406
|
-
}
|
4407
|
-
|
4400
|
+
highchartsRenderer.getSortingByValueOrderList = function (pivotData, sortingOptions, keysArray, attrs, fieldIndex) {
|
4408
4401
|
let values_names_arr = [];
|
4409
|
-
let keysArray = sortingOptions.field ? rowKeys : colKeys;
|
4410
|
-
|
4411
4402
|
lodash.forEach(keysArray, function (val) {
|
4412
|
-
|
4413
|
-
|
4414
|
-
let
|
4403
|
+
const firstArray = [];
|
4404
|
+
const secondArray = val.slice(0, fieldIndex + 1);
|
4405
|
+
let getAggregatorParams = [firstArray, secondArray];
|
4415
4406
|
|
4416
|
-
if (
|
4417
|
-
|
4418
|
-
if (sortingOptions && sortingOptions.is_absolute && !isNaN(parseFloat(value_subtotal))) {
|
4419
|
-
value_subtotal = Math.abs(value_subtotal);
|
4420
|
-
}
|
4421
|
-
values_names_arr.push({name: val[0], value: value_subtotal});
|
4407
|
+
if (lodash.includes(pivotData.rowAttrs, attrs[fieldIndex])) {
|
4408
|
+
getAggregatorParams = lodash.reverse(getAggregatorParams);
|
4422
4409
|
}
|
4423
|
-
});
|
4424
4410
|
|
4425
|
-
|
4426
|
-
let sorting_vector = ['asc'];
|
4427
|
-
if (sortingOptions && sortingOptions.type == 'largestToSmallest') {
|
4428
|
-
sorting_vector = ['desc'];
|
4429
|
-
}
|
4430
|
-
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
4431
|
-
|
4432
|
-
// map only names
|
4433
|
-
let attr_sorted_values = lodash.map(values_names_arr, 'name');
|
4434
|
-
return {name: sortingOptions.field ? rowAttrs[0] : colAttrs[0], values: attr_sorted_values};
|
4435
|
-
};
|
4436
|
-
|
4437
|
-
highchartsRenderer.getNewAttrSortingForRow = function (pivotData, sortingOptions) {
|
4438
|
-
let rowAttrs, rowKeys, colKeys, colAttrs;
|
4439
|
-
rowAttrs = pivotData.rowAttrs;
|
4440
|
-
rowKeys = pivotData.rowKeys;
|
4441
|
-
colKeys = pivotData.colKeys;
|
4442
|
-
colAttrs = pivotData.colAttrs;
|
4443
|
-
|
4444
|
-
if (!rowAttrs || rowAttrs.length == 0) {
|
4445
|
-
return null;
|
4446
|
-
}
|
4447
|
-
|
4448
|
-
let values_names_arr = [];
|
4449
|
-
let keysArray = sortingOptions.field ? colKeys : rowKeys;
|
4450
|
-
|
4451
|
-
lodash.forEach(keysArray, function (val) {
|
4452
|
-
let firstArray = sortingOptions.field ? sortingOptions.field.split(highchartsRenderer.delimer) : [val[0]];
|
4453
|
-
let secondArray = sortingOptions.field ? [val[0]] : [];
|
4454
|
-
let aggregator_subtotal = pivotData.getAggregator(firstArray, secondArray);
|
4411
|
+
let aggregator_subtotal = pivotData.getAggregator(...getAggregatorParams);
|
4455
4412
|
|
4456
4413
|
if (aggregator_subtotal) {
|
4457
4414
|
let value_subtotal = aggregator_subtotal.value();
|
4458
4415
|
if (sortingOptions && sortingOptions.is_absolute && !isNaN(parseFloat(value_subtotal))) {
|
4459
4416
|
value_subtotal = Math.abs(value_subtotal);
|
4460
4417
|
}
|
4461
|
-
values_names_arr.push({name:
|
4418
|
+
values_names_arr.push({name: secondArray.join(','), value: value_subtotal});
|
4462
4419
|
}
|
4463
4420
|
});
|
4464
4421
|
|
@@ -4470,36 +4427,32 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4470
4427
|
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
4471
4428
|
|
4472
4429
|
// map only names
|
4473
|
-
|
4474
|
-
return {name: sortingOptions.field ? colAttrs[0] : rowAttrs[0], values: attr_sorted_values};
|
4430
|
+
return lodash.map(values_names_arr, 'name');
|
4475
4431
|
};
|
4476
4432
|
|
4477
|
-
highchartsRenderer.generateSortingFunctionByValues = function (
|
4478
|
-
let new_map;
|
4479
|
-
let axis = highchartsRenderer.getAxis(sortingOptions.axis, opts);
|
4480
|
-
if (axis == 'col_total') {
|
4481
|
-
new_map = highchartsRenderer.getNewAttrSortingForCol(pivotData, sortingOptions);
|
4482
|
-
} else if (axis == 'row_total') {
|
4483
|
-
new_map = highchartsRenderer.getNewAttrSortingForRow(pivotData, sortingOptions);
|
4484
|
-
}
|
4485
|
-
|
4433
|
+
highchartsRenderer.generateSortingFunctionByValues = function (sortByValueSettings, pivotData, opts, widget) {
|
4486
4434
|
let old_sorters_function = opts.sorters;
|
4487
4435
|
if (!old_sorters_function) {
|
4488
4436
|
old_sorters_function = function () {
|
4489
4437
|
};
|
4490
4438
|
}
|
4491
|
-
|
4492
|
-
|
4493
|
-
|
4494
|
-
|
4495
|
-
|
4496
|
-
|
4497
|
-
|
4498
|
-
|
4439
|
+
return function (attr) {
|
4440
|
+
const sortingOptions = lodash.find(sortByValueSettings, fieldSorting => fieldSorting.name === attr);
|
4441
|
+
if (sortingOptions) {
|
4442
|
+
const axis = highchartsRenderer.getAxis(_.includes(pivotData.colAttrs, attr) ? 'col_total' : 'row_total', opts);
|
4443
|
+
const isColumnSort = axis === 'col_total';
|
4444
|
+
const fieldIndex = lodash.findIndex(isColumnSort ? pivotData.colAttrs : pivotData.rowAttrs, name => name === attr);
|
4445
|
+
const orderedNamesList = highchartsRenderer.getSortingByValueOrderList(
|
4446
|
+
pivotData,
|
4447
|
+
sortingOptions.sorting,
|
4448
|
+
pivotData[isColumnSort ? 'colKeys' : 'rowKeys'],
|
4449
|
+
pivotData[isColumnSort ? 'colAttrs' : 'rowAttrs'],
|
4450
|
+
fieldIndex
|
4451
|
+
);
|
4452
|
+
return $.pivotUtilities.sortAs(orderedNamesList);
|
4453
|
+
} else {
|
4454
|
+
return old_sorters_function(attr);
|
4499
4455
|
}
|
4500
|
-
return new_sorters_function;
|
4501
|
-
} else {
|
4502
|
-
return old_sorters_function;
|
4503
4456
|
}
|
4504
4457
|
};
|
4505
4458
|
|
@@ -4703,6 +4656,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4703
4656
|
result = null;
|
4704
4657
|
try {
|
4705
4658
|
pivotData = $.pivotUtilities.getPivotDataModel(rowData, opts);
|
4659
|
+
pivotData.sortByValueAttrs = [];
|
4706
4660
|
try {
|
4707
4661
|
if (options && options.onlyOptions) {
|
4708
4662
|
if (!opts.rendererOptions) {
|
@@ -4710,9 +4664,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4710
4664
|
}
|
4711
4665
|
opts.rendererOptions.onlyOptions = true;
|
4712
4666
|
}
|
4713
|
-
|
4714
|
-
|
4715
|
-
|
4667
|
+
|
4668
|
+
const sortByValueSettings = lodash.filter(
|
4669
|
+
lodash.get(widget, 'options.sortingFields', []),
|
4670
|
+
sortingField => lodash.get(sortingField, 'sorting.sort_by') === 'field_values'
|
4671
|
+
);
|
4672
|
+
|
4673
|
+
if (sortByValueSettings.length) {
|
4674
|
+
pivotData.sortByValueAttrs = lodash.map(sortByValueSettings, fieldSorting => fieldSorting.name);
|
4675
|
+
let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(sortByValueSettings, pivotData, opts, widget);
|
4716
4676
|
opts.sorters = new_sorting_function;
|
4717
4677
|
optsFiltered.sorters = new_sorting_function;
|
4718
4678
|
pivotData.sorters = new_sorting_function;
|
@@ -8664,7 +8624,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8664
8624
|
const isCustomSorting = widget.options.sortingFields && Array.isArray(widget.options.sortingFields) && widget.options.sortingFields.length > 0;
|
8665
8625
|
if (isCustomSorting) {
|
8666
8626
|
lodash.forEach(datesFields, function (field) {
|
8667
|
-
const fieldToSort = lodash.find(
|
8627
|
+
const fieldToSort = lodash.find(
|
8628
|
+
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
8629
|
+
);
|
8668
8630
|
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8669
8631
|
});
|
8670
8632
|
}
|
@@ -8746,7 +8708,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8746
8708
|
});
|
8747
8709
|
} else if (isCustomSorting) {
|
8748
8710
|
lodash.forEach(rowsAndCols, function (field) {
|
8749
|
-
const fieldToSort = lodash.find(
|
8711
|
+
const fieldToSort = lodash.find(
|
8712
|
+
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
8713
|
+
);
|
8750
8714
|
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8751
8715
|
});
|
8752
8716
|
}
|