@datarailsshared/dr_renderer 1.2.200 → 1.2.202-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.200",
3
+ "version": "1.2.202-dragons",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -87,6 +87,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
87
87
  EXCEL_VIEWER: 'excel_viewer',
88
88
  };
89
89
 
90
+ highchartsRenderer.VIRTUAL_FIELDS = {
91
+ WATERFALL_VARIANCE: 'DR_WATERFALL_VARIANCE',
92
+ };
93
+
90
94
  highchartsRenderer.highcharts_theme = {
91
95
  "colors": highchartsRenderer.defaults_colors,
92
96
  "chart": {
@@ -1339,15 +1343,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1339
1343
  return chart_series;
1340
1344
  }
1341
1345
 
1342
- highchartsRenderer.ptCreateWaterfallBreakdownSeries = function (pivotData, onlyNumbers, additionOptions, opts) {
1346
+ highchartsRenderer.ptCreateWaterfallBreakdownSeries = function (pivotData, additionOptions, opts) {
1343
1347
  const colorOptions = opts.breakdown_options.colors;
1344
- var chart_series = [],
1345
- row_n_keys = pivotData.getRowKeys(),
1346
- col_n_keys = pivotData.getColKeys();
1347
-
1348
- if (row_n_keys.length === 0) {
1349
- row_n_keys.push([]);
1350
- }
1348
+ const chart_series = [];
1349
+ const row_n_keys = pivotData.getRowKeys();
1350
+ const col_n_keys = pivotData.getColKeys();
1351
+ const hasBreakdownValues = lodash.get(opts, 'breakdown_options.values.breakdown.length');
1351
1352
 
1352
1353
  let resultObject = {
1353
1354
  data: [],
@@ -1363,56 +1364,46 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1363
1364
  };
1364
1365
  resultObject = highchartsRenderer.getDataLabelsOptions(additionOptions, resultObject);
1365
1366
 
1366
- const breakdownValues = [];
1367
1367
  lodash.forEach(col_n_keys, function(col_n_value, col_index) {
1368
- breakdownValues.push([]);
1369
- lodash.forEach(row_n_keys, function (row_n_value, row_index) {
1370
- var agg = pivotData.getAggregator(row_n_value, col_n_value);
1371
- var val = agg.value();
1372
-
1373
- if (val != null && $.isNumeric(val)) {
1374
- val = parseFloat(val);
1375
- } else if (onlyNumbers) {
1376
- val = NaN;
1377
- } else {
1378
- val = 0;
1379
- }
1380
1368
 
1381
- breakdownValues[col_index][row_index] = val;
1382
-
1383
- if (col_index) {
1384
- const value = val - breakdownValues[col_index - 1][row_index];
1369
+ const totalColumnValue = pivotData.colTotals[col_n_value].sum;
1370
+ const nextTotalColumnKey = col_n_keys[col_index + 1];
1371
+ const nextTotalColumnValue = nextTotalColumnKey ? pivotData.colTotals[nextTotalColumnKey].sum : null;
1372
+ resultObject.data.push({
1373
+ y: totalColumnValue,
1374
+ name: lodash.unescape(col_n_value).replace('DR_Others', highchartsRenderer.getOthersName(opts)),
1375
+ isSum: !!col_index,
1376
+ isTotal: true,
1377
+ color: colorOptions.total,
1378
+ });
1385
1379
 
1386
- if (value) {
1387
- var tmoobj = {};
1388
- var key = row_n_value;
1389
- if (lodash.isArray(row_n_value)) {
1390
- key = row_n_value[0];
1391
- }
1380
+ if (col_index !== col_n_keys.length - 1) {
1381
+ lodash.forEach(row_n_keys, function (row_n_value) {
1382
+ const agg = pivotData.getAggregator(row_n_value, col_n_value);
1383
+ let val = hasBreakdownValues
1384
+ ? agg.value()
1385
+ : nextTotalColumnValue - totalColumnValue;
1386
+
1387
+ val = $.isNumeric(val) ? parseFloat(val) : 0;
1388
+ if (val) {
1389
+ const tmoobj = {};
1390
+ const key = lodash.isArray(row_n_value) ? row_n_value[0] : row_n_value;
1392
1391
  tmoobj.name = lodash.unescape(key);
1393
-
1392
+
1394
1393
  if (tmoobj.name) {
1395
1394
  tmoobj.name = tmoobj.name.replace('DR_Others', highchartsRenderer.getOthersName(opts));
1396
1395
  }
1397
-
1398
1396
  if (lodash.isEmpty(String(tmoobj.name))) {
1399
1397
  tmoobj.name = lodash.unescape(col_n_value);
1400
1398
  tmoobj.visible = false;
1401
1399
  }
1402
- tmoobj.y = value;
1400
+
1401
+ tmoobj.y = val;
1403
1402
  tmoobj.colKeys = [lodash.unescape(col_n_keys[col_index - 1]), lodash.unescape(col_n_value)];
1404
1403
  resultObject.data.push(tmoobj);
1405
1404
  }
1406
- }
1407
- });
1408
-
1409
- resultObject.data.push({
1410
- y: pivotData.colTotals[col_n_value].sum,
1411
- name: lodash.unescape(col_n_value).replace('DR_Others', highchartsRenderer.getOthersName(opts)),
1412
- isSum: !!col_index,
1413
- isTotal: true,
1414
- color: colorOptions.total,
1415
- });
1405
+ });
1406
+ }
1416
1407
  });
1417
1408
 
1418
1409
  chart_series.push(resultObject);
@@ -3190,6 +3181,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3190
3181
  ? opts.chartOptions
3191
3182
  : highchartsRenderer.getDefaultValueForChart(highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN);
3192
3183
 
3184
+ pivotData.colKeys = lodash.map(lodash.keys(pivotData.colTotals), key => [key]);
3185
+
3193
3186
  chartOptions.chart = {
3194
3187
  type: 'waterfall',
3195
3188
  zoomType: additionOptions && additionOptions.chart && additionOptions.chart.zoom_type ? additionOptions.chart.zoom_type : 'None',
@@ -3240,7 +3233,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3240
3233
  chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
3241
3234
  }
3242
3235
  chartOptions.series = highchartsRenderer
3243
- .ptCreateWaterfallBreakdownSeries(pivotData, null, additionOptions, opts);
3236
+ .ptCreateWaterfallBreakdownSeries(pivotData, additionOptions, opts);
3244
3237
 
3245
3238
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
3246
3239
  chartOptions.plotOptions = {
@@ -4965,12 +4958,28 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4965
4958
  }
4966
4959
  });
4967
4960
 
4961
+ // add virtual fields to rows if required
4962
+ let rows = widgetOptions.rows;
4963
+ if (!lodash.get(widgetOptions, 'rows.length') && widgetOptions.options.breakdown_options) {
4964
+ rows = [
4965
+ {
4966
+ id: -1,
4967
+ name: highchartsRenderer.VIRTUAL_FIELDS.WATERFALL_VARIANCE,
4968
+ type: 'Text',
4969
+ },
4970
+ ];
4971
+ }
4972
+
4968
4973
  // fill rows fields
4969
- lodash.forEach(widgetOptions.rows, function (valObj) {
4970
- fieldOb = lodash.find(fields, {id: valObj.id});
4971
- if (fieldOb) {
4972
- legendFields.push(fieldOb);
4973
- lodash.remove(fields, {id: fieldOb.id});
4974
+ lodash.forEach(rows, function (valObj) {
4975
+ if (lodash.includes(highchartsRenderer.VIRTUAL_FIELDS, valObj.name)) {
4976
+ legendFields.push(valObj);
4977
+ } else {
4978
+ fieldOb = lodash.find(fields, {id: valObj.id});
4979
+ if (fieldOb) {
4980
+ legendFields.push(fieldOb);
4981
+ lodash.remove(fields, {id: fieldOb.id});
4982
+ }
4974
4983
  }
4975
4984
  });
4976
4985
 
@@ -7915,7 +7924,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7915
7924
  };
7916
7925
 
7917
7926
  highchartsRenderer.createDateFromString = function (dateString, format) {
7918
- if ((format && !highchartsRenderer.isDateFormat(dateString, format)) || !highchartsRenderer.isDate(dateString)) {
7927
+ if (!(format && highchartsRenderer.isDateFormat(dateString, format) || highchartsRenderer.isDate(dateString))) {
7919
7928
  return null;
7920
7929
  }
7921
7930
  const utcDate = format
@@ -8069,6 +8078,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
8069
8078
  filter.is_excluded = false;
8070
8079
  } else {
8071
8080
  filter = highchartsRenderer.createDrillDownFilterObject(widget, widget.cols[0], colKey[0]);
8081
+ filters.push(filter);
8072
8082
  }
8073
8083
  filter.values = [];
8074
8084
  for (let i = 0; i < colKey.length; i++) {
@@ -8671,7 +8681,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
8671
8681
  rows = [];
8672
8682
  } else {
8673
8683
  rows = cols;
8674
- cols = [];
8684
+ cols = [point.colKeys[1]];
8675
8685
  }
8676
8686
  return { rows, cols };
8677
8687
  }