@datarailsshared/dr_renderer 1.2.249 → 1.2.251
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/highcharts_renderer.js +92 -50
package/package.json
CHANGED
|
@@ -1429,8 +1429,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1429
1429
|
formatter: highchartsRenderer.defaultDataLabelFormatter(pivotData, {'chartOptions': additionOptions, total_value_options: opts.total_value_options}),
|
|
1430
1430
|
style: highchartsRenderer.getDataLabelsStyle(additionOptions),
|
|
1431
1431
|
},
|
|
1432
|
-
upColor: waterfallOptions
|
|
1433
|
-
color: waterfallOptions
|
|
1432
|
+
upColor: lodash.get(waterfallOptions, 'colors.increase'),
|
|
1433
|
+
color: lodash.get(waterfallOptions, 'colors.decrease'),
|
|
1434
1434
|
className: SERIES_CLASSNAMES.WATERFALL_WALKTHROUGH
|
|
1435
1435
|
};
|
|
1436
1436
|
resultObject = highchartsRenderer.getDataLabelsOptions(additionOptions, resultObject);
|
|
@@ -1457,23 +1457,30 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1457
1457
|
val = 0;
|
|
1458
1458
|
}
|
|
1459
1459
|
|
|
1460
|
-
if (value.trend === 'decrease') {
|
|
1460
|
+
if (val > 0 && value.trend === 'decrease' || val < 0 && value.trend === 'increase' ) {
|
|
1461
1461
|
val = val * -1;
|
|
1462
1462
|
}
|
|
1463
1463
|
|
|
1464
|
+
const baseColor = {
|
|
1465
|
+
total: '',
|
|
1466
|
+
decrease: '#BF1D30',
|
|
1467
|
+
increase: '#20A452',
|
|
1468
|
+
};
|
|
1469
|
+
|
|
1464
1470
|
const name = value.trend === 'total' ? value.formattedKey || value.key[0] : keys.join(highchartsRenderer.delimer);
|
|
1465
1471
|
let color = '';
|
|
1466
1472
|
if (value.color) {
|
|
1467
1473
|
color = value.color;
|
|
1468
1474
|
} else {
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1475
|
+
color = lodash.get(waterfallOptions, 'colors', {})
|
|
1476
|
+
? lodash.get(waterfallOptions, 'colors', {})[value.trend]
|
|
1477
|
+
: baseColor[value.trend];
|
|
1472
1478
|
}
|
|
1473
1479
|
|
|
1474
1480
|
resultObject.data.push({
|
|
1475
1481
|
y: val,
|
|
1476
1482
|
name: lodash.unescape(name).replace('DR_Others', highchartsRenderer.getOthersName(opts)),
|
|
1483
|
+
totalIndex: value.trend === 'total' ? index : undefined,
|
|
1477
1484
|
isSum: value.trend === 'total',
|
|
1478
1485
|
isTotal: value.trend === 'total',
|
|
1479
1486
|
color,
|
|
@@ -1485,14 +1492,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1485
1492
|
{
|
|
1486
1493
|
name: 'Positive',
|
|
1487
1494
|
visible: false,
|
|
1488
|
-
color: waterfallOptions
|
|
1495
|
+
color: lodash.get(waterfallOptions, 'colors.increase')
|
|
1489
1496
|
});
|
|
1490
1497
|
|
|
1491
1498
|
chart_series.push(
|
|
1492
1499
|
{
|
|
1493
1500
|
name: 'Negative',
|
|
1494
1501
|
visible: false,
|
|
1495
|
-
color: waterfallOptions
|
|
1502
|
+
color: lodash.get(waterfallOptions, 'colors.decrease'),
|
|
1496
1503
|
});
|
|
1497
1504
|
|
|
1498
1505
|
return chart_series;
|
|
@@ -5219,7 +5226,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5219
5226
|
|
|
5220
5227
|
// TODO: remove this logic after BE sort is implemented
|
|
5221
5228
|
// it is required to do sort by totals for comparative analysis - we need to change deltas if columns swaped vice versa
|
|
5222
|
-
const isTwoColumnComparisonWidget = widgetOptions.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN
|
|
5229
|
+
const isTwoColumnComparisonWidget = widgetOptions.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN
|
|
5223
5230
|
&& lodash.get(widgetOptions, 'options.breakdown_options.values.totals', []).length === 2;
|
|
5224
5231
|
|
|
5225
5232
|
if (isTwoColumnComparisonWidget) {
|
|
@@ -5359,13 +5366,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5359
5366
|
dynamicRangeOptions.pivot.calculatedValues = highchartsRenderer.objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
|
|
5360
5367
|
}
|
|
5361
5368
|
|
|
5362
|
-
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions) {
|
|
5369
|
+
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions, calcModelPredefinedField) {
|
|
5363
5370
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5364
5371
|
const fields = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.fields);
|
|
5372
|
+
const predefinedField = lodash.cloneDeep(calcModelPredefinedField);
|
|
5365
5373
|
|
|
5366
5374
|
const fillData = (fieldsArr, ignoreFieldsIdToRemove = []) => {
|
|
5367
5375
|
const destinationArr = [];
|
|
5368
5376
|
lodash.forEach(fieldsArr, function (valObj) {
|
|
5377
|
+
if (!valObj) return;
|
|
5378
|
+
|
|
5369
5379
|
const fieldOb = lodash.find(fields, { id: valObj.id });
|
|
5370
5380
|
if (fieldOb) {
|
|
5371
5381
|
destinationArr.push(fieldOb);
|
|
@@ -5401,37 +5411,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5401
5411
|
}
|
|
5402
5412
|
})();
|
|
5403
5413
|
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
const predefinedField = {
|
|
5407
|
-
value: {
|
|
5408
|
-
regex: /posting[_\s]amount/i,
|
|
5409
|
-
allowedFieldTypes: ['Float', 'Integer'],
|
|
5410
|
-
fields: [],
|
|
5411
|
-
},
|
|
5412
|
-
dataType: {
|
|
5413
|
-
regex: /^(data[_\s]type[_\s]by|data[_\s]type)$/i,
|
|
5414
|
-
allowedFieldTypes: ['Text'],
|
|
5415
|
-
fields: [],
|
|
5416
|
-
},
|
|
5417
|
-
date: {
|
|
5418
|
-
regex: reportingMonthRegex,
|
|
5419
|
-
allowedFieldTypes: ['Date'],
|
|
5420
|
-
fields: [],
|
|
5421
|
-
},
|
|
5422
|
-
filters: {
|
|
5423
|
-
isMultipleFields: true,
|
|
5424
|
-
regex: /^(scenario|DR_ACC_L0)$/i,
|
|
5425
|
-
fields: [],
|
|
5426
|
-
},
|
|
5427
|
-
dataSeries: {
|
|
5428
|
-
isMultipleFields: true,
|
|
5429
|
-
regex: /^(scenario|account[_\s]full|entity|intercompany|posting[_\s]currency|reporting[_\s]currency|report[_\s]field|USER_TO_DR_ACC_KEY|USER_TO_DR_KPI_KEY)$/i,
|
|
5430
|
-
fields: [],
|
|
5431
|
-
},
|
|
5432
|
-
};
|
|
5433
|
-
|
|
5434
|
-
if (!lodash.get(calcModelOptions, 'config', false)) {
|
|
5414
|
+
if (!lodash.get(calcModelOptions, 'config', false) && predefinedField) {
|
|
5435
5415
|
/**
|
|
5436
5416
|
* alias stronger than name (order in array is important)
|
|
5437
5417
|
* Firstly we try to get predefined field by aliases and then fill in by names
|
|
@@ -5449,13 +5429,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5449
5429
|
: [lodash.find(fields, field => canAssignPredefinedField(predefinedField[key], key, field, value, opposite, ignoredFields))].filter(f => !!f);
|
|
5450
5430
|
|
|
5451
5431
|
if (result && result.length) {
|
|
5432
|
+
if (!predefinedField[key].fields) {
|
|
5433
|
+
predefinedField[key].fields = [];
|
|
5434
|
+
}
|
|
5435
|
+
|
|
5452
5436
|
predefinedField[key].fields.push(...result);
|
|
5453
5437
|
}
|
|
5454
5438
|
});
|
|
5455
5439
|
}
|
|
5456
5440
|
}
|
|
5457
5441
|
|
|
5458
|
-
const
|
|
5442
|
+
const defaultFilters = lodash.get(predefinedField, 'filters.fields', []);
|
|
5443
|
+
const filters = lodash.get(calcModelOptions, 'config.filters', defaultFilters);
|
|
5459
5444
|
|
|
5460
5445
|
lodash.forEach(filters, function (filterObj) {
|
|
5461
5446
|
const fieldOb = lodash.find(fields, { id: filterObj.id });
|
|
@@ -5476,13 +5461,23 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5476
5461
|
}
|
|
5477
5462
|
});
|
|
5478
5463
|
|
|
5479
|
-
const
|
|
5480
|
-
const
|
|
5481
|
-
|
|
5482
|
-
const
|
|
5483
|
-
const
|
|
5484
|
-
|
|
5485
|
-
const
|
|
5464
|
+
const defaultGroupByValues = lodash.get(predefinedField, 'dataSeries.fields', []);
|
|
5465
|
+
const storedGroupByFields = lodash.get(calcModelOptions, 'config.group_by', defaultGroupByValues);
|
|
5466
|
+
|
|
5467
|
+
const defaultDateValue = lodash.get(predefinedField, 'date.fields[0]', undefined);
|
|
5468
|
+
const storedDateFields = [lodash.get(calcModelOptions, 'config.date_field', defaultDateValue)].filter(f => !!f);
|
|
5469
|
+
|
|
5470
|
+
const defaultAggValue = lodash.get(predefinedField, 'value.fields[0]', undefined);
|
|
5471
|
+
const storedAggFields = [lodash.get(calcModelOptions, 'config.agg_field', defaultAggValue)].filter(f => !!f);
|
|
5472
|
+
|
|
5473
|
+
const defaultDataTypeValue = lodash.get(predefinedField, 'dataType.fields[0]', undefined);
|
|
5474
|
+
const storedDataTypeFields = [lodash.get(calcModelOptions, 'config.data_type_field', defaultDataTypeValue)].filter(f => !!f);
|
|
5475
|
+
|
|
5476
|
+
const reportingMonthRegex = /reporting[_\s]month/i;
|
|
5477
|
+
const scenarioRegex = /scenario/i;
|
|
5478
|
+
|
|
5479
|
+
const scenarioField = lodash.find(fields, _field => scenarioRegex.test(_field.alias)) || lodash.find(fields, _field => scenarioRegex.test(_field.name));
|
|
5480
|
+
const reportingMonthField = lodash.find(fields, _field => reportingMonthRegex.test(_field.alias)) || lodash.find(fields, _field => reportingMonthRegex.test(_field.name));
|
|
5486
5481
|
|
|
5487
5482
|
/**
|
|
5488
5483
|
* We can have several common fields, so we should ignore deleting during fillData
|
|
@@ -5501,7 +5496,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5501
5496
|
selectedFieldsArray: dataSeriesFields,
|
|
5502
5497
|
filtersArray: filterFields,
|
|
5503
5498
|
scenarioField,
|
|
5504
|
-
reportingMonthField
|
|
5499
|
+
reportingMonthField,
|
|
5505
5500
|
dateFields,
|
|
5506
5501
|
dataTypeFields,
|
|
5507
5502
|
valueFields
|
|
@@ -8398,6 +8393,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8398
8393
|
});
|
|
8399
8394
|
colFilter.value_to_show = labels.join(', ');
|
|
8400
8395
|
filters.push(colFilter);
|
|
8396
|
+
} else if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH) {
|
|
8397
|
+
lodash.forEach(col_key, function (colKeyElement, index) {
|
|
8398
|
+
const field = lodash.get(widget, `cols[${ index }]`);
|
|
8399
|
+
if (field) {
|
|
8400
|
+
let filter = highchartsRenderer.createFilterObject(field);
|
|
8401
|
+
highchartsRenderer.buildFilterValuesFromWalkthroughColKey(widget, field, filter, colKeyElement);
|
|
8402
|
+
filters.push(filter);
|
|
8403
|
+
}
|
|
8404
|
+
});
|
|
8401
8405
|
} else {
|
|
8402
8406
|
lodash.forEach(col_key, function (col_value, index) {
|
|
8403
8407
|
if (widget && widget.cols[index]) {
|
|
@@ -8525,6 +8529,21 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8525
8529
|
: colKey[i]
|
|
8526
8530
|
);
|
|
8527
8531
|
}
|
|
8532
|
+
} else if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH) {
|
|
8533
|
+
lodash.forEach(colKey, function (colKeyElement, index) {
|
|
8534
|
+
const field = lodash.get(widget, `cols[${ index }]`);
|
|
8535
|
+
if (field) {
|
|
8536
|
+
let filter = lodash.find(filters, {name: field.name});
|
|
8537
|
+
if (filter) {
|
|
8538
|
+
filter.is_excluded = false;
|
|
8539
|
+
} else {
|
|
8540
|
+
filter = highchartsRenderer.createDrillDownFilterObject(widget, field, colKeyElement);
|
|
8541
|
+
filters.push(filter);
|
|
8542
|
+
}
|
|
8543
|
+
filter.values = [];
|
|
8544
|
+
highchartsRenderer.buildFilterValuesFromWalkthroughColKey(widget, field, filter, colKeyElement);
|
|
8545
|
+
}
|
|
8546
|
+
});
|
|
8528
8547
|
} else {
|
|
8529
8548
|
for (let i = 0; i < colKey.length; i++) {
|
|
8530
8549
|
let filter = lodash.find(filters, {name: widget.cols[i].name});
|
|
@@ -9182,6 +9201,29 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
9182
9201
|
return lodash.concat(modifiedRowData, rowData);
|
|
9183
9202
|
}
|
|
9184
9203
|
|
|
9204
|
+
highchartsRenderer.buildFilterValuesFromWalkthroughColKey = function(widget, field, filter, colKey) {
|
|
9205
|
+
const isTotal = lodash.isArray(colKey);
|
|
9206
|
+
colKey = isTotal ? colKey : [colKey];
|
|
9207
|
+
|
|
9208
|
+
lodash.forEach(colKey, function (colValue) {
|
|
9209
|
+
let value = colValue;
|
|
9210
|
+
if (field.type === 'Date' && !isTotal) {
|
|
9211
|
+
value = highchartsRenderer.createDateFromString(
|
|
9212
|
+
value,
|
|
9213
|
+
highchartsRenderer.getDateFieldFormat(widget, field)
|
|
9214
|
+
);
|
|
9215
|
+
}
|
|
9216
|
+
if (!filter.values) {
|
|
9217
|
+
filter.values = [];
|
|
9218
|
+
}
|
|
9219
|
+
filter.values.push(value);
|
|
9220
|
+
|
|
9221
|
+
if (!isTotal) {
|
|
9222
|
+
filter.value_to_show = colKey[0];
|
|
9223
|
+
}
|
|
9224
|
+
});
|
|
9225
|
+
}
|
|
9226
|
+
|
|
9185
9227
|
return highchartsRenderer;
|
|
9186
9228
|
};
|
|
9187
9229
|
|