@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/dr_renderer",
3
- "version": "1.2.249",
3
+ "version": "1.2.251",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -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.colors.increase,
1433
- color: waterfallOptions.colors.decrease,
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
- if (value.trend === 'total') color = waterfallOptions.colors.total;
1470
- if (value.trend === 'decrease') color = waterfallOptions.colors.decrease;
1471
- if (value.trend === 'increase') color = waterfallOptions.colors.increase;
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.colors.increase
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.colors.decrease
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
- const reportingMonthRegex = /reporting[_\s]month/i;
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 filters = lodash.get(calcModelOptions, 'config.filters', predefinedField.filters.fields);
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 storedGroupByFields = lodash.get(calcModelOptions, 'config.group_by', predefinedField.dataSeries.fields);
5480
- const storedDateFields = [lodash.get(calcModelOptions, 'config.date_field', predefinedField.date.fields[0])].filter(f => !!f);
5481
- const storedAggFields = [lodash.get(calcModelOptions, 'config.agg_field', predefinedField.value.fields[0])].filter(f => !!f);
5482
- const storedDataTypeFields = [lodash.get(calcModelOptions, 'config.data_type_field', predefinedField.dataType.fields[0])].filter(f => !!f);
5483
- const scenarioField = lodash.get(calcModelOptions, 'config.scenario', lodash.find(predefinedField.filters.fields, filter => [filter.name, filter.alias].includes('scenario')));
5484
- const reportingMonthFieldWithAlias = lodash.find(fields, _field => reportingMonthRegex.test(_field.alias));
5485
- const reportingMonthFieldWithName = lodash.find(fields, _field => reportingMonthRegex.test(_field.name));
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: reportingMonthFieldWithAlias || reportingMonthFieldWithName,
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