@datarailsshared/dr_renderer 1.5.89 → 1.5.90
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-renderer-helpers.js +0 -6
- package/src/dr_pivottable.js +1 -192
- package/src/highcharts_renderer.js +12 -353
- package/src/pivottable.js +7 -653
- package/tests/dr-renderer-helpers.test.js +0 -32
- package/tests/highcharts_renderer.test.js +76 -239
|
@@ -250,7 +250,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
250
250
|
if (!!lodash.get(document, 'ReportHippo.user')) {
|
|
251
251
|
disableAnimation = document.ReportHippo.user.organization && document.ReportHippo.user.organization.settings && document.ReportHippo.user.organization.settings.disable_animation
|
|
252
252
|
highchartsRenderer.enabledNewWidgetValueFormatting = highchartsRenderer.hasFeature(FEATURES.ENABLE_NEW_WIDGET_VALUE_FORMATTING);
|
|
253
|
-
highchartsRenderer.isSortingOnBackendEnabled = highchartsRenderer.hasFeature(FEATURES.ENABLE_SERVER_WIDGET_DATA_SORTING);
|
|
254
253
|
}
|
|
255
254
|
|
|
256
255
|
// fix issue of use tootip.stickOnContact with tooltip.outside , source: https://github.com/highcharts/highcharts/pull/15960
|
|
@@ -1239,7 +1238,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1239
1238
|
|
|
1240
1239
|
if (pivotData.isSmartQueriesEnabled && withExtraScenarioCycle && indexOfScenarioCycleFilter > -1) {
|
|
1241
1240
|
const indexOfScenarioFilter = row_n_keys[0].length - 1;
|
|
1242
|
-
for (let i = 0; i < row_n_keys
|
|
1241
|
+
for (let i = 0; i < row_n_keys.length; i++) {
|
|
1243
1242
|
row_n_keys[i].splice(indexOfScenarioFilter, 1);
|
|
1244
1243
|
}
|
|
1245
1244
|
row_n_keys = Array.from(
|
|
@@ -3407,10 +3406,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
3407
3406
|
? opts.chartOptions
|
|
3408
3407
|
: highchartsRenderer.getDefaultValueForChart(highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN);
|
|
3409
3408
|
|
|
3410
|
-
if (!highchartsRenderer.isSortingOnBackendEnabled) {
|
|
3411
|
-
pivotData.colKeys = lodash.map(lodash.keys(pivotData.colTotals), key => [key]);
|
|
3412
|
-
}
|
|
3413
|
-
|
|
3414
3409
|
chartOptions.chart = {
|
|
3415
3410
|
type: 'waterfall',
|
|
3416
3411
|
zoomType: additionOptions && additionOptions.chart && additionOptions.chart.zoom_type ? additionOptions.chart.zoom_type : 'None',
|
|
@@ -4314,83 +4309,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4314
4309
|
return ret_str;
|
|
4315
4310
|
};
|
|
4316
4311
|
|
|
4317
|
-
highchartsRenderer.getSortingByValueOrderList = function (pivotData, sortingOptions, keysArray, attrs, fieldIndex, widget) {
|
|
4318
|
-
let values_names_arr = [];
|
|
4319
|
-
lodash.forEach(keysArray, function (val) {
|
|
4320
|
-
const firstArray = [];
|
|
4321
|
-
const secondArray = val.slice(0, fieldIndex + 1);
|
|
4322
|
-
|
|
4323
|
-
let valueForComparison;
|
|
4324
|
-
if (sortingOptions.sort_by === 'variance') {
|
|
4325
|
-
const varianceConfig = widget.options.chartOptions.delta_column;
|
|
4326
|
-
const data = pivotData.input;
|
|
4327
|
-
const varianceField = varianceConfig.field === 'category' ? widget.cols[0] : widget.rows[0];
|
|
4328
|
-
const varianceRowsForCurrentKey = lodash.filter(data, row =>
|
|
4329
|
-
row[varianceField.name] === varianceConfig.name
|
|
4330
|
-
&& lodash.every(secondArray, (item, index) => row[attrs[index]] === item)
|
|
4331
|
-
);
|
|
4332
|
-
|
|
4333
|
-
valueForComparison = lodash.reduce(varianceRowsForCurrentKey, (a, d) => a + d[widget.vals[0].name], 0);
|
|
4334
|
-
} else {
|
|
4335
|
-
let getAggregatorParams = [firstArray, secondArray];
|
|
4336
|
-
|
|
4337
|
-
if (lodash.includes(pivotData.rowAttrs, attrs[fieldIndex])) {
|
|
4338
|
-
getAggregatorParams = lodash.reverse(getAggregatorParams);
|
|
4339
|
-
}
|
|
4340
|
-
|
|
4341
|
-
let aggregator_subtotal = pivotData.getAggregator(...getAggregatorParams);
|
|
4342
|
-
|
|
4343
|
-
if (aggregator_subtotal) {
|
|
4344
|
-
valueForComparison = aggregator_subtotal.value();
|
|
4345
|
-
}
|
|
4346
|
-
}
|
|
4347
|
-
|
|
4348
|
-
if (!lodash.isNil(valueForComparison)) {
|
|
4349
|
-
if (sortingOptions && sortingOptions.is_absolute && !isNaN(parseFloat(valueForComparison))) {
|
|
4350
|
-
valueForComparison = Math.abs(valueForComparison);
|
|
4351
|
-
}
|
|
4352
|
-
values_names_arr.push({name: secondArray.join(','), value: valueForComparison});
|
|
4353
|
-
}
|
|
4354
|
-
});
|
|
4355
|
-
|
|
4356
|
-
// ORDERING
|
|
4357
|
-
let sorting_vector = ['asc'];
|
|
4358
|
-
if (sortingOptions && sortingOptions.type == 'largestToSmallest') {
|
|
4359
|
-
sorting_vector = ['desc'];
|
|
4360
|
-
}
|
|
4361
|
-
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
|
4362
|
-
|
|
4363
|
-
// map only names
|
|
4364
|
-
return lodash.map(values_names_arr, 'name');
|
|
4365
|
-
};
|
|
4366
|
-
|
|
4367
|
-
highchartsRenderer.generateSortingFunctionByValues = function (sortByValueSettings, pivotData, opts, widget) {
|
|
4368
|
-
let old_sorters_function = opts.sorters;
|
|
4369
|
-
if (!old_sorters_function) {
|
|
4370
|
-
old_sorters_function = function () {
|
|
4371
|
-
};
|
|
4372
|
-
}
|
|
4373
|
-
return function (attr) {
|
|
4374
|
-
const sortingOptions = lodash.find(sortByValueSettings, fieldSorting => fieldSorting.name === attr);
|
|
4375
|
-
if (sortingOptions) {
|
|
4376
|
-
const axis = highchartsRenderer.getAxis(_.includes(pivotData.colAttrs, attr) ? 'col_total' : 'row_total', opts);
|
|
4377
|
-
const isColumnSort = axis === 'col_total';
|
|
4378
|
-
const fieldIndex = lodash.findIndex(isColumnSort ? pivotData.colAttrs : pivotData.rowAttrs, name => name === attr);
|
|
4379
|
-
const orderedNamesList = highchartsRenderer.getSortingByValueOrderList(
|
|
4380
|
-
pivotData,
|
|
4381
|
-
sortingOptions.sorting,
|
|
4382
|
-
pivotData[isColumnSort ? 'colKeys' : 'rowKeys'],
|
|
4383
|
-
pivotData[isColumnSort ? 'colAttrs' : 'rowAttrs'],
|
|
4384
|
-
fieldIndex,
|
|
4385
|
-
widget
|
|
4386
|
-
);
|
|
4387
|
-
return $.pivotUtilities.sortAs(orderedNamesList);
|
|
4388
|
-
} else {
|
|
4389
|
-
return old_sorters_function(attr);
|
|
4390
|
-
}
|
|
4391
|
-
}
|
|
4392
|
-
};
|
|
4393
|
-
|
|
4394
4312
|
highchartsRenderer.getFieldNameForTable = function (opt) {
|
|
4395
4313
|
if (lodash.hasIn(opt, "rendererOptions.chartOptions.table_options.remove_underscores") && opt.rendererOptions.chartOptions.table_options.remove_underscores == true) {
|
|
4396
4314
|
return function (value) {
|
|
@@ -4542,8 +4460,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4542
4460
|
},
|
|
4543
4461
|
aggregator: tmp.count()(),
|
|
4544
4462
|
aggregatorName: "Count",
|
|
4545
|
-
sorters: function () {
|
|
4546
|
-
},
|
|
4547
4463
|
derivedAttributes: {},
|
|
4548
4464
|
renderer: $.pivotUtilities.subtotal_renderers,
|
|
4549
4465
|
rendererOptions: null,
|
|
@@ -4560,7 +4476,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4560
4476
|
result = null;
|
|
4561
4477
|
try {
|
|
4562
4478
|
pivotData = $.pivotUtilities.getPivotDataModel(rowData, opts);
|
|
4563
|
-
pivotData.sortByValueAttrs = [];
|
|
4564
4479
|
try {
|
|
4565
4480
|
if (options && options.onlyOptions) {
|
|
4566
4481
|
if (!opts.rendererOptions) {
|
|
@@ -4569,33 +4484,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4569
4484
|
opts.rendererOptions.onlyOptions = true;
|
|
4570
4485
|
}
|
|
4571
4486
|
|
|
4572
|
-
if (!highchartsRenderer.sortHasBeenDoneOnBE(lodash.get(widget, 'pivot.keysObject'))) {
|
|
4573
|
-
const sortByValueSettings = lodash.filter(
|
|
4574
|
-
lodash.get(widget, 'options.sortingFields', []),
|
|
4575
|
-
sortingField => lodash.includes(['field_values', 'variance'], lodash.get(sortingField, 'sorting.sort_by'))
|
|
4576
|
-
);
|
|
4577
|
-
|
|
4578
|
-
if (sortByValueSettings.length) {
|
|
4579
|
-
pivotData.sortByValueAttrs = lodash.map(sortByValueSettings, fieldSorting => fieldSorting.name);
|
|
4580
|
-
let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(sortByValueSettings, pivotData, opts, widget);
|
|
4581
|
-
opts.sorters = new_sorting_function;
|
|
4582
|
-
optsFiltered.sorters = new_sorting_function;
|
|
4583
|
-
pivotData.sorters = new_sorting_function;
|
|
4584
|
-
|
|
4585
|
-
if (lodash.isObject(lodash.get(widget, 'pivot'))) {
|
|
4586
|
-
widget.pivot.sorters = new_sorting_function;
|
|
4587
|
-
}
|
|
4588
|
-
}
|
|
4589
|
-
}
|
|
4590
|
-
|
|
4591
4487
|
result = opts.renderer(pivotData, opts.rendererOptions);
|
|
4592
4488
|
} catch (_error) {
|
|
4593
4489
|
result = _handleRenderingError(_error, options.onlyOptions);
|
|
4594
4490
|
}
|
|
4595
|
-
|
|
4596
|
-
if (lodash.isObject(lodash.get(widget, 'pivot'))) {
|
|
4597
|
-
widget.pivot.sortByValueAttrs = pivotData.sortByValueAttrs;
|
|
4598
|
-
}
|
|
4599
4491
|
} catch (_error) {
|
|
4600
4492
|
result = _handleComputationalError(_error, options.onlyOptions);
|
|
4601
4493
|
}
|
|
@@ -4689,8 +4581,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4689
4581
|
},
|
|
4690
4582
|
aggregator: tmp.count()(),
|
|
4691
4583
|
aggregatorName: "Count",
|
|
4692
|
-
sorters: function () {
|
|
4693
|
-
},
|
|
4694
4584
|
derivedAttributes: {},
|
|
4695
4585
|
renderer: $.pivotUtilities.subtotal_renderers,
|
|
4696
4586
|
rendererOptions: null,
|
|
@@ -4706,7 +4596,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4706
4596
|
optsFiltered = $.extend(defaults, opts);
|
|
4707
4597
|
result = null;
|
|
4708
4598
|
try {
|
|
4709
|
-
pivotData.sortByValueAttrs = [];
|
|
4710
4599
|
try {
|
|
4711
4600
|
if (options && options.onlyOptions) {
|
|
4712
4601
|
if (!opts.rendererOptions) {
|
|
@@ -4715,33 +4604,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4715
4604
|
opts.rendererOptions.onlyOptions = true;
|
|
4716
4605
|
}
|
|
4717
4606
|
|
|
4718
|
-
if (!highchartsRenderer.sortHasBeenDoneOnBE(lodash.get(widget, 'pivot.keysObject'))) {
|
|
4719
|
-
const sortByValueSettings = lodash.filter(
|
|
4720
|
-
lodash.get(widget, 'options.sortingFields', []),
|
|
4721
|
-
sortingField => lodash.includes(['field_values', 'variance'], lodash.get(sortingField, 'sorting.sort_by'))
|
|
4722
|
-
);
|
|
4723
|
-
|
|
4724
|
-
if (sortByValueSettings.length) {
|
|
4725
|
-
pivotData.sortByValueAttrs = lodash.map(sortByValueSettings, fieldSorting => fieldSorting.name);
|
|
4726
|
-
let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(sortByValueSettings, pivotData, opts, widget);
|
|
4727
|
-
opts.sorters = new_sorting_function;
|
|
4728
|
-
optsFiltered.sorters = new_sorting_function;
|
|
4729
|
-
pivotData.sorters = new_sorting_function;
|
|
4730
|
-
|
|
4731
|
-
if (lodash.isObject(lodash.get(widget, 'pivot'))) {
|
|
4732
|
-
widget.pivot.sorters = new_sorting_function;
|
|
4733
|
-
}
|
|
4734
|
-
}
|
|
4735
|
-
}
|
|
4736
|
-
|
|
4737
4607
|
result = opts.renderer(pivotData, opts.rendererOptions);
|
|
4738
4608
|
} catch (_error) {
|
|
4739
4609
|
result = _handleRenderingError(_error, options.onlyOptions);
|
|
4740
4610
|
}
|
|
4741
|
-
|
|
4742
|
-
if (lodash.isObject(lodash.get(widget, 'pivot'))) {
|
|
4743
|
-
widget.pivot.sortByValueAttrs = pivotData.sortByValueAttrs;
|
|
4744
|
-
}
|
|
4745
4611
|
} catch (_error) {
|
|
4746
4612
|
result = _handleComputationalError(_error, options.onlyOptions);
|
|
4747
4613
|
}
|
|
@@ -4772,8 +4638,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4772
4638
|
}
|
|
4773
4639
|
|
|
4774
4640
|
var subopts = {
|
|
4775
|
-
sorters: pivotOptions ? pivotOptions.sorters : null,
|
|
4776
|
-
sortByValueAttrs: pivotOptions ? pivotOptions.sortByValueAttrs : null,
|
|
4777
4641
|
cols: lodash.map(pivotOptions.axisArray, 'name'),
|
|
4778
4642
|
rows: lodash.map(pivotOptions.legendArray, 'name'),
|
|
4779
4643
|
colFormats: highchartsRenderer.getTableFormatInfosForWidgetFields(widget, pivotOptions, widget.cols),
|
|
@@ -5323,40 +5187,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5323
5187
|
widgetOptions.pivot.chartType = widgetOptions.chart_type;
|
|
5324
5188
|
widgetOptions.pivot.chartOptions = widgetOptions.options;
|
|
5325
5189
|
widgetOptions.pivot.chartRender = highchartsRenderer.getChartRendererFunction(widgetOptions.pivot.chartType, drilldownFunc, drillDownListFunc);
|
|
5326
|
-
|
|
5327
|
-
if (highchartsRenderer.isSortingOnBackendEnabled) return;
|
|
5328
|
-
// TODO: remove this logic after BE sort is implemented
|
|
5329
|
-
// it is required to do sort by totals for comparative analysis - we need to change deltas if columns swaped vice versa
|
|
5330
|
-
const isTwoColumnComparisonWidget = widgetOptions.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN
|
|
5331
|
-
&& lodash.get(widgetOptions, 'options.breakdown_options.values.totals', []).length === 2;
|
|
5332
|
-
|
|
5333
|
-
if (isTwoColumnComparisonWidget) {
|
|
5334
|
-
const totalsField = xaxisFields[0];
|
|
5335
|
-
const isScenarioInTotals = /scenario/i.test(totalsField.name) || /scenario/i.test(totalsField.alias);
|
|
5336
|
-
|
|
5337
|
-
if (isScenarioInTotals) {
|
|
5338
|
-
const breakdownField = legendFields[0];
|
|
5339
|
-
const valuesField = valuesFields[0];
|
|
5340
|
-
|
|
5341
|
-
// getting first total value encounter from response rows - it's value to which delta is attached
|
|
5342
|
-
const firstTotalValueInResponse = lodash.get(widgetOptions, `pivot.rowData[0].${totalsField.name}`);
|
|
5343
|
-
|
|
5344
|
-
// getting first total value from breakdown options (after sort is done)
|
|
5345
|
-
const firstTotalValueAfterSort = lodash.get(widgetOptions, 'options.breakdown_options.values.totals[0].key');
|
|
5346
|
-
|
|
5347
|
-
// if two columns changed places (swaped)
|
|
5348
|
-
// then we need to replace keys in response rows and multiply delta to -1
|
|
5349
|
-
if (firstTotalValueInResponse && firstTotalValueAfterSort && firstTotalValueInResponse !== firstTotalValueAfterSort) {
|
|
5350
|
-
lodash.forEach(widgetOptions.pivot.rowData, row => {
|
|
5351
|
-
const isDeltaRow = row[totalsField.name] && row[breakdownField.name];
|
|
5352
|
-
if (isDeltaRow) {
|
|
5353
|
-
row[totalsField.name] = firstTotalValueAfterSort;
|
|
5354
|
-
row[valuesField.name] *= -1;
|
|
5355
|
-
}
|
|
5356
|
-
});
|
|
5357
|
-
}
|
|
5358
|
-
}
|
|
5359
|
-
}
|
|
5360
5190
|
};
|
|
5361
5191
|
|
|
5362
5192
|
highchartsRenderer.addTemplateDataToExTableOptions = function (selectedTemplate, exTableOptions) {
|
|
@@ -5688,8 +5518,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5688
5518
|
var otherFields = [];
|
|
5689
5519
|
var includes = {};
|
|
5690
5520
|
var date_aggregation_configs = lodash.get(options, "date_aggregation_configs");
|
|
5691
|
-
var sorters = function () {
|
|
5692
|
-
};
|
|
5693
5521
|
|
|
5694
5522
|
lodash.forEach(widgetOptions.filters, function (filterObj) {
|
|
5695
5523
|
fieldOb = lodash.find(fields, {id: filterObj.field});
|
|
@@ -5760,19 +5588,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5760
5588
|
});
|
|
5761
5589
|
|
|
5762
5590
|
var tmpRowData = null;
|
|
5763
|
-
var tmpSorters = null;
|
|
5764
5591
|
if (widgetOptions.hasOwnProperty('pivot')) {
|
|
5765
5592
|
tmpRowData = widgetOptions.pivot.rowData;
|
|
5766
|
-
tmpSorters = widgetOptions.pivot.sorters;
|
|
5767
5593
|
}
|
|
5768
5594
|
|
|
5769
5595
|
widgetOptions.pivot = {};
|
|
5770
5596
|
if (tmpRowData != null) {
|
|
5771
5597
|
widgetOptions.pivot.rowData = tmpRowData;
|
|
5772
|
-
widgetOptions.pivot.sorters = tmpSorters;
|
|
5773
5598
|
} else {
|
|
5774
5599
|
widgetOptions.pivot.rowData = selectedTemplate.widget_raw_data;
|
|
5775
|
-
widgetOptions.pivot.sorters = sorters;
|
|
5776
5600
|
}
|
|
5777
5601
|
|
|
5778
5602
|
widgetOptions.pivot.calculatedValues = objectCopyJsonMethod(widgetOptions.calculated_values || []);
|
|
@@ -9174,7 +8998,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9174
8998
|
|
|
9175
8999
|
highchartsRenderer.getWidgetDataSorters = function (res, widget, defaultDateFormat) {
|
|
9176
9000
|
const isFormattingDatesAsOtherAxisTypes = highchartsRenderer.isFormattingDatesAsOtherAxisTypes();
|
|
9177
|
-
let sorters;
|
|
9178
9001
|
|
|
9179
9002
|
if ($.pivotUtilities && !$.pivotUtilities.additionalFieldsList) {
|
|
9180
9003
|
$.pivotUtilities.additionalFieldsList = [
|
|
@@ -9237,7 +9060,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9237
9060
|
}
|
|
9238
9061
|
}
|
|
9239
9062
|
}
|
|
9240
|
-
if (
|
|
9063
|
+
if (!isFormattingDatesAsOtherAxisTypes) {
|
|
9241
9064
|
const keysObject = lodash.get(widget, 'pivot.keysObject');
|
|
9242
9065
|
|
|
9243
9066
|
lodash.forEach(['col_keys', 'row_keys', 'row_keys_by_cols'], (keysListName) => {
|
|
@@ -9248,168 +9071,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9248
9071
|
}
|
|
9249
9072
|
});
|
|
9250
9073
|
}
|
|
9251
|
-
|
|
9252
|
-
if (!highchartsRenderer.sortHasBeenDoneOnBE(lodash.get(widget, 'pivot.keysObject'))) {
|
|
9253
|
-
|
|
9254
|
-
lodash.forEach(datesFields, function (row) {
|
|
9255
|
-
row.values = lodash.uniq(row.values);
|
|
9256
|
-
|
|
9257
|
-
const isTimestampDateField = row.type === 'Date' && lodash.some(row.values, value => typeof value ==='number');
|
|
9258
|
-
if (isTimestampDateField) {
|
|
9259
|
-
const nullValueIndex = row.values.indexOf(NULL_VALUE);
|
|
9260
|
-
if (~nullValueIndex) {
|
|
9261
|
-
row.values.splice(nullValueIndex, 1);
|
|
9262
|
-
}
|
|
9263
|
-
row.values = row.values.sort((a, b) => a - b);
|
|
9264
|
-
if (~nullValueIndex) {
|
|
9265
|
-
row.values.push(NULL_VALUE);
|
|
9266
|
-
}
|
|
9267
|
-
} else {
|
|
9268
|
-
row.values = row.values.sort();
|
|
9269
|
-
}
|
|
9270
|
-
|
|
9271
|
-
if (row.sorting && row.sorting.type == "largestToSmallest") {
|
|
9272
|
-
row.values = lodash.reverse(row.values);
|
|
9273
|
-
}
|
|
9274
|
-
delete row.sorting;
|
|
9275
|
-
|
|
9276
|
-
if (!isFormattingDatesAsOtherAxisTypes) {
|
|
9277
|
-
row.values = lodash.map(row.values, function (val) {
|
|
9278
|
-
return highchartsRenderer.returnRawDataValue(row.type, val, row.format, row.name, row.val_not_convert) + "";
|
|
9279
|
-
});
|
|
9280
|
-
}
|
|
9281
|
-
});
|
|
9282
|
-
|
|
9283
|
-
/* date string */
|
|
9284
|
-
var rowsAndCols = [];
|
|
9285
|
-
rowsAndCols = lodash.cloneDeep(widget.rows.concat(widget.cols));
|
|
9286
|
-
|
|
9287
|
-
if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN && !highchartsRenderer.sortHasBeenDoneOnBE(lodash.get(widget, 'pivot.keysObject'))) {
|
|
9288
|
-
|
|
9289
|
-
// if it is breakdown widget - redefine sorting according to breakdown_options
|
|
9290
|
-
// TODO: remove this when BE sort will be implemented (FE subtickets for story DR-18469)
|
|
9291
|
-
const isTwoColumnComparisonWidget = lodash.get(widget, 'options.breakdown_options.values.totals', []).length === 2;
|
|
9292
|
-
lodash.forEach(rowsAndCols, function (field) {
|
|
9293
|
-
const waterfallFieldType = field.id === widget.cols[0].id ? 'totals' : 'breakdown';
|
|
9294
|
-
|
|
9295
|
-
if (field.type === 'Date') {
|
|
9296
|
-
|
|
9297
|
-
// set ascending date orders - due to issue with setting breakdown options order in webclient
|
|
9298
|
-
// this is for fixing already saved widgets with incorret order in breakdown options
|
|
9299
|
-
field.sorting = {
|
|
9300
|
-
is_absolute: false,
|
|
9301
|
-
sort_by: "field_items",
|
|
9302
|
-
type: "",
|
|
9303
|
-
};
|
|
9304
|
-
} else if (waterfallFieldType !== 'totals' || isTwoColumnComparisonWidget) {
|
|
9305
|
-
field.sorting = {
|
|
9306
|
-
type: 'CustomOrder',
|
|
9307
|
-
values: lodash.map(
|
|
9308
|
-
widget.options.breakdown_options.values[waterfallFieldType],
|
|
9309
|
-
value => value.key
|
|
9310
|
-
),
|
|
9311
|
-
};
|
|
9312
|
-
} else {
|
|
9313
|
-
field.sorting = null;
|
|
9314
|
-
}
|
|
9315
|
-
});
|
|
9316
|
-
} else if (isCustomSorting) {
|
|
9317
|
-
lodash.forEach(rowsAndCols, function (field) {
|
|
9318
|
-
const fieldToSort = lodash.find(
|
|
9319
|
-
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
|
9320
|
-
);
|
|
9321
|
-
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
|
9322
|
-
});
|
|
9323
|
-
}
|
|
9324
|
-
|
|
9325
|
-
lodash.forEach(rowsAndCols, function (field) {
|
|
9326
|
-
if (field.sorting && (field.sorting.type == "DateString" || field.sorting.type == "largestToSmallest")) {
|
|
9327
|
-
var find_field = lodash.find(datesFields, {name: field.name});
|
|
9328
|
-
if (find_field) {
|
|
9329
|
-
if (find_field.type != 'Date')
|
|
9330
|
-
find_field.sorting = field.sorting;
|
|
9331
|
-
} else {
|
|
9332
|
-
datesFields.push({
|
|
9333
|
-
"format": field.format,
|
|
9334
|
-
"name": field.name,
|
|
9335
|
-
"type": field.type,
|
|
9336
|
-
"values": [],
|
|
9337
|
-
"sorting": field.sorting,
|
|
9338
|
-
});
|
|
9339
|
-
}
|
|
9340
|
-
} else if (field.sorting && field.sorting.type == "CustomOrder" && field.sorting.values) {
|
|
9341
|
-
if (field.type === 'Date' && field.sorting.values.length && widget.pivot.invertedDateStringMap) {
|
|
9342
|
-
const fieldInList = lodash.find(datesFields, { name: field.name });
|
|
9343
|
-
fieldInList.values = lodash.map(field.sorting.values, value => widget.pivot.invertedDateStringMap[value] || value);
|
|
9344
|
-
} else {
|
|
9345
|
-
datesFields.push({
|
|
9346
|
-
"format": field.format,
|
|
9347
|
-
"name": field.name,
|
|
9348
|
-
"type": field.type,
|
|
9349
|
-
"values": field.sorting.values
|
|
9350
|
-
});
|
|
9351
|
-
}
|
|
9352
|
-
}
|
|
9353
|
-
});
|
|
9354
|
-
|
|
9355
|
-
if (widget.vals && widget.vals.length > 1) {
|
|
9356
|
-
datesFields.push({name: "DR_Values", values: lodash.map(widget.vals, 'name')});
|
|
9357
|
-
}
|
|
9358
|
-
|
|
9359
|
-
/****** END *******/
|
|
9360
|
-
|
|
9361
|
-
// TODO: Remove. sortingValues looks like lagacy which is not in use neither in webclient nor in renderer
|
|
9362
|
-
if (widget.options && widget.options.sortingValues) {
|
|
9363
|
-
var field = lodash.find(datesFields, {name: widget.options.sortingValues.field});
|
|
9364
|
-
if (field) {
|
|
9365
|
-
field.values = widget.options.sortingValues.values;
|
|
9366
|
-
field.sorting = null;
|
|
9367
|
-
} else {
|
|
9368
|
-
datesFields.push({
|
|
9369
|
-
name: widget.options.sortingValues.field,
|
|
9370
|
-
values: widget.options.sortingValues.values
|
|
9371
|
-
});
|
|
9372
|
-
}
|
|
9373
|
-
}
|
|
9374
|
-
sorters = function (attr) {
|
|
9375
|
-
var field = lodash.find(datesFields, {name: attr});
|
|
9376
|
-
if (field)
|
|
9377
|
-
if (field.sorting && field.sorting.type == "DateString") {
|
|
9378
|
-
return $.pivotUtilities.sortDateStrings(field.sorting.month_order);
|
|
9379
|
-
} else if (field.sorting && field.sorting.type == "largestToSmallest") {
|
|
9380
|
-
if (field.sorting.is_absolute)
|
|
9381
|
-
return $.pivotUtilities.largeToSmallSortByAbsolute;
|
|
9382
|
-
return $.pivotUtilities.largeToSmallSort;
|
|
9383
|
-
} else {
|
|
9384
|
-
return $.pivotUtilities.sortAs(field.values);
|
|
9385
|
-
}
|
|
9386
|
-
};
|
|
9387
|
-
}
|
|
9388
|
-
|
|
9389
|
-
return sorters;
|
|
9390
|
-
};
|
|
9391
|
-
|
|
9392
|
-
highchartsRenderer.getSorters = function (field, values) {
|
|
9393
|
-
if (field.sorting && field.sorting.type === 'DateString') {
|
|
9394
|
-
return $.pivotUtilities.sortDateStrings(field.sorting.month_order);
|
|
9395
|
-
} else if (field.sorting && field.sorting.type === 'largestToSmallest') {
|
|
9396
|
-
if (field.sorting.is_absolute)
|
|
9397
|
-
return $.pivotUtilities.largeToSmallSortByAbsolute;
|
|
9398
|
-
|
|
9399
|
-
return $.pivotUtilities.largeToSmallSort;
|
|
9400
|
-
} else {
|
|
9401
|
-
return $.pivotUtilities.sortAs(values);
|
|
9402
|
-
}
|
|
9403
9074
|
};
|
|
9404
9075
|
|
|
9405
9076
|
//highchartsRenderer.getGraphOptions(scope.data, override_values, res, scope.dataModel.templatesWithOutData, scope.openDrillDownList, drillDownFunction)
|
|
9406
9077
|
highchartsRenderer.getGraphOptions = function (widget_obj, override_values, row_data, templates, openDrillDownListFunction, drillDownFunction) {
|
|
9407
9078
|
|
|
9408
|
-
let keysObject;
|
|
9409
|
-
if (highchartsRenderer.isSortingOnBackendEnabled) {
|
|
9410
|
-
keysObject = highchartsRenderer.getAggregatedSortingObjects(row_data);
|
|
9411
|
-
}
|
|
9412
|
-
|
|
9079
|
+
let keysObject = highchartsRenderer.getAggregatedSortingObjects(row_data);
|
|
9413
9080
|
let res = highchartsRenderer.updateSelectedOverrideValues(widget_obj, override_values, row_data);
|
|
9414
9081
|
res = highchartsRenderer.convertUniqueDateValues(widget_obj, templates, res);
|
|
9415
9082
|
|
|
@@ -9419,13 +9086,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9419
9086
|
|
|
9420
9087
|
res = highchartsRenderer.fixIncompatibleCalculatedValuesTotals(widget_obj, res);
|
|
9421
9088
|
|
|
9422
|
-
let pivot = {}
|
|
9423
|
-
|
|
9424
|
-
if (highchartsRenderer.sortHasBeenDoneOnBE(keysObject)) {
|
|
9425
|
-
pivot.keysObject = keysObject;
|
|
9426
|
-
}
|
|
9089
|
+
let pivot = { keysObject }
|
|
9427
9090
|
|
|
9428
9091
|
let templateNoData = lodash.find(templates, {id: widget_obj.template_id});
|
|
9092
|
+
|
|
9429
9093
|
if (templateNoData) {
|
|
9430
9094
|
|
|
9431
9095
|
// we need to assign this before calling getWidgetDataSorters method
|
|
@@ -9434,7 +9098,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9434
9098
|
widget_obj.pivot = pivot;
|
|
9435
9099
|
}
|
|
9436
9100
|
|
|
9437
|
-
|
|
9101
|
+
highchartsRenderer.getWidgetDataSorters(res, widget_obj);
|
|
9102
|
+
|
|
9438
9103
|
pivot.rowData = res;
|
|
9439
9104
|
widget_obj.options = highchartsRenderer.parseOptionsToObject(widget_obj.options);
|
|
9440
9105
|
|
|
@@ -9494,12 +9159,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9494
9159
|
subopts.cols = subopts.rows;
|
|
9495
9160
|
subopts.rows = tempCols;
|
|
9496
9161
|
|
|
9497
|
-
|
|
9498
|
-
|
|
9499
|
-
|
|
9500
|
-
|
|
9501
|
-
subopts.keysObject.row_keys = tempColKeys;
|
|
9502
|
-
}
|
|
9162
|
+
subopts.keysObject = lodash.cloneDeep(pivot.keysObject);
|
|
9163
|
+
const tempColKeys = subopts.keysObject.col_keys;
|
|
9164
|
+
subopts.keysObject.col_keys = subopts.keysObject.row_keys;
|
|
9165
|
+
subopts.keysObject.row_keys = tempColKeys;
|
|
9503
9166
|
}
|
|
9504
9167
|
|
|
9505
9168
|
if (isEditor == true) {
|
|
@@ -9864,10 +9527,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9864
9527
|
return highchartsRenderer.hasFeature(FEATURES.FORMAT_DATES_AS_OTHER_AXIS_TYPES);
|
|
9865
9528
|
}
|
|
9866
9529
|
|
|
9867
|
-
highchartsRenderer.sortHasBeenDoneOnBE = function (keysObject) {
|
|
9868
|
-
return highchartsRenderer.isSortingOnBackendEnabled && helpers.backendSortingKeysAreNotEmpty(keysObject);
|
|
9869
|
-
}
|
|
9870
|
-
|
|
9871
9530
|
// Method for getting formatted kyes for Axis (cols, rows)
|
|
9872
9531
|
highchartsRenderer.getFormattedKey = function (initialKey, pivotData, type) {
|
|
9873
9532
|
const isFlatKey = lodash.isString(initialKey) || lodash.isNumber(initialKey);
|
|
@@ -10020,7 +9679,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
10020
9679
|
}
|
|
10021
9680
|
|
|
10022
9681
|
const isColsTotal = typeof record['DR_Values'] === 'undefined';
|
|
10023
|
-
|
|
9682
|
+
|
|
10024
9683
|
if (!isColsTotal) {
|
|
10025
9684
|
return true;
|
|
10026
9685
|
}
|