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