@datarailsshared/dr_renderer 1.4.94 → 1.4.99

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.4.94",
3
+ "version": "1.4.99",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -1,9 +1,10 @@
1
1
  const helpers = require('./dr-renderer-helpers');
2
2
  const { DrGaugeChart, GAUGE_OPTIONS_DEFAULT } = require('./charts/dr_gauge_chart');
3
3
  const { DrDonutChart } = require('./charts/dr_donut_chart');
4
- const seriesPointStylesHelper= require('./seriesPointStyles-helper');
4
+ const seriesPointStylesHelper = require('./seriesPointStyles-helper');
5
5
  const smartQueriesHelper = require('./smart_queries_helper');
6
- const {DrGaugeCategoriesSummaryChart} = require("./charts/dr_gauge_categories_summary_chart");
6
+ const valueFormatter = require('./value.formatter');
7
+ const { DrGaugeCategoriesSummaryChart } = require("./charts/dr_gauge_categories_summary_chart");
7
8
  const {
8
9
  TooMuchDataError,
9
10
  NoDataError,
@@ -611,7 +612,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
611
612
  };
612
613
 
613
614
  //TODO No totals formatts
614
- highchartsRenderer.defaultValueLabelsFormatter = function (pivotData, opts) {
615
+ highchartsRenderer.defaultValueLabelsFormatter = function (pivotData, opts, forcePercentage = false) {
616
+ const deltaColumn = lodash.get(opts, 'chartOptions.delta_column', null);
617
+ const isPercentage = deltaColumn && deltaColumn.is_percentage && deltaColumn.only_variant || forcePercentage;
618
+
619
+ if (isPercentage) {
620
+ return highchartsRenderer.persantageValueLabelsFormatter(pivotData, opts);
621
+ }
622
+
615
623
  const labelOptions = lodash.get(opts.chartOptions, 'label') || lodash.get(opts.chartOptions, 'label_pie');
616
624
 
617
625
  return function () {
@@ -633,7 +641,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
633
641
  highchartsRenderer.persantageValueLabelsFormatter = function (pivotData, opts) {
634
642
  var func = function () {
635
643
  var value = parseFloat(this.value);
636
- return $.pivotUtilities.getFormattedNumber(value * 100, null, null) + "%";
644
+ return $.pivotUtilities.getFormattedNumber(value, null, null) + "%";
637
645
  };
638
646
  return func;
639
647
  };
@@ -692,6 +700,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
692
700
 
693
701
  var func = function () {
694
702
  var value = parseFloat(this.y);
703
+
695
704
  if (pivotData) {
696
705
  let series_name = highchartsRenderer.getSeriesNameInFormatterContext(this);
697
706
  var rows = series_name.split(highchartsRenderer.delimer);
@@ -852,6 +861,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
852
861
  const isTrendSeries = this.series.options.className === SERIES_CLASSNAMES.TREND_SERIES;
853
862
 
854
863
  var y = parseFloat(this.y);
864
+
855
865
  if (pivotData) {
856
866
  let series_name = highchartsRenderer.getSeriesNameInFormatterContext(this);
857
867
  var rows = series_name.split(highchartsRenderer.delimer);
@@ -879,6 +889,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
879
889
  if (variant_name && rows && rows[0] && variant_name == rows[0]) {
880
890
  rows[0] = variant_name_default_name;
881
891
  }
892
+
882
893
  try {
883
894
  if (is_drill_down_pie && !highchartsRenderer.selfStartsWith(series_name,"Series ")) {
884
895
  let temp = cols;
@@ -919,7 +930,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
919
930
  }
920
931
 
921
932
  var aggr = pivotData.getAggregator(rows, cols);
922
-
933
+
923
934
  let formatted_value_to_return = $.pivotUtilities.getFormattedNumber(y, null, opts);
924
935
  if (aggr.value() || isWaterfallBreakdown) {
925
936
  formatted_value_to_return = $.pivotUtilities.getFormattedNumber(
@@ -1346,7 +1357,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1346
1357
  }
1347
1358
 
1348
1359
  if (has_delta && additionOptions && ob.name == additionOptions.delta_column.name) {
1349
- ob = highchartsRenderer.getVariantSeries(ob, additionOptions.delta_column);
1360
+ ob = highchartsRenderer.getVariantSeries(ob, additionOptions.delta_column, pivotData);
1350
1361
  variat_serias = ob;
1351
1362
  }
1352
1363
 
@@ -1554,7 +1565,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1554
1565
  }
1555
1566
 
1556
1567
  if (has_delta && row_n_value && row_n_value.some(val => val === additionOptions.delta_column.name)) {
1557
- ob = highchartsRenderer.getVariantSeries(ob, additionOptions.delta_column);
1568
+ ob = highchartsRenderer.getVariantSeries(ob, additionOptions.delta_column, pivotData);
1558
1569
  variat_serias = ob;
1559
1570
  }
1560
1571
 
@@ -1876,7 +1887,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1876
1887
  }
1877
1888
  }
1878
1889
 
1879
- highchartsRenderer.getVariantSeries = function (series, delta_column_options) {
1890
+ highchartsRenderer.getVariantSeries = function (series, delta_column_options, pivotData) {
1880
1891
  const varianceColor = delta_column_options.color || highchartsRenderer.variance_color || Highcharts.getOptions().colors[7];
1881
1892
  series.name = delta_column_options.name.replace('_', '');
1882
1893
  series.initialName = series.name;
@@ -1903,6 +1914,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1903
1914
  }
1904
1915
  }
1905
1916
 
1917
+ if (delta_column_options.is_percentage) {
1918
+ lodash.forEach(series.data, function (it, index) {
1919
+ if (pivotData.rowKeys && pivotData.rowKeys.length && pivotData.colKeys && pivotData.colKeys.length) {
1920
+ const agg = pivotData.getAggregator([pivotData.rowKeys[0]], pivotData.colKeys[index]);
1921
+ if (agg) {
1922
+ const baseValue = pivotData.getAggregator([pivotData.rowKeys[0]], pivotData.colKeys[index]).value();
1923
+ it.y = valueFormatter.getPercentageValue(it.y, baseValue);
1924
+ }
1925
+ }
1926
+ });
1927
+ }
1928
+
1906
1929
  if (delta_column_options.chart == 'line') {
1907
1930
  series.type = 'line';
1908
1931
  series.lineColor = varianceColor;
@@ -1949,7 +1972,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1949
1972
  } else if (delta_column_options.chart == 'spline') {
1950
1973
  series.color = varianceColor;
1951
1974
  series.type = 'spline'
1952
- }
1975
+ }
1953
1976
  return series;
1954
1977
  }
1955
1978
 
@@ -2107,9 +2130,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2107
2130
 
2108
2131
  highchartsRenderer.addSecondYAxis = function (pivotData, chartOptions, additionOptions, opts) {
2109
2132
  const varianceColor = (additionOptions && additionOptions.delta_column.color) || (highchartsRenderer && highchartsRenderer.variance_color) || Highcharts.getOptions().colors[7];
2110
- let labels_formatter = opts.comboOptions.secondaryAxisSettings.is_percentage ?
2111
- highchartsRenderer.persantageValueLabelsFormatter(pivotData, opts) :
2112
- highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts);
2133
+ const forcePercentage = lodash.get(opts, 'comboOptions.secondaryAxisSettings.is_percentage', false);
2113
2134
 
2114
2135
  chartOptions.yAxis = [chartOptions.yAxis];
2115
2136
  chartOptions.yAxis[1] = {
@@ -2122,7 +2143,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2122
2143
  }
2123
2144
  },
2124
2145
  labels: {
2125
- formatter: labels_formatter,
2146
+ formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts, forcePercentage),
2126
2147
  style: {
2127
2148
  color: varianceColor
2128
2149
  }
@@ -2518,7 +2539,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2518
2539
  var chartOptions = {};
2519
2540
  var rowAttrs = pivotData.rowAttrs;
2520
2541
  var colAttrs = pivotData.colAttrs;
2521
-
2522
2542
  var additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('line-chart');
2523
2543
 
2524
2544
  chartOptions.chart = {
@@ -3309,6 +3329,37 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3309
3329
  var rowAttrs = pivotData.rowAttrs;
3310
3330
  var additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('bar-chart-stacked');
3311
3331
 
3332
+ const isVarianceOnly = lodash.get(additionOptions, 'delta_column.only_variant', false);
3333
+ const labelStyle = lodash.merge(
3334
+ LABEL_DEFAULT_OPTIONS.style,
3335
+ { color: lodash.get(additionOptions, `${ highchartsRenderer.getLabelOptionKey(additionOptions) }.font_color`) || LABEL_DEFAULT_OPTIONS.color },
3336
+ highchartsRenderer.getDataLabelsStyle(additionOptions)
3337
+ );
3338
+
3339
+ const stackLabelsFormatter = function() {
3340
+ return function() {
3341
+ if (this.total) {
3342
+ var total = parseFloat(this.total);
3343
+ var agg = pivotData.getAggregator([], []);
3344
+ if (agg) {
3345
+ return agg.format(total, true);
3346
+ } else {
3347
+ return total.toLocaleString();
3348
+ }
3349
+ }
3350
+ return '';
3351
+ }
3352
+ }
3353
+
3354
+ const dataLabelsFormatter = function() {
3355
+ return function() {
3356
+ const deltaColumnName = lodash.get(opts, 'chartOptions.delta_column.name', '');
3357
+ const currentRowName = this.series && this.series.name ? String(this.series.name) : '';
3358
+ const isVariance = currentRowName.replace('_', '').toLowerCase() === deltaColumnName.replace('_', '').toLowerCase();
3359
+ return isVariance ? highchartsRenderer.defaultDataLabelFormatter(pivotData, opts).call(this) : '';
3360
+ }
3361
+ }
3362
+
3312
3363
  chartOptions.chart = {
3313
3364
  type: 'bar',
3314
3365
  zoomType: 'x'
@@ -3324,27 +3375,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3324
3375
  text: additionOptions && additionOptions.axisY ? additionOptions.axisY.name : ''
3325
3376
  },
3326
3377
  stackLabels: {
3327
- enabled: additionOptions && additionOptions.label ? additionOptions.label.show : true,
3328
- formatter: function () {
3329
- if (this.total) {
3330
- var total = parseFloat(this.total);
3331
- var agg = pivotData.getAggregator([], []);
3332
- if (agg) {
3333
- return agg.format(total, true);
3334
- } else {
3335
- return total.toLocaleString();
3336
- }
3337
- }
3338
- return "";
3339
- },
3340
- style: lodash.merge(
3341
- LABEL_DEFAULT_OPTIONS.style,
3342
- {
3343
- color: lodash.get(additionOptions, `${ highchartsRenderer.getLabelOptionKey(additionOptions) }.font_color`)
3344
- || LABEL_DEFAULT_OPTIONS.color,
3345
- },
3346
- highchartsRenderer.getDataLabelsStyle(additionOptions)
3347
- ),
3378
+ enabled: additionOptions && additionOptions.label && !isVarianceOnly ? additionOptions.label.show : false,
3379
+ formatter: stackLabelsFormatter.call(this),
3380
+ style: labelStyle
3348
3381
  },
3349
3382
  labels: {
3350
3383
  formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts)
@@ -3368,7 +3401,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3368
3401
  chartOptions.plotOptions = {
3369
3402
  series: {
3370
3403
  animation: !disableAnimation,
3371
- stacking: 'normal'
3404
+ stacking: 'normal',
3405
+ dataLabels: {
3406
+ allowOverlap: additionOptions && additionOptions.label ? additionOptions.label.overlap : false,
3407
+ enabled: additionOptions && additionOptions.label ? additionOptions.label.show : false,
3408
+ formatter: dataLabelsFormatter.call(this),
3409
+ style: labelStyle
3410
+ }
3372
3411
  }
3373
3412
  };
3374
3413
 
@@ -3405,7 +3444,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3405
3444
  const additionOptions = opts.chartOptions
3406
3445
  ? opts.chartOptions
3407
3446
  : highchartsRenderer.getDefaultValueForChart(highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN);
3408
-
3447
+
3409
3448
  if (!highchartsRenderer.isSortingOnBackendEnabled) {
3410
3449
  pivotData.colKeys = lodash.map(lodash.keys(pivotData.colTotals), key => [key]);
3411
3450
  }
@@ -3801,12 +3840,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3801
3840
  number_format = this.widget_values_format;
3802
3841
  }
3803
3842
 
3843
+ const aggregatorPercentageValue = valueFormatter.getAggregatorPercentageValueIfRequired(this.sum, render_options, data, rowKey, colKey);
3844
+ if (aggregatorPercentageValue) {
3845
+ return aggregatorPercentageValue;
3846
+ }
3847
+
3804
3848
  number_format = highchartsRenderer.getCalculatedValueFormat(this.calculated_formats, rowKey, colKey) || number_format;
3805
3849
 
3806
3850
  var formated_value = highchartsRenderer.formatValue('n', number_format, x);
3807
3851
 
3808
- return formated_value && formated_value.hasOwnProperty('value') && formated_value.value != null ?
3809
- formated_value.value : x.toLocaleString();
3852
+ return formated_value && formated_value.hasOwnProperty('value') && formated_value.value != null
3853
+ ? formated_value.value
3854
+ : x.toLocaleString();
3810
3855
  },
3811
3856
  numInputs: attr != null ? 0 : 1
3812
3857
  };
@@ -3869,6 +3914,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3869
3914
  return ''
3870
3915
  }
3871
3916
 
3917
+ const aggregatorPercentageValue = valueFormatter.getAggregatorPercentageValueIfRequired(this.uniq, render_options, data, rowKey, colKey);
3918
+ if (aggregatorPercentageValue) {
3919
+ return aggregatorPercentageValue;
3920
+ }
3921
+
3872
3922
  if (is_graph == true || only_formats == true) {
3873
3923
  let number_format = this.widget_values_format || null;
3874
3924
  let formated_value = highchartsRenderer.formatValue('n', number_format, x);
@@ -3956,6 +4006,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3956
4006
  number_format = this.widget_values_format;
3957
4007
  }
3958
4008
 
4009
+ const aggregatorPercentageValue = valueFormatter.getAggregatorPercentageValueIfRequired(this.sum, render_options, data, rowKey, colKey);
4010
+ if (aggregatorPercentageValue) {
4011
+ return aggregatorPercentageValue;
4012
+ }
4013
+
3959
4014
  number_format = highchartsRenderer.getCalculatedValueFormat(this.calculated_formats, rowKey, colKey) || number_format;
3960
4015
  var formated_value = highchartsRenderer.formatValue('n', number_format, x)
3961
4016
 
@@ -4043,6 +4098,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4043
4098
  number_format = this.widget_values_format;
4044
4099
  }
4045
4100
 
4101
+ const aggregatorPercentageValue = valueFormatter.getAggregatorPercentageValueIfRequired(this.val, render_options, data, rowKey, colKey);
4102
+ if (aggregatorPercentageValue) {
4103
+ return aggregatorPercentageValue;
4104
+ }
4105
+
4046
4106
  number_format = highchartsRenderer.getCalculatedValueFormat(this.calculated_formats, rowKey, colKey) || number_format;
4047
4107
 
4048
4108
  var formated_value = highchartsRenderer.formatValue('n', number_format, x)
@@ -4130,6 +4190,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4130
4190
  number_format = this.widget_values_format;
4131
4191
  }
4132
4192
 
4193
+ const aggregatorPercentageValue = valueFormatter.getAggregatorPercentageValueIfRequired(this.val, render_options, data, rowKey, colKey);
4194
+ if (aggregatorPercentageValue) {
4195
+ return aggregatorPercentageValue;
4196
+ }
4197
+
4133
4198
  number_format = highchartsRenderer.getCalculatedValueFormat(this.calculated_formats, rowKey, colKey) || number_format;
4134
4199
 
4135
4200
  var formated_value = highchartsRenderer.formatValue('n', number_format, x)
@@ -4220,6 +4285,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4220
4285
  number_format = this.widget_values_format;
4221
4286
  }
4222
4287
 
4288
+ const aggregatorPercentageValue = valueFormatter.getAggregatorPercentageValueIfRequired(this.sum, render_options, data, rowKey, colKey);
4289
+ if (aggregatorPercentageValue) {
4290
+ return aggregatorPercentageValue;
4291
+ }
4292
+
4223
4293
  number_format = highchartsRenderer.getCalculatedValueFormat(this.calculated_formats, rowKey, colKey) || number_format;
4224
4294
 
4225
4295
  var formated_value = highchartsRenderer.formatValue('n', number_format, x)
@@ -4769,6 +4839,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4769
4839
  dateValuesDictionary: pivotOptions ? pivotOptions.dateValuesDictionary : null,
4770
4840
  keysObject: pivotOptions ? pivotOptions.keysObject : null,
4771
4841
  isDrillDownDisabled: pivotOptions ? pivotOptions.isDrillDownDisabled : false,
4842
+ pivotUiFnRemoved: pivotOptions ? pivotOptions.pivotUiFnRemoved : false,
4772
4843
  };
4773
4844
 
4774
4845
  if (!subopts.rendererOptions) {
@@ -5206,38 +5277,39 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5206
5277
  },
5207
5278
  seriesOptions: []
5208
5279
  }
5209
- if (options.chartOptions && options.chartOptions.delta_column && options.chartOptions.delta_column.field === 'series') {
5210
- let deltaColumnSeries = {
5211
- series: options.chartOptions.delta_column.name,
5212
- secondaryAxis: !options.chartOptions.delta_column.same_yaxis,
5213
- };
5214
- switch (options.chartOptions.delta_column.chart) {
5215
- case 'line':
5216
- deltaColumnSeries.chartType = 'line-chart';
5217
- break;
5218
- case 'spline':
5219
- deltaColumnSeries.chartType = 'line-chart-smooth';
5220
- break;
5221
- case 'area':
5222
- deltaColumnSeries.chartType = 'area-chart';
5223
- break;
5224
- case 'areaspline':
5225
- deltaColumnSeries.chartType = 'area-chart-smooth';
5226
- break;
5227
- case 'scatter':
5228
- deltaColumnSeries.chartType = 'scatter-chart';
5229
- break;
5230
- case 'column':
5231
- deltaColumnSeries.chartType = 'column-chart';
5232
- break;
5233
- default:
5234
- deltaColumnSeries.chartType = 'scatter-chart';
5235
- break;
5236
- }
5237
- options.comboOptions.seriesOptions.push(deltaColumnSeries);
5238
- options.comboOptions.secondaryAxisSettings.name = options.chartOptions.delta_column.name.replace('_', '');
5239
- options.comboOptions.secondaryAxisSettings.is_percentage = options.chartOptions.delta_column.is_percentage;
5280
+ }
5281
+
5282
+ if (options.chartOptions && options.chartOptions.delta_column && options.chartOptions.delta_column.field === 'series') {
5283
+ let deltaColumnSeries = {
5284
+ series: options.chartOptions.delta_column.name,
5285
+ secondaryAxis: !options.chartOptions.delta_column.same_yaxis,
5286
+ };
5287
+ switch (options.chartOptions.delta_column.chart) {
5288
+ case 'line':
5289
+ deltaColumnSeries.chartType = 'line-chart';
5290
+ break;
5291
+ case 'spline':
5292
+ deltaColumnSeries.chartType = 'line-chart-smooth';
5293
+ break;
5294
+ case 'area':
5295
+ deltaColumnSeries.chartType = 'area-chart';
5296
+ break;
5297
+ case 'areaspline':
5298
+ deltaColumnSeries.chartType = 'area-chart-smooth';
5299
+ break;
5300
+ case 'scatter':
5301
+ deltaColumnSeries.chartType = 'scatter-chart';
5302
+ break;
5303
+ case 'column':
5304
+ deltaColumnSeries.chartType = 'column-chart';
5305
+ break;
5306
+ default:
5307
+ deltaColumnSeries.chartType = 'scatter-chart';
5308
+ break;
5240
5309
  }
5310
+ options.comboOptions.seriesOptions.push(deltaColumnSeries);
5311
+ options.comboOptions.secondaryAxisSettings.name = options.chartOptions.delta_column.name.replace('_', '');
5312
+ options.comboOptions.secondaryAxisSettings.is_percentage = options.chartOptions.delta_column.is_percentage;
5241
5313
  }
5242
5314
  };
5243
5315
 
@@ -10163,4 +10235,5 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
10163
10235
  return highchartsRenderer;
10164
10236
  };
10165
10237
 
10238
+
10166
10239
  module.exports = getHighchartsRenderer;