@datarailsshared/dr_renderer 1.2.46-beta → 1.2.48-beta

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.46-beta",
3
+ "version": "1.2.48-beta",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -1004,7 +1004,7 @@ var DataFormatterImpl = function () {
1004
1004
  // Call function
1005
1005
  result = this.memoized[pattern].call(this, n, type);
1006
1006
 
1007
- if (result.value === result.pattern) {
1007
+ if (result.value === result.pattern && !(String(n) === '0' && result.value.includes('0'))) {
1008
1008
  result.value = n;
1009
1009
  }
1010
1010
  }
@@ -3,7 +3,7 @@ let initDRPivotTable = function($, window, document) {
3
3
  var slice = [].slice;
4
4
  var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
5
5
 
6
- var DRPivotData, sortDateStrings, getSort, processKey, SubtotalRenderer, getFormattedNumber, largeToSmallSort, NovixRenderer;
6
+ var DRPivotData, sortDateStrings, getSort, processKey, SubtotalRenderer, getFormattedNumber, largeToSmallSort, largeToSmallSortByAbsolute, NovixRenderer;
7
7
 
8
8
  var delim = " , ";
9
9
  const newTableColors = ['rgb(127, 196, 255)', 'rgb(200, 243,243)', 'rgb(247, 161, 173)', 'rgb(255, 237, 178)', 'rgb(221, 239, 255)',
@@ -155,7 +155,7 @@ let initDRPivotTable = function($, window, document) {
155
155
  totals[flatKey].push(record);
156
156
  }
157
157
  }
158
- if (addKey) {
158
+ if (addKey && key.length === attrs.length) {
159
159
  keys.push(key);
160
160
  }
161
161
  return key;
@@ -180,13 +180,13 @@ let initDRPivotTable = function($, window, document) {
180
180
  if (!colKey.length && !rowKey.length) {
181
181
  this.allTotal.push(record);
182
182
  }
183
- if (!colKey.length && rowKey.length === 1) {
184
- this.rowTotals[rowKey[0]].push(record);
185
- this.rowTotals[rowKey[0]].isChangeable = true;
183
+ if (!colKey.length && rowKey.length) {
184
+ this.rowTotals[rowKey.join(delim)].push(record);
185
+ this.rowTotals[rowKey.join(delim)].isChangeable = true;
186
186
  }
187
- if (!rowKey.length && colKey.length === 1) {
188
- this.colTotals[colKey[0]].push(record);
189
- this.colTotals[colKey[0]].isChangeable = true;
187
+ if (!rowKey.length && colKey.length) {
188
+ this.colTotals[colKey.join(delim)].push(record);
189
+ this.colTotals[colKey.join(delim)].isChangeable = true;
190
190
  }
191
191
  } else {
192
192
  this.allTotal.push(record);
@@ -340,7 +340,11 @@ let initDRPivotTable = function($, window, document) {
340
340
  };
341
341
  };
342
342
 
343
- largeToSmallSort = function(as, bs) {
343
+ largeToSmallSortByAbsolute = function (as, bs) {
344
+ return largeToSmallSort(as , bs, true);
345
+ }
346
+
347
+ largeToSmallSort = function(as, bs, is_abs = false) {
344
348
  var a, a1, b, b1, rd, rx, rz;
345
349
  rx = /(\d+)|(\D+)/g;
346
350
  rd = /\d/;
@@ -352,6 +356,11 @@ let initDRPivotTable = function($, window, document) {
352
356
  if (isNaN(bs)) {
353
357
  return 1;
354
358
  }
359
+
360
+ if (is_abs) {
361
+ return Math.abs(bs) - Math.abs(as);
362
+ }
363
+
355
364
  return bs - as;
356
365
  }
357
366
  a = String(as).toLowerCase();
@@ -2217,6 +2226,7 @@ let initDRPivotTable = function($, window, document) {
2217
2226
  $.pivotUtilities.getFormattedNumber = getFormattedNumber;
2218
2227
  $.pivotUtilities.sortDateStrings = sortDateStrings;
2219
2228
  $.pivotUtilities.largeToSmallSort = largeToSmallSort;
2229
+ $.pivotUtilities.largeToSmallSortByAbsolute = largeToSmallSortByAbsolute;
2220
2230
  $.pivotUtilities.getPivotDataModel = function(input, opts){ return new DRPivotData(input, opts); }
2221
2231
  $.pivotUtilities.getPivotTableFormula = function(rowData, opts, func, colFields, rowFields, aggregationDefaults, utils) {
2222
2232
  let totalStr = 'Grand Totals';
@@ -891,14 +891,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
891
891
  return chartOptions;
892
892
  };
893
893
 
894
- highchartsRenderer.ptCreateBasicLineSeries = function (pivotData, colors, onlyNumbers, isUniqueVals, additionOptions) {
894
+ // Generate series for charts functions
895
+ highchartsRenderer.ptCreateBasicLineSeries = function (pivotData, colors, onlyNumbers, isUniqueVals, additionOptions, opts, chartOptions) {
895
896
  var chart_series = [],
896
897
  row_n_keys = pivotData.getRowKeys(),
897
898
  col_n_keys = pivotData.getColKeys();
898
899
 
899
- var num_cols = col_n_keys.length;
900
- var num_rows = row_n_keys.length;
901
-
902
900
  var has_delta = false;
903
901
  if (additionOptions && lodash.has(additionOptions, "delta_column.field") && additionOptions.delta_column.field == "series") {
904
902
  has_delta = true;
@@ -909,16 +907,22 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
909
907
 
910
908
  var i = 0;
911
909
  var variat_serias = null;
910
+ const n = col_n_keys.length;
911
+ const xSum = (1 + n) / 2 * n;
912
912
 
913
913
  lodash.forEach(row_n_keys, function (row_n_value) {
914
914
  var ob = {};
915
+ let ySum = 0;
916
+ let xySum = 0;
917
+ let squareXSum = 0;
915
918
  ob.data = [];
916
919
  if (row_n_value && row_n_value.length > 0)
917
920
  ob.name = row_n_value.join(highchartsRenderer.delimer);
918
921
 
919
- lodash.forEach(col_n_keys, function (col_n_value) {
922
+ lodash.forEach(col_n_keys, function (col_n_value, index) {
920
923
  var agg = pivotData.getAggregator(row_n_value, col_n_value);
921
924
  var val = agg.value();
925
+
922
926
  if (isUniqueVals && agg.uniq)
923
927
  val = agg.uniq.join('<br>');
924
928
 
@@ -937,6 +941,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
937
941
  else
938
942
  val = 0;
939
943
  }
944
+
945
+ xySum += Number(val) * (index + 1);
946
+ ySum += Number(val);
947
+ squareXSum += (index + 1) * (index + 1);
940
948
  ob.data.push(val);
941
949
  });
942
950
 
@@ -950,6 +958,24 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
950
958
  }
951
959
 
952
960
  chart_series.push(ob);
961
+
962
+ if (opts.trendLine) {
963
+ const a = ((ySum * squareXSum) - (xSum * xySum)) / ((n * squareXSum) - (xSum * xSum));
964
+ const b = ((n * xySum) - (xSum* ySum)) / ((n * squareXSum) - (xSum * xSum));
965
+
966
+ const trendSeries = lodash.clone(chart_series[chart_series.length - 1]);
967
+ trendSeries.name = 'Trend Line (' + trendSeries.name + ')';
968
+ trendSeries.dashStyle = 'shortdot';
969
+ trendSeries.type = 'line';
970
+ trendSeries.data = trendSeries.data.map((el, index) => a + b * (index + 1));
971
+
972
+ if (colors && colors[i]) {
973
+ trendSeries.color = colors[i];
974
+ }
975
+
976
+ chart_series.push(trendSeries);
977
+ }
978
+
953
979
  i++;
954
980
  });
955
981
 
@@ -970,30 +996,48 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
970
996
  }
971
997
  }
972
998
 
999
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded(chart_series, pivotData, chartOptions, additionOptions, opts);
1000
+
1001
+ if (opts.total) {
1002
+ const newSeries = lodash.clone(chart_series[chart_series.length - 1]);
1003
+ newSeries.name = 'Total';
1004
+ newSeries.data = [];
1005
+ col_n_keys.forEach(columnKey => {
1006
+ let totalKey = columnKey;
1007
+ if (lodash.isArray(columnKey)) {
1008
+ totalKey = totalKey.join(' , ');
1009
+ }
1010
+ newSeries.data.push(pivotData.colTotals[totalKey].sum);
1011
+ })
1012
+
1013
+ chart_series.push(newSeries);
1014
+ }
1015
+
973
1016
  return chart_series;
974
1017
  };
975
1018
 
976
-
977
- highchartsRenderer.ptCreateColumnSeries = function (pivotData, colors, onlyNumbers, isUniqueVals, isNotDrilldown, additionOptions) {
1019
+ highchartsRenderer.ptCreateColumnSeries = function (pivotData, colors, onlyNumbers, isUniqueVals, isNotDrilldown, additionOptions, opts, chartOptions) {
978
1020
  var chart_series = [],
979
1021
  row_n_keys = pivotData.getRowKeys(),
980
1022
  col_n_keys = pivotData.getColKeys();
981
- var num_cols = col_n_keys.length;
982
- var num_rows = row_n_keys.length;
983
1023
 
984
1024
  var has_delta = false;
985
1025
  if (additionOptions && lodash.has(additionOptions, "delta_column.field") && additionOptions.delta_column.field == "series") {
986
1026
  has_delta = true;
987
1027
  }
988
1028
 
989
-
990
1029
  if (row_n_keys.length == 0)
991
1030
  row_n_keys.push([]);
992
1031
 
993
1032
  var i = 0;
994
1033
  var variat_serias = null;
1034
+ const n = col_n_keys.length;
1035
+ const xSum = (1 + n) / 2 * n;
995
1036
 
996
1037
  lodash.forEach(row_n_keys, function (row_n_value) {
1038
+ let ySum = 0;
1039
+ let xySum = 0;
1040
+ let squareXSum = 0;
997
1041
  var ob = {};
998
1042
  ob.data = [];
999
1043
  if (row_n_value && row_n_value.length > 0)
@@ -1006,7 +1050,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1006
1050
  style: highchartsRenderer.getDataLabelsStyle(additionOptions)
1007
1051
  }
1008
1052
 
1009
- lodash.forEach(col_n_keys, function (col_n_value) {
1053
+ lodash.forEach(col_n_keys, function (col_n_value, index) {
1010
1054
  var agg = pivotData.getAggregator(row_n_value, col_n_value);
1011
1055
  var val = agg.value();
1012
1056
 
@@ -1040,6 +1084,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1040
1084
  if (!isNotDrilldown)
1041
1085
  tmoobj.drilldown = true;
1042
1086
 
1087
+ xySum += Number(val) * (index + 1);
1088
+ ySum += Number(val);
1089
+ squareXSum += (index + 1) * (index + 1);
1043
1090
  ob.data.push(tmoobj);
1044
1091
  });
1045
1092
 
@@ -1053,6 +1100,23 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1053
1100
  }
1054
1101
 
1055
1102
  chart_series.push(ob);
1103
+
1104
+ if (opts.trendLine) {
1105
+ const a = ((ySum * squareXSum) - (xSum * xySum)) / ((n * squareXSum) - (xSum * xSum));
1106
+ const b = ((n * xySum) - (xSum* ySum)) / ((n * squareXSum) - (xSum * xSum));
1107
+
1108
+ const trendSeries = lodash.clone(chart_series[chart_series.length - 1]);
1109
+ trendSeries.name = 'Trend Line (' + trendSeries.name + ')';
1110
+ trendSeries.dashStyle = 'shortdot';
1111
+ trendSeries.type = 'line';
1112
+ trendSeries.data = trendSeries.data.map((data, index) => ({name: data.name, y: a + b * (index + 1)}));
1113
+
1114
+ if (colors && colors[i]) {
1115
+ trendSeries.color = colors[i];
1116
+ }
1117
+
1118
+ chart_series.push(trendSeries);
1119
+ }
1056
1120
  i++;
1057
1121
  });
1058
1122
 
@@ -1064,18 +1128,68 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1064
1128
  }
1065
1129
  }
1066
1130
 
1131
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded(chart_series, pivotData, chartOptions, additionOptions, opts);
1132
+
1133
+ let weights = { line: 2,spline: 3 ,area:-2, areaspline: -1, scatter:4, column: 1 };
1134
+
1135
+ if (opts.comboOptions && opts.comboOptions.seriesOptions.length) {
1136
+ opts.comboOptions.seriesOptions.forEach(option => {
1137
+ chart_series.forEach(series => {
1138
+ if (option.series === series.name) {
1139
+ switch (option.chartType) {
1140
+ case 'line-chart':
1141
+ series.type = 'line';
1142
+ break;
1143
+ case 'line-chart-smooth':
1144
+ series.type = 'spline';
1145
+ break;
1146
+ case 'area-chart':
1147
+ series.type = 'area';
1148
+ break;
1149
+ case 'area-chart-smooth':
1150
+ series.type = 'areaspline';
1151
+ break;
1152
+ case 'scatter-chart':
1153
+ series.type = 'scatter';
1154
+ break;
1155
+ case 'column-chart' || 'column-chart-stacked':
1156
+ delete series.type;
1157
+ break;
1158
+ }
1159
+ }
1160
+ })
1161
+ })
1162
+ }
1163
+
1164
+ if (opts.total) {
1165
+ const totalSeries = lodash.clone(chart_series[chart_series.length - 1]);
1166
+ totalSeries.name = 'Total';
1167
+ totalSeries.data = [];
1168
+ col_n_keys.forEach(columnKey => {
1169
+ let key = columnKey;
1170
+ let totalKey = columnKey;
1171
+ if (lodash.isArray(columnKey)) {
1172
+ key = columnKey[0];
1173
+ totalKey = totalKey.join(' , ');
1174
+ }
1175
+ totalSeries.data.push({name: lodash.unescape(key), y: pivotData.colTotals[totalKey].sum});
1176
+ });
1177
+
1178
+ chart_series.push(totalSeries);
1179
+ }
1180
+
1181
+ chart_series.sort((a,b) => {
1182
+ return (weights[a.type] || 0) > (weights[b.type] || 0) ? 1 : (weights[a.type] || 0) < (weights[b.type] || 0) ? -1 : 0
1183
+ });
1184
+
1067
1185
  return chart_series;
1068
- };
1186
+ }
1069
1187
 
1070
1188
  highchartsRenderer.getVariantSeries = function (series, delta_column_options) {
1071
1189
  const varianceColor = delta_column_options.color || highchartsRenderer.variance_color || Highcharts.getOptions().colors[7];
1072
1190
  series.name = delta_column_options.name.replace('_', '');
1073
1191
  series.color = varianceColor;
1074
1192
 
1075
- if (!delta_column_options.only_variant && !delta_column_options.same_yaxis) {
1076
- series.yAxis = 1;
1077
- }
1078
-
1079
1193
  if (delta_column_options.point_click_event) {
1080
1194
  series.allowPointSelect = true;
1081
1195
  series.point = {
@@ -1103,7 +1217,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1103
1217
  series.marker = {
1104
1218
  lineColor: varianceColor
1105
1219
  };
1106
- } else if (delta_column_options.chart == 'column') {
1220
+ } else if (delta_column_options.chart == 'column' || delta_column_options.chart == 'combo') {
1107
1221
  series.type = 'column';
1108
1222
  } else {
1109
1223
  series.type = 'spline';
@@ -1148,8 +1262,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1148
1262
  return series;
1149
1263
  }
1150
1264
 
1151
-
1152
- highchartsRenderer.ptCreateSeriesToDrillDownChart = function (pivotData) {
1265
+ highchartsRenderer.ptCreateSeriesToDrillDownChart = function (pivotData, chartOptions, additionOptions, opts) {
1153
1266
  var pie_series = [];
1154
1267
 
1155
1268
  var col_n_keys = pivotData.getColKeys();
@@ -1180,13 +1293,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1180
1293
  pie_series.push(ob);
1181
1294
  });
1182
1295
 
1296
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded(pie_series, pivotData, chartOptions, additionOptions, opts);
1297
+
1183
1298
  return ([{
1184
1299
  colorByPoint: true,
1185
1300
  data: pie_series
1186
1301
  }]);
1187
1302
  };
1188
1303
 
1189
- highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart = function (pivotData) {
1304
+ highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart = function (pivotData, chartOptions, additionOptions, opts) {
1190
1305
 
1191
1306
  var pie_drill_down_series = [],
1192
1307
  row_n_keys = pivotData.getRowKeys(),
@@ -1224,12 +1339,60 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1224
1339
  }
1225
1340
  });
1226
1341
 
1342
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded(pie_drill_down_series, pivotData, chartOptions, additionOptions, opts);
1227
1343
 
1228
1344
  return ({
1229
1345
  series: pie_drill_down_series
1230
1346
  });
1231
1347
  };
1232
1348
 
1349
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded = function(chartSeries, pivotData, chartOptions, additionOptions, opts) {
1350
+ if (!opts || !opts.comboOptions) {
1351
+ return;
1352
+ }
1353
+
1354
+ let addSecondYAxis = false;
1355
+ lodash.forEach(chartSeries, function (series) {
1356
+ let sOptions = lodash.find(opts.comboOptions.seriesOptions, function(sOptions) {
1357
+ return sOptions.series === series.name || sOptions.series.replace('_', '') === series.name
1358
+ });
1359
+ if (sOptions && sOptions.secondaryAxis) {
1360
+ series.yAxis = 1;
1361
+ addSecondYAxis = true;
1362
+ }
1363
+ });
1364
+
1365
+ if (addSecondYAxis) {
1366
+ highchartsRenderer.addSecondYAxis(pivotData, chartOptions, additionOptions, opts);
1367
+ }
1368
+ }
1369
+
1370
+ highchartsRenderer.addSecondYAxis = function (pivotData, chartOptions, additionOptions, opts) {
1371
+ const varianceColor = (additionOptions && additionOptions.delta_column.color) || (highchartsRenderer && highchartsRenderer.variance_color) || Highcharts.getOptions().colors[7];
1372
+ let labels_formatter = opts.comboOptions.secondaryAxisSettings.is_percentage ?
1373
+ highchartsRenderer.persantageValueLabelsFormatter(pivotData, opts) :
1374
+ highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts);
1375
+
1376
+ chartOptions.yAxis = [chartOptions.yAxis];
1377
+ chartOptions.yAxis[1] = {
1378
+ min: !isNaN(parseInt(opts.comboOptions.secondaryAxisSettings.min)) ? opts.comboOptions.secondaryAxisSettings.min : null,
1379
+ max: !isNaN(parseInt(opts.comboOptions.secondaryAxisSettings.max)) ? opts.comboOptions.secondaryAxisSettings.max : null,
1380
+ title: {
1381
+ text: opts.comboOptions.secondaryAxisSettings.name,
1382
+ style: {
1383
+ color: varianceColor
1384
+ }
1385
+ },
1386
+ labels: {
1387
+ formatter: labels_formatter,
1388
+ style: {
1389
+ color: varianceColor
1390
+ }
1391
+ },
1392
+ opposite: true
1393
+ }
1394
+ };
1395
+
1233
1396
  highchartsRenderer.ptRenderBasicPie = function (pivotData, opts) {
1234
1397
  var chartOptions = {};
1235
1398
  var additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('pie-chart');
@@ -1409,7 +1572,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1409
1572
  }
1410
1573
 
1411
1574
  chartOptions.xAxis = {categories: pivotData.getColKeys()};
1412
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true);
1575
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, null, null, opts, chartOptions);
1413
1576
 
1414
1577
  var total = [];
1415
1578
  lodash.forEach(chartOptions.series, function (obj) {
@@ -1550,7 +1713,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1550
1713
 
1551
1714
 
1552
1715
  chartOptions.xAxis = {categories: pivotData.getColKeys()};
1553
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true);
1716
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, null, null, opts, chartOptions);
1554
1717
 
1555
1718
  var total = [];
1556
1719
  lodash.forEach(chartOptions.series, function (obj) {
@@ -1644,7 +1807,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1644
1807
  };
1645
1808
  var uniqueVals = kpioptions.value.value == "Unique";
1646
1809
 
1647
- let temp_series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, uniqueVals);
1810
+ let temp_series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, uniqueVals, null, opts, chartOptions);
1648
1811
 
1649
1812
  var total = [];
1650
1813
  lodash.forEach(temp_series, function (obj) {
@@ -1764,12 +1927,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1764
1927
  if (useNewUx) {
1765
1928
  chartOptions.tooltip.borderColor = '#fff';
1766
1929
  }
1767
- chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData);
1930
+ chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData, chartOptions, additionOptions, opts);
1768
1931
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, 1, false, true);
1769
1932
  if (drilldownFunc)
1770
1933
  chartOptions.drilldown = {}
1771
1934
  else
1772
- chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData);
1935
+ chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData, chartOptions, additionOptions, opts);
1773
1936
 
1774
1937
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
1775
1938
 
@@ -1826,7 +1989,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1826
1989
  formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts)
1827
1990
  }
1828
1991
  };
1829
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
1830
1992
 
1831
1993
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, true);
1832
1994
 
@@ -1871,7 +2033,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1871
2033
  }
1872
2034
  };
1873
2035
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
1874
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions);
2036
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions, opts, chartOptions);
1875
2037
 
1876
2038
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
1877
2039
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
@@ -1902,8 +2064,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1902
2064
  }
1903
2065
  };
1904
2066
 
1905
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
1906
-
1907
2067
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, true);
1908
2068
 
1909
2069
  chartOptions.plotOptions = {
@@ -1950,7 +2110,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1950
2110
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
1951
2111
 
1952
2112
  var colors = ['#ff0202', '#b3060e', '#70000a'];
1953
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, colors, null, null, additionOptions);
2113
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, colors, null, null, additionOptions, opts, chartOptions);
1954
2114
 
1955
2115
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
1956
2116
 
@@ -1972,34 +2132,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1972
2132
 
1973
2133
  }
1974
2134
 
1975
- highchartsRenderer.addSecondYAxisIfNeed = function (pivotData, chartOptions, additionOptions, opts) {
1976
- if (additionOptions && additionOptions.delta_column && additionOptions.delta_column.field == "series") {
1977
- chartOptions.yAxis = [chartOptions.yAxis];
1978
-
1979
- let labels_formatter = highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts);
1980
- if (additionOptions.delta_column.is_percentage) {
1981
- labels_formatter = highchartsRenderer.persantageValueLabelsFormatter(pivotData, opts);
1982
- }
1983
-
1984
- const varianceColor = additionOptions.delta_column.color || highchartsRenderer.variance_color || Highcharts.getOptions().colors[7];
1985
- chartOptions.yAxis[1] = {
1986
- title: {
1987
- text: additionOptions.delta_column.name.replace('_', ''),
1988
- style: {
1989
- color: varianceColor
1990
- }
1991
- },
1992
- labels: {
1993
- formatter: labels_formatter,
1994
- style: {
1995
- color: varianceColor
1996
- }
1997
- },
1998
- opposite: true
1999
- }
2000
- }
2001
- };
2002
-
2003
2135
  highchartsRenderer.ptRenderSpLine = function (pivotData, opts) {
2004
2136
  var chartOptions = {};
2005
2137
  var rowAttrs = pivotData.rowAttrs;
@@ -2025,8 +2157,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2025
2157
  }
2026
2158
  };
2027
2159
 
2028
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
2029
-
2030
2160
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, true);
2031
2161
 
2032
2162
  chartOptions.plotOptions = {
@@ -2068,7 +2198,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2068
2198
  }
2069
2199
  };
2070
2200
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2071
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions);
2201
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions, opts, chartOptions);
2072
2202
 
2073
2203
  highchartsRenderer.handleGridLines(additionOptions, chartOptions);
2074
2204
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
@@ -2116,7 +2246,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2116
2246
  }
2117
2247
  };
2118
2248
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2119
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2249
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2120
2250
 
2121
2251
  highchartsRenderer.handleGridLines(additionOptions, chartOptions);
2122
2252
 
@@ -2213,7 +2343,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2213
2343
  },
2214
2344
  lineWidth: 0
2215
2345
  };
2216
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2346
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2217
2347
 
2218
2348
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, false);
2219
2349
 
@@ -2275,8 +2405,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2275
2405
  }
2276
2406
  };
2277
2407
 
2278
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
2279
-
2280
2408
  chartOptions.tooltip = {
2281
2409
  formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
2282
2410
  shadow: highchartsRenderer.tooltipShadow,
@@ -2290,7 +2418,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2290
2418
  highchartsRenderer.handleGridLines(additionOptions, chartOptions);
2291
2419
 
2292
2420
  var isNotDrilldown = !(colAttrs && colAttrs.length > 1);
2293
- chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, null, null, null, isNotDrilldown, additionOptions);
2421
+ if (lodash.get(opts, 'paletteOptions.widgetPalette', null)) {
2422
+ const mc_palette = lodash.find(lodash.get(opts.paletteOptions, 'monochromePalettes', []), { selected: true });
2423
+ chartOptions.colors = mc_palette ? mc_palette.colors : opts.paletteOptions.widgetPalette;
2424
+ } else if (lodash.get(opts, 'paletteOptions.dashboardPalette.colors', null)) {
2425
+ chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
2426
+ }
2427
+ chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, chartOptions.colors, null, null, isNotDrilldown, additionOptions, opts, chartOptions);
2294
2428
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2295
2429
  chartOptions.plotOptions = {
2296
2430
  column: {
@@ -2458,7 +2592,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2458
2592
  };
2459
2593
  //chartOptions.xAxis = { categories: pivotData.getColKeys() };
2460
2594
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2461
- chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, null, null, true, true);
2595
+ if (lodash.get(opts, 'paletteOptions.widgetPalette', null)) {
2596
+ const mc_palette = lodash.find(lodash.get(opts.paletteOptions, 'monochromePalettes', []), { selected: true });
2597
+ chartOptions.colors = mc_palette ? mc_palette.colors : opts.paletteOptions.widgetPalette;
2598
+ } else if (lodash.get(opts, 'paletteOptions.dashboardPalette.colors', null)) {
2599
+ chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
2600
+ }
2601
+ chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, chartOptions.colors, null, true, true, null, opts, chartOptions);
2462
2602
  //chartOptions.drilldown = {}
2463
2603
 
2464
2604
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
@@ -2535,11 +2675,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2535
2675
 
2536
2676
  chartOptions.xAxis = {type: 'category'};
2537
2677
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2538
- chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData);
2678
+ chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData, chartOptions, additionOptions, opts);
2539
2679
  //if (drilldownFunc)
2540
2680
  // chartOptions.drilldown = {}
2541
2681
  //else
2542
- chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData);
2682
+ chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData, chartOptions, additionOptions, opts);
2543
2683
 
2544
2684
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
2545
2685
 
@@ -2610,7 +2750,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2610
2750
  }
2611
2751
  };
2612
2752
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2613
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2753
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2614
2754
 
2615
2755
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
2616
2756
 
@@ -2724,7 +2864,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2724
2864
  }
2725
2865
  };
2726
2866
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2727
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2867
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2728
2868
 
2729
2869
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
2730
2870
 
@@ -2813,6 +2953,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2813
2953
  return format;
2814
2954
  }
2815
2955
 
2956
+ highchartsRenderer.isRowKeyShouldBePercentage = function(render_options, rowKey) {
2957
+ if (render_options && render_options.comboOptions && render_options.comboOptions.secondaryAxisSettings &&
2958
+ render_options.comboOptions.secondaryAxisSettings.is_percentage) {
2959
+ const rowKeyString = rowKey.join(highchartsRenderer.delimer);
2960
+ const rowKeyOptions = lodash.find(render_options.comboOptions.seriesOptions, {series: rowKeyString});
2961
+ if (rowKeyOptions && rowKeyOptions.secondaryAxis) {
2962
+ return true;
2963
+ }
2964
+ }
2965
+ return false;
2966
+ }
2967
+
2816
2968
  highchartsRenderer.ignoreIfCalculatedValue = function(data, rowKey, colKey, record, associatedFields, renderOptions, isGraph) {
2817
2969
  var eliminate = renderOptions && renderOptions.chartOptions && renderOptions.chartOptions.table_options &&
2818
2970
  renderOptions.chartOptions.table_options.eliminate_calc_totals && !_.isEmpty(associatedFields) && !isGraph;
@@ -2832,17 +2984,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2832
2984
 
2833
2985
  highchartsRenderer.rhPivotCount = function (arg, widget_values_format, is_graph, render_options, calculated_info) {
2834
2986
  var attr = arg[0];
2835
- var has_variants_persentage = false;
2836
- var variant_name = '';
2837
-
2838
- if (render_options && render_options.chartOptions &&
2839
- render_options.chartOptions.delta_column &&
2840
- render_options.chartOptions.delta_column.field === 'series' &&
2841
- render_options.chartOptions.delta_column.is_percentage) {
2842
- has_variants_persentage = true;
2843
- variant_name = render_options.chartOptions.delta_column.name;
2844
- }
2845
-
2846
2987
  return function (data, rowKey, colKey) {
2847
2988
  return {
2848
2989
  sum: 0,
@@ -2864,10 +3005,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2864
3005
  this.formats = lodash.uniq(this.formats);
2865
3006
  }
2866
3007
 
2867
- if (has_variants_persentage) {
2868
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
2869
- this.widget_values_format = "#,###%";
2870
- }
3008
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3009
+ this.widget_values_format = "#,###%";
2871
3010
  }
2872
3011
 
2873
3012
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -2987,17 +3126,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2987
3126
  };
2988
3127
 
2989
3128
  highchartsRenderer.rhPivotAggregatorSum = function (arg, widget_values_format, is_graph, render_options, calculated_info) {
2990
- var attr;
2991
- attr = arg[0];
2992
- var has_variants_persentage = false;
2993
- var variant_name = '';
2994
- if (render_options && render_options.chartOptions &&
2995
- render_options.chartOptions.delta_column &&
2996
- render_options.chartOptions.delta_column.field == "series" &&
2997
- render_options.chartOptions.delta_column.is_percentage) {
2998
- has_variants_persentage = true;
2999
- variant_name = render_options.chartOptions.delta_column.name;
3000
- }
3129
+ var attr = arg[0];
3001
3130
  return function (data, rowKey, colKey) {
3002
3131
  return {
3003
3132
  sum: 0,
@@ -3030,10 +3159,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3030
3159
  this.formats = lodash.uniq(this.formats);
3031
3160
  }
3032
3161
 
3033
- if (has_variants_persentage) {
3034
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3035
- this.widget_values_format = "#,###%";
3036
- }
3162
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3163
+ this.widget_values_format = "#,###%";
3037
3164
  }
3038
3165
 
3039
3166
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3087,17 +3214,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3087
3214
  };
3088
3215
 
3089
3216
  highchartsRenderer.rhPivotAggregatorMin = function (arg, widget_values_format, is_graph, render_options, calculated_info) {
3090
- var attr;
3091
- attr = arg[0];
3092
- var has_variants_persentage = false;
3093
- var variant_name = '';
3094
- if (render_options && render_options.chartOptions &&
3095
- render_options.chartOptions.delta_column &&
3096
- render_options.chartOptions.delta_column.field == "series" &&
3097
- render_options.chartOptions.delta_column.is_percentage) {
3098
- has_variants_persentage = true;
3099
- variant_name = render_options.chartOptions.delta_column.name;
3100
- }
3217
+ var attr = arg[0];
3101
3218
  return function (data, rowKey, colKey) {
3102
3219
  return {
3103
3220
  val: null,
@@ -3131,10 +3248,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3131
3248
  this.formats = lodash.uniq(this.formats);
3132
3249
  }
3133
3250
 
3134
- if (has_variants_persentage) {
3135
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3136
- this.widget_values_format = "#,###%";
3137
- }
3251
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3252
+ this.widget_values_format = "#,###%";
3138
3253
  }
3139
3254
 
3140
3255
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3185,17 +3300,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3185
3300
  };
3186
3301
 
3187
3302
  highchartsRenderer.rhPivotAggregatorMax = function (arg, widget_values_format, is_graph, render_options, calculated_info) {
3188
- var attr;
3189
- attr = arg[0];
3190
- var has_variants_persentage = false;
3191
- var variant_name = '';
3192
- if (render_options && render_options.chartOptions &&
3193
- render_options.chartOptions.delta_column &&
3194
- render_options.chartOptions.delta_column.field == "series" &&
3195
- render_options.chartOptions.delta_column.is_percentage) {
3196
- has_variants_persentage = true;
3197
- variant_name = render_options.chartOptions.delta_column.name;
3198
- }
3303
+ var attr = arg[0];
3199
3304
  return function (data, rowKey, colKey) {
3200
3305
  return {
3201
3306
  val: null,
@@ -3229,10 +3334,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3229
3334
  this.formats = lodash.uniq(this.formats);
3230
3335
  }
3231
3336
 
3232
- if (has_variants_persentage) {
3233
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3234
- this.widget_values_format = "#,###%";
3235
- }
3337
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3338
+ this.widget_values_format = "#,###%";
3236
3339
  }
3237
3340
 
3238
3341
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3283,17 +3386,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3283
3386
  };
3284
3387
 
3285
3388
  highchartsRenderer.rhPivotAggregatorAverage = function (arg, widget_values_format, is_graph, render_options, calculated_info) {
3286
- var attr;
3287
- attr = arg[0];
3288
- var has_variants_persentage = false;
3289
- var variant_name = '';
3290
- if (render_options && render_options.chartOptions &&
3291
- render_options.chartOptions.delta_column &&
3292
- render_options.chartOptions.delta_column.field == "series" &&
3293
- render_options.chartOptions.delta_column.is_percentage) {
3294
- has_variants_persentage = true;
3295
- variant_name = render_options.chartOptions.delta_column.name;
3296
- }
3389
+ var attr = arg[0];
3297
3390
  return function (data, rowKey, colKey) {
3298
3391
  return {
3299
3392
  sum: 0,
@@ -3328,10 +3421,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3328
3421
  this.formats = lodash.uniq(this.formats);
3329
3422
  }
3330
3423
 
3331
- if (has_variants_persentage) {
3332
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3333
- this.widget_values_format = "#,###%";
3334
- }
3424
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3425
+ this.widget_values_format = "#,###%";
3335
3426
  }
3336
3427
 
3337
3428
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3879,11 +3970,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3879
3970
  pivotData.sorters = new_sorting_function;
3880
3971
  }
3881
3972
 
3882
- if (totalFilters && totalFilters.filter_options) {
3883
- result = highchartsRenderer.generateFilteredResult(totalFilters, optsFiltered, rowData, opts, pivotData);
3884
- } else {
3885
- result = opts.renderer(pivotData, opts.rendererOptions);
3886
- }
3973
+ result = opts.renderer(pivotData, opts.rendererOptions);
3887
3974
  } catch (_error) {
3888
3975
  e = _error;
3889
3976
  if (typeof console !== "undefined" && console !== null) {
@@ -4283,6 +4370,27 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4283
4370
  delete options.chartOptions.label;
4284
4371
  }
4285
4372
  }
4373
+
4374
+ if (!options.comboOptions) {
4375
+ options.comboOptions = {
4376
+ secondaryAxisSettings: {
4377
+ name: 'Secondary Axis',
4378
+ max: null,
4379
+ min: null,
4380
+ is_percentage: false,
4381
+ },
4382
+ seriesOptions: []
4383
+ }
4384
+ if (options.chartOptions.delta_column && options.chartOptions.delta_column.field === 'series') {
4385
+ options.comboOptions.seriesOptions.push({
4386
+ series: options.chartOptions.delta_column.name,
4387
+ chartType: options.chartOptions.delta_column.chart,
4388
+ secondaryAxis: !options.chartOptions.delta_column.same_yaxis,
4389
+ });
4390
+ options.comboOptions.secondaryAxisSettings.name = options.chartOptions.delta_column.name.replace('_', '');
4391
+ options.comboOptions.secondaryAxisSettings.is_percentage = options.chartOptions.delta_column.is_percentage;
4392
+ }
4393
+ }
4286
4394
  };
4287
4395
 
4288
4396
  highchartsRenderer.addPivotOptions = function (selectedTemplateWOData, widgetOptions, drilldownFunction, drillDownListFunction) {
@@ -4888,6 +4996,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4888
4996
  value_name: 'remove_underscores',
4889
4997
  default_value: true
4890
4998
  },
4999
+ {
5000
+ element_type: 'checkbox',
5001
+ element_label: 'Use big data table',
5002
+ value_name: 'use_handsOnTable',
5003
+ default_value: false
5004
+ },
4891
5005
  {
4892
5006
  element_type: 'checkbox',
4893
5007
  element_label: 'Use new table design',
@@ -5412,7 +5526,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5412
5526
  element_options: [
5413
5527
  {label: 'Markers', value: ''},
5414
5528
  {label: 'Line', value: 'line'},
5529
+ {label: 'Smooth Line', value: 'spline'},
5415
5530
  {label: 'Column', value: 'column'},
5531
+ {label: 'Area', value: 'area'},
5532
+ {label: 'Smooth Area', value: 'areaspline'},
5416
5533
  ],
5417
5534
  default_value: ''
5418
5535
  }, {
@@ -5424,7 +5541,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5424
5541
  element_type: 'checkbox',
5425
5542
  element_label: 'Same yAxis',
5426
5543
  value_name: 'same_yaxis',
5427
- default_value: false
5544
+ default_value: false,
5545
+ hidden: true,
5428
5546
  }, {
5429
5547
  element_type: 'checkbox',
5430
5548
  element_label: 'Same xAxis',
@@ -5434,17 +5552,20 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5434
5552
  element_type: 'checkbox',
5435
5553
  element_label: 'Percentage',
5436
5554
  value_name: 'is_percentage',
5437
- default_value: false
5555
+ default_value: false,
5556
+ hidden: true,
5438
5557
  }, {
5439
5558
  element_type: 'checkbox',
5440
5559
  element_label: 'Sort by variance',
5441
5560
  value_name: 'sort_by_variance',
5442
- default_value: false
5561
+ default_value: false,
5562
+ hidden: true
5443
5563
  }, {
5444
5564
  element_type: 'checkbox',
5445
5565
  element_label: 'Sort by absolute variance',
5446
5566
  value_name: 'sort_by_absolute_variance',
5447
- default_value: false
5567
+ default_value: false,
5568
+ hidden: true
5448
5569
  }]
5449
5570
  },
5450
5571
  'delta_column_for_drill_down': {
@@ -5483,7 +5604,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5483
5604
  element_options: [
5484
5605
  {label: 'Markers', value: ''},
5485
5606
  {label: 'Line', value: 'line'},
5607
+ {label: 'Smooth Line', value: 'spline'},
5486
5608
  {label: 'Column', value: 'column'},
5609
+ {label: 'Area', value: 'area'},
5610
+ {label: 'Smooth Area', value: 'areaspline'},
5487
5611
  ],
5488
5612
  default_value: ''
5489
5613
  }, {
@@ -5495,7 +5619,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5495
5619
  element_type: 'checkbox',
5496
5620
  element_label: 'Same yAxis',
5497
5621
  value_name: 'same_yaxis',
5498
- default_value: false
5622
+ default_value: false,
5623
+ hidden: true,
5499
5624
  }, {
5500
5625
  element_type: 'checkbox',
5501
5626
  element_label: 'Same xAxis',
@@ -5505,7 +5630,85 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5505
5630
  element_type: 'checkbox',
5506
5631
  element_label: 'Percentage',
5507
5632
  value_name: 'is_percentage',
5633
+ default_value: false,
5634
+ hidden: true,
5635
+ }, {
5636
+ element_type: 'checkbox',
5637
+ element_label: 'Sort by variance',
5638
+ value_name: 'sort_by_variance',
5508
5639
  default_value: false
5640
+ }, {
5641
+ element_type: 'checkbox',
5642
+ element_label: 'Sort by absolute variance',
5643
+ value_name: 'sort_by_absolute_variance',
5644
+ default_value: false
5645
+ }, {
5646
+ element_type: 'checkbox',
5647
+ element_label: 'Filter zero values',
5648
+ value_name: 'is_filter_zero',
5649
+ default_value: false
5650
+ }]
5651
+ },
5652
+ 'delta_column_combo': {
5653
+ category_class: 'google-visualization-charteditor-mini-more',
5654
+ category_label: 'Variance',
5655
+ category_type: 'delta_column',
5656
+ elements: [{
5657
+ element_type: 'radio',
5658
+ value_name: 'field',
5659
+ element_label: 'Select Field',
5660
+ element_options: [
5661
+ {label: 'None', value: ''},
5662
+ {label: 'Axis', value: 'category'},
5663
+ {label: 'Legend', value: 'series'},
5664
+ ],
5665
+ default_value: ''
5666
+ }, {
5667
+ element_type: 'input',
5668
+ value_name: 'name',
5669
+ element_label: 'Name',
5670
+ default_value: '_Variance'
5671
+ }, {
5672
+ element_type: 'input',
5673
+ value_name: 'formula',
5674
+ element_label: 'Formula',
5675
+ default_value: 'x2-x1'
5676
+ }, {
5677
+ hidden: true,
5678
+ element_type: 'radio',
5679
+ value_name: 'chart',
5680
+ element_label: 'Chart',
5681
+ element_options: [
5682
+ {label: 'Markers', value: ''},
5683
+ {label: 'Line', value: 'line'},
5684
+ {label: 'Smooth Line', value: 'spline'},
5685
+ {label: 'Column', value: 'column'},
5686
+ {label: 'Area', value: 'area'},
5687
+ {label: 'Smooth Area', value: 'areaspline'},
5688
+ ],
5689
+ default_value: ''
5690
+ }, {
5691
+ element_type: 'checkbox',
5692
+ element_label: 'Only variance',
5693
+ value_name: 'only_variant',
5694
+ default_value: false
5695
+ }, {
5696
+ element_type: 'checkbox',
5697
+ element_label: 'Same yAxis',
5698
+ value_name: 'same_yaxis',
5699
+ default_value: false,
5700
+ hidden: true,
5701
+ }, {
5702
+ element_type: 'checkbox',
5703
+ element_label: 'Same xAxis',
5704
+ value_name: 'same_xaxis',
5705
+ default_value: false
5706
+ }, {
5707
+ element_type: 'checkbox',
5708
+ element_label: 'Percentage',
5709
+ value_name: 'is_percentage',
5710
+ default_value: false,
5711
+ hidden: true,
5509
5712
  }, {
5510
5713
  element_type: 'checkbox',
5511
5714
  element_label: 'Sort by variance',
@@ -5516,6 +5719,85 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5516
5719
  element_label: 'Sort by absolute variance',
5517
5720
  value_name: 'sort_by_absolute_variance',
5518
5721
  default_value: false
5722
+ }]
5723
+ },
5724
+ 'delta_column_for_drill_down_combo': {
5725
+ category_class: 'google-visualization-charteditor-mini-more',
5726
+ category_label: 'Variance',
5727
+ category_type: 'delta_column',
5728
+ elements: [{
5729
+ element_type: 'radio',
5730
+ value_name: 'field',
5731
+ element_label: 'Select Field',
5732
+ element_options: [
5733
+ {label: 'None', value: ''},
5734
+ {label: 'Axis', value: 'category'},
5735
+ {label: 'Legend', value: 'series'},
5736
+ ],
5737
+ default_value: ''
5738
+ }, {
5739
+ element_type: 'input',
5740
+ value_name: 'name',
5741
+ element_label: 'Name',
5742
+ default_value: '_Variance'
5743
+ }, {
5744
+ element_type: 'input',
5745
+ value_name: 'formula',
5746
+ element_label: 'Formula',
5747
+ default_value: 'x2-x1'
5748
+ }, {
5749
+ element_type: 'input',
5750
+ value_name: 'color',
5751
+ element_label: 'Color',
5752
+ default_value: ''
5753
+ }, {
5754
+ hidden: true,
5755
+ element_type: 'radio',
5756
+ value_name: 'chart',
5757
+ element_label: 'Chart',
5758
+ element_options: [
5759
+ {label: 'Markers', value: ''},
5760
+ {label: 'Line', value: 'line'},
5761
+ {label: 'Smooth Line', value: 'spline'},
5762
+ {label: 'Column', value: 'column'},
5763
+ {label: 'Area', value: 'area'},
5764
+ {label: 'Smooth Area', value: 'areaspline'},
5765
+ ],
5766
+ default_value: ''
5767
+ }, {
5768
+ element_type: 'checkbox',
5769
+ element_label: 'Only variance',
5770
+ value_name: 'only_variant',
5771
+ default_value: false
5772
+ }, {
5773
+ element_type: 'checkbox',
5774
+ element_label: 'Same yAxis',
5775
+ value_name: 'same_yaxis',
5776
+ default_value: false,
5777
+ hidden: true,
5778
+ }, {
5779
+ element_type: 'checkbox',
5780
+ element_label: 'Same xAxis',
5781
+ value_name: 'same_xaxis',
5782
+ default_value: false
5783
+ }, {
5784
+ element_type: 'checkbox',
5785
+ element_label: 'Percentage',
5786
+ value_name: 'is_percentage',
5787
+ default_value: false,
5788
+ hidden: true,
5789
+ }, {
5790
+ element_type: 'checkbox',
5791
+ element_label: 'Sort by variance',
5792
+ value_name: 'sort_by_variance',
5793
+ default_value: false,
5794
+ hidden: true
5795
+ }, {
5796
+ element_type: 'checkbox',
5797
+ element_label: 'Sort by absolute variance',
5798
+ value_name: 'sort_by_absolute_variance',
5799
+ default_value: false,
5800
+ hidden: true
5519
5801
  }, {
5520
5802
  element_type: 'checkbox',
5521
5803
  element_label: 'Filter zero values',
@@ -5580,6 +5862,39 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5580
5862
  };
5581
5863
 
5582
5864
  highchartsRenderer.chartsTypesInfo = {
5865
+ 'combo-chart': {
5866
+ name: 'Column Combo Chart ',
5867
+ label: 'Column Combo Chart ',
5868
+ title: 'Allows for multiple chart display formats in one widget',
5869
+ description: 'For example, Revenue and Cost of goods sold as clomuns, and Gross margin as a line',
5870
+ axisName: 'X - Axis',
5871
+ legendName: 'Data series',
5872
+ startedMessage: 'To add multiple chart types, click on “Combo Chart Options“. A Secondary Axis is available in this chart',
5873
+ axisTooltipTitle: 'Drag one or more fields here to create your x-axis.',
5874
+ legendTooltipTitle: 'Click to display these data series as line or area charts',
5875
+ },
5876
+ 'combo-column-chart': {
5877
+ name: 'Column Combo Chart ',
5878
+ label: 'Column Chart',
5879
+ title: 'Allows for multiple chart display formats in one widget',
5880
+ description: 'For example, Revenue and Cost of goods sold as clomuns, and Gross margin as a line',
5881
+ axisName: 'X - Axis',
5882
+ legendName: 'Data series',
5883
+ startedMessage: 'To add multiple chart types, click on “Combo Chart Options“. A Secondary Axis is available in this chart.',
5884
+ axisTooltipTitle: 'Drag one or more fields here to create your x-axis.',
5885
+ legendTooltipTitle: 'Click to display these data series as line or area charts.',
5886
+ },
5887
+ 'combo-stacked-chart': {
5888
+ name: 'Stacked Column Combo Chart ',
5889
+ label: 'Stacked Column',
5890
+ title: 'Allows for multiple chart display formats in one widget.',
5891
+ description: 'For example, different department stacked clomuns, and average as a line.',
5892
+ axisName: 'X - Axis',
5893
+ legendName: 'Data series',
5894
+ startedMessage: 'To add multiple chart types, click on “Combo Chart Options“. A Secondary Axis is available in this chart.',
5895
+ axisTooltipTitle: 'Drag one or more fields here to create your x-axis.',
5896
+ legendTooltipTitle: 'Click to display these data series as line or area charts.',
5897
+ },
5583
5898
  'line-chart': {
5584
5899
  name: 'Line chart',
5585
5900
  label: 'Line Chart',
@@ -5809,6 +6124,53 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5809
6124
  highchartsRenderer.suboptions["table_options_transpose"],
5810
6125
  highchartsRenderer.suboptions["chart_grid"],
5811
6126
  highchartsRenderer.suboptions["negative_number_format"],
6127
+ highchartsRenderer.suboptions["delta_column_combo"],
6128
+ highchartsRenderer.suboptions["error_policy"],
6129
+ highchartsRenderer.suboptions["from_version"],
6130
+ highchartsRenderer.suboptions["legends"],
6131
+ ]
6132
+ }
6133
+ ]
6134
+ },
6135
+ {
6136
+ type: 'combo',
6137
+ name: 'Combo',
6138
+ class: 'combo-chart',
6139
+ subtypes: [{
6140
+ type: 'combo-column-chart',
6141
+ name: highchartsRenderer.chartsTypesInfo['combo-column-chart'].name,
6142
+ class: 'combo-column-chart',
6143
+ render: highchartsRenderer.ptRenderColumn,
6144
+ suboptions: [
6145
+ highchartsRenderer.suboptions["default_show"],
6146
+ highchartsRenderer.suboptions["axisY"],
6147
+ highchartsRenderer.suboptions["axisX"],
6148
+ highchartsRenderer.suboptions["tooltips"],
6149
+ highchartsRenderer.suboptions["label"],
6150
+ highchartsRenderer.suboptions["subtitle"],
6151
+ highchartsRenderer.suboptions["table_options"],
6152
+ highchartsRenderer.suboptions["chart"],
6153
+ highchartsRenderer.suboptions["negative_number_format"],
6154
+ highchartsRenderer.suboptions["delta_column_for_drill_down_combo"],
6155
+ highchartsRenderer.suboptions["error_policy"],
6156
+ highchartsRenderer.suboptions["from_version"],
6157
+ highchartsRenderer.suboptions["legends"],
6158
+ ],
6159
+ },
6160
+ {
6161
+ type: 'combo-stacked-chart',
6162
+ name: highchartsRenderer.chartsTypesInfo['combo-stacked-chart'].name,
6163
+ class: 'combo-stacked-chart',
6164
+ render: highchartsRenderer.ptRenderStackedColumn,
6165
+ suboptions: [
6166
+ highchartsRenderer.suboptions["default_show"],
6167
+ highchartsRenderer.suboptions["axisY"],
6168
+ highchartsRenderer.suboptions["axisX"],
6169
+ highchartsRenderer.suboptions["tooltips"],
6170
+ highchartsRenderer.suboptions["label_with_percentage"],
6171
+ highchartsRenderer.suboptions["subtitle"],
6172
+ highchartsRenderer.suboptions["table_options"],
6173
+ highchartsRenderer.suboptions["chart_grid"],
5812
6174
  highchartsRenderer.suboptions["delta_column"],
5813
6175
  highchartsRenderer.suboptions["error_policy"],
5814
6176
  highchartsRenderer.suboptions["from_version"],
@@ -6715,6 +7077,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6715
7077
  };
6716
7078
 
6717
7079
  highchartsRenderer.setNewFieldNames = function (res) {
7080
+ if (useTotalsCalculation) {
7081
+ return res;
7082
+ }
7083
+
6718
7084
  if (res && res[0] && res[0]['DR_Values']) {
6719
7085
  lodash.forEach(res, function (item) {
6720
7086
  item['DR_Values'] = highchartsRenderer.getFieldName(item['DR_Values']);
@@ -6728,7 +7094,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6728
7094
  var datesFields = [];
6729
7095
  datesFields = lodash.filter(widget.rows, element => element.type == 'Date');
6730
7096
  datesFields = datesFields.concat(lodash.filter(widget.cols, element => element.type == 'Date'));
6731
-
7097
+
6732
7098
  const isCustomSorting = widget.options.sortingFields && Array.isArray(widget.options.sortingFields) && widget.options.sortingFields.length > 0;
6733
7099
  if (isCustomSorting) {
6734
7100
  lodash.forEach(datesFields, function (field) {
@@ -6796,7 +7162,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6796
7162
  "name": field.name,
6797
7163
  "type": field.type,
6798
7164
  "values": [],
6799
- "sorting": field.sorting
7165
+ "sorting": field.sorting,
6800
7166
  });
6801
7167
  }
6802
7168
  } else if (field.sorting && field.sorting.type == "CustomOrder" && field.sorting.values) {
@@ -6881,6 +7247,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6881
7247
  if (field.sorting && field.sorting.type == "DateString") {
6882
7248
  return $.pivotUtilities.sortDateStrings(field.sorting.month_order);
6883
7249
  } else if (field.sorting && field.sorting.type == "largestToSmallest") {
7250
+ if (field.sorting.is_absolute)
7251
+ return $.pivotUtilities.largeToSmallSortByAbsolute;
7252
+
6884
7253
  return $.pivotUtilities.largeToSmallSort;
6885
7254
  } else {
6886
7255
  return $.pivotUtilities.sortAs(field.values);
@@ -7088,7 +7457,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7088
7457
  itemMarginTop: 2,
7089
7458
  };
7090
7459
  const none = {
7091
- enabled: false,
7460
+ enabled: false,
7092
7461
  };
7093
7462
 
7094
7463
  if (additionOptions.legends_position && additionOptions.legends_position.value) {