@datarailsshared/dr_renderer 1.2.170-dragons → 1.2.172-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.170-dragons",
3
+ "version": "1.2.172-dragons",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -1,3 +1,29 @@
1
+ const CHART_TYPES = {
2
+ LINE_CHART: 'line-chart',
3
+ LINE_CHART_SMOOTH: 'line-chart-smooth',
4
+ COLUMN_CHART: 'column-chart',
5
+ COLUMN_CHART_STACKED: 'column-chart-stacked',
6
+ COMBO_CHART: 'combo-chart',
7
+ COMBO_COLUMN_CHART: 'combo-column-chart',
8
+ COMBO_STACKED_CHART: 'combo-stacked-chart',
9
+ BAR_CHART: 'bar-chart',
10
+ BAR_CHART_STACKED: 'bar-chart-stacked',
11
+ SCATTER_CHART: 'scatter-chart',
12
+ AREA_CHART: 'area-chart',
13
+ AREA_CHART_SMOOTH: 'area-chart-smooth',
14
+ TABLE_ONLY: 'table_only',
15
+ POLYGON_CHART: 'polygon-chart',
16
+ PIE_CHART: 'pie-chart',
17
+ PIE_CHART_DRILLDOWN: 'pie-chart-drilldown',
18
+ GAUGE_SOLID_CHART: 'gauge-solid-chart',
19
+ GAUGE_CHART: 'gauge-chart',
20
+ KPI_WIDGET: 'kpi-widget',
21
+ TEXT_WIDGET: 'text-widget',
22
+ WATERFALL_BREAKDOWN: 'waterfall-chart-breakdown',
23
+ PUBLISHED_ITEM: 'published_item',
24
+ RICH_TEXT: 'rich_text',
25
+ }
26
+
1
27
  let getHighchartsRenderer = function ($, document, Highcharts, default_colors, highchartsRenderer,
2
28
  DataFormatter, lodash, moment_lib, isNewAngular) {
3
29
 
@@ -445,6 +471,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
445
471
  || this.series.options.className === 'trendSeries') {
446
472
  rows = [];
447
473
  }
474
+
448
475
  var cols = this.key;
449
476
  if (typeof (cols) == 'object' && cols.name) {
450
477
  cols = cols.name;
@@ -500,6 +527,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
500
527
  }
501
528
 
502
529
  const percentageWrapper = percentageArray.length ? `(${percentageArray.join(', ')})` : '';
530
+
531
+ if (this.series.options.className === 'waterfallBreakdown') {
532
+ const modifiedRowsAndCols = highchartsRenderer.transformRowsAndColsForBreakdown(rows, cols, this.point, opts);
533
+ rows = modifiedRowsAndCols.rows;
534
+ cols = modifiedRowsAndCols.cols;
535
+ }
536
+
503
537
  var aggr = pivotData.getAggregator(rows, cols);
504
538
 
505
539
  const formattedValue = is_drill_down_pie || labelOptions.show_value ? $.pivotUtilities.getFormattedNumber(value, aggr, opts, true) : '';
@@ -570,6 +604,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
570
604
  }
571
605
 
572
606
  var func = function () {
607
+ const isWaterfallBreakdown = this.series.options.className === 'waterfallBreakdown';
608
+
573
609
  var y = parseFloat(this.y);
574
610
  if (pivotData) {
575
611
  let series_name = (this.series.name || '') + "";
@@ -604,8 +640,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
604
640
  cols = rows;
605
641
  rows = temp;
606
642
  }
607
- var aggr = pivotData.getAggregator(rows, cols);
608
- var category_text = `<span style="font-weight: bold;">${cols} </span>`;
643
+
644
+ var category_text = `<span style="font-weight: bold;">${cols}${isWaterfallBreakdown ? ': ' : ' '}</span>`;
609
645
  if (this.category) {
610
646
  category_text = '';
611
647
  }
@@ -617,9 +653,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
617
653
  if (pivotData.rowAttrs.length == 0) {
618
654
  series_text = ': ';
619
655
  }
656
+
657
+ if (isWaterfallBreakdown) {
658
+ const modifiedRowsAndCols = highchartsRenderer.transformRowsAndColsForBreakdown(rows, cols, this.point, opts);
659
+ rows = modifiedRowsAndCols.rows;
660
+ cols = modifiedRowsAndCols.cols;
661
+ }
662
+
663
+ var aggr = pivotData.getAggregator(rows, cols);
664
+
620
665
  let formatted_value_to_return = $.pivotUtilities.getFormattedNumber(y, null, opts);
621
- if (aggr.value()) {
622
- formatted_value_to_return = $.pivotUtilities.getFormattedNumber(aggr.value(), aggr, opts);
666
+ if (aggr.value() || isWaterfallBreakdown) {
667
+ formatted_value_to_return = $.pivotUtilities.getFormattedNumber(isWaterfallBreakdown ? y : aggr.value(), aggr, opts);
623
668
  }
624
669
 
625
670
  let wrappedFormattedValue = highchartsRenderer.getSpanWrapper(formatted_value_to_return);
@@ -628,7 +673,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
628
673
  category_text = tooltipOptions.show_x_axis ? category_text : '';
629
674
  series_text = tooltipOptions.show_data_series ? series_text : '';
630
675
 
631
- let to_return = category_text + series_text + wrappedFormattedValue;
676
+ let to_return = isWaterfallBreakdown ? `${ category_text }${ wrappedFormattedValue }` : category_text + series_text + wrappedFormattedValue;
632
677
 
633
678
  if (is_drill_down_pie) {
634
679
  to_return = wrappedFormattedValue;
@@ -1128,7 +1173,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1128
1173
  allowOverlap: additionOptions && additionOptions.label ? additionOptions.label.overlap : false,
1129
1174
  enabled: additionOptions && additionOptions.label ? additionOptions.label.show : true,
1130
1175
  formatter: highchartsRenderer.defaultDataLabelFormatter(pivotData, {'chartOptions': additionOptions, total_value_options: opts.total_value_options}),
1131
- style: highchartsRenderer.getDataLabelsStyle(additionOptions)
1176
+ style: highchartsRenderer.getDataLabelsStyle(additionOptions),
1132
1177
  }
1133
1178
 
1134
1179
  ob = highchartsRenderer.getDataLabelsOptions(additionOptions, ob);
@@ -1284,6 +1329,95 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1284
1329
  return chart_series;
1285
1330
  }
1286
1331
 
1332
+ highchartsRenderer.ptCreateWaterfallBreakdownSeries = function (pivotData, onlyNumbers, additionOptions, opts) {
1333
+
1334
+ const colorOptions = opts.breakdown_options.colors;
1335
+
1336
+ var chart_series = [],
1337
+ row_n_keys = pivotData.getRowKeys(),
1338
+ col_n_keys = pivotData.getColKeys();
1339
+
1340
+ if (row_n_keys.length == 0)
1341
+ row_n_keys.push([]);
1342
+
1343
+ let resultObject = {
1344
+ data: [],
1345
+ dataLabels: {
1346
+ allowOverlap: additionOptions && additionOptions.label ? additionOptions.label.overlap : false,
1347
+ enabled: additionOptions && additionOptions.label ? additionOptions.label.show : true,
1348
+ formatter: highchartsRenderer.defaultDataLabelFormatter(pivotData, {'chartOptions': additionOptions, total_value_options: opts.total_value_options}),
1349
+ style: highchartsRenderer.getDataLabelsStyle(additionOptions),
1350
+ },
1351
+ upColor: colorOptions.increase,
1352
+ color: colorOptions.decrease,
1353
+ className: 'waterfallBreakdown'
1354
+ };
1355
+ resultObject = highchartsRenderer.getDataLabelsOptions(additionOptions, resultObject);
1356
+
1357
+ const breakdownValues = [];
1358
+ lodash.forEach(col_n_keys, function(col_n_value, col_index) {
1359
+ breakdownValues.push([]);
1360
+ lodash.forEach(row_n_keys, function (row_n_value, row_index) {
1361
+ var agg = pivotData.getAggregator(row_n_value, col_n_value);
1362
+ var val = agg.value();
1363
+
1364
+ if (val != null && $.isNumeric(val)) {
1365
+ val = parseFloat(val);
1366
+ } else if (onlyNumbers) {
1367
+ val = NaN;
1368
+ } else {
1369
+ val = 0;
1370
+ }
1371
+
1372
+ breakdownValues[col_index][row_index] = val;
1373
+
1374
+ if (col_index) {
1375
+ const value = val - breakdownValues[col_index - 1][row_index];
1376
+
1377
+ if (value) {
1378
+ var tmoobj = {};
1379
+ var key = row_n_value;
1380
+ if (lodash.isArray(row_n_value)) {
1381
+ key = row_n_value[0];
1382
+ }
1383
+ tmoobj.name = lodash.unescape(key);
1384
+
1385
+ if (tmoobj.name) {
1386
+ tmoobj.name = tmoobj.name.replace('DR_Others', highchartsRenderer.getOthersName(opts));
1387
+ }
1388
+
1389
+ if (lodash.isEmpty(String(tmoobj.name))) {
1390
+ tmoobj.name = lodash.unescape(col_n_value);
1391
+ tmoobj.visible = false;
1392
+ }
1393
+ tmoobj.y = value;
1394
+ tmoobj.colKeys = [lodash.unescape(col_n_keys[col_index - 1]), lodash.unescape(col_n_value)];
1395
+ resultObject.data.push(tmoobj);
1396
+ }
1397
+ }
1398
+ });
1399
+
1400
+ resultObject.data.push({
1401
+ y: pivotData.colTotals[col_n_value].sum,
1402
+ name: lodash.unescape(col_n_value),
1403
+ isSum: !!col_index,
1404
+ isTotal: true,
1405
+ color: colorOptions.total,
1406
+ });
1407
+ });
1408
+
1409
+ chart_series.push(resultObject);
1410
+
1411
+ opts.chart_series = []
1412
+ if (!lodash.isEqual(row_n_keys, [[]])) {
1413
+ chart_series.forEach(series => {
1414
+ opts.chart_series.push(series.name);
1415
+ })
1416
+ }
1417
+
1418
+ return chart_series;
1419
+ }
1420
+
1287
1421
  highchartsRenderer.setChartTypeBySeriesType = function (type, series) {
1288
1422
  const types = {
1289
1423
  'line-chart': 'line',
@@ -3037,6 +3171,99 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3037
3171
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
3038
3172
  };
3039
3173
 
3174
+ highchartsRenderer.ptRenderWaterfallBreakdown = function (pivotData, opts, drilldownFunc, chartType) {
3175
+ let chartOptions = {};
3176
+ const additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('column-chart');
3177
+
3178
+ chartOptions.chart = {
3179
+ type: 'waterfall',
3180
+ zoomType: additionOptions && additionOptions.chart && additionOptions.chart.zoom_type ? additionOptions.chart.zoom_type : 'None',
3181
+ };
3182
+ if (disableAnimation) {
3183
+ chartOptions.chart.animation = false;
3184
+ }
3185
+
3186
+ const breakdownFieldIsNotSet = lodash.some(pivotData.getRowKeys(), rowKey => !rowKey || lodash.isArray(rowKey) && !rowKey.length);
3187
+ chartOptions.xAxis = {
3188
+ type: 'category',
3189
+ crosshair: true,
3190
+ min: 0,
3191
+ title: {
3192
+ text : additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
3193
+ },
3194
+ uniqueNames: breakdownFieldIsNotSet,
3195
+ };
3196
+
3197
+ highchartsRenderer.setTitleAndSubTitle(chartOptions, opts, additionOptions);
3198
+
3199
+ chartOptions.yAxis = {
3200
+ min: null,
3201
+ max: null,
3202
+ title: {
3203
+ text: additionOptions && additionOptions.axisY ? additionOptions.axisY.name : '',
3204
+ autoylabel: additionOptions && additionOptions.axisY ? additionOptions.axisY.autoylabel : ''
3205
+ },
3206
+ labels: {
3207
+ formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts)
3208
+ },
3209
+ };
3210
+ if (additionOptions) {
3211
+ highchartsRenderer.setYAxisMinMax(chartOptions.yAxis, additionOptions.axisY);
3212
+ }
3213
+
3214
+ chartOptions.tooltip = {
3215
+ formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
3216
+ valueDecimals: 2,
3217
+ };
3218
+
3219
+ highchartsRenderer.handleGridLines(additionOptions, chartOptions);
3220
+
3221
+ if (lodash.get(opts, 'paletteOptions.widgetPalette', null)) {
3222
+ const mc_palette = lodash.find(lodash.get(opts.paletteOptions, 'monochromePalettes', []), { selected: true });
3223
+ chartOptions.colors = mc_palette ? mc_palette.colors : opts.paletteOptions.widgetPalette;
3224
+ } else if (lodash.get(opts, 'paletteOptions.dashboardPalette.colors', null)) {
3225
+ chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
3226
+ }
3227
+ chartOptions.series = highchartsRenderer
3228
+ .ptCreateWaterfallBreakdownSeries(pivotData, null, additionOptions, opts);
3229
+
3230
+ chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
3231
+ chartOptions.plotOptions = {
3232
+ waterfall: {
3233
+ pointPadding: 0.2,
3234
+ borderWidth: 0,
3235
+ borderRadius: 1,
3236
+ lineWidth: 0,
3237
+ },
3238
+ series: {
3239
+ animation: !disableAnimation,
3240
+ cropThreshold: 1000,
3241
+ dataLabels: {
3242
+ allowOverlap: additionOptions && additionOptions.label ? additionOptions.label.overlap : false,
3243
+ enabled: additionOptions && additionOptions.label ? additionOptions.label.show : true,
3244
+ formatter: highchartsRenderer.defaultDataLabelFormatter(pivotData, opts),
3245
+ style: highchartsRenderer.getDataLabelsStyle(additionOptions),
3246
+ inside: false
3247
+ }
3248
+ }
3249
+ };
3250
+
3251
+ if (opts.drillDownListFunc) {
3252
+ chartOptions.plotOptions.series.cursor = 'pointer';
3253
+ chartOptions.plotOptions.series.point = {
3254
+ events: {
3255
+ click: opts.drillDownListFunc
3256
+ }
3257
+ };
3258
+ }
3259
+
3260
+ chartOptions.legend = {
3261
+ enabled: false
3262
+ };
3263
+
3264
+ return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
3265
+ };
3266
+
3040
3267
  highchartsRenderer.formatFieldValue = function (field, value) {
3041
3268
  let currentType = '';
3042
3269
  switch (field.type) {
@@ -4101,7 +4328,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4101
4328
  }
4102
4329
  };
4103
4330
 
4104
- highchartsRenderer.rhPivotView = function (rowData, options, isTable = false) {
4331
+ highchartsRenderer.rhPivotView = function (rowData, options, isTable = false, widget = null) {
4105
4332
  if (!rowData || !rowData) {
4106
4333
  if (options.onlyOptions) {
4107
4334
  return {};
@@ -4109,6 +4336,28 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4109
4336
  return null;
4110
4337
  }
4111
4338
 
4339
+ if (widget && widget.chart_type === CHART_TYPES.WATERFALL_BREAKDOWN) {
4340
+ const breakdownSettings = widget.options.breakdown_options.settings;
4341
+ const maxCategories = breakdownSettings.maxCategoriesCount;
4342
+ const minCategories = breakdownSettings.minCategoriesCount;
4343
+ const categoryFieldName = widget.cols[0].name;
4344
+ const uniqueCategories = lodash.filter(lodash.uniq(lodash.map(rowData, row => row[categoryFieldName])), value => !!value);
4345
+
4346
+ if (uniqueCategories && (uniqueCategories.length > maxCategories || uniqueCategories.length < minCategories )) {
4347
+ const commonErrorSentence = `Please choose ${minCategories}-${maxCategories} items in the Category section.`
4348
+ options.error_has_occurred = true;
4349
+ options.error_params = {
4350
+ title: uniqueCategories.length > maxCategories
4351
+ ? `There is too much data. ${commonErrorSentence}`
4352
+ : `Not enough data. ${commonErrorSentence}`,
4353
+ text: '',
4354
+ btnText: 'Edit Widget',
4355
+ class: 'too-much-data',
4356
+ }
4357
+ return highchartsRenderer.getNoDataResult(options.rendererOptions, true);
4358
+ }
4359
+ }
4360
+
4112
4361
  if (rowData.length == 0) {
4113
4362
  if (options.onlyOptions) {
4114
4363
  return {};
@@ -6517,6 +6766,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6517
6766
  };
6518
6767
 
6519
6768
  highchartsRenderer.chartsTypesInfo = {
6769
+ [CHART_TYPES.WATERFALL_BREAKDOWN]: {
6770
+ name: 'Waterfall Breakdown Chart ',
6771
+ label: 'Waterfall Breakdown Chart ',
6772
+ title: 'TODO: add text',
6773
+ description: 'TODO: add text',
6774
+ axisName: 'Category',
6775
+ legendName: 'Breakdown',
6776
+ startedMessage: 'To get started, drag one field to the Category and one field to the Value section.',
6777
+ axisTooltipTitle: 'TODO: add text',
6778
+ legendTooltipTitle: 'TODO: add text',
6779
+ },
6520
6780
  'combo-chart': {
6521
6781
  name: 'Combo Chart ',
6522
6782
  label: 'Combo Chart ',
@@ -7149,6 +7409,32 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7149
7409
  }
7150
7410
  ]
7151
7411
  },
7412
+ {
7413
+ type: 'waterfall-chart',
7414
+ name: 'Waterfall',
7415
+ hidden: true,
7416
+ class: 'google-visualization-charteditor-mini-column',
7417
+ subtypes: [
7418
+ {
7419
+ type: CHART_TYPES.WATERFALL_BREAKDOWN,
7420
+ name: highchartsRenderer.chartsTypesInfo[CHART_TYPES.WATERFALL_BREAKDOWN].name,
7421
+ class: 'google-visualization-charteditor-thumbs-columnchart',
7422
+ render: highchartsRenderer.ptRenderWaterfallBreakdown,
7423
+ suboptions: [
7424
+ highchartsRenderer.suboptions["axisY"],
7425
+ highchartsRenderer.suboptions["axisX"],
7426
+ highchartsRenderer.suboptions["tooltips"],
7427
+ highchartsRenderer.suboptions["label"],
7428
+ highchartsRenderer.suboptions["subtitle"],
7429
+ highchartsRenderer.suboptions["widget_library"],
7430
+ highchartsRenderer.suboptions["chart"],
7431
+ highchartsRenderer.suboptions["negative_number_format"],
7432
+ highchartsRenderer.suboptions["advanced"],
7433
+ highchartsRenderer.suboptions["legends"],
7434
+ ]
7435
+ },
7436
+ ]
7437
+ },
7152
7438
  ];
7153
7439
 
7154
7440
  highchartsRenderer.richTextSubType = {
@@ -7598,6 +7884,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7598
7884
 
7599
7885
  };
7600
7886
 
7887
+ highchartsRenderer.createDateFromString = function (dateString, format) {
7888
+ if ((format && !highchartsRenderer.isDateFormat(dateString, format)) || !highchartsRenderer.isDate(dateString)) {
7889
+ return null;
7890
+ }
7891
+ const utcDate = format
7892
+ ? moment_lib.utc(dateString, format, true)
7893
+ : moment_lib.utc(dateString);
7894
+ return utcDate.startOf('day').unix();
7895
+ }
7896
+
7601
7897
  highchartsRenderer.prepareDrillDownFilters = function (r_keys, c_keys, widget) {
7602
7898
  let row_key = r_keys;
7603
7899
  let col_key = c_keys;
@@ -7611,26 +7907,46 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7611
7907
 
7612
7908
  let filters = [];
7613
7909
 
7614
- lodash.forEach(col_key, function (col_value, index) {
7615
- if (widget && widget.cols[index]) {
7616
- let temp = highchartsRenderer.createFilterObject(widget.cols[index]);
7617
- if (widget.cols[index].type === 'Date') {
7618
- let datetrange = highchartsRenderer.createDateTypeFromValue(
7910
+ if (widget.chart_type === CHART_TYPES.WATERFALL_BREAKDOWN) {
7911
+ const colFilter = highchartsRenderer.createFilterObject(widget.cols[0]);
7912
+ const labels = [];
7913
+ colFilter.values = [];
7914
+ lodash.forEach(col_key, function (col_value) {
7915
+ if (widget.cols[0].type === 'Date') {
7916
+ let date = highchartsRenderer.createDateFromString(
7619
7917
  col_value,
7620
- highchartsRenderer.getDateFieldFormat(widget, widget.cols[index])
7918
+ highchartsRenderer.getDateFieldFormat(widget, widget.cols[0])
7621
7919
  );
7622
-
7623
- if ($.isEmptyObject(datetrange)) {
7624
- return;
7625
- }
7626
- temp.values = datetrange;
7627
- temp.values.label = col_value;
7920
+ colFilter.values.push(date);
7628
7921
  } else {
7629
- temp.values = [col_value];
7922
+ colFilter.values.push(col_value);
7630
7923
  }
7631
- filters.push(temp);
7632
- }
7633
- });
7924
+ labels.push(col_value);
7925
+ });
7926
+ colFilter.value_to_show = labels.join(', ');
7927
+ filters.push(colFilter);
7928
+ } else {
7929
+ lodash.forEach(col_key, function (col_value, index) {
7930
+ if (widget && widget.cols[index]) {
7931
+ let temp = highchartsRenderer.createFilterObject(widget.cols[index]);
7932
+ if (widget.cols[index].type === 'Date') {
7933
+ let datetrange = highchartsRenderer.createDateTypeFromValue(
7934
+ col_value,
7935
+ highchartsRenderer.getDateFieldFormat(widget, widget.cols[index])
7936
+ );
7937
+
7938
+ if ($.isEmptyObject(datetrange)) {
7939
+ return;
7940
+ }
7941
+ temp.values = datetrange;
7942
+ temp.values.label = col_value;
7943
+ } else {
7944
+ temp.values = [col_value];
7945
+ }
7946
+ filters.push(temp);
7947
+ }
7948
+ });
7949
+ }
7634
7950
 
7635
7951
  lodash.forEach(row_key, function (row_value, index) {
7636
7952
  if (widget && widget.rows[index]) {
@@ -7675,6 +7991,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7675
7991
  });
7676
7992
 
7677
7993
  lodash.forEach(filters, function (filter) {
7994
+ if (filter.value_to_show) {
7995
+ return;
7996
+ }
7678
7997
  if (Array.isArray(filter.values)) {
7679
7998
  if (filter.type) {
7680
7999
  for (let i = 0; i < filter.values.length; i++) {
@@ -8054,7 +8373,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
8054
8373
  subopts.onlyOptions = true;
8055
8374
  }
8056
8375
 
8057
- let hc_options = highchartsRenderer.rhPivotView(res, subopts, is_table);
8376
+ let hc_options = highchartsRenderer.rhPivotView(res, subopts, is_table, widget_obj);
8058
8377
 
8059
8378
  return hc_options;
8060
8379
  }
@@ -8281,6 +8600,24 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
8281
8600
  }
8282
8601
  }
8283
8602
 
8603
+ highchartsRenderer.getOthersName = function(opts) {
8604
+ return lodash.get(opts, "total_value_options.filter_options.filteredOutFieldName") || 'Others';
8605
+ }
8606
+
8607
+ highchartsRenderer.transformRowsAndColsForBreakdown = function(rows, cols, point, opts) {
8608
+ const othersIndex = cols.indexOf(highchartsRenderer.getOthersName(opts));
8609
+ if (othersIndex !== -1) {
8610
+ cols[othersIndex] = 'DR_Others';
8611
+ }
8612
+ if (point.options.isTotal) {
8613
+ rows = [];
8614
+ } else {
8615
+ rows = cols;
8616
+ cols = [];
8617
+ }
8618
+ return { rows: rows, cols: cols };
8619
+ }
8620
+
8284
8621
  return highchartsRenderer;
8285
8622
  };
8286
8623