@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/dr_renderer",
3
- "version": "1.2.299",
3
+ "version": "1.2.301-dragons",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -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
- comparison = sorter(a[i], b[i]);
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.getNewAttrSortingForCol = function (pivotData, sortingOptions) {
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
- let firstArray = sortingOptions.field ? [val[0]] : [];
4413
- let secondArray = sortingOptions.field ? sortingOptions.field.split(highchartsRenderer.delimer) : [val[0]];
4414
- let aggregator_subtotal = pivotData.getAggregator(firstArray, secondArray);
4403
+ const firstArray = [];
4404
+ const secondArray = val.slice(0, fieldIndex + 1);
4405
+ let getAggregatorParams = [firstArray, secondArray];
4415
4406
 
4416
- if (aggregator_subtotal) {
4417
- let value_subtotal = aggregator_subtotal.value();
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
- // ORDERING
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: val[0], value: value_subtotal});
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
- let attr_sorted_values = lodash.map(values_names_arr, 'name');
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 (sortingOptions, pivotData, opts) {
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
- if (new_map) {
4492
- var sortAs = $.pivotUtilities.sortAs;
4493
- let new_sorters_function = function (attr) {
4494
- if (new_map.name == attr) {
4495
- return $.pivotUtilities.sortAs(new_map.values);
4496
- } else {
4497
- return old_sorters_function(attr);
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
- var totalFilters = lodash.get(opts, 'rendererOptions.total_value_options', null);
4714
- if (totalFilters && totalFilters.sorting_options) {
4715
- let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(totalFilters.sorting_options, pivotData, opts);
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(widget.options.sortingFields, element => element.id === field.id);
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(widget.options.sortingFields, element => element.id === field.id);
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
  }