@datarailsshared/dr_renderer 1.2.50 → 1.2.54

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.
@@ -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, chartType) {
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 && chartType.includes('combo')) {
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,9 +1217,9 @@ 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
- } else {
1222
+ } else if (delta_column_options.chart == 'spline') {
1109
1223
  series.type = 'spline';
1110
1224
  series.lineWidth = 0;
1111
1225
  series.lineColor = varianceColor;
@@ -1145,11 +1259,20 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1145
1259
  }
1146
1260
  };
1147
1261
  }
1262
+ else if (delta_column_options.chart == 'area') {
1263
+ series.color = varianceColor;
1264
+ series.type = 'area'
1265
+ } else if (delta_column_options.chart == 'areaspline') {
1266
+ series.color = varianceColor;
1267
+ series.type = 'areaspline'
1268
+ } else if (delta_column_options.chart == 'scatter-chart') {
1269
+ series.color = varianceColor;
1270
+ series.type = 'scatter-chart'
1271
+ }
1148
1272
  return series;
1149
1273
  }
1150
1274
 
1151
-
1152
- highchartsRenderer.ptCreateSeriesToDrillDownChart = function (pivotData) {
1275
+ highchartsRenderer.ptCreateSeriesToDrillDownChart = function (pivotData, chartOptions, additionOptions, opts) {
1153
1276
  var pie_series = [];
1154
1277
 
1155
1278
  var col_n_keys = pivotData.getColKeys();
@@ -1180,13 +1303,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1180
1303
  pie_series.push(ob);
1181
1304
  });
1182
1305
 
1306
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded(pie_series, pivotData, chartOptions, additionOptions, opts);
1307
+
1183
1308
  return ([{
1184
1309
  colorByPoint: true,
1185
1310
  data: pie_series
1186
1311
  }]);
1187
1312
  };
1188
1313
 
1189
- highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart = function (pivotData) {
1314
+ highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart = function (pivotData, chartOptions, additionOptions, opts) {
1190
1315
 
1191
1316
  var pie_drill_down_series = [],
1192
1317
  row_n_keys = pivotData.getRowKeys(),
@@ -1224,12 +1349,60 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1224
1349
  }
1225
1350
  });
1226
1351
 
1352
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded(pie_drill_down_series, pivotData, chartOptions, additionOptions, opts);
1227
1353
 
1228
1354
  return ({
1229
1355
  series: pie_drill_down_series
1230
1356
  });
1231
1357
  };
1232
1358
 
1359
+ highchartsRenderer.moveSeriesToSecondYAxisIfNeeded = function(chartSeries, pivotData, chartOptions, additionOptions, opts) {
1360
+ if (!opts || !opts.comboOptions) {
1361
+ return;
1362
+ }
1363
+
1364
+ let addSecondYAxis = false;
1365
+ lodash.forEach(chartSeries, function (series) {
1366
+ let sOptions = lodash.find(opts.comboOptions.seriesOptions, function(sOptions) {
1367
+ return sOptions.series === series.name || sOptions.series.replace('_', '') === series.name
1368
+ });
1369
+ if (sOptions && sOptions.secondaryAxis) {
1370
+ series.yAxis = 1;
1371
+ addSecondYAxis = true;
1372
+ }
1373
+ });
1374
+
1375
+ if (addSecondYAxis) {
1376
+ highchartsRenderer.addSecondYAxis(pivotData, chartOptions, additionOptions, opts);
1377
+ }
1378
+ }
1379
+
1380
+ highchartsRenderer.addSecondYAxis = function (pivotData, chartOptions, additionOptions, opts) {
1381
+ const varianceColor = (additionOptions && additionOptions.delta_column.color) || (highchartsRenderer && highchartsRenderer.variance_color) || Highcharts.getOptions().colors[7];
1382
+ let labels_formatter = opts.comboOptions.secondaryAxisSettings.is_percentage ?
1383
+ highchartsRenderer.persantageValueLabelsFormatter(pivotData, opts) :
1384
+ highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts);
1385
+
1386
+ chartOptions.yAxis = [chartOptions.yAxis];
1387
+ chartOptions.yAxis[1] = {
1388
+ min: !isNaN(parseInt(opts.comboOptions.secondaryAxisSettings.min)) ? opts.comboOptions.secondaryAxisSettings.min : null,
1389
+ max: !isNaN(parseInt(opts.comboOptions.secondaryAxisSettings.max)) ? opts.comboOptions.secondaryAxisSettings.max : null,
1390
+ title: {
1391
+ text: opts.comboOptions.secondaryAxisSettings.name,
1392
+ style: {
1393
+ color: varianceColor
1394
+ }
1395
+ },
1396
+ labels: {
1397
+ formatter: labels_formatter,
1398
+ style: {
1399
+ color: varianceColor
1400
+ }
1401
+ },
1402
+ opposite: true
1403
+ }
1404
+ };
1405
+
1233
1406
  highchartsRenderer.ptRenderBasicPie = function (pivotData, opts) {
1234
1407
  var chartOptions = {};
1235
1408
  var additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('pie-chart');
@@ -1409,7 +1582,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1409
1582
  }
1410
1583
 
1411
1584
  chartOptions.xAxis = {categories: pivotData.getColKeys()};
1412
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true);
1585
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, null, null, opts, chartOptions);
1413
1586
 
1414
1587
  var total = [];
1415
1588
  lodash.forEach(chartOptions.series, function (obj) {
@@ -1550,7 +1723,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1550
1723
 
1551
1724
 
1552
1725
  chartOptions.xAxis = {categories: pivotData.getColKeys()};
1553
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true);
1726
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, null, null, opts, chartOptions);
1554
1727
 
1555
1728
  var total = [];
1556
1729
  lodash.forEach(chartOptions.series, function (obj) {
@@ -1644,7 +1817,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1644
1817
  };
1645
1818
  var uniqueVals = kpioptions.value.value == "Unique";
1646
1819
 
1647
- let temp_series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, uniqueVals);
1820
+ let temp_series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, uniqueVals, null, opts, chartOptions);
1648
1821
 
1649
1822
  var total = [];
1650
1823
  lodash.forEach(temp_series, function (obj) {
@@ -1764,12 +1937,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1764
1937
  if (useNewUx) {
1765
1938
  chartOptions.tooltip.borderColor = '#fff';
1766
1939
  }
1767
- chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData);
1940
+ chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData, chartOptions, additionOptions, opts);
1768
1941
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, 1, false, true);
1769
1942
  if (drilldownFunc)
1770
1943
  chartOptions.drilldown = {}
1771
1944
  else
1772
- chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData);
1945
+ chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData, chartOptions, additionOptions, opts);
1773
1946
 
1774
1947
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
1775
1948
 
@@ -1826,7 +1999,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1826
1999
  formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts)
1827
2000
  }
1828
2001
  };
1829
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
1830
2002
 
1831
2003
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, true);
1832
2004
 
@@ -1871,7 +2043,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1871
2043
  }
1872
2044
  };
1873
2045
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
1874
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions);
2046
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions, opts, chartOptions);
1875
2047
 
1876
2048
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
1877
2049
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
@@ -1902,8 +2074,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1902
2074
  }
1903
2075
  };
1904
2076
 
1905
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
1906
-
1907
2077
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, true);
1908
2078
 
1909
2079
  chartOptions.plotOptions = {
@@ -1950,7 +2120,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1950
2120
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
1951
2121
 
1952
2122
  var colors = ['#ff0202', '#b3060e', '#70000a'];
1953
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, colors, null, null, additionOptions);
2123
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, colors, null, null, additionOptions, opts, chartOptions);
1954
2124
 
1955
2125
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
1956
2126
 
@@ -1972,34 +2142,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
1972
2142
 
1973
2143
  }
1974
2144
 
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
2145
  highchartsRenderer.ptRenderSpLine = function (pivotData, opts) {
2004
2146
  var chartOptions = {};
2005
2147
  var rowAttrs = pivotData.rowAttrs;
@@ -2025,8 +2167,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2025
2167
  }
2026
2168
  };
2027
2169
 
2028
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
2029
-
2030
2170
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, true);
2031
2171
 
2032
2172
  chartOptions.plotOptions = {
@@ -2068,7 +2208,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2068
2208
  }
2069
2209
  };
2070
2210
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2071
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions);
2211
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions, opts, chartOptions);
2072
2212
 
2073
2213
  highchartsRenderer.handleGridLines(additionOptions, chartOptions);
2074
2214
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
@@ -2116,7 +2256,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2116
2256
  }
2117
2257
  };
2118
2258
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2119
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2259
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2120
2260
 
2121
2261
  highchartsRenderer.handleGridLines(additionOptions, chartOptions);
2122
2262
 
@@ -2213,14 +2353,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2213
2353
  },
2214
2354
  lineWidth: 0
2215
2355
  };
2216
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2356
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2217
2357
 
2218
2358
  chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, false);
2219
2359
 
2220
2360
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
2221
2361
  };
2222
2362
 
2223
- highchartsRenderer.ptRenderColumn = function (pivotData, opts, drilldownFunc) {
2363
+ highchartsRenderer.ptRenderColumn = function (pivotData, opts, drilldownFunc, chartType) {
2224
2364
  var chartOptions = {};
2225
2365
  var rowAttrs = pivotData.rowAttrs;
2226
2366
  var colAttrs = pivotData.colAttrs;
@@ -2275,8 +2415,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2275
2415
  }
2276
2416
  };
2277
2417
 
2278
- highchartsRenderer.addSecondYAxisIfNeed(pivotData, chartOptions, additionOptions, opts);
2279
-
2280
2418
  chartOptions.tooltip = {
2281
2419
  formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
2282
2420
  shadow: highchartsRenderer.tooltipShadow,
@@ -2290,7 +2428,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2290
2428
  highchartsRenderer.handleGridLines(additionOptions, chartOptions);
2291
2429
 
2292
2430
  var isNotDrilldown = !(colAttrs && colAttrs.length > 1);
2293
- chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, null, null, null, isNotDrilldown, additionOptions);
2431
+ if (lodash.get(opts, 'paletteOptions.widgetPalette', null)) {
2432
+ const mc_palette = lodash.find(lodash.get(opts.paletteOptions, 'monochromePalettes', []), { selected: true });
2433
+ chartOptions.colors = mc_palette ? mc_palette.colors : opts.paletteOptions.widgetPalette;
2434
+ } else if (lodash.get(opts, 'paletteOptions.dashboardPalette.colors', null)) {
2435
+ chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
2436
+ }
2437
+ chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, chartOptions.colors, null, null, isNotDrilldown, additionOptions, opts, chartOptions, chartType);
2294
2438
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2295
2439
  chartOptions.plotOptions = {
2296
2440
  column: {
@@ -2327,7 +2471,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2327
2471
  return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
2328
2472
  };
2329
2473
 
2330
- highchartsRenderer.ptRenderStackedColumn = function (pivotData, opts, drilldownFunc) {
2474
+ highchartsRenderer.ptRenderStackedColumn = function (pivotData, opts, drilldownFunc, chartType) {
2331
2475
  var chartOptions = {};
2332
2476
  var rowAttrs = pivotData.rowAttrs;
2333
2477
  var additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('column-chart-stacked');
@@ -2458,7 +2602,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2458
2602
  };
2459
2603
  //chartOptions.xAxis = { categories: pivotData.getColKeys() };
2460
2604
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2461
- chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, null, null, true, true);
2605
+ if (lodash.get(opts, 'paletteOptions.widgetPalette', null)) {
2606
+ const mc_palette = lodash.find(lodash.get(opts.paletteOptions, 'monochromePalettes', []), { selected: true });
2607
+ chartOptions.colors = mc_palette ? mc_palette.colors : opts.paletteOptions.widgetPalette;
2608
+ } else if (lodash.get(opts, 'paletteOptions.dashboardPalette.colors', null)) {
2609
+ chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
2610
+ }
2611
+ chartOptions.series = highchartsRenderer.ptCreateColumnSeries(pivotData, chartOptions.colors, null, true, true, null, opts, chartOptions, chartType);
2462
2612
  //chartOptions.drilldown = {}
2463
2613
 
2464
2614
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
@@ -2535,11 +2685,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2535
2685
 
2536
2686
  chartOptions.xAxis = {type: 'category'};
2537
2687
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2538
- chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData);
2688
+ chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData, chartOptions, additionOptions, opts);
2539
2689
  //if (drilldownFunc)
2540
2690
  // chartOptions.drilldown = {}
2541
2691
  //else
2542
- chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData);
2692
+ chartOptions.drilldown = highchartsRenderer.ptCreateDrillDownSeriesToDrilldownChart(pivotData, chartOptions, additionOptions, opts);
2543
2693
 
2544
2694
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
2545
2695
 
@@ -2610,7 +2760,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2610
2760
  }
2611
2761
  };
2612
2762
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2613
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2763
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2614
2764
 
2615
2765
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
2616
2766
 
@@ -2724,7 +2874,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2724
2874
  }
2725
2875
  };
2726
2876
  chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
2727
- chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData);
2877
+ chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
2728
2878
 
2729
2879
  highchartsRenderer.handleGridLines(additionOptions, chartOptions)
2730
2880
 
@@ -2813,6 +2963,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2813
2963
  return format;
2814
2964
  }
2815
2965
 
2966
+ highchartsRenderer.isRowKeyShouldBePercentage = function(render_options, rowKey) {
2967
+ if (render_options && render_options.comboOptions && render_options.comboOptions.secondaryAxisSettings &&
2968
+ render_options.comboOptions.secondaryAxisSettings.is_percentage) {
2969
+ const rowKeyString = rowKey.join(highchartsRenderer.delimer);
2970
+ const rowKeyOptions = lodash.find(render_options.comboOptions.seriesOptions, {series: rowKeyString});
2971
+ if (rowKeyOptions && rowKeyOptions.secondaryAxis) {
2972
+ return true;
2973
+ }
2974
+ }
2975
+ return false;
2976
+ }
2977
+
2816
2978
  highchartsRenderer.ignoreIfCalculatedValue = function(data, rowKey, colKey, record, associatedFields, renderOptions, isGraph) {
2817
2979
  var eliminate = renderOptions && renderOptions.chartOptions && renderOptions.chartOptions.table_options &&
2818
2980
  renderOptions.chartOptions.table_options.eliminate_calc_totals && !_.isEmpty(associatedFields) && !isGraph;
@@ -2832,17 +2994,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2832
2994
 
2833
2995
  highchartsRenderer.rhPivotCount = function (arg, widget_values_format, is_graph, render_options, calculated_info) {
2834
2996
  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
2997
  return function (data, rowKey, colKey) {
2847
2998
  return {
2848
2999
  sum: 0,
@@ -2864,10 +3015,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2864
3015
  this.formats = lodash.uniq(this.formats);
2865
3016
  }
2866
3017
 
2867
- if (has_variants_persentage) {
2868
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
2869
- this.widget_values_format = "#,###%";
2870
- }
3018
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3019
+ this.widget_values_format = "#,###%";
2871
3020
  }
2872
3021
 
2873
3022
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -2987,17 +3136,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
2987
3136
  };
2988
3137
 
2989
3138
  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
- }
3139
+ var attr = arg[0];
3001
3140
  return function (data, rowKey, colKey) {
3002
3141
  return {
3003
3142
  sum: 0,
@@ -3030,10 +3169,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3030
3169
  this.formats = lodash.uniq(this.formats);
3031
3170
  }
3032
3171
 
3033
- if (has_variants_persentage) {
3034
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3035
- this.widget_values_format = "#,###%";
3036
- }
3172
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3173
+ this.widget_values_format = "#,###%";
3037
3174
  }
3038
3175
 
3039
3176
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3087,17 +3224,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3087
3224
  };
3088
3225
 
3089
3226
  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
- }
3227
+ var attr = arg[0];
3101
3228
  return function (data, rowKey, colKey) {
3102
3229
  return {
3103
3230
  val: null,
@@ -3131,10 +3258,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3131
3258
  this.formats = lodash.uniq(this.formats);
3132
3259
  }
3133
3260
 
3134
- if (has_variants_persentage) {
3135
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3136
- this.widget_values_format = "#,###%";
3137
- }
3261
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3262
+ this.widget_values_format = "#,###%";
3138
3263
  }
3139
3264
 
3140
3265
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3185,17 +3310,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3185
3310
  };
3186
3311
 
3187
3312
  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
- }
3313
+ var attr = arg[0];
3199
3314
  return function (data, rowKey, colKey) {
3200
3315
  return {
3201
3316
  val: null,
@@ -3229,10 +3344,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3229
3344
  this.formats = lodash.uniq(this.formats);
3230
3345
  }
3231
3346
 
3232
- if (has_variants_persentage) {
3233
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3234
- this.widget_values_format = "#,###%";
3235
- }
3347
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3348
+ this.widget_values_format = "#,###%";
3236
3349
  }
3237
3350
 
3238
3351
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3283,17 +3396,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3283
3396
  };
3284
3397
 
3285
3398
  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
- }
3399
+ var attr = arg[0];
3297
3400
  return function (data, rowKey, colKey) {
3298
3401
  return {
3299
3402
  sum: 0,
@@ -3328,10 +3431,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3328
3431
  this.formats = lodash.uniq(this.formats);
3329
3432
  }
3330
3433
 
3331
- if (has_variants_persentage) {
3332
- if (rowKey == variant_name || lodash.includes(rowKey, variant_name)) {
3333
- this.widget_values_format = "#,###%";
3334
- }
3434
+ if (highchartsRenderer.isRowKeyShouldBePercentage(render_options, rowKey)) {
3435
+ this.widget_values_format = "#,###%";
3335
3436
  }
3336
3437
 
3337
3438
  if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
@@ -3879,11 +3980,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
3879
3980
  pivotData.sorters = new_sorting_function;
3880
3981
  }
3881
3982
 
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
- }
3983
+ result = opts.renderer(pivotData, opts.rendererOptions);
3887
3984
  } catch (_error) {
3888
3985
  e = _error;
3889
3986
  if (typeof console !== "undefined" && console !== null) {
@@ -4283,6 +4380,50 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4283
4380
  delete options.chartOptions.label;
4284
4381
  }
4285
4382
  }
4383
+
4384
+ if (!options.comboOptions) {
4385
+ options.comboOptions = {
4386
+ secondaryAxisSettings: {
4387
+ name: 'Secondary Axis',
4388
+ max: null,
4389
+ min: null,
4390
+ is_percentage: false,
4391
+ },
4392
+ seriesOptions: []
4393
+ }
4394
+ if (options.chartOptions.delta_column && options.chartOptions.delta_column.field === 'series') {
4395
+ let deltaColumnSeries = {
4396
+ series: options.chartOptions.delta_column.name,
4397
+ secondaryAxis: !options.chartOptions.delta_column.same_yaxis,
4398
+ };
4399
+ switch (options.chartOptions.delta_column.chart) {
4400
+ case 'line':
4401
+ deltaColumnSeries.chartType = 'line-chart';
4402
+ break;
4403
+ case 'spline':
4404
+ deltaColumnSeries.chartType = 'line-chart-smooth';
4405
+ break;
4406
+ case 'area':
4407
+ deltaColumnSeries.chartType = 'area-chart';
4408
+ break;
4409
+ case 'areaspline':
4410
+ deltaColumnSeries.chartType = 'area-chart-smooth';
4411
+ break;
4412
+ case 'scatter':
4413
+ deltaColumnSeries.chartType = 'scatter-chart';
4414
+ break;
4415
+ case 'column':
4416
+ deltaColumnSeries.chartType = 'column-chart';
4417
+ break;
4418
+ default:
4419
+ deltaColumnSeries.chartType = 'scatter-chart';
4420
+ break;
4421
+ }
4422
+ options.comboOptions.seriesOptions.push(deltaColumnSeries);
4423
+ options.comboOptions.secondaryAxisSettings.name = options.chartOptions.delta_column.name.replace('_', '');
4424
+ options.comboOptions.secondaryAxisSettings.is_percentage = options.chartOptions.delta_column.is_percentage;
4425
+ }
4426
+ }
4286
4427
  };
4287
4428
 
4288
4429
  highchartsRenderer.addPivotOptions = function (selectedTemplateWOData, widgetOptions, drilldownFunction, drillDownListFunction) {
@@ -4390,6 +4531,60 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4390
4531
  exTableOptions.pivot.calculatedValues = highchartsRenderer.objectCopyJsonMethod(exTableOptions.calculated_values || []);
4391
4532
  };
4392
4533
 
4534
+ highchartsRenderer.addTemplateDataToDynamicRangeOptions = function (selectedTemplate, dynamicRangeOptions) {
4535
+ highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
4536
+
4537
+ var fields = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_fields);
4538
+ var fieldOb;
4539
+ var filterFields = [];
4540
+ var selectedFields = [];
4541
+
4542
+ lodash.forEach(dynamicRangeOptions.filters, function (filterObj) {
4543
+ fieldOb = lodash.find(fields, {id: filterObj.field});
4544
+ if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype === 'list') {
4545
+ filterObj.values = filterObj.values.val
4546
+ } else if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype !== 'list') {
4547
+ fieldOb.values = filterObj.values;
4548
+ } else if (fieldOb && filterObj.values && filterObj.values.type === 'advanced') {
4549
+ fieldOb.values = filterObj.values;
4550
+ }
4551
+ if (fieldOb && filterObj.values && filterObj.values instanceof Array) {
4552
+ if (filterObj.is_excluded == true) {
4553
+ fieldOb.excludes = filterObj.values;
4554
+ } else {
4555
+ fieldOb.includes = filterObj.values;
4556
+ }
4557
+ }
4558
+ if (filterObj.allow_nulls && fieldOb) {
4559
+ fieldOb.allow_nulls = filterObj.allow_nulls;
4560
+ }
4561
+ });
4562
+
4563
+ // fill selected fields
4564
+ lodash.forEach(dynamicRangeOptions.fields, function (valObj) {
4565
+ fieldOb = lodash.find(fields, {id: valObj.field});
4566
+ if (fieldOb) {
4567
+ selectedFields.push(fieldOb);
4568
+ lodash.remove(fields, {id: fieldOb.id});
4569
+ }
4570
+ });
4571
+
4572
+ // fill filter fields
4573
+ lodash.forEach(dynamicRangeOptions.filters, function (valObj) {
4574
+ fieldOb = lodash.find(fields, {id: valObj.field});
4575
+ if (fieldOb) {
4576
+ filterFields.push(fieldOb);
4577
+ lodash.remove(fields, {id: fieldOb.id});
4578
+ }
4579
+ });
4580
+
4581
+ dynamicRangeOptions.pivot = {};
4582
+ dynamicRangeOptions.pivot.fieldsArray = fields;
4583
+ dynamicRangeOptions.pivot.selectedFieldsArray = selectedFields;
4584
+ dynamicRangeOptions.pivot.filtersArray = filterFields;
4585
+ dynamicRangeOptions.pivot.calculatedValues = highchartsRenderer.objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
4586
+ }
4587
+
4393
4588
  highchartsRenderer.addTemplateDataToFunctionOptions = function (selectedTemplate, functionOptions) {
4394
4589
  highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
4395
4590
 
@@ -4834,6 +5029,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
4834
5029
  value_name: 'remove_underscores',
4835
5030
  default_value: true
4836
5031
  },
5032
+ {
5033
+ element_type: 'checkbox',
5034
+ element_label: 'Use big data table',
5035
+ value_name: 'use_handsOnTable',
5036
+ default_value: false
5037
+ },
4837
5038
  {
4838
5039
  element_type: 'checkbox',
4839
5040
  element_label: 'Use new table design',
@@ -5358,7 +5559,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5358
5559
  element_options: [
5359
5560
  {label: 'Markers', value: ''},
5360
5561
  {label: 'Line', value: 'line'},
5562
+ {label: 'Smooth Line', value: 'spline'},
5361
5563
  {label: 'Column', value: 'column'},
5564
+ {label: 'Area', value: 'area'},
5565
+ {label: 'Smooth Area', value: 'areaspline'},
5362
5566
  ],
5363
5567
  default_value: ''
5364
5568
  }, {
@@ -5370,7 +5574,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5370
5574
  element_type: 'checkbox',
5371
5575
  element_label: 'Same yAxis',
5372
5576
  value_name: 'same_yaxis',
5373
- default_value: false
5577
+ default_value: false,
5578
+ hidden: true,
5374
5579
  }, {
5375
5580
  element_type: 'checkbox',
5376
5581
  element_label: 'Same xAxis',
@@ -5380,17 +5585,20 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5380
5585
  element_type: 'checkbox',
5381
5586
  element_label: 'Percentage',
5382
5587
  value_name: 'is_percentage',
5383
- default_value: false
5588
+ default_value: false,
5589
+ hidden: true,
5384
5590
  }, {
5385
5591
  element_type: 'checkbox',
5386
5592
  element_label: 'Sort by variance',
5387
5593
  value_name: 'sort_by_variance',
5388
- default_value: false
5594
+ default_value: false,
5595
+ hidden: true
5389
5596
  }, {
5390
5597
  element_type: 'checkbox',
5391
5598
  element_label: 'Sort by absolute variance',
5392
5599
  value_name: 'sort_by_absolute_variance',
5393
- default_value: false
5600
+ default_value: false,
5601
+ hidden: true
5394
5602
  }]
5395
5603
  },
5396
5604
  'delta_column_for_drill_down': {
@@ -5429,7 +5637,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5429
5637
  element_options: [
5430
5638
  {label: 'Markers', value: ''},
5431
5639
  {label: 'Line', value: 'line'},
5640
+ {label: 'Smooth Line', value: 'spline'},
5432
5641
  {label: 'Column', value: 'column'},
5642
+ {label: 'Area', value: 'area'},
5643
+ {label: 'Smooth Area', value: 'areaspline'},
5433
5644
  ],
5434
5645
  default_value: ''
5435
5646
  }, {
@@ -5441,7 +5652,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5441
5652
  element_type: 'checkbox',
5442
5653
  element_label: 'Same yAxis',
5443
5654
  value_name: 'same_yaxis',
5444
- default_value: false
5655
+ default_value: false,
5656
+ hidden: true,
5445
5657
  }, {
5446
5658
  element_type: 'checkbox',
5447
5659
  element_label: 'Same xAxis',
@@ -5451,7 +5663,85 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5451
5663
  element_type: 'checkbox',
5452
5664
  element_label: 'Percentage',
5453
5665
  value_name: 'is_percentage',
5666
+ default_value: false,
5667
+ hidden: true,
5668
+ }, {
5669
+ element_type: 'checkbox',
5670
+ element_label: 'Sort by variance',
5671
+ value_name: 'sort_by_variance',
5454
5672
  default_value: false
5673
+ }, {
5674
+ element_type: 'checkbox',
5675
+ element_label: 'Sort by absolute variance',
5676
+ value_name: 'sort_by_absolute_variance',
5677
+ default_value: false
5678
+ }, {
5679
+ element_type: 'checkbox',
5680
+ element_label: 'Filter zero values',
5681
+ value_name: 'is_filter_zero',
5682
+ default_value: false
5683
+ }]
5684
+ },
5685
+ 'delta_column_combo': {
5686
+ category_class: 'google-visualization-charteditor-mini-more',
5687
+ category_label: 'Variance',
5688
+ category_type: 'delta_column',
5689
+ elements: [{
5690
+ element_type: 'radio',
5691
+ value_name: 'field',
5692
+ element_label: 'Select Field',
5693
+ element_options: [
5694
+ {label: 'None', value: ''},
5695
+ {label: 'Axis', value: 'category'},
5696
+ {label: 'Legend', value: 'series'},
5697
+ ],
5698
+ default_value: ''
5699
+ }, {
5700
+ element_type: 'input',
5701
+ value_name: 'name',
5702
+ element_label: 'Name',
5703
+ default_value: '_Variance'
5704
+ }, {
5705
+ element_type: 'input',
5706
+ value_name: 'formula',
5707
+ element_label: 'Formula',
5708
+ default_value: 'x2-x1'
5709
+ }, {
5710
+ hidden: true,
5711
+ element_type: 'radio',
5712
+ value_name: 'chart',
5713
+ element_label: 'Chart',
5714
+ element_options: [
5715
+ {label: 'Markers', value: ''},
5716
+ {label: 'Line', value: 'line'},
5717
+ {label: 'Smooth Line', value: 'spline'},
5718
+ {label: 'Column', value: 'column'},
5719
+ {label: 'Area', value: 'area'},
5720
+ {label: 'Smooth Area', value: 'areaspline'},
5721
+ ],
5722
+ default_value: ''
5723
+ }, {
5724
+ element_type: 'checkbox',
5725
+ element_label: 'Only variance',
5726
+ value_name: 'only_variant',
5727
+ default_value: false
5728
+ }, {
5729
+ element_type: 'checkbox',
5730
+ element_label: 'Same yAxis',
5731
+ value_name: 'same_yaxis',
5732
+ default_value: false,
5733
+ hidden: true,
5734
+ }, {
5735
+ element_type: 'checkbox',
5736
+ element_label: 'Same xAxis',
5737
+ value_name: 'same_xaxis',
5738
+ default_value: false
5739
+ }, {
5740
+ element_type: 'checkbox',
5741
+ element_label: 'Percentage',
5742
+ value_name: 'is_percentage',
5743
+ default_value: false,
5744
+ hidden: true,
5455
5745
  }, {
5456
5746
  element_type: 'checkbox',
5457
5747
  element_label: 'Sort by variance',
@@ -5462,6 +5752,85 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5462
5752
  element_label: 'Sort by absolute variance',
5463
5753
  value_name: 'sort_by_absolute_variance',
5464
5754
  default_value: false
5755
+ }]
5756
+ },
5757
+ 'delta_column_for_drill_down_combo': {
5758
+ category_class: 'google-visualization-charteditor-mini-more',
5759
+ category_label: 'Variance',
5760
+ category_type: 'delta_column',
5761
+ elements: [{
5762
+ element_type: 'radio',
5763
+ value_name: 'field',
5764
+ element_label: 'Select Field',
5765
+ element_options: [
5766
+ {label: 'None', value: ''},
5767
+ {label: 'Axis', value: 'category'},
5768
+ {label: 'Legend', value: 'series'},
5769
+ ],
5770
+ default_value: ''
5771
+ }, {
5772
+ element_type: 'input',
5773
+ value_name: 'name',
5774
+ element_label: 'Name',
5775
+ default_value: '_Variance'
5776
+ }, {
5777
+ element_type: 'input',
5778
+ value_name: 'formula',
5779
+ element_label: 'Formula',
5780
+ default_value: 'x2-x1'
5781
+ }, {
5782
+ element_type: 'input',
5783
+ value_name: 'color',
5784
+ element_label: 'Color',
5785
+ default_value: ''
5786
+ }, {
5787
+ hidden: true,
5788
+ element_type: 'radio',
5789
+ value_name: 'chart',
5790
+ element_label: 'Chart',
5791
+ element_options: [
5792
+ {label: 'Markers', value: ''},
5793
+ {label: 'Line', value: 'line'},
5794
+ {label: 'Smooth Line', value: 'spline'},
5795
+ {label: 'Column', value: 'column'},
5796
+ {label: 'Area', value: 'area'},
5797
+ {label: 'Smooth Area', value: 'areaspline'},
5798
+ ],
5799
+ default_value: ''
5800
+ }, {
5801
+ element_type: 'checkbox',
5802
+ element_label: 'Only variance',
5803
+ value_name: 'only_variant',
5804
+ default_value: false
5805
+ }, {
5806
+ element_type: 'checkbox',
5807
+ element_label: 'Same yAxis',
5808
+ value_name: 'same_yaxis',
5809
+ default_value: false,
5810
+ hidden: true,
5811
+ }, {
5812
+ element_type: 'checkbox',
5813
+ element_label: 'Same xAxis',
5814
+ value_name: 'same_xaxis',
5815
+ default_value: false
5816
+ }, {
5817
+ element_type: 'checkbox',
5818
+ element_label: 'Percentage',
5819
+ value_name: 'is_percentage',
5820
+ default_value: false,
5821
+ hidden: true,
5822
+ }, {
5823
+ element_type: 'checkbox',
5824
+ element_label: 'Sort by variance',
5825
+ value_name: 'sort_by_variance',
5826
+ default_value: false,
5827
+ hidden: true
5828
+ }, {
5829
+ element_type: 'checkbox',
5830
+ element_label: 'Sort by absolute variance',
5831
+ value_name: 'sort_by_absolute_variance',
5832
+ default_value: false,
5833
+ hidden: true
5465
5834
  }, {
5466
5835
  element_type: 'checkbox',
5467
5836
  element_label: 'Filter zero values',
@@ -5526,6 +5895,39 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5526
5895
  };
5527
5896
 
5528
5897
  highchartsRenderer.chartsTypesInfo = {
5898
+ 'combo-chart': {
5899
+ name: 'Column Combo Chart ',
5900
+ label: 'Column Combo Chart ',
5901
+ title: 'Allows for multiple chart display formats in one widget',
5902
+ description: 'For example, Revenue and Cost of goods sold as clomuns, and Gross margin as a line',
5903
+ axisName: 'X - Axis',
5904
+ legendName: 'Data series',
5905
+ startedMessage: 'To add multiple chart types, click on “Combo Chart Options“. A Secondary Axis is available in this chart',
5906
+ axisTooltipTitle: 'Drag one or more fields here to create your x-axis.',
5907
+ legendTooltipTitle: 'Click to display these data series as line or area charts',
5908
+ },
5909
+ 'combo-column-chart': {
5910
+ name: 'Column Combo Chart ',
5911
+ label: 'Column Chart',
5912
+ title: 'Allows for multiple chart display formats in one widget',
5913
+ description: 'For example, Revenue and Cost of goods sold as clomuns, and Gross margin as a line',
5914
+ axisName: 'X - Axis',
5915
+ legendName: 'Data series',
5916
+ startedMessage: 'To add multiple chart types, click on “Combo Chart Options“. A Secondary Axis is available in this chart.',
5917
+ axisTooltipTitle: 'Drag one or more fields here to create your x-axis.',
5918
+ legendTooltipTitle: 'Click to display these data series as line or area charts.',
5919
+ },
5920
+ 'combo-stacked-chart': {
5921
+ name: 'Stacked Column Combo Chart ',
5922
+ label: 'Stacked Column',
5923
+ title: 'Allows for multiple chart display formats in one widget.',
5924
+ description: 'For example, different department stacked clomuns, and average as a line.',
5925
+ axisName: 'X - Axis',
5926
+ legendName: 'Data series',
5927
+ startedMessage: 'To add multiple chart types, click on “Combo Chart Options“. A Secondary Axis is available in this chart.',
5928
+ axisTooltipTitle: 'Drag one or more fields here to create your x-axis.',
5929
+ legendTooltipTitle: 'Click to display these data series as line or area charts.',
5930
+ },
5529
5931
  'line-chart': {
5530
5932
  name: 'Line chart',
5531
5933
  label: 'Line Chart',
@@ -5755,6 +6157,53 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
5755
6157
  highchartsRenderer.suboptions["table_options_transpose"],
5756
6158
  highchartsRenderer.suboptions["chart_grid"],
5757
6159
  highchartsRenderer.suboptions["negative_number_format"],
6160
+ highchartsRenderer.suboptions["delta_column_combo"],
6161
+ highchartsRenderer.suboptions["error_policy"],
6162
+ highchartsRenderer.suboptions["from_version"],
6163
+ highchartsRenderer.suboptions["legends"],
6164
+ ]
6165
+ }
6166
+ ]
6167
+ },
6168
+ {
6169
+ type: 'combo',
6170
+ name: 'Combo',
6171
+ class: 'combo-chart',
6172
+ subtypes: [{
6173
+ type: 'combo-column-chart',
6174
+ name: highchartsRenderer.chartsTypesInfo['combo-column-chart'].name,
6175
+ class: 'combo-column-chart',
6176
+ render: highchartsRenderer.ptRenderColumn,
6177
+ suboptions: [
6178
+ highchartsRenderer.suboptions["default_show"],
6179
+ highchartsRenderer.suboptions["axisY"],
6180
+ highchartsRenderer.suboptions["axisX"],
6181
+ highchartsRenderer.suboptions["tooltips"],
6182
+ highchartsRenderer.suboptions["label"],
6183
+ highchartsRenderer.suboptions["subtitle"],
6184
+ highchartsRenderer.suboptions["table_options"],
6185
+ highchartsRenderer.suboptions["chart"],
6186
+ highchartsRenderer.suboptions["negative_number_format"],
6187
+ highchartsRenderer.suboptions["delta_column_for_drill_down_combo"],
6188
+ highchartsRenderer.suboptions["error_policy"],
6189
+ highchartsRenderer.suboptions["from_version"],
6190
+ highchartsRenderer.suboptions["legends"],
6191
+ ],
6192
+ },
6193
+ {
6194
+ type: 'combo-stacked-chart',
6195
+ name: highchartsRenderer.chartsTypesInfo['combo-stacked-chart'].name,
6196
+ class: 'combo-stacked-chart',
6197
+ render: highchartsRenderer.ptRenderStackedColumn,
6198
+ suboptions: [
6199
+ highchartsRenderer.suboptions["default_show"],
6200
+ highchartsRenderer.suboptions["axisY"],
6201
+ highchartsRenderer.suboptions["axisX"],
6202
+ highchartsRenderer.suboptions["tooltips"],
6203
+ highchartsRenderer.suboptions["label_with_percentage"],
6204
+ highchartsRenderer.suboptions["subtitle"],
6205
+ highchartsRenderer.suboptions["table_options"],
6206
+ highchartsRenderer.suboptions["chart_grid"],
5758
6207
  highchartsRenderer.suboptions["delta_column"],
5759
6208
  highchartsRenderer.suboptions["error_policy"],
5760
6209
  highchartsRenderer.suboptions["from_version"],
@@ -6661,6 +7110,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6661
7110
  };
6662
7111
 
6663
7112
  highchartsRenderer.setNewFieldNames = function (res) {
7113
+ if (useTotalsCalculation) {
7114
+ return res;
7115
+ }
7116
+
6664
7117
  if (res && res[0] && res[0]['DR_Values']) {
6665
7118
  lodash.forEach(res, function (item) {
6666
7119
  item['DR_Values'] = highchartsRenderer.getFieldName(item['DR_Values']);
@@ -6674,7 +7127,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6674
7127
  var datesFields = [];
6675
7128
  datesFields = lodash.filter(widget.rows, element => element.type == 'Date');
6676
7129
  datesFields = datesFields.concat(lodash.filter(widget.cols, element => element.type == 'Date'));
6677
-
7130
+
6678
7131
  const isCustomSorting = widget.options.sortingFields && Array.isArray(widget.options.sortingFields) && widget.options.sortingFields.length > 0;
6679
7132
  if (isCustomSorting) {
6680
7133
  lodash.forEach(datesFields, function (field) {
@@ -6742,7 +7195,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6742
7195
  "name": field.name,
6743
7196
  "type": field.type,
6744
7197
  "values": [],
6745
- "sorting": field.sorting
7198
+ "sorting": field.sorting,
6746
7199
  });
6747
7200
  }
6748
7201
  } else if (field.sorting && field.sorting.type == "CustomOrder" && field.sorting.values) {
@@ -6827,6 +7280,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
6827
7280
  if (field.sorting && field.sorting.type == "DateString") {
6828
7281
  return $.pivotUtilities.sortDateStrings(field.sorting.month_order);
6829
7282
  } else if (field.sorting && field.sorting.type == "largestToSmallest") {
7283
+ if (field.sorting.is_absolute)
7284
+ return $.pivotUtilities.largeToSmallSortByAbsolute;
7285
+
6830
7286
  return $.pivotUtilities.largeToSmallSort;
6831
7287
  } else {
6832
7288
  return $.pivotUtilities.sortAs(field.values);
@@ -7034,7 +7490,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
7034
7490
  itemMarginTop: 2,
7035
7491
  };
7036
7492
  const none = {
7037
- enabled: false,
7493
+ enabled: false,
7038
7494
  };
7039
7495
 
7040
7496
  if (additionOptions.legends_position && additionOptions.legends_position.value) {