@datarailsshared/dr_renderer 1.2.228-rocket → 1.2.229-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/.circleci/config.yml +6 -0
- package/babel.config.js +3 -0
- package/jest.config.js +27 -0
- package/package.json +24 -3
- package/src/highcharts_renderer.js +338 -102
- package/tests/highcharts_renderer.test.js +48 -0
package/.circleci/config.yml
CHANGED
|
@@ -31,6 +31,12 @@ jobs:
|
|
|
31
31
|
- run:
|
|
32
32
|
name: Authenticate with registry
|
|
33
33
|
command: echo "//registry.npmjs.org/:_authToken=$npm_TOKEN" > ~/repo/.npmrc
|
|
34
|
+
- run:
|
|
35
|
+
name: Install dependencies
|
|
36
|
+
command: npm install
|
|
37
|
+
- run:
|
|
38
|
+
name: Run npm test
|
|
39
|
+
command: npm test
|
|
34
40
|
- run:
|
|
35
41
|
name: Publish package
|
|
36
42
|
command: npm publish . --access=public
|
package/babel.config.js
ADDED
package/jest.config.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
clearMocks: true,
|
|
3
|
+
setupFilesAfterEnv: ['regenerator-runtime/runtime'],
|
|
4
|
+
testPathIgnorePatterns: [
|
|
5
|
+
"/node_modules/",
|
|
6
|
+
],
|
|
7
|
+
transformIgnorePatterns: [
|
|
8
|
+
"<rootDir>/node_modules/(?!jquery|lodash|moment/)",
|
|
9
|
+
],
|
|
10
|
+
collectCoverage: true,
|
|
11
|
+
collectCoverageFrom: [
|
|
12
|
+
'**/*.js',
|
|
13
|
+
'!**/*.config.js',
|
|
14
|
+
'!**/build/**',
|
|
15
|
+
'!**/coverage/**',
|
|
16
|
+
'!**/node_modules/**',
|
|
17
|
+
'!**/vendor/**'
|
|
18
|
+
],
|
|
19
|
+
// coverageThreshold: {
|
|
20
|
+
// "global": {
|
|
21
|
+
// "branches": 100,
|
|
22
|
+
// "functions": 100,
|
|
23
|
+
// "lines": 100,
|
|
24
|
+
// "statements": 100
|
|
25
|
+
// }
|
|
26
|
+
// },
|
|
27
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datarailsshared/dr_renderer",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.229-dragons",
|
|
4
4
|
"description": "DataRails charts and tables renderer",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"datarails",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"tables"
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
|
-
"login": "npm login"
|
|
12
|
+
"login": "npm login",
|
|
13
|
+
"test": "jest --coverage"
|
|
13
14
|
},
|
|
14
15
|
"author": "Sergey Spivakov",
|
|
15
16
|
"repository": {
|
|
@@ -17,6 +18,21 @@
|
|
|
17
18
|
"url": "git+https://bitbucket.org/datarails/dr_renderer.git"
|
|
18
19
|
},
|
|
19
20
|
"license": "",
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"jquery": "^3.6.0",
|
|
23
|
+
"lodash": "^4.17.20",
|
|
24
|
+
"regenerator-runtime": "^0.13.5"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@babel/core": "^7.20.12",
|
|
28
|
+
"@babel/preset-env": "^7.20.2",
|
|
29
|
+
"@testing-library/dom": "^7.2.1",
|
|
30
|
+
"@testing-library/jest-dom": "^5.5.0",
|
|
31
|
+
"babel-jest": "^25.5.1",
|
|
32
|
+
"jest": "^25.3.0",
|
|
33
|
+
"moment": "^2.29.1",
|
|
34
|
+
"serve": "^11.3.0"
|
|
35
|
+
},
|
|
20
36
|
"bugs": {
|
|
21
37
|
"url": ""
|
|
22
38
|
},
|
|
@@ -24,5 +40,10 @@
|
|
|
24
40
|
"whitelistedNonPeerDependencies": [],
|
|
25
41
|
"main": "src/index.js",
|
|
26
42
|
"module": "src/index.js",
|
|
27
|
-
"sideEffects": false
|
|
43
|
+
"sideEffects": false,
|
|
44
|
+
"jest": {
|
|
45
|
+
"setupFiles": [
|
|
46
|
+
"./setup-jest.js"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
28
49
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const SERIES_CLASSNAMES = {
|
|
2
2
|
WATERFALL_BREAKDOWN: 'waterfallBreakdown',
|
|
3
|
+
WATERFALL_WALKTHROUGH: 'waterfallWalkthrough',
|
|
3
4
|
TOTAL_SERIES: 'totalSeries',
|
|
4
5
|
TREND_SERIES: 'trendSeries',
|
|
5
6
|
};
|
|
@@ -25,6 +26,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
25
26
|
const textColor = "#151a41";
|
|
26
27
|
const chartLabelColor = "#cfd7dd";
|
|
27
28
|
const HIGHCHARTS_FONT_FAMILY = 'Poppins';
|
|
29
|
+
let firstBarColor = null;
|
|
28
30
|
|
|
29
31
|
if(!Highcharts){
|
|
30
32
|
Highcharts = {
|
|
@@ -82,6 +84,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
82
84
|
KPI_WIDGET: 'kpi-widget',
|
|
83
85
|
TEXT_WIDGET: 'text-widget',
|
|
84
86
|
WATERFALL_BREAKDOWN: 'waterfall-chart-breakdown',
|
|
87
|
+
WATERFALL_WALKTHROUGH: 'waterfall-chart-walkthrough',
|
|
85
88
|
PUBLISHED_ITEM: 'published_item',
|
|
86
89
|
RICH_TEXT: 'rich_text',
|
|
87
90
|
EXCEL_VIEWER: 'excel_viewer',
|
|
@@ -466,7 +469,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
466
469
|
highchartsRenderer.getOthersName(opts) :
|
|
467
470
|
undefined;
|
|
468
471
|
var drOthersInColumn = lodash.find(
|
|
469
|
-
pivotData.getColKeys(),
|
|
472
|
+
pivotData.getColKeys(),
|
|
470
473
|
keys => keys.length && (lodash.includes(keys, 'DR_Others') || lodash.includes(keys, othersName))
|
|
471
474
|
);
|
|
472
475
|
|
|
@@ -486,7 +489,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
486
489
|
rows = [];
|
|
487
490
|
}
|
|
488
491
|
|
|
489
|
-
var cols = this.key;
|
|
492
|
+
var cols = lodash.get(this, 'point.options.colsForTotal') || this.key;
|
|
490
493
|
if (typeof (cols) == 'object' && cols.name) {
|
|
491
494
|
cols = cols.name;
|
|
492
495
|
}
|
|
@@ -494,7 +497,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
494
497
|
if (!cols && is_drill_down_pie) {
|
|
495
498
|
cols = this.point.name;
|
|
496
499
|
}
|
|
497
|
-
|
|
500
|
+
|
|
498
501
|
if (drOthersInColumn) {
|
|
499
502
|
if (!lodash.isArray(cols) && othersName === cols) {
|
|
500
503
|
cols = ['DR_Others'];
|
|
@@ -619,7 +622,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
619
622
|
|
|
620
623
|
var func = function () {
|
|
621
624
|
const isWaterfallBreakdown = this.series.options.className === SERIES_CLASSNAMES.WATERFALL_BREAKDOWN;
|
|
622
|
-
|
|
625
|
+
const isWaterfallWalkthrough = this.series.options.className === SERIES_CLASSNAMES.WATERFALL_WALKTHROUGH;
|
|
623
626
|
var y = parseFloat(this.y);
|
|
624
627
|
if (pivotData) {
|
|
625
628
|
let series_name = (this.series.name || '') + "";
|
|
@@ -632,7 +635,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
632
635
|
|| this.series.options.className === 'trendSeries') {
|
|
633
636
|
rows = [];
|
|
634
637
|
}
|
|
635
|
-
|
|
638
|
+
|
|
639
|
+
var cols = lodash.get(this, 'point.options.colsForTotal') || this.key;
|
|
636
640
|
if (!cols && is_drill_down_pie) {
|
|
637
641
|
cols = this.name;
|
|
638
642
|
}
|
|
@@ -647,7 +651,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
647
651
|
if (variant_name && rows && rows[0] && variant_name == rows[0]) {
|
|
648
652
|
rows[0] = variant_name_default_name;
|
|
649
653
|
}
|
|
650
|
-
|
|
654
|
+
if (isWaterfallWalkthrough) {
|
|
655
|
+
cols = [this.key]
|
|
656
|
+
}
|
|
651
657
|
try {
|
|
652
658
|
if (is_drill_down_pie && !highchartsRenderer.selfStartsWith(series_name,"Series ")) {
|
|
653
659
|
let temp = cols;
|
|
@@ -655,7 +661,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
655
661
|
rows = temp;
|
|
656
662
|
}
|
|
657
663
|
|
|
658
|
-
var category_text = `<span style="font-weight: bold;"
|
|
664
|
+
var category_text = `<span style="font-weight: bold;">
|
|
665
|
+
${ lodash.get(this, 'point.options.colsForTotal') ? cols[0] : cols } ${ isWaterfallBreakdown ? ': ' : ' ' }
|
|
666
|
+
</span>`;
|
|
659
667
|
if (this.category) {
|
|
660
668
|
category_text = '';
|
|
661
669
|
}
|
|
@@ -672,7 +680,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
672
680
|
const modifiedRowsAndCols = highchartsRenderer.transformRowsAndColsForBreakdown(rows, cols, this.point, opts);
|
|
673
681
|
rows = modifiedRowsAndCols.rows;
|
|
674
682
|
cols = modifiedRowsAndCols.cols;
|
|
675
|
-
}
|
|
683
|
+
}
|
|
676
684
|
|
|
677
685
|
var aggr = pivotData.getAggregator(rows, cols);
|
|
678
686
|
|
|
@@ -1414,6 +1422,89 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1414
1422
|
return chart_series;
|
|
1415
1423
|
}
|
|
1416
1424
|
|
|
1425
|
+
highchartsRenderer.ptCreateWaterfallWalkthroughSeries = function (pivotData, onlyNumbers, additionOptions, opts) {
|
|
1426
|
+
const waterfallOptions = opts.walkthrough_options;
|
|
1427
|
+
const chart_series = [];
|
|
1428
|
+
let resultObject = {
|
|
1429
|
+
data: [],
|
|
1430
|
+
dataLabels: {
|
|
1431
|
+
allowOverlap: additionOptions && additionOptions.label ? additionOptions.label.overlap : false,
|
|
1432
|
+
enabled: additionOptions && additionOptions.label ? additionOptions.label.show : true,
|
|
1433
|
+
formatter: highchartsRenderer.defaultDataLabelFormatter(pivotData, {'chartOptions': additionOptions, total_value_options: opts.total_value_options}),
|
|
1434
|
+
style: highchartsRenderer.getDataLabelsStyle(additionOptions),
|
|
1435
|
+
},
|
|
1436
|
+
upColor: waterfallOptions.colors.increase,
|
|
1437
|
+
color: waterfallOptions.colors.decrease,
|
|
1438
|
+
className: SERIES_CLASSNAMES.WATERFALL_WALKTHROUGH
|
|
1439
|
+
};
|
|
1440
|
+
resultObject = highchartsRenderer.getDataLabelsOptions(additionOptions, resultObject);
|
|
1441
|
+
lodash.forEach(waterfallOptions.values.walkthrough, function(value, index) {
|
|
1442
|
+
|
|
1443
|
+
let keys = [];
|
|
1444
|
+
if (value.trend === 'total') {
|
|
1445
|
+
keys = ['Total'];
|
|
1446
|
+
} else {
|
|
1447
|
+
_.forEach(value.key, (item) => {
|
|
1448
|
+
const findKeyByValue = Object.keys(pivotData.dateValuesDictionary || {}).find(key => pivotData.dateValuesDictionary[key] === item);
|
|
1449
|
+
keys.push(findKeyByValue ? findKeyByValue : item);
|
|
1450
|
+
})
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
const agg = pivotData.getAggregator([], keys);
|
|
1454
|
+
let val = agg.value();
|
|
1455
|
+
|
|
1456
|
+
if (val != null && $.isNumeric(val)) {
|
|
1457
|
+
val = parseFloat(val);
|
|
1458
|
+
} else if (onlyNumbers) {
|
|
1459
|
+
val = NaN;
|
|
1460
|
+
} else {
|
|
1461
|
+
val = 0;
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
if (value.trend === 'decrease') {
|
|
1465
|
+
val = val * -1;
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
const name = value.trend === 'total' ? value.formattedKey || value.key[0] : keys.join(highchartsRenderer.delimer);
|
|
1469
|
+
let color = '';
|
|
1470
|
+
if (value.trend !== 'total') {
|
|
1471
|
+
if (index === 0 && !firstBarColor) {
|
|
1472
|
+
color = waterfallOptions.colors.total;
|
|
1473
|
+
firstBarColor = waterfallOptions.colors.total;
|
|
1474
|
+
} else {
|
|
1475
|
+
color = value.color
|
|
1476
|
+
}
|
|
1477
|
+
} else {
|
|
1478
|
+
color = waterfallOptions.colors.total;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
resultObject.data.push({
|
|
1482
|
+
y: val,
|
|
1483
|
+
name: lodash.unescape(name).replace('DR_Others', highchartsRenderer.getOthersName(opts)),
|
|
1484
|
+
isSum: value.trend === 'total',
|
|
1485
|
+
isTotal: value.trend === 'total',
|
|
1486
|
+
color,
|
|
1487
|
+
colsForTotal: value.trend === 'total' ? keys : null,
|
|
1488
|
+
});
|
|
1489
|
+
});
|
|
1490
|
+
chart_series.push(resultObject);
|
|
1491
|
+
chart_series.push(
|
|
1492
|
+
{
|
|
1493
|
+
name: 'Positive',
|
|
1494
|
+
visible: false,
|
|
1495
|
+
color: waterfallOptions.colors.increase
|
|
1496
|
+
});
|
|
1497
|
+
|
|
1498
|
+
chart_series.push(
|
|
1499
|
+
{
|
|
1500
|
+
name: 'Negative',
|
|
1501
|
+
visible: false,
|
|
1502
|
+
color: waterfallOptions.colors.decrease
|
|
1503
|
+
});
|
|
1504
|
+
|
|
1505
|
+
return chart_series;
|
|
1506
|
+
}
|
|
1507
|
+
|
|
1417
1508
|
highchartsRenderer.setChartTypeBySeriesType = function (type, series) {
|
|
1418
1509
|
const types = {
|
|
1419
1510
|
'line-chart': 'line',
|
|
@@ -1617,7 +1708,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1617
1708
|
highchartsRenderer.getDataLabelsStylesForDrillDown = function(additionOptions) {
|
|
1618
1709
|
let result = highchartsRenderer.getDataLabelsOptions(additionOptions, { dataLabels: {} });
|
|
1619
1710
|
|
|
1620
|
-
if (!result.dataLabels) return {};
|
|
1711
|
+
if (!result.dataLabels) return {};
|
|
1621
1712
|
return {
|
|
1622
1713
|
activeDataLabelStyle: {
|
|
1623
1714
|
color: result.dataLabels.color,
|
|
@@ -3173,7 +3264,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
3173
3264
|
|
|
3174
3265
|
highchartsRenderer.ptRenderWaterfallBreakdown = function (pivotData, opts, drilldownFunc, chartType) {
|
|
3175
3266
|
let chartOptions = {};
|
|
3176
|
-
const additionOptions = opts.chartOptions
|
|
3267
|
+
const additionOptions = opts.chartOptions
|
|
3177
3268
|
? opts.chartOptions
|
|
3178
3269
|
: highchartsRenderer.getDefaultValueForChart(highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN);
|
|
3179
3270
|
|
|
@@ -3272,6 +3363,121 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
3272
3363
|
return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
|
|
3273
3364
|
};
|
|
3274
3365
|
|
|
3366
|
+
highchartsRenderer.ptRenderWaterfallWalkthrough = function (pivotData, opts) {
|
|
3367
|
+
let chartOptions = {};
|
|
3368
|
+
const waterfallOptions = opts?.walkthrough_options;
|
|
3369
|
+
const additionOptions = opts.chartOptions
|
|
3370
|
+
? opts.chartOptions
|
|
3371
|
+
: highchartsRenderer.getDefaultValueForChart(highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH);
|
|
3372
|
+
|
|
3373
|
+
chartOptions.chart = {
|
|
3374
|
+
type: 'waterfall',
|
|
3375
|
+
zoomType: additionOptions && additionOptions.chart && additionOptions.chart.zoom_type ? additionOptions.chart.zoom_type : 'None',
|
|
3376
|
+
};
|
|
3377
|
+
if (disableAnimation) {
|
|
3378
|
+
chartOptions.chart.animation = false;
|
|
3379
|
+
}
|
|
3380
|
+
|
|
3381
|
+
chartOptions.xAxis = {
|
|
3382
|
+
type: 'category',
|
|
3383
|
+
crosshair: true,
|
|
3384
|
+
min: 0,
|
|
3385
|
+
title: {
|
|
3386
|
+
text : additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
|
|
3387
|
+
},
|
|
3388
|
+
uniqueNames: false,
|
|
3389
|
+
};
|
|
3390
|
+
|
|
3391
|
+
highchartsRenderer.setTitleAndSubTitle(chartOptions, opts, additionOptions);
|
|
3392
|
+
|
|
3393
|
+
chartOptions.yAxis = {
|
|
3394
|
+
min: null,
|
|
3395
|
+
max: null,
|
|
3396
|
+
title: {
|
|
3397
|
+
text: additionOptions && additionOptions.axisY ? additionOptions.axisY.name : '',
|
|
3398
|
+
autoylabel: additionOptions && additionOptions.axisY ? additionOptions.axisY.autoylabel : ''
|
|
3399
|
+
},
|
|
3400
|
+
labels: {
|
|
3401
|
+
formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts)
|
|
3402
|
+
},
|
|
3403
|
+
};
|
|
3404
|
+
if (additionOptions) {
|
|
3405
|
+
highchartsRenderer.setYAxisMinMax(chartOptions.yAxis, additionOptions.axisY);
|
|
3406
|
+
}
|
|
3407
|
+
|
|
3408
|
+
chartOptions.tooltip = {
|
|
3409
|
+
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
|
3410
|
+
valueDecimals: 2,
|
|
3411
|
+
};
|
|
3412
|
+
|
|
3413
|
+
highchartsRenderer.handleGridLines(additionOptions, chartOptions);
|
|
3414
|
+
|
|
3415
|
+
if (lodash.get(opts, 'paletteOptions.widgetPalette', null)) {
|
|
3416
|
+
const mc_palette = lodash.find(lodash.get(opts.paletteOptions, 'monochromePalettes', []), { selected: true });
|
|
3417
|
+
chartOptions.colors = mc_palette ? mc_palette.colors : opts.paletteOptions.widgetPalette;
|
|
3418
|
+
} else if (lodash.get(opts, 'paletteOptions.dashboardPalette.colors', null)) {
|
|
3419
|
+
chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
|
|
3420
|
+
}
|
|
3421
|
+
chartOptions.series = highchartsRenderer
|
|
3422
|
+
.ptCreateWaterfallWalkthroughSeries(pivotData, null, additionOptions, opts);
|
|
3423
|
+
|
|
3424
|
+
chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
|
|
3425
|
+
chartOptions.plotOptions = {
|
|
3426
|
+
waterfall: {
|
|
3427
|
+
pointPadding: 0.2,
|
|
3428
|
+
borderWidth: 0,
|
|
3429
|
+
borderRadius: 1,
|
|
3430
|
+
lineWidth: 0,
|
|
3431
|
+
},
|
|
3432
|
+
series: {
|
|
3433
|
+
animation: !disableAnimation,
|
|
3434
|
+
cropThreshold: 1000,
|
|
3435
|
+
dataLabels: {
|
|
3436
|
+
allowOverlap: additionOptions && additionOptions.label ? additionOptions.label.overlap : false,
|
|
3437
|
+
enabled: additionOptions && additionOptions.label ? additionOptions.label.show : true,
|
|
3438
|
+
formatter: highchartsRenderer.defaultDataLabelFormatter(pivotData, opts),
|
|
3439
|
+
style: highchartsRenderer.getDataLabelsStyle(additionOptions),
|
|
3440
|
+
inside: false
|
|
3441
|
+
},
|
|
3442
|
+
events: {
|
|
3443
|
+
legendItemClick: () => {
|
|
3444
|
+
return false;
|
|
3445
|
+
}
|
|
3446
|
+
}
|
|
3447
|
+
}
|
|
3448
|
+
};
|
|
3449
|
+
|
|
3450
|
+
if (opts.drillDownListFunc) {
|
|
3451
|
+
chartOptions.plotOptions.series.cursor = 'pointer';
|
|
3452
|
+
chartOptions.plotOptions.series.point = {
|
|
3453
|
+
events: {
|
|
3454
|
+
click: opts.drillDownListFunc
|
|
3455
|
+
}
|
|
3456
|
+
};
|
|
3457
|
+
}
|
|
3458
|
+
if (waterfallOptions.colors) {
|
|
3459
|
+
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, 3, false);
|
|
3460
|
+
chartOptions.legend.useHTML = true;
|
|
3461
|
+
chartOptions.legend.labelFormatter = function() {
|
|
3462
|
+
const name = this.options.className ? 'Total': this.name;
|
|
3463
|
+
const findTotal = _.find(this.options.data, {isTotal: true});
|
|
3464
|
+
const color = findTotal?.color ? findTotal.color : this.color;
|
|
3465
|
+
return '<span style="margin: 5px; vertical-align: middle; display:inline-block; background-color: '+ color + '; width: 12px; height: 12px; border-radius: 50%"></span><span style="color: #000; display: inline-block; margin: 5px; vertical-align: middle;">' + name + '</span>';
|
|
3466
|
+
}
|
|
3467
|
+
|
|
3468
|
+
chartOptions.legend.symbolPadding = 0;
|
|
3469
|
+
chartOptions.legend.symbolWidth = 0;
|
|
3470
|
+
chartOptions.legend.symbolHeight = 0;
|
|
3471
|
+
chartOptions.legend.squareSymbol = false;
|
|
3472
|
+
} else {
|
|
3473
|
+
chartOptions.legend = {
|
|
3474
|
+
enabled: false
|
|
3475
|
+
}
|
|
3476
|
+
}
|
|
3477
|
+
|
|
3478
|
+
return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
|
|
3479
|
+
}
|
|
3480
|
+
|
|
3275
3481
|
highchartsRenderer.formatFieldValue = function (field, value) {
|
|
3276
3482
|
let currentType = '';
|
|
3277
3483
|
let format = field.format;
|
|
@@ -4340,6 +4546,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4340
4546
|
}
|
|
4341
4547
|
};
|
|
4342
4548
|
|
|
4549
|
+
highchartsRenderer.waterfallConstants = {
|
|
4550
|
+
[highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN]: {
|
|
4551
|
+
minCategoriesCount: 2,
|
|
4552
|
+
maxCategoriesCount: 5,
|
|
4553
|
+
},
|
|
4554
|
+
[highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH]: {
|
|
4555
|
+
minCategoriesCount: 2,
|
|
4556
|
+
maxCategoriesCount: 10,
|
|
4557
|
+
}
|
|
4558
|
+
};
|
|
4559
|
+
|
|
4343
4560
|
highchartsRenderer.rhPivotView = function (rowData, options, isTable = false, widget = null) {
|
|
4344
4561
|
if (!rowData || !rowData) {
|
|
4345
4562
|
if (options.onlyOptions) {
|
|
@@ -4348,10 +4565,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4348
4565
|
return null;
|
|
4349
4566
|
}
|
|
4350
4567
|
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4568
|
+
const isWaterfall = widget
|
|
4569
|
+
&& (
|
|
4570
|
+
widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN
|
|
4571
|
+
|| widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH
|
|
4572
|
+
);
|
|
4573
|
+
|
|
4574
|
+
if (isWaterfall) {
|
|
4575
|
+
const maxCategories = highchartsRenderer.waterfallConstants[widget.chart_type].maxCategoriesCount;
|
|
4576
|
+
const minCategories = highchartsRenderer.waterfallConstants[widget.chart_type].minCategoriesCount;
|
|
4355
4577
|
const uniqueCategories = lodash.filter(
|
|
4356
4578
|
lodash.uniq(
|
|
4357
4579
|
lodash.map(rowData, row => row[widget.cols[0].name])
|
|
@@ -4361,6 +4583,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4361
4583
|
|
|
4362
4584
|
if (uniqueCategories && (uniqueCategories.length > maxCategories || uniqueCategories.length < minCategories )) {
|
|
4363
4585
|
options.error_has_occurred = true;
|
|
4586
|
+
const isDateField = widget.cols[0].type === 'Date';
|
|
4587
|
+
const commonMessagePart = `This chart support a selection of ${minCategories}-${maxCategories} items from the category section. `;
|
|
4364
4588
|
options.error_params = {
|
|
4365
4589
|
title: 'Data Conflict',
|
|
4366
4590
|
text: `Please adjust your dashboard's reference date and filter selections as \
|
|
@@ -4609,19 +4833,25 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4609
4833
|
return highchartsRenderer.getWeekNumber(dateObj);
|
|
4610
4834
|
};
|
|
4611
4835
|
|
|
4612
|
-
highchartsRenderer.
|
|
4613
|
-
let
|
|
4836
|
+
highchartsRenderer.check_values_not_for_convert = function (currentgraph, field_name) {
|
|
4837
|
+
let vals_not_convert = [];
|
|
4614
4838
|
if (lodash.has(currentgraph, "options.chartOptions.delta_column") && currentgraph.options.chartOptions.delta_column) {
|
|
4615
4839
|
let delta_options = currentgraph.options.chartOptions.delta_column;
|
|
4616
4840
|
if (delta_options.field == 'series' && currentgraph.rows && currentgraph.rows[0] &&
|
|
4617
4841
|
currentgraph.rows[0].name == field_name) {
|
|
4618
|
-
|
|
4842
|
+
vals_not_convert = [delta_options.name];
|
|
4619
4843
|
} else if (delta_options.field == 'category' && currentgraph.rows && currentgraph.cols[0] &&
|
|
4620
4844
|
currentgraph.cols[0].name == field_name) {
|
|
4621
|
-
|
|
4845
|
+
vals_not_convert = [delta_options.name];
|
|
4622
4846
|
}
|
|
4847
|
+
} else if (currentgraph.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH) {
|
|
4848
|
+
lodash.forEach(currentgraph.options.walkthrough_options.values.walkthrough, value => {
|
|
4849
|
+
if (value.trend === 'total') {
|
|
4850
|
+
vals_not_convert.push(value.key[0]);
|
|
4851
|
+
}
|
|
4852
|
+
});
|
|
4623
4853
|
}
|
|
4624
|
-
return
|
|
4854
|
+
return vals_not_convert;
|
|
4625
4855
|
};
|
|
4626
4856
|
|
|
4627
4857
|
highchartsRenderer.updateFiltersShowNames = function (filters) {
|
|
@@ -4641,8 +4871,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4641
4871
|
})
|
|
4642
4872
|
};
|
|
4643
4873
|
|
|
4644
|
-
highchartsRenderer.returnRawDataValue = function (type, value, format, field_name,
|
|
4645
|
-
if (
|
|
4874
|
+
highchartsRenderer.returnRawDataValue = function (type, value, format, field_name, vals_not_for_convert) {
|
|
4875
|
+
if (vals_not_for_convert && vals_not_for_convert.length && lodash.includes(vals_not_for_convert, value)) {
|
|
4646
4876
|
return value;
|
|
4647
4877
|
}
|
|
4648
4878
|
|
|
@@ -4738,7 +4968,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4738
4968
|
};
|
|
4739
4969
|
|
|
4740
4970
|
highchartsRenderer.isSystemField = function (field) {
|
|
4741
|
-
var regex = new RegExp("^(
|
|
4971
|
+
var regex = new RegExp("^(Parent_Name|Parent_Id|FileBox_ID|FileBox_Name|DataMapper_Name|Doc_ID|Doc_version|Label|Submission_Date|User|table_id|Latest_In_Dim|Tab_name|CP_Name|DT_.+|VT_.+|System_.+)$", "m");
|
|
4742
4972
|
|
|
4743
4973
|
return (field.category && field.category.includes("")) || regex.test(field.name)
|
|
4744
4974
|
};
|
|
@@ -5101,55 +5331,34 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5101
5331
|
|
|
5102
5332
|
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions) {
|
|
5103
5333
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5334
|
+
|
|
5335
|
+
const scenarioName = 'scenario';
|
|
5104
5336
|
const fields = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.fields);
|
|
5105
|
-
const
|
|
5337
|
+
const fieldScenarioAlias = _.find(fields, field => (field.alias || '').toLowerCase() === scenarioName)
|
|
5338
|
+
const fieldScenario = _.find(fields, field => (field.name || '').toLowerCase() === scenarioName)
|
|
5339
|
+
const filters = calcModelOptions.config && calcModelOptions.config.filters;
|
|
5340
|
+
|
|
5341
|
+
const filterFields = [];
|
|
5342
|
+
const valueFields = [];
|
|
5343
|
+
const dateFields = [];
|
|
5344
|
+
const dataTypeFields = [];
|
|
5345
|
+
const dataSeriesFields = [];
|
|
5346
|
+
|
|
5347
|
+
let scenarioField = lodash.get(calcModelOptions, 'config.scenario', undefined) || fieldScenarioAlias || fieldScenario;
|
|
5348
|
+
let fieldOb;
|
|
5106
5349
|
|
|
5107
|
-
const fillData = (fieldsArr) => {
|
|
5108
|
-
const destinationArr = [];
|
|
5350
|
+
const fillData = (fieldsArr, destinationArr) => {
|
|
5109
5351
|
lodash.forEach(fieldsArr, function (valObj) {
|
|
5110
|
-
|
|
5352
|
+
fieldOb = lodash.find(fields, { id: valObj.id });
|
|
5111
5353
|
if (fieldOb) {
|
|
5112
5354
|
destinationArr.push(fieldOb);
|
|
5113
5355
|
lodash.remove(fields, { id: fieldOb.id });
|
|
5114
5356
|
}
|
|
5115
5357
|
});
|
|
5116
|
-
|
|
5117
|
-
return destinationArr;
|
|
5118
|
-
}
|
|
5119
|
-
|
|
5120
|
-
const predefinedField = {
|
|
5121
|
-
value: {
|
|
5122
|
-
regex: /posting[_\s]?amount/i,
|
|
5123
|
-
fieldWithAlias: undefined,
|
|
5124
|
-
fieldWithName: undefined
|
|
5125
|
-
},
|
|
5126
|
-
dataType: {
|
|
5127
|
-
regex: /data[_\s]?type/i,
|
|
5128
|
-
fieldWithAlias: undefined,
|
|
5129
|
-
fieldWithName: undefined
|
|
5130
|
-
},
|
|
5131
|
-
date: {
|
|
5132
|
-
regex: /reporting[_\s]?month/i,
|
|
5133
|
-
fieldWithAlias: undefined,
|
|
5134
|
-
fieldWithName: undefined
|
|
5135
|
-
},
|
|
5136
|
-
filters: {
|
|
5137
|
-
regex: /scenario/i,
|
|
5138
|
-
fieldWithAlias: undefined,
|
|
5139
|
-
fieldWithName: undefined
|
|
5140
|
-
},
|
|
5141
|
-
};
|
|
5142
|
-
|
|
5143
|
-
for (const key in predefinedField) {
|
|
5144
|
-
predefinedField[key].fieldWithAlias = _.find(fields, field => predefinedField[key].regex.test((field.alias || '').toLowerCase()));
|
|
5145
|
-
|
|
5146
|
-
if (!predefinedField[key].fieldWithAlias) {
|
|
5147
|
-
predefinedField[key].fieldWithName = _.find(fields, field => predefinedField[key].regex.test((field.name || '').toLowerCase()));
|
|
5148
|
-
}
|
|
5149
5358
|
}
|
|
5150
5359
|
|
|
5151
5360
|
lodash.forEach(filters, function (filterObj) {
|
|
5152
|
-
|
|
5361
|
+
fieldOb = lodash.find(fields, { id: filterObj.id });
|
|
5153
5362
|
if (!fieldOb) return;
|
|
5154
5363
|
|
|
5155
5364
|
filterObj.values = filterObj.values && lodash.map(filterObj.values, highchartsRenderer.decodeFunc);
|
|
@@ -5168,16 +5377,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5168
5377
|
});
|
|
5169
5378
|
|
|
5170
5379
|
const storedGroupByFields = lodash.get(calcModelOptions, 'config.group_by', []);
|
|
5171
|
-
const storedDateFields = [lodash.get(calcModelOptions, 'config.date_field',
|
|
5172
|
-
const storedAggFields = [lodash.get(calcModelOptions, 'config.agg_field',
|
|
5173
|
-
const storedDataTypeFields = [lodash.get(calcModelOptions, 'config.data_type_field',
|
|
5174
|
-
const scenarioField = lodash.get(calcModelOptions, 'config.scenario', predefinedField.filters.fieldWithAlias || predefinedField.filters.fieldWithName);
|
|
5380
|
+
const storedDateFields = [lodash.get(calcModelOptions, 'config.date_field', undefined)].filter(f => !!f);
|
|
5381
|
+
const storedAggFields = [lodash.get(calcModelOptions, 'config.agg_field', undefined)].filter(f => !!f);
|
|
5382
|
+
const storedDataTypeFields = [lodash.get(calcModelOptions, 'config.data_type_field', undefined)].filter(f => !!f);
|
|
5175
5383
|
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5384
|
+
fillData(storedGroupByFields, dataSeriesFields);
|
|
5385
|
+
fillData(storedDateFields, dateFields);
|
|
5386
|
+
fillData(storedAggFields, valueFields);
|
|
5387
|
+
fillData(storedDataTypeFields, dataTypeFields);
|
|
5388
|
+
fillData(filters, filterFields);
|
|
5181
5389
|
|
|
5182
5390
|
calcModelOptions.pivot = {
|
|
5183
5391
|
fieldsArray: fields,
|
|
@@ -5685,7 +5893,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5685
5893
|
return valToReturn;
|
|
5686
5894
|
};
|
|
5687
5895
|
|
|
5688
|
-
|
|
5896
|
+
|
|
5689
5897
|
highchartsRenderer.getChartAxisLabel = function(type) {
|
|
5690
5898
|
return highchartsRenderer.chartsTypesInfo[type] ? highchartsRenderer.chartsTypesInfo[type].axisName : CHART_AXIS_DEFAULT_LABEL;
|
|
5691
5899
|
};
|
|
@@ -6520,7 +6728,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6520
6728
|
value_name: 'show',
|
|
6521
6729
|
default_value: true,
|
|
6522
6730
|
disabled_str: '!{var}.show_out_of_x_axis && !{var}.show_out_of_data_series && !{var}.show_value && !{var}.show_x_axis && !{var}.show_data_series',
|
|
6523
|
-
disabled_fn: (value) => !value.show_out_of_x_axis
|
|
6731
|
+
disabled_fn: (value) => !value.show_out_of_x_axis
|
|
6524
6732
|
&& !value.show_out_of_data_series
|
|
6525
6733
|
&& !value.show_value
|
|
6526
6734
|
&& !value.show_x_axis
|
|
@@ -6561,8 +6769,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6561
6769
|
element_label: '[X Axis]',
|
|
6562
6770
|
value_name: 'show_x_axis',
|
|
6563
6771
|
default_value: true,
|
|
6564
|
-
clickFn: (value) => value.show = value.show
|
|
6565
|
-
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6772
|
+
clickFn: (value) => value.show = value.show
|
|
6773
|
+
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6566
6774
|
: value.show,
|
|
6567
6775
|
},
|
|
6568
6776
|
{
|
|
@@ -6570,8 +6778,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6570
6778
|
element_label: '[Data Series]',
|
|
6571
6779
|
value_name: 'show_data_series',
|
|
6572
6780
|
default_value: true,
|
|
6573
|
-
clickFn: (value) => value.show = value.show
|
|
6574
|
-
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6781
|
+
clickFn: (value) => value.show = value.show
|
|
6782
|
+
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6575
6783
|
: value.show,
|
|
6576
6784
|
},
|
|
6577
6785
|
{
|
|
@@ -6579,8 +6787,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6579
6787
|
element_label: 'Value',
|
|
6580
6788
|
value_name: 'show_value',
|
|
6581
6789
|
default_value: true,
|
|
6582
|
-
clickFn: (value) => value.show = value.show
|
|
6583
|
-
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6790
|
+
clickFn: (value) => value.show = value.show
|
|
6791
|
+
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6584
6792
|
: value.show,
|
|
6585
6793
|
},
|
|
6586
6794
|
{
|
|
@@ -6588,8 +6796,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6588
6796
|
element_label: '% Out of [X Axis]',
|
|
6589
6797
|
value_name: 'show_out_of_x_axis',
|
|
6590
6798
|
default_value: false,
|
|
6591
|
-
clickFn: (value) => value.show = value.show
|
|
6592
|
-
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6799
|
+
clickFn: (value) => value.show = value.show
|
|
6800
|
+
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6593
6801
|
: value.show,
|
|
6594
6802
|
},
|
|
6595
6803
|
{
|
|
@@ -6597,8 +6805,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6597
6805
|
element_label: '% Out of [Data Series]',
|
|
6598
6806
|
value_name: 'show_out_of_data_series',
|
|
6599
6807
|
default_value: false,
|
|
6600
|
-
clickFn: (value) => value.show = value.show
|
|
6601
|
-
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6808
|
+
clickFn: (value) => value.show = value.show
|
|
6809
|
+
? value.show_out_of_x_axis || value.show_out_of_data_series || value.show_value || value.show_x_axis || value.show_data_series
|
|
6602
6810
|
: value.show,
|
|
6603
6811
|
},
|
|
6604
6812
|
]
|
|
@@ -6772,16 +6980,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6772
6980
|
value_name: 'name',
|
|
6773
6981
|
element_label: 'Name',
|
|
6774
6982
|
default_value: '_Variance'
|
|
6775
|
-
}, {
|
|
6776
|
-
element_type: 'input',
|
|
6777
|
-
value_name: 'formula',
|
|
6778
|
-
element_label: 'Formula',
|
|
6779
|
-
default_value: 'x2-x1'
|
|
6780
6983
|
}, {
|
|
6781
6984
|
element_type: 'input',
|
|
6782
|
-
value_name: '
|
|
6783
|
-
element_label: '
|
|
6784
|
-
default_value: ''
|
|
6985
|
+
value_name: 'formula',
|
|
6986
|
+
element_label: 'Formula',
|
|
6987
|
+
default_value: 'x2-x1'
|
|
6988
|
+
}, {
|
|
6989
|
+
element_type: 'input',
|
|
6990
|
+
value_name: 'color',
|
|
6991
|
+
element_label: 'Color',
|
|
6992
|
+
default_value: ''
|
|
6785
6993
|
}, {
|
|
6786
6994
|
element_type: 'radio',
|
|
6787
6995
|
value_name: 'chart',
|
|
@@ -6904,7 +7112,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
6904
7112
|
axisTooltipDescription: 'The category (usually an independent variable) is shown on the x-axis and should be between 2 to 5 total columns. ',
|
|
6905
7113
|
legendTooltipTitle: 'Drag one field to further configure your x-axis.',
|
|
6906
7114
|
legendTooltipDescription: 'The breakdown subdivides the chart by a category field for further analysis of what’s contributing to the increase or decrease.',
|
|
6907
|
-
},
|
|
7115
|
+
},
|
|
7116
|
+
[highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH]: {
|
|
7117
|
+
name: 'Waterfall Walkthrough Chart ',
|
|
7118
|
+
label: 'Waterfall Walkthrough Chart ',
|
|
7119
|
+
title: 'TODO: add text',
|
|
7120
|
+
description: 'TODO: add text',
|
|
7121
|
+
axisName: 'Category',
|
|
7122
|
+
startedMessage: 'TODO: add text',
|
|
7123
|
+
axisTooltipTitle: 'TODO: add text',
|
|
7124
|
+
legendTooltipTitle: 'TODO: add text',
|
|
7125
|
+
},
|
|
6908
7126
|
'combo-chart': {
|
|
6909
7127
|
name: 'Combo Chart ',
|
|
6910
7128
|
label: 'Combo Chart ',
|
|
@@ -7560,6 +7778,24 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
7560
7778
|
highchartsRenderer.suboptions["legends"],
|
|
7561
7779
|
]
|
|
7562
7780
|
},
|
|
7781
|
+
{
|
|
7782
|
+
type: highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH,
|
|
7783
|
+
name: highchartsRenderer.chartsTypesInfo[highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH].name,
|
|
7784
|
+
class: 'google-visualization-charteditor-thumbs-columnchart',
|
|
7785
|
+
render: highchartsRenderer.ptRenderWaterfallWalkthrough,
|
|
7786
|
+
suboptions: [
|
|
7787
|
+
highchartsRenderer.suboptions["axisX"],
|
|
7788
|
+
highchartsRenderer.suboptions["tooltips"],
|
|
7789
|
+
highchartsRenderer.suboptions["label"],
|
|
7790
|
+
highchartsRenderer.suboptions["subtitle"],
|
|
7791
|
+
highchartsRenderer.suboptions["widget_library"],
|
|
7792
|
+
highchartsRenderer.suboptions["chart"],
|
|
7793
|
+
highchartsRenderer.suboptions["negative_number_format"],
|
|
7794
|
+
highchartsRenderer.suboptions["advanced"],
|
|
7795
|
+
highchartsRenderer.suboptions["legends"],
|
|
7796
|
+
],
|
|
7797
|
+
hidden: true,
|
|
7798
|
+
},
|
|
7563
7799
|
]
|
|
7564
7800
|
},
|
|
7565
7801
|
];
|
|
@@ -7716,7 +7952,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
7716
7952
|
_.forEach(Object.keys(dates), key => {
|
|
7717
7953
|
const dateConfiguration = dates[key];
|
|
7718
7954
|
const timestamp = dateConfiguration.timestamp;
|
|
7719
|
-
if (timestamp) {
|
|
7955
|
+
if (timestamp) {
|
|
7720
7956
|
const dateTzOffsetInSeconds = new Date(timestamp * 1000).getTimezoneOffset() * 60;
|
|
7721
7957
|
dateConfiguration.displayedValue = new Date((timestamp + dateTzOffsetInSeconds) * 1000)
|
|
7722
7958
|
.toLocaleDateString();
|
|
@@ -8015,7 +8251,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8015
8251
|
if (!(format && highchartsRenderer.isDateFormat(dateString, format) || highchartsRenderer.isDate(dateString))) {
|
|
8016
8252
|
return null;
|
|
8017
8253
|
}
|
|
8018
|
-
const utcDate = format
|
|
8254
|
+
const utcDate = format
|
|
8019
8255
|
? moment_lib.utc(dateString, format, true)
|
|
8020
8256
|
: moment_lib.utc(dateString);
|
|
8021
8257
|
return utcDate.startOf('day').unix();
|
|
@@ -8033,7 +8269,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8033
8269
|
}
|
|
8034
8270
|
|
|
8035
8271
|
let filters = [];
|
|
8036
|
-
|
|
8272
|
+
|
|
8037
8273
|
if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN) {
|
|
8038
8274
|
const colFilter = highchartsRenderer.createFilterObject(widget.cols[0]);
|
|
8039
8275
|
const labels = [];
|
|
@@ -8061,7 +8297,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8061
8297
|
col_value,
|
|
8062
8298
|
highchartsRenderer.getDateFieldFormat(widget, widget.cols[index])
|
|
8063
8299
|
);
|
|
8064
|
-
|
|
8300
|
+
|
|
8065
8301
|
if ($.isEmptyObject(datetrange)) {
|
|
8066
8302
|
return;
|
|
8067
8303
|
}
|
|
@@ -8304,7 +8540,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8304
8540
|
var data = res;
|
|
8305
8541
|
|
|
8306
8542
|
lodash.forEach(datesFields, function (row) {
|
|
8307
|
-
row.val_not_convert = highchartsRenderer.
|
|
8543
|
+
row.val_not_convert = highchartsRenderer.check_values_not_for_convert(widget, row.name);
|
|
8308
8544
|
});
|
|
8309
8545
|
|
|
8310
8546
|
if (datesFields.length > 0) {
|
|
@@ -8710,14 +8946,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8710
8946
|
return rightPosition;
|
|
8711
8947
|
case 'none':
|
|
8712
8948
|
return none;
|
|
8949
|
+
}
|
|
8950
|
+
} else if (isLine) {
|
|
8951
|
+
return useNewUx ? leftPosition : rightPosition;
|
|
8952
|
+
} else if (isPie) {
|
|
8953
|
+
return useNewUx ? rightPosition : topPosition;
|
|
8713
8954
|
}
|
|
8714
|
-
} else if (isLine) {
|
|
8715
|
-
return useNewUx ? leftPosition : rightPosition;
|
|
8716
|
-
} else if (isPie) {
|
|
8717
|
-
return useNewUx ? rightPosition : topPosition;
|
|
8718
|
-
}
|
|
8719
8955
|
|
|
8720
|
-
|
|
8956
|
+
return useNewUx ? topPosition : bottomPosition;
|
|
8721
8957
|
}
|
|
8722
8958
|
|
|
8723
8959
|
highchartsRenderer.setYAxisMinMax = function (yAxis, axisYOptions) {
|
|
@@ -8732,7 +8968,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8732
8968
|
}
|
|
8733
8969
|
|
|
8734
8970
|
highchartsRenderer.getDateFieldFormat = function(widget, dateField) {
|
|
8735
|
-
const aggregationConfig = widget.options && widget.options.date_aggregation_configs
|
|
8971
|
+
const aggregationConfig = widget.options && widget.options.date_aggregation_configs
|
|
8736
8972
|
? _.find(widget.options.date_aggregation_configs, { field_id: dateField.id })
|
|
8737
8973
|
: null;
|
|
8738
8974
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as $ from 'jquery';
|
|
2
|
+
import * as lodash from 'lodash';
|
|
3
|
+
import * as moment from 'moment';
|
|
4
|
+
import initPivotTable from "../src/pivottable";
|
|
5
|
+
import initDRPivotTable from "../src/dr_pivottable";
|
|
6
|
+
|
|
7
|
+
const getHighchartsRenderer = require('../src/highcharts_renderer');
|
|
8
|
+
const DataFormatter = require('../src/dataformatter');
|
|
9
|
+
const DEFAULT_USER_COLORS = {
|
|
10
|
+
colors: ['#008aff', '#91e7e7', '#f37789', '#ffdc65', '#0e569d', '#bbe0ff', '#57b2ff', '#5ecfb9', '#c7ffda', '#179ab9'],
|
|
11
|
+
variance_color: null
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
let highchartsRenderer = {};
|
|
15
|
+
let _window = window;
|
|
16
|
+
let _document = document;
|
|
17
|
+
|
|
18
|
+
describe('highcharts_renderer', () => {
|
|
19
|
+
beforeAll(() => {
|
|
20
|
+
const Highcharts = {
|
|
21
|
+
opt: {},
|
|
22
|
+
setOptions: function(value) {Highcharts.opt = value;},
|
|
23
|
+
numberFormat: function(value) { return value ;},
|
|
24
|
+
getOptions: function() { return Highcharts.opt; }
|
|
25
|
+
};
|
|
26
|
+
_window.DataFormatter = DataFormatter;
|
|
27
|
+
initPivotTable($, _window, _document);
|
|
28
|
+
initDRPivotTable($, _window, _document);
|
|
29
|
+
|
|
30
|
+
highchartsRenderer = getHighchartsRenderer($, _document, Highcharts, DEFAULT_USER_COLORS, highchartsRenderer,
|
|
31
|
+
DataFormatter, lodash, moment, true)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
describe('function isSystemField', () => {
|
|
35
|
+
it('system name', () => {
|
|
36
|
+
const field = {
|
|
37
|
+
name: 'Doc_ID'
|
|
38
|
+
};
|
|
39
|
+
expect(highchartsRenderer.isSystemField(field)).toBe(true)
|
|
40
|
+
});
|
|
41
|
+
it('not system name', () => {
|
|
42
|
+
const field = {
|
|
43
|
+
name: 'field name'
|
|
44
|
+
};
|
|
45
|
+
expect(highchartsRenderer.isSystemField(field)).toBe(false)
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|