@datarailsshared/dr_renderer 1.2.364 → 1.2.365
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 +2 -2
- package/package.json +1 -1
- package/src/dr_pivottable.js +14 -63
- package/src/highcharts_renderer.js +1094 -1385
- package/src/novix_renderer.js +11 -13
- package/src/pivottable.js +4 -28
- package/tests/highcharts_renderer.test.js +14 -5386
- package/src/dr-renderer-helpers.js +0 -7
- package/tests/dr-renderer-helpers.test.js +0 -34
- package/tests/mock/add-in-dynamic-ranges.json +0 -133
- package/tests/mock/add-in-functions.json +0 -412
- package/tests/mock/add-in-tables.json +0 -347
- package/tests/mock/tables.json +0 -2258
- package/tests/mock/widgets.json +0 -411
@@ -1,11 +1,3 @@
|
|
1
|
-
const helpers = require('./dr-renderer-helpers');
|
2
|
-
|
3
|
-
const mobileBrowserRegex = new RegExp([
|
4
|
-
'(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)',
|
5
|
-
'|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/',
|
6
|
-
'|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino',
|
7
|
-
].join(''), 'i');
|
8
|
-
|
9
1
|
const SERIES_CLASSNAMES = {
|
10
2
|
WATERFALL_BREAKDOWN: 'waterfallBreakdown',
|
11
3
|
WATERFALL_WALKTHROUGH: 'waterfallWalkthrough',
|
@@ -14,157 +6,27 @@ const SERIES_CLASSNAMES = {
|
|
14
6
|
};
|
15
7
|
|
16
8
|
const EMPTY_ROW_N_KEYS = [[]];
|
17
|
-
|
18
9
|
const NULL_VALUE = '[null]';
|
19
10
|
|
20
|
-
const CHART_COLORS = {
|
21
|
-
BACKGROUND: '#fff',
|
22
|
-
TEXT: '#151a41',
|
23
|
-
LABEL: '#cfd7dd',
|
24
|
-
LABEL_SECOND: '#85889c',
|
25
|
-
DRILL_UP_FILL: '#eef3f6',
|
26
|
-
DRILL_BUTTON_COLOR_FILL: 'white',
|
27
|
-
DRILL_BUTTON_COLOR: '#333333',
|
28
|
-
DRILL_BUTTON_COLOR_HOVER: '#6D6E6F',
|
29
|
-
PLOT_BORDER: '#606063',
|
30
|
-
MINOR_GRID_LINE: '#505053',
|
31
|
-
TICK_COLOR: '#666',
|
32
|
-
LABELS_OLD: '#D7D7D8',
|
33
|
-
DATA_LABELS: '#B0B0B3',
|
34
|
-
CONTRAST_TEXT: '#F0F0F3',
|
35
|
-
LEGEND_BACKGROUND: 'rgba(0, 0, 0, 0.5)',
|
36
|
-
MASK: 'rgba(255,255,255,0.3)',
|
37
|
-
};
|
38
|
-
|
39
|
-
const CHART_TYPES = {
|
40
|
-
LINE_CHART: 'line-chart',
|
41
|
-
LINE_CHART_SMOOTH: 'line-chart-smooth',
|
42
|
-
COLUMN_CHART: 'column-chart',
|
43
|
-
COLUMN_CHART_STACKED: 'column-chart-stacked',
|
44
|
-
COMBO_CHART: 'combo-chart',
|
45
|
-
COMBO_COLUMN_CHART: 'combo-column-chart',
|
46
|
-
COMBO_STACKED_CHART: 'combo-stacked-chart',
|
47
|
-
BAR_CHART: 'bar-chart',
|
48
|
-
BAR_CHART_STACKED: 'bar-chart-stacked',
|
49
|
-
SCATTER_CHART: 'scatter-chart',
|
50
|
-
AREA_CHART: 'area-chart',
|
51
|
-
AREA_CHART_SMOOTH: 'area-chart-smooth',
|
52
|
-
TABLE_ONLY: 'table_only',
|
53
|
-
POLYGON_CHART: 'polygon-chart',
|
54
|
-
PIE_CHART: 'pie-chart',
|
55
|
-
PIE_CHART_DRILLDOWN: 'pie-chart-drilldown',
|
56
|
-
GAUGE_SOLID_CHART: 'gauge-solid-chart',
|
57
|
-
GAUGE_CHART: 'gauge-chart',
|
58
|
-
KPI_WIDGET: 'kpi-widget',
|
59
|
-
TEXT_WIDGET: 'text-widget',
|
60
|
-
WATERFALL_BREAKDOWN: 'waterfall-chart-breakdown',
|
61
|
-
WATERFALL_WALKTHROUGH: 'waterfall-chart-walkthrough',
|
62
|
-
PUBLISHED_ITEM: 'published_item',
|
63
|
-
RICH_TEXT: 'rich_text',
|
64
|
-
EXCEL_VIEWER: 'excel_viewer',
|
65
|
-
}
|
66
|
-
|
67
|
-
const HIGHCHARTS_CONSTANTS = {
|
68
|
-
delimer: ' , ',
|
69
|
-
DRILL_BUTTON_FONT_SIZE: '14px',
|
70
|
-
MAX_ROWS_FOR_AUTO_REFRESH: 100000,
|
71
|
-
MAX_ROWS_FOR_SHOW_RESULTS: 10000,
|
72
|
-
DR_OTHERS_KEY: 'DR_Others',
|
73
|
-
VIRTUAL_FIELDS: {
|
74
|
-
WATERFALL_VARIANCE: 'DR_WATERFALL_BREAKDOWN_VARIANCE',
|
75
|
-
},
|
76
|
-
waterfallConstants: {
|
77
|
-
[CHART_TYPES.WATERFALL_BREAKDOWN]: {
|
78
|
-
minCategoriesCount: 2
|
79
|
-
},
|
80
|
-
[CHART_TYPES.WATERFALL_WALKTHROUGH]: {
|
81
|
-
minCategoriesCount: 2,
|
82
|
-
maxCategoriesCount: 10,
|
83
|
-
}
|
84
|
-
},
|
85
|
-
CHART_TYPES: CHART_TYPES,
|
86
|
-
MAX_SELECTED_ITEMS_IN_LABEL: 20,
|
87
|
-
MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL: 50,
|
88
|
-
}
|
89
|
-
|
90
|
-
const SUBOPTIONS_FONTS = [
|
91
|
-
'Arial',
|
92
|
-
'Arial Black',
|
93
|
-
'Comic Sans MS',
|
94
|
-
'Courier New',
|
95
|
-
'Helvetica',
|
96
|
-
'Impact',
|
97
|
-
'Nunito Sans',
|
98
|
-
'Tahoma',
|
99
|
-
'Times New Roman',
|
100
|
-
'Verdana',
|
101
|
-
'Poppins'
|
102
|
-
];
|
103
|
-
|
104
|
-
const HIGHCHARTS_FONT_FAMILY = 'Poppins';
|
105
|
-
|
106
|
-
const HIGHCHARTS_FONT_FAMILY_CSS = 'Poppins, sans-serif';
|
107
|
-
|
108
|
-
const TOOLTIP_DEFAULT_SETTINGS = {
|
109
|
-
FONT_COLOR: '#545a6b',
|
110
|
-
FONT_SIZE: '12',
|
111
|
-
FONT_FAMILY: HIGHCHARTS_FONT_FAMILY,
|
112
|
-
};
|
113
|
-
|
114
|
-
const TOOLTIP_DEFAULT_OPTIONS = {
|
115
|
-
borderColor: CHART_COLORS.BACKGROUND,
|
116
|
-
shadow: {
|
117
|
-
color: '#9199b4',
|
118
|
-
width: 10,
|
119
|
-
opacity: 0.05
|
120
|
-
},
|
121
|
-
style: {
|
122
|
-
fontSize: TOOLTIP_DEFAULT_SETTINGS.FONT_SIZE,
|
123
|
-
fontFamily: TOOLTIP_DEFAULT_SETTINGS.FONT_FAMILY,
|
124
|
-
color: TOOLTIP_DEFAULT_SETTINGS.FONT_COLOR,
|
125
|
-
},
|
126
|
-
enabled: true,
|
127
|
-
};
|
128
|
-
|
129
|
-
const LABEL_DEFAULT_SETTINGS = {
|
130
|
-
FONT_COLOR: CHART_COLORS.TEXT,
|
131
|
-
FONT_SIZE: '11',
|
132
|
-
FONT_FAMILY: HIGHCHARTS_FONT_FAMILY,
|
133
|
-
};
|
134
|
-
|
135
|
-
const LABEL_DEFAULT_OPTIONS = {
|
136
|
-
style: {
|
137
|
-
fontSize: LABEL_DEFAULT_SETTINGS.FONT_SIZE,
|
138
|
-
fontFamily: LABEL_DEFAULT_SETTINGS.FONT_FAMILY,
|
139
|
-
fontWeight: 'normal',
|
140
|
-
},
|
141
|
-
color: LABEL_DEFAULT_SETTINGS.FONT_COLOR,
|
142
|
-
};
|
143
|
-
|
144
|
-
const CHART_AXIS_DEFAULT_LABEL = 'Axis (Category)';
|
145
|
-
|
146
|
-
const CHART_LEGEND_DEFAULT_LABEL = 'Legend (Series)';
|
147
|
-
|
148
|
-
const FEATURES = {
|
149
|
-
ENABLE_NEW_WIDGET_VALUE_FORMATTING: 'enable_new_widget_value_formatting',
|
150
|
-
ENABLE_SERVER_TOTALS_CALCULATION: 'enable_server_totals_calculation',
|
151
|
-
FORMAT_AXIS: 'use_default_table_format_for_axis',
|
152
|
-
FORMAT_DATES_AS_OTHER_AXIS_TYPES: 'format_dates_as_other_axis_types',
|
153
|
-
MULTIPLE_DIMENSION_TAGS: 'multiple_dimension_tags',
|
154
|
-
USE_NEW_SCENARIO_TAG: 'use_new_scenario_tag',
|
155
|
-
ENABLE_SERVER_WIDGET_DATA_SORTING: 'enable_server_widget_data_sorting',
|
156
|
-
}
|
157
|
-
|
158
|
-
const TICKS_COUNT = 5;
|
159
|
-
|
160
11
|
let getHighchartsRenderer = function ($, document, Highcharts, default_colors, highchartsRenderer,
|
161
12
|
DataFormatter, lodash, moment_lib, isNewAngular) {
|
162
13
|
|
163
|
-
/** Highcharts initial configuration section **/
|
164
14
|
if(!lodash){
|
165
15
|
lodash = _;
|
166
16
|
}
|
167
17
|
|
18
|
+
// TODO: always true. remove
|
19
|
+
let useNewUx = true;
|
20
|
+
let useTotalsCalculation = false;
|
21
|
+
let disableAnimation = false;
|
22
|
+
if (document.ReportHippo && document.ReportHippo && document.ReportHippo.user) {
|
23
|
+
useTotalsCalculation = lodash.includes(document.ReportHippo.user.features, 'enable_server_totals_calculation');
|
24
|
+
disableAnimation = document.ReportHippo.user.organization && document.ReportHippo.user.organization.settings && document.ReportHippo.user.organization.settings.disable_animation
|
25
|
+
}
|
26
|
+
const textColor = "#151a41";
|
27
|
+
const chartLabelColor = "#cfd7dd";
|
28
|
+
const HIGHCHARTS_FONT_FAMILY = 'Poppins';
|
29
|
+
|
168
30
|
if(!Highcharts){
|
169
31
|
Highcharts = {
|
170
32
|
opt: {},
|
@@ -174,59 +36,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
174
36
|
}
|
175
37
|
}
|
176
38
|
|
177
|
-
// remove highcharts tooltip from the dom instead of hiding if option is passed
|
178
|
-
Highcharts.wrap(Highcharts.Tooltip.prototype, 'hide', function(proceed, delay) {
|
179
|
-
if (!this.options.destroyWhenHiding) {
|
180
|
-
proceed.call(this, delay);
|
181
|
-
} else {
|
182
|
-
Highcharts.clearTimeout(this.hideTimer);
|
183
|
-
delay = Highcharts.pick(delay, this.options.hideDelay);
|
184
|
-
this.hideTimer = Highcharts.syncTimeout(() => {
|
185
|
-
this.destroy();
|
186
|
-
}, delay);
|
187
|
-
}
|
188
|
-
});
|
189
|
-
|
190
39
|
if(!moment_lib){
|
191
40
|
moment_lib = moment;
|
192
41
|
}
|
193
42
|
|
194
|
-
if
|
43
|
+
if(!highchartsRenderer){
|
195
44
|
highchartsRenderer = {};
|
196
45
|
}
|
197
|
-
lodash.assign(highchartsRenderer, HIGHCHARTS_CONSTANTS);
|
198
|
-
|
199
|
-
highchartsRenderer.useTotalsCalculation = false;
|
200
|
-
highchartsRenderer.enabledNewWidgetValueFormatting = false;
|
201
|
-
let disableAnimation = false;
|
202
|
-
|
203
|
-
highchartsRenderer.hasFeature = function(featureFlagKey) {
|
204
|
-
return lodash.includes(lodash.get(document, 'ReportHippo.user.features', []), featureFlagKey);
|
205
|
-
}
|
206
|
-
|
207
|
-
if (!!lodash.get(document, 'ReportHippo.user')) {
|
208
|
-
highchartsRenderer.useTotalsCalculation = highchartsRenderer.hasFeature(FEATURES.ENABLE_SERVER_TOTALS_CALCULATION);
|
209
|
-
disableAnimation = document.ReportHippo.user.organization && document.ReportHippo.user.organization.settings && document.ReportHippo.user.organization.settings.disable_animation
|
210
|
-
highchartsRenderer.enabledNewWidgetValueFormatting = highchartsRenderer.hasFeature(FEATURES.ENABLE_NEW_WIDGET_VALUE_FORMATTING);
|
211
|
-
highchartsRenderer.isSortingOnBackendEnabled = highchartsRenderer.hasFeature(FEATURES.ENABLE_SERVER_WIDGET_DATA_SORTING);
|
212
|
-
}
|
213
|
-
|
214
|
-
// fix issue of use tootip.stickOnContact with tooltip.outside , source: https://github.com/highcharts/highcharts/pull/15960
|
215
|
-
// TODO: remove it after it is fixed in highcharts library new version
|
216
|
-
if (lodash.get(Highcharts, 'Pointer')) {
|
217
|
-
Highcharts.Pointer.prototype.onContainerMouseLeave = function (e) {
|
218
|
-
|
219
|
-
const {charts, pick, Pointer} = Highcharts;
|
220
|
-
const chart = charts[pick(Pointer.hoverChartIndex, -1)];
|
221
|
-
|
222
|
-
e = this.normalize(e);
|
223
|
-
|
224
|
-
if (chart && e.relatedTarget && !this.inClass(e.relatedTarget, 'highcharts-tooltip')) {
|
225
|
-
chart.pointer.reset();
|
226
|
-
chart.pointer.chartPosition = void 0;
|
227
|
-
}
|
228
|
-
}
|
229
|
-
}
|
230
46
|
|
231
47
|
// in lib it will not work
|
232
48
|
highchartsRenderer.elem1 = document.createElement('textarea');
|
@@ -238,104 +54,133 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
238
54
|
highchartsRenderer.variance_color = default_colors.variance_color;
|
239
55
|
}
|
240
56
|
|
57
|
+
const mobileBrowserRegex = new RegExp([
|
58
|
+
'(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)',
|
59
|
+
'|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/',
|
60
|
+
'|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino',
|
61
|
+
].join(''), 'i');
|
241
62
|
highchartsRenderer.isMobile = mobileBrowserRegex.test(navigator.userAgent);
|
242
63
|
|
64
|
+
highchartsRenderer.CHART_TYPES = {
|
65
|
+
LINE_CHART: 'line-chart',
|
66
|
+
LINE_CHART_SMOOTH: 'line-chart-smooth',
|
67
|
+
COLUMN_CHART: 'column-chart',
|
68
|
+
COLUMN_CHART_STACKED: 'column-chart-stacked',
|
69
|
+
COMBO_CHART: 'combo-chart',
|
70
|
+
COMBO_COLUMN_CHART: 'combo-column-chart',
|
71
|
+
COMBO_STACKED_CHART: 'combo-stacked-chart',
|
72
|
+
BAR_CHART: 'bar-chart',
|
73
|
+
BAR_CHART_STACKED: 'bar-chart-stacked',
|
74
|
+
SCATTER_CHART: 'scatter-chart',
|
75
|
+
AREA_CHART: 'area-chart',
|
76
|
+
AREA_CHART_SMOOTH: 'area-chart-smooth',
|
77
|
+
TABLE_ONLY: 'table_only',
|
78
|
+
POLYGON_CHART: 'polygon-chart',
|
79
|
+
PIE_CHART: 'pie-chart',
|
80
|
+
PIE_CHART_DRILLDOWN: 'pie-chart-drilldown',
|
81
|
+
GAUGE_SOLID_CHART: 'gauge-solid-chart',
|
82
|
+
GAUGE_CHART: 'gauge-chart',
|
83
|
+
KPI_WIDGET: 'kpi-widget',
|
84
|
+
TEXT_WIDGET: 'text-widget',
|
85
|
+
WATERFALL_BREAKDOWN: 'waterfall-chart-breakdown',
|
86
|
+
WATERFALL_WALKTHROUGH: 'waterfall-chart-walkthrough',
|
87
|
+
PUBLISHED_ITEM: 'published_item',
|
88
|
+
RICH_TEXT: 'rich_text',
|
89
|
+
EXCEL_VIEWER: 'excel_viewer',
|
90
|
+
};
|
91
|
+
|
92
|
+
highchartsRenderer.VIRTUAL_FIELDS = {
|
93
|
+
WATERFALL_VARIANCE: 'DR_WATERFALL_BREAKDOWN_VARIANCE',
|
94
|
+
};
|
95
|
+
|
96
|
+
highchartsRenderer.DR_OTHERS_KEY = 'DR_Others';
|
97
|
+
|
243
98
|
highchartsRenderer.highcharts_theme = {
|
244
|
-
colors: highchartsRenderer.defaults_colors,
|
245
|
-
chart: {
|
246
|
-
backgroundColor:
|
247
|
-
plotBorderColor:
|
248
|
-
style: {
|
249
|
-
fontFamily:
|
250
|
-
color:
|
99
|
+
"colors": highchartsRenderer.defaults_colors,
|
100
|
+
"chart": {
|
101
|
+
"backgroundColor": "#FFFFFF",
|
102
|
+
"plotBorderColor": "#606063",
|
103
|
+
"style": {
|
104
|
+
"fontFamily": "Poppins",
|
105
|
+
"color": "#3C3C3C"
|
251
106
|
}
|
252
107
|
},
|
253
|
-
title: {
|
254
|
-
align:
|
255
|
-
style: {
|
256
|
-
fontWeight:
|
108
|
+
"title": {
|
109
|
+
"align": "left",
|
110
|
+
"style": {
|
111
|
+
"fontWeight": "bold"
|
257
112
|
}
|
258
113
|
},
|
259
|
-
subtitle: {
|
260
|
-
align:
|
114
|
+
"subtitle": {
|
115
|
+
"align": "left"
|
261
116
|
},
|
262
|
-
xAxis: {
|
263
|
-
gridLineWidth: 1,
|
264
|
-
gridLineColor:
|
265
|
-
labels: {
|
266
|
-
style: {
|
267
|
-
fontFamily:
|
268
|
-
color:
|
269
|
-
'font-size': '10px',
|
270
|
-
'font-weight': "bold"
|
117
|
+
"xAxis": {
|
118
|
+
"gridLineWidth": 1,
|
119
|
+
"gridLineColor": "#D7D7D8" ,
|
120
|
+
"labels": {
|
121
|
+
"style": {
|
122
|
+
"fontFamily": "Unica One, sans-serif",
|
123
|
+
"color": "#3C3C3C"
|
271
124
|
}
|
272
125
|
},
|
273
|
-
lineColor:
|
274
|
-
minorGridLineColor:
|
275
|
-
tickColor:
|
276
|
-
tickWidth: 1,
|
277
|
-
title: {
|
278
|
-
style: {
|
279
|
-
|
280
|
-
color: CHART_COLORS.LABEL_SECOND,
|
281
|
-
'font-size': '12px',
|
282
|
-
'font-weight': 'bold'
|
126
|
+
"lineColor": "#D7D7D8",
|
127
|
+
"minorGridLineColor": "#505053",
|
128
|
+
"tickColor": "#D7D7D8",
|
129
|
+
"tickWidth": 1,
|
130
|
+
"title": {
|
131
|
+
"style": {
|
132
|
+
"color": "#A0A0A3"
|
283
133
|
}
|
284
134
|
}
|
285
135
|
},
|
286
|
-
yAxis: {
|
287
|
-
gridLineColor:
|
288
|
-
labels: {
|
289
|
-
style: {
|
290
|
-
fontFamily:
|
291
|
-
|
292
|
-
color: CHART_COLORS.LABEL_SECOND
|
136
|
+
"yAxis": {
|
137
|
+
"gridLineColor": "#D7D7D8",
|
138
|
+
"labels": {
|
139
|
+
"style": {
|
140
|
+
"fontFamily": "Unica One, sans-serif",
|
141
|
+
"color": "#3C3C3C"
|
293
142
|
}
|
294
143
|
},
|
295
|
-
lineColor:
|
296
|
-
minorGridLineColor:
|
297
|
-
tickColor:
|
298
|
-
tickWidth: 1,
|
299
|
-
title: {
|
300
|
-
style: {
|
301
|
-
|
302
|
-
color: CHART_COLORS.LABEL_SECOND,
|
303
|
-
'font-size': '12px',
|
304
|
-
'font-weight': 'bold'
|
144
|
+
"lineColor": "#D7D7D8",
|
145
|
+
"minorGridLineColor": "#505053",
|
146
|
+
"tickColor": "#D7D7D8",
|
147
|
+
"tickWidth": 1,
|
148
|
+
"title": {
|
149
|
+
"style": {
|
150
|
+
"color": "#000000"
|
305
151
|
}
|
306
152
|
}
|
307
153
|
},
|
308
|
-
tooltip: {
|
309
|
-
backgroundColor:
|
310
|
-
style: {
|
311
|
-
color:
|
154
|
+
"tooltip": {
|
155
|
+
"backgroundColor": "rgba(0, 0, 0, 0.85)",
|
156
|
+
"style": {
|
157
|
+
"color": "#F0F0F0"
|
312
158
|
}
|
313
159
|
},
|
314
|
-
legend: {
|
315
|
-
itemStyle: {
|
316
|
-
color:
|
317
|
-
fontWeight: 'normal'
|
160
|
+
"legend": {
|
161
|
+
"itemStyle": {
|
162
|
+
"color": "#3C3C3C"
|
318
163
|
},
|
319
|
-
itemHiddenStyle: {
|
320
|
-
color:
|
164
|
+
"itemHiddenStyle": {
|
165
|
+
"color": "#606063"
|
321
166
|
}
|
322
167
|
},
|
323
|
-
credits: {
|
324
|
-
style: {
|
325
|
-
color:
|
168
|
+
"credits": {
|
169
|
+
"style": {
|
170
|
+
"color": "#666"
|
326
171
|
}
|
327
172
|
},
|
328
|
-
labels: {
|
329
|
-
style: {
|
330
|
-
color:
|
173
|
+
"labels": {
|
174
|
+
"style": {
|
175
|
+
"color": "#D7D7D8"
|
331
176
|
}
|
332
177
|
},
|
333
|
-
legendBackgroundColor:
|
334
|
-
background2:
|
335
|
-
dataLabelsColor:
|
336
|
-
textColor:
|
337
|
-
contrastTextColor:
|
338
|
-
maskColor:
|
178
|
+
"legendBackgroundColor": "rgba(0, 0, 0, 0.5)",
|
179
|
+
"background2": "white",
|
180
|
+
"dataLabelsColor": "#B0B0B3",
|
181
|
+
"textColor": "black",
|
182
|
+
"contrastTextColor": "#F0F0F3",
|
183
|
+
"maskColor": "rgba(255,255,255,0.3)",
|
339
184
|
lang: {
|
340
185
|
decimalPoint: '.',
|
341
186
|
drillUpText: '< Back'
|
@@ -346,30 +191,70 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
346
191
|
height: 20
|
347
192
|
}
|
348
193
|
},
|
349
|
-
exporting: {
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
194
|
+
exporting: {enabled: false, sourceWidth: 900}
|
195
|
+
};
|
196
|
+
|
197
|
+
if (useNewUx) {
|
198
|
+
highchartsRenderer.highcharts_theme.chart.style.color = textColor;
|
199
|
+
|
200
|
+
highchartsRenderer.highcharts_theme.xAxis.gridLineColor = chartLabelColor;
|
201
|
+
highchartsRenderer.highcharts_theme.xAxis.lineColor = chartLabelColor;
|
202
|
+
highchartsRenderer.highcharts_theme.xAxis.tickColor = chartLabelColor;
|
203
|
+
highchartsRenderer.highcharts_theme.xAxis.labels.style = {
|
204
|
+
"fontFamily": "Poppins, sans-serif",
|
205
|
+
"color": textColor,
|
206
|
+
"font-size": "10px",
|
207
|
+
"font-weight": "bold"
|
208
|
+
};
|
209
|
+
highchartsRenderer.highcharts_theme.xAxis.title.style = {
|
210
|
+
"fontFamily": "Poppins, sans-serif",
|
211
|
+
"color": "#85889c",
|
212
|
+
"font-size": "12px",
|
213
|
+
"font-weight": "bold"
|
214
|
+
};
|
215
|
+
|
216
|
+
highchartsRenderer.highcharts_theme.yAxis.gridLineColor = chartLabelColor;
|
217
|
+
highchartsRenderer.highcharts_theme.yAxis.lineColor = chartLabelColor;
|
218
|
+
highchartsRenderer.highcharts_theme.yAxis.tickColor = chartLabelColor;
|
219
|
+
highchartsRenderer.highcharts_theme.yAxis.labels.style = {
|
220
|
+
"fontFamily": "Poppins, sans-serif",
|
221
|
+
"font-size": "10px",
|
222
|
+
"color": "#85889c"
|
223
|
+
};
|
224
|
+
highchartsRenderer.highcharts_theme.yAxis.title.style = {
|
225
|
+
"fontFamily": "Poppins, sans-serif",
|
226
|
+
"color": "#85889c",
|
227
|
+
"font-size": "12px",
|
228
|
+
"font-weight": "bold"
|
229
|
+
};
|
230
|
+
|
231
|
+
highchartsRenderer.highcharts_theme.tooltip.backgroundColor = "#fff";
|
232
|
+
highchartsRenderer.highcharts_theme.tooltip.style.color = textColor;
|
233
|
+
highchartsRenderer.highcharts_theme.legend.itemStyle.color = textColor;
|
234
|
+
highchartsRenderer.highcharts_theme.legend.itemStyle.fontWeight = 'normal';
|
235
|
+
highchartsRenderer.highcharts_theme.drilldown = {
|
354
236
|
activeAxisLabelStyle: {
|
355
|
-
color:
|
237
|
+
color: textColor
|
356
238
|
},
|
357
239
|
activeDataLabelStyle: {
|
358
240
|
textDecoration: 'none',
|
359
241
|
}
|
360
242
|
}
|
361
|
-
}
|
243
|
+
}
|
362
244
|
|
363
245
|
Highcharts.setOptions(highchartsRenderer.highcharts_theme);
|
364
246
|
|
365
|
-
/** End of 'Highcharts initial configuration section' **/
|
366
|
-
|
367
247
|
highchartsRenderer.filterFloat = function (value) {
|
368
248
|
if (/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/.test(value))
|
369
249
|
return Number(value);
|
370
250
|
return null;
|
371
251
|
};
|
372
252
|
|
253
|
+
highchartsRenderer.delimer = ' , ';
|
254
|
+
|
255
|
+
highchartsRenderer.MAX_ROWS_FOR_AUTO_REFRESH = 100000;
|
256
|
+
highchartsRenderer.MAX_ROWS_FOR_SHOW_RESULTS = 10000;
|
257
|
+
|
373
258
|
highchartsRenderer.setColors = function (colors) {
|
374
259
|
highchartsRenderer.highcharts_theme.colors = colors;
|
375
260
|
Highcharts.setOptions(highchartsRenderer.highcharts_theme);
|
@@ -402,7 +287,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
402
287
|
filtOb.is_excluded = false;
|
403
288
|
} else if (value.excludes) {
|
404
289
|
filtOb.is_excluded = true;
|
405
|
-
filtOb.values = value.excludes;
|
290
|
+
filtOb.values = value.excludes || null;
|
406
291
|
} else {
|
407
292
|
filtOb.is_excluded = false;
|
408
293
|
filtOb.values = value.includes || null;
|
@@ -417,6 +302,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
417
302
|
|
418
303
|
highchartsRenderer.decodeFunc = function (str) {
|
419
304
|
if (str && typeof (str) == 'string') {
|
305
|
+
if (!str || str == '')
|
306
|
+
return '';
|
420
307
|
highchartsRenderer.elem1.innerHTML = str;
|
421
308
|
return highchartsRenderer.elem1.value;
|
422
309
|
}
|
@@ -438,8 +325,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
438
325
|
|
439
326
|
highchartsRenderer.createDashboardFilterObject = function (value) {
|
440
327
|
var filtOb = {};
|
441
|
-
if (value.datetypevalues && value.datetypevalues.datetype
|
442
|
-
filtOb.values = value.datetypevalues;
|
328
|
+
if (value.datetypevalues && value.datetypevalues.datetype != 'list') {
|
329
|
+
filtOb.values = value.datetypevalues || value.values;
|
443
330
|
filtOb.is_excluded = false;
|
444
331
|
} else if (value.excludes) {
|
445
332
|
filtOb.is_excluded = true;
|
@@ -482,8 +369,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
482
369
|
if (chartElement.highcharts) {
|
483
370
|
chart = chartElement.highcharts();
|
484
371
|
} else {
|
485
|
-
const
|
486
|
-
const graphId = Number(graphIdString) || graphIdString;
|
372
|
+
const graphId = Number(graph_id.split('_')[1]);
|
487
373
|
chart = lodash.find(Highcharts.charts, function(value) {
|
488
374
|
return value.options.widgetId === graphId;
|
489
375
|
});
|
@@ -491,8 +377,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
491
377
|
|
492
378
|
if (!chart) return;
|
493
379
|
|
380
|
+
/*if(chart.title && chart.title.textStr){
|
381
|
+
png_name = chart.title.textStr
|
382
|
+
}else{
|
383
|
+
png_name = 'chart'
|
384
|
+
}*/
|
385
|
+
|
494
386
|
if (type === 'png') {
|
495
387
|
chart.exportChartLocal({
|
388
|
+
//type: 'application/png',
|
496
389
|
filename: title
|
497
390
|
});
|
498
391
|
}
|
@@ -536,9 +429,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
536
429
|
var topSlot = '';
|
537
430
|
if (labelOpts.show_percentage_in_labels) {
|
538
431
|
rightSlot = `(${(this.point.percentage).toFixed(2)}%)`;
|
539
|
-
if (labelOpts.show_value_in_labels && value) {
|
540
|
-
topSlot = `${value}<br>`;
|
541
|
-
}
|
432
|
+
if (labelOpts.show_value_in_labels && value) topSlot = `${value}<br>`;
|
542
433
|
} else if (labelOpts.show_value_in_labels && value) {
|
543
434
|
rightSlot = value;
|
544
435
|
}
|
@@ -576,12 +467,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
576
467
|
|
577
468
|
const labelOptions = lodash.get(opts.chartOptions, 'label') || lodash.get(opts.chartOptions, 'label_pie');
|
578
469
|
const othersName = opts.total_value_options ? highchartsRenderer.getOthersName(opts) : undefined;
|
579
|
-
const drOthersInAxis =
|
470
|
+
const drOthersInAxis = highchartsRenderer.getDrOthersInAxisState(pivotData, othersName);
|
580
471
|
|
581
472
|
var func = function () {
|
582
473
|
var value = parseFloat(this.y);
|
583
474
|
if (pivotData) {
|
584
|
-
let series_name =
|
475
|
+
let series_name = (this.series.name || '') + "";
|
585
476
|
var rows = series_name.split(highchartsRenderer.delimer);
|
586
477
|
|
587
478
|
if (is_drill_down_pie && highchartsRenderer.selfStartsWith(series_name, "Series ")) {
|
@@ -594,7 +485,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
594
485
|
rows = [];
|
595
486
|
}
|
596
487
|
|
597
|
-
var cols =
|
488
|
+
var cols = lodash.get(this, 'point.options.colsForTotal') || this.key;
|
598
489
|
if (typeof (cols) == 'object' && cols.name) {
|
599
490
|
cols = cols.name;
|
600
491
|
}
|
@@ -668,7 +559,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
668
559
|
// do nothing
|
669
560
|
}
|
670
561
|
}
|
671
|
-
return $.pivotUtilities.getFormattedNumber(value, null, opts)
|
562
|
+
return $.pivotUtilities.getFormattedNumber(value, null, opts);
|
672
563
|
};
|
673
564
|
return func;
|
674
565
|
};
|
@@ -710,32 +601,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
710
601
|
return func;
|
711
602
|
};
|
712
603
|
|
713
|
-
highchartsRenderer.customFormatterTooltipInsights = function(pivotData, opts) {
|
714
|
-
return {
|
715
|
-
useHTML: true,
|
716
|
-
outside: true,
|
717
|
-
backgroundColor: 'transparent',
|
718
|
-
borderWidth: 0,
|
719
|
-
borderRadius: 0,
|
720
|
-
shadow: false,
|
721
|
-
shape: 'square',
|
722
|
-
padding: 0,
|
723
|
-
stickOnContact: true,
|
724
|
-
hideDelay: 1500,
|
725
|
-
destroyWhenHiding: true,
|
726
|
-
formatter: function () {
|
727
|
-
const rowKey = pivotData.rowAttrs.length ? lodash.get(this.point, 'series.name') || "" : "";
|
728
|
-
const colKey = lodash.get(this.point, 'name') || this.x.name[0] || "";
|
729
|
-
const insight = pivotData.getInsight(colKey, rowKey) || {};
|
730
|
-
setTimeout(() => {
|
731
|
-
var aggr = highchartsRenderer.defaultFormatterToTooltip(pivotData, opts);
|
732
|
-
const formatted_value_to_return = aggr.bind(this)();
|
733
|
-
opts.insightsTooltipFunc(lodash.merge(lodash.cloneDeep(this), { formatted_value_to_return }, insight));
|
734
|
-
});
|
735
|
-
}
|
736
|
-
}
|
737
|
-
}
|
738
|
-
|
739
604
|
highchartsRenderer.defaultFormatterToTooltip = function (pivotData, opts, is_drill_down_pie) {
|
740
605
|
var variant_name = null;
|
741
606
|
var variant_name_default_name = null;
|
@@ -743,6 +608,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
743
608
|
variant_name = opts.chartOptions.delta_column.name.replace('_', '');
|
744
609
|
variant_name_default_name = opts.chartOptions.delta_column.name;
|
745
610
|
}
|
611
|
+
|
746
612
|
const tooltipOptions = lodash.get(opts, 'chartOptions.tooltips');
|
747
613
|
|
748
614
|
let percentageLabels = {
|
@@ -754,7 +620,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
754
620
|
}
|
755
621
|
|
756
622
|
const othersName = opts.total_value_options ? highchartsRenderer.getOthersName(opts) : undefined;
|
757
|
-
const drOthersInAxis =
|
623
|
+
const drOthersInAxis = highchartsRenderer.getDrOthersInAxisState(pivotData, othersName);
|
758
624
|
|
759
625
|
var func = function () {
|
760
626
|
const isWaterfallBreakdown = this.series.options.className === SERIES_CLASSNAMES.WATERFALL_BREAKDOWN;
|
@@ -763,7 +629,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
763
629
|
|
764
630
|
var y = parseFloat(this.y);
|
765
631
|
if (pivotData) {
|
766
|
-
let series_name =
|
632
|
+
let series_name = (this.series.name || '') + "";
|
767
633
|
var rows = series_name.split(highchartsRenderer.delimer);
|
768
634
|
if (is_drill_down_pie && highchartsRenderer.selfStartsWith(series_name,"Series ")) {
|
769
635
|
rows = [];
|
@@ -774,7 +640,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
774
640
|
rows = [];
|
775
641
|
}
|
776
642
|
|
777
|
-
var cols =
|
643
|
+
var cols = lodash.get(this, 'point.options.colsForTotal') || this.key;
|
778
644
|
if (!cols && is_drill_down_pie) {
|
779
645
|
cols = this.name;
|
780
646
|
}
|
@@ -796,20 +662,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
796
662
|
rows = temp;
|
797
663
|
}
|
798
664
|
|
799
|
-
const colNameToDisplay = lodash.cloneDeep(
|
800
|
-
lodash.get(this, 'point.options.colsForTotal')
|
801
|
-
? isWaterfallWalkthrough
|
802
|
-
? this.key
|
803
|
-
: cols[0]
|
804
|
-
: highchartsRenderer.isFormattingAxisFeatureOn() && lodash.get(this, 'point.name') || cols
|
805
|
-
);
|
806
|
-
|
807
665
|
highchartsRenderer.replaceDrOthersKeys(cols, rows, drOthersInAxis, othersName);
|
808
666
|
|
809
667
|
var category_text = `<span style="font-weight: bold;">
|
810
|
-
${
|
668
|
+
${ lodash.get(this, 'point.options.colsForTotal') ? isWaterfallWalkthrough ? this.key : cols[0] : cols } ${ isWaterfallBreakdown ? ': ' : ' ' }
|
811
669
|
</span>`;
|
812
|
-
|
813
670
|
if (this.category) {
|
814
671
|
category_text = '';
|
815
672
|
}
|
@@ -1019,20 +876,20 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1019
876
|
},
|
1020
877
|
theme: {
|
1021
878
|
fill: 'white',
|
1022
|
-
color:
|
879
|
+
color: '#85889c',
|
1023
880
|
'stroke-width': 1,
|
1024
|
-
stroke:
|
881
|
+
stroke: '#85889c',
|
1025
882
|
r: 3,
|
1026
883
|
states: {
|
1027
884
|
hover: {
|
1028
|
-
fill:
|
1029
|
-
stroke:
|
1030
|
-
color:
|
885
|
+
fill: '#eef3f6',
|
886
|
+
stroke: '#85889c',
|
887
|
+
color: '#85889c'
|
1031
888
|
},
|
1032
889
|
select: {
|
1033
|
-
stroke:
|
1034
|
-
fill:
|
1035
|
-
color:
|
890
|
+
stroke: '#85889c',
|
891
|
+
fill: '#eef3f6',
|
892
|
+
color: '#85889c'
|
1036
893
|
}
|
1037
894
|
}
|
1038
895
|
},
|
@@ -1044,9 +901,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1044
901
|
chartOptions.yAxis && chartOptions.yAxis.title && (chartOptions.yAxis.title.text || chartOptions.yAxis.title.autoylabel) ? -60 : -40;
|
1045
902
|
const y = isPieChart ? 27 :
|
1046
903
|
chartOptions.xAxis && chartOptions.xAxis.title && (chartOptions.xAxis.title.text || chartOptions.xAxis.title.autoxlabel) ? 65 : 43;
|
1047
|
-
chartOptions.chart.spacingBottom = lodash.get(chartOptions, 'xAxis.title') ? 34 : 30;
|
1048
904
|
chartOptions.drilldown.breadcrumbs = {
|
1049
|
-
formatter: () => 'Back',
|
905
|
+
formatter: () => '< Back',
|
1050
906
|
showFullPath: false,
|
1051
907
|
position: {
|
1052
908
|
align: 'left',
|
@@ -1055,21 +911,23 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1055
911
|
y: y,
|
1056
912
|
},
|
1057
913
|
floating: true,
|
1058
|
-
position: { align: 'left', x: 12, y: 6, verticalAlign: 'bottom' },
|
1059
|
-
relativeTo: 'spacingBox',
|
1060
914
|
buttonTheme: {
|
1061
|
-
fill:
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
915
|
+
fill: 'white',
|
916
|
+
color: '#85889c',
|
917
|
+
'stroke-width': 1,
|
918
|
+
stroke: '#85889c',
|
919
|
+
r: 3,
|
920
|
+
padding: 3,
|
1066
921
|
states: {
|
1067
922
|
hover: {
|
1068
|
-
fill:
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
923
|
+
fill: '#eef3f6',
|
924
|
+
stroke: '#85889c',
|
925
|
+
color: '#85889c'
|
926
|
+
},
|
927
|
+
select: {
|
928
|
+
stroke: '#85889c',
|
929
|
+
fill: '#eef3f6',
|
930
|
+
color: '#85889c'
|
1073
931
|
}
|
1074
932
|
}
|
1075
933
|
},
|
@@ -1088,7 +946,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1088
946
|
if (chartOptions.series) {
|
1089
947
|
for (var i = 0; i < chartOptions.series.length; i++) {
|
1090
948
|
seriesDataLength += chartOptions.series[i].data ? chartOptions.series[i].data.length : 0;
|
1091
|
-
if (seriesDataLength >
|
949
|
+
if (seriesDataLength > 2000) {
|
1092
950
|
toMatch = true;
|
1093
951
|
break;
|
1094
952
|
}
|
@@ -1187,14 +1045,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1187
1045
|
let squareXSum = 0;
|
1188
1046
|
ob.data = [];
|
1189
1047
|
if (row_n_value && row_n_value.length > 0) {
|
1190
|
-
ob.
|
1048
|
+
ob.name = row_n_value.join(highchartsRenderer.delimer)
|
1191
1049
|
.replace(highchartsRenderer.DR_OTHERS_KEY, othersName);
|
1192
|
-
ob.name = highchartsRenderer.getFormattedRowKey(ob.initialName, pivotData);
|
1193
1050
|
}
|
1194
1051
|
lodash.forEach(col_n_keys, function (col_n_value, index) {
|
1195
1052
|
var agg = pivotData.getAggregator(row_n_value, col_n_value);
|
1196
1053
|
var val = agg.value();
|
1197
1054
|
|
1055
|
+
if (col_n_value[0] === highchartsRenderer.DR_OTHERS_KEY) {
|
1056
|
+
col_n_value[0] = othersName;
|
1057
|
+
}
|
1058
|
+
|
1198
1059
|
if (isUniqueVals && agg.uniq)
|
1199
1060
|
val = agg.uniq.join('<br>');
|
1200
1061
|
|
@@ -1217,28 +1078,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1217
1078
|
xySum += Number(val) * (index + 1);
|
1218
1079
|
ySum += Number(val);
|
1219
1080
|
squareXSum += (index + 1) * (index + 1);
|
1220
|
-
|
1221
|
-
let key = col_n_value;
|
1222
|
-
if (lodash.isArray(col_n_value)) {
|
1223
|
-
key = lodash.replace(
|
1224
|
-
lodash.join(
|
1225
|
-
lodash.filter(col_n_value, value => !!value),
|
1226
|
-
highchartsRenderer.delimer
|
1227
|
-
),
|
1228
|
-
highchartsRenderer.DR_OTHERS_KEY,
|
1229
|
-
othersName
|
1230
|
-
);
|
1231
|
-
}
|
1232
|
-
|
1233
|
-
ob.data.push(
|
1234
|
-
key
|
1235
|
-
? {
|
1236
|
-
y: val,
|
1237
|
-
initialName: lodash.unescape(key),
|
1238
|
-
name: highchartsRenderer.getFormattedColKey(lodash.unescape(key), pivotData),
|
1239
|
-
}
|
1240
|
-
: val
|
1241
|
-
);
|
1081
|
+
ob.data.push(val);
|
1242
1082
|
});
|
1243
1083
|
|
1244
1084
|
if (colors && colors[i]) {
|
@@ -1272,18 +1112,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1272
1112
|
|
1273
1113
|
i++;
|
1274
1114
|
});
|
1275
|
-
|
1276
|
-
if (lodash.get(chartOptions, 'xAxis.categories')) {
|
1277
|
-
lodash.forEach(chartOptions.xAxis.categories, (col_n_value, index) => {
|
1278
|
-
if (lodash.isArray(col_n_value)) {
|
1279
|
-
chartOptions.xAxis.categories[index] = lodash.map(
|
1280
|
-
lodash.filter(col_n_value, value => !!value),
|
1281
|
-
value => lodash.replace(value, highchartsRenderer.DR_OTHERS_KEY, othersName)
|
1282
|
-
);
|
1283
|
-
}
|
1284
|
-
});
|
1285
|
-
}
|
1286
|
-
|
1287
1115
|
const ethalonSeries = chart_series[chart_series.length - 1];
|
1288
1116
|
|
1289
1117
|
if (has_delta && additionOptions && additionOptions.delta_column.only_variant) {
|
@@ -1370,9 +1198,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1370
1198
|
var ob = {};
|
1371
1199
|
ob.data = [];
|
1372
1200
|
if (row_n_value && row_n_value.length > 0) {
|
1373
|
-
ob.
|
1201
|
+
ob.name = lodash.unescape(row_n_value.join(highchartsRenderer.delimer)
|
1374
1202
|
.replace(highchartsRenderer.DR_OTHERS_KEY, othersName));
|
1375
|
-
ob.name = highchartsRenderer.getFormattedRowKey(ob.initialName, pivotData);
|
1376
1203
|
}
|
1377
1204
|
|
1378
1205
|
ob.dataLabels = {
|
@@ -1409,17 +1236,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1409
1236
|
if (lodash.isArray(col_n_value)) {
|
1410
1237
|
key = col_n_value[0];
|
1411
1238
|
}
|
1412
|
-
tmoobj.
|
1239
|
+
tmoobj.name = lodash.unescape(key);
|
1413
1240
|
|
1414
|
-
if (tmoobj.
|
1415
|
-
tmoobj.
|
1241
|
+
if (tmoobj.name) {
|
1242
|
+
tmoobj.name = tmoobj.name.replace(highchartsRenderer.DR_OTHERS_KEY, othersName);
|
1416
1243
|
}
|
1417
1244
|
|
1418
|
-
if (lodash.isEmpty(String(tmoobj.
|
1419
|
-
tmoobj.
|
1245
|
+
if (lodash.isEmpty(String(tmoobj.name))) {
|
1246
|
+
tmoobj.name = "[blank]";
|
1420
1247
|
}
|
1421
|
-
tmoobj.name = highchartsRenderer.getFormattedColKey(tmoobj.initialName, pivotData);
|
1422
|
-
|
1423
1248
|
tmoobj.y = val;
|
1424
1249
|
if (!isNotDrilldown)
|
1425
1250
|
tmoobj.drilldown = true;
|
@@ -1514,7 +1339,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1514
1339
|
totalSeries.color = colors[i];
|
1515
1340
|
}
|
1516
1341
|
|
1517
|
-
|
1518
1342
|
col_n_keys.forEach(columnKey => {
|
1519
1343
|
let key = columnKey;
|
1520
1344
|
let totalKey = columnKey;
|
@@ -1545,7 +1369,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1545
1369
|
const chart_series = [];
|
1546
1370
|
const row_n_keys = pivotData.getRowKeys();
|
1547
1371
|
const col_n_keys = pivotData.getColKeys();
|
1548
|
-
const rows_by_cols = pivotData.rowKeysByCols;
|
1549
1372
|
|
1550
1373
|
let resultObject = {
|
1551
1374
|
data: [],
|
@@ -1564,20 +1387,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1564
1387
|
lodash.forEach(col_n_keys, function(col_n_value, col_index) {
|
1565
1388
|
|
1566
1389
|
const totalColumnValue = pivotData.getAggregator([], col_n_value).value();
|
1567
|
-
const totalName = lodash.unescape(col_n_value).replace(highchartsRenderer.DR_OTHERS_KEY, highchartsRenderer.getOthersName(opts));
|
1568
1390
|
resultObject.data.push({
|
1569
1391
|
y: totalColumnValue,
|
1570
|
-
name:
|
1571
|
-
|
1392
|
+
name: lodash.unescape(col_n_value)
|
1393
|
+
.replace(highchartsRenderer.DR_OTHERS_KEY, highchartsRenderer.getOthersName(opts)),
|
1572
1394
|
isSum: !!col_index,
|
1573
1395
|
isTotal: true,
|
1574
1396
|
color: colorOptions.total,
|
1575
1397
|
});
|
1576
1398
|
|
1577
1399
|
if (col_index !== col_n_keys.length - 1) {
|
1578
|
-
|
1579
|
-
const rowKeys = rows_by_cols ? rows_by_cols[col_index] : row_n_keys;
|
1580
|
-
lodash.forEach(rowKeys, function (row_n_value) {
|
1400
|
+
lodash.forEach(row_n_keys, function (row_n_value) {
|
1581
1401
|
const agg = pivotData.getAggregator(row_n_value, col_n_value);
|
1582
1402
|
let val = agg.value();
|
1583
1403
|
|
@@ -1585,19 +1405,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1585
1405
|
if (val) {
|
1586
1406
|
const tmoobj = {};
|
1587
1407
|
const key = lodash.isArray(row_n_value) ? row_n_value[0] : row_n_value;
|
1588
|
-
tmoobj.
|
1408
|
+
tmoobj.name = lodash.unescape(key);
|
1589
1409
|
|
1590
|
-
if (tmoobj.
|
1591
|
-
tmoobj.
|
1410
|
+
if (tmoobj.name) {
|
1411
|
+
tmoobj.name = tmoobj.name
|
1592
1412
|
.replace(highchartsRenderer.DR_OTHERS_KEY, highchartsRenderer.getOthersName(opts));
|
1593
1413
|
}
|
1594
1414
|
|
1595
|
-
if (lodash.isEmpty(String(tmoobj.
|
1596
|
-
tmoobj.
|
1415
|
+
if (lodash.isEmpty(String(tmoobj.name))) {
|
1416
|
+
tmoobj.name = lodash.unescape(col_n_value);
|
1597
1417
|
tmoobj.visible = false;
|
1598
1418
|
}
|
1599
1419
|
|
1600
|
-
tmoobj.name = highchartsRenderer.getFormattedRowKey(tmoobj.initialName, pivotData);
|
1601
1420
|
tmoobj.y = val;
|
1602
1421
|
tmoobj.colKeys = [lodash.unescape(col_n_value), lodash.unescape(col_n_keys[col_index + 1])];
|
1603
1422
|
resultObject.data.push(tmoobj);
|
@@ -1651,10 +1470,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1651
1470
|
lodash.forEach(waterfallOptions.values.walkthrough, function(value, index) {
|
1652
1471
|
|
1653
1472
|
let keys = [];
|
1654
|
-
if (value.trend === 'total'
|
1473
|
+
if (value.trend === 'total') {
|
1655
1474
|
keys = value.key;
|
1656
1475
|
} else {
|
1657
|
-
|
1476
|
+
_.forEach(value.key, (item) => {
|
1658
1477
|
const findKeyByValue = lodash.find(
|
1659
1478
|
Object.keys(pivotData.dateValuesDictionary || {}),
|
1660
1479
|
key => pivotData.dateValuesDictionary[key] === item
|
@@ -1684,12 +1503,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1684
1503
|
increase: '#20A452',
|
1685
1504
|
};
|
1686
1505
|
|
1687
|
-
|
1688
|
-
initialName = lodash.replace(
|
1689
|
-
lodash.unescape(initialName), highchartsRenderer.DR_OTHERS_KEY, highchartsRenderer.getOthersName(opts)
|
1690
|
-
)
|
1691
|
-
let name = value.trend === 'total' ? initialName : highchartsRenderer.getFormattedColKey(initialName, pivotData);
|
1692
|
-
|
1506
|
+
const name = value.trend === 'total' ? value.formattedKey || value.key[0] : keys.join(highchartsRenderer.delimer);
|
1693
1507
|
let color = '';
|
1694
1508
|
|
1695
1509
|
if (!lodash.get(waterfallOptions, 'colors', {}) && value.color) {
|
@@ -1701,18 +1515,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1701
1515
|
? lodash.get(waterfallOptions, 'colors', {}).increase || baseColor.increase
|
1702
1516
|
: lodash.get(waterfallOptions, 'colors', {}).decrease || baseColor.decrease;
|
1703
1517
|
}
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1715
|
-
}
|
1518
|
+
|
1519
|
+
resultObject.data.push({
|
1520
|
+
y: val,
|
1521
|
+
name: lodash.replace(
|
1522
|
+
lodash.unescape(name), highchartsRenderer.DR_OTHERS_KEY, highchartsRenderer.getOthersName(opts)
|
1523
|
+
),
|
1524
|
+
totalIndex: value.trend === 'total' ? index : undefined,
|
1525
|
+
isSum: value.trend === 'total',
|
1526
|
+
isTotal: value.trend === 'total',
|
1527
|
+
color,
|
1528
|
+
colsForTotal: value.trend === 'total' ? keys : null,
|
1529
|
+
});
|
1716
1530
|
});
|
1717
1531
|
chart_series.push(resultObject);
|
1718
1532
|
chart_series.push(
|
@@ -1751,7 +1565,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1751
1565
|
highchartsRenderer.getVariantSeries = function (series, delta_column_options) {
|
1752
1566
|
const varianceColor = delta_column_options.color || highchartsRenderer.variance_color || Highcharts.getOptions().colors[7];
|
1753
1567
|
series.name = delta_column_options.name.replace('_', '');
|
1754
|
-
series.initialName = series.name;
|
1755
1568
|
series.color = varianceColor;
|
1756
1569
|
|
1757
1570
|
if (delta_column_options.point_click_event) {
|
@@ -1793,11 +1606,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1793
1606
|
series.dataLabels = {y: -8};
|
1794
1607
|
}
|
1795
1608
|
series.marker = {
|
1796
|
-
lineWidth:
|
1609
|
+
lineWidth: 6,
|
1797
1610
|
enabled: true,
|
1798
|
-
radius:
|
1611
|
+
radius: 6,
|
1799
1612
|
lineColor: varianceColor,
|
1800
|
-
fillColor:
|
1613
|
+
fillColor: 'white',
|
1801
1614
|
symbol: 'circle',
|
1802
1615
|
states: {
|
1803
1616
|
select: {
|
@@ -1805,14 +1618,25 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1805
1618
|
fillColor: '#00FF2D',
|
1806
1619
|
lineColor: '#008816',
|
1807
1620
|
lineWidth: 5,
|
1808
|
-
},
|
1809
|
-
hover: {
|
1810
|
-
enabled: false,
|
1811
|
-
lineWidthPlus: 0
|
1812
1621
|
}
|
1813
1622
|
}
|
1814
1623
|
};
|
1815
|
-
|
1624
|
+
if (useNewUx) {
|
1625
|
+
series.marker.lineWidth = 0;
|
1626
|
+
series.marker.radius = 8;
|
1627
|
+
series.marker.fillColor = varianceColor;
|
1628
|
+
series.marker.states.hover = {
|
1629
|
+
enabled: false
|
1630
|
+
};
|
1631
|
+
}
|
1632
|
+
|
1633
|
+
series.states = {
|
1634
|
+
hover: {
|
1635
|
+
lineWidthPlus: 0
|
1636
|
+
}
|
1637
|
+
};
|
1638
|
+
}
|
1639
|
+
else if (delta_column_options.chart == 'area') {
|
1816
1640
|
series.color = varianceColor;
|
1817
1641
|
series.type = 'area'
|
1818
1642
|
} else if (delta_column_options.chart == 'areaspline') {
|
@@ -1849,17 +1673,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1849
1673
|
|
1850
1674
|
var ob = {};
|
1851
1675
|
// check string contains hebrew
|
1852
|
-
ob.
|
1676
|
+
ob.name = (/[\u0590-\u05FF]/).test(key) ? ('\u200E' + key) : key;
|
1853
1677
|
if (lodash.isEmpty(String(ob.name))) {
|
1854
|
-
ob.
|
1678
|
+
ob.name = "[blank]";
|
1855
1679
|
}
|
1856
1680
|
|
1857
|
-
if (ob.
|
1858
|
-
ob.
|
1681
|
+
if (ob.name === highchartsRenderer.DR_OTHERS_KEY) {
|
1682
|
+
ob.name = othersName;
|
1859
1683
|
}
|
1860
1684
|
|
1861
|
-
ob.name = highchartsRenderer.getFormattedColKey(ob.initialName, pivotData);
|
1862
|
-
|
1863
1685
|
ob.y = val;
|
1864
1686
|
if (!isNaN(key))
|
1865
1687
|
key = Number(key)
|
@@ -1891,8 +1713,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1891
1713
|
var col_n = col_n_value[0];
|
1892
1714
|
if (col_n != undefined) {
|
1893
1715
|
col_ob.id = !isNaN(col_n) ? Number(col_n) : col_n;
|
1894
|
-
col_ob.
|
1895
|
-
col_ob.name = highchartsRenderer.getFormattedColKey(col_ob.initialName, pivotData);
|
1716
|
+
col_ob.name = col_n === highchartsRenderer.DR_OTHERS_KEY ? othersName : col_n;
|
1896
1717
|
col_ob.data = [];
|
1897
1718
|
lodash.forEach(row_n_keys, function (row_n_value) {
|
1898
1719
|
var agg = pivotData.getAggregator(row_n_value, col_n_value);
|
@@ -1907,13 +1728,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1907
1728
|
// }
|
1908
1729
|
}
|
1909
1730
|
|
1910
|
-
const
|
1911
|
-
|
1912
|
-
col_ob.data.push({
|
1913
|
-
name: row_name,
|
1914
|
-
initialName: row_initial_name,
|
1915
|
-
y: val
|
1916
|
-
});
|
1731
|
+
const row_name = row_n_value[0] === highchartsRenderer.DR_OTHERS_KEY ? othersName : row_n_value[0];
|
1732
|
+
col_ob.data.push([row_name, val]);
|
1917
1733
|
}
|
1918
1734
|
});
|
1919
1735
|
if (col_ob.data.length) {
|
@@ -1988,32 +1804,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
1988
1804
|
color: varianceColor
|
1989
1805
|
}
|
1990
1806
|
},
|
1991
|
-
opposite: true
|
1992
|
-
tickPositioner: function () {
|
1993
|
-
const primaryAxisTicksCount = this.chart.yAxis[0].tickPositions.length;
|
1994
|
-
const minFromSettings = parseInt(lodash.get(opts, 'comboOptions.secondaryAxisSettings.min'));
|
1995
|
-
const maxFromSettings = parseInt(lodash.get(opts, 'comboOptions.secondaryAxisSettings.max'));
|
1996
|
-
let secondaryAxisMin = !isNaN(minFromSettings) ? minFromSettings : this.tickPositions[0];
|
1997
|
-
let secondaryAxisMax = !isNaN(maxFromSettings) ? maxFromSettings : this.tickPositions[this.tickPositions.length - 1];
|
1998
|
-
|
1999
|
-
if (secondaryAxisMin >= secondaryAxisMax) {
|
2000
|
-
if (isNaN(minFromSettings)) {
|
2001
|
-
secondaryAxisMin = secondaryAxisMax - Math.pow(10, secondaryAxisMax.toString().length - 1);
|
2002
|
-
}
|
2003
|
-
if (isNaN(maxFromSettings)) {
|
2004
|
-
secondaryAxisMax = secondaryAxisMin + Math.pow(10, secondaryAxisMin.toString().length - 1);
|
2005
|
-
}
|
2006
|
-
}
|
2007
|
-
|
2008
|
-
const step = (secondaryAxisMax - secondaryAxisMin) / (primaryAxisTicksCount - 1);
|
2009
|
-
const tickPositions = [secondaryAxisMin, secondaryAxisMax];
|
2010
|
-
for (let i = 1; i < primaryAxisTicksCount - 1; i++) {
|
2011
|
-
tickPositions.splice(i, 0, parseFloat((secondaryAxisMin + step * i).toFixed(2)));
|
2012
|
-
}
|
2013
|
-
return tickPositions;
|
2014
|
-
},
|
2015
|
-
gridLineWidth: 0,
|
2016
|
-
tickWidth: 0,
|
1807
|
+
opposite: true
|
2017
1808
|
}
|
2018
1809
|
highchartsRenderer.setYAxisMinMax(chartOptions.yAxis[1], opts.comboOptions.secondaryAxisSettings);
|
2019
1810
|
};
|
@@ -2077,9 +1868,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2077
1868
|
|
2078
1869
|
lodash.forEach(col_n_keys, function (key) {
|
2079
1870
|
var ob = {};
|
2080
|
-
ob.
|
2081
|
-
if (lodash.isEmpty(String(ob.
|
2082
|
-
ob.
|
1871
|
+
ob.name = key;
|
1872
|
+
if (lodash.isEmpty(String(ob.name))) {
|
1873
|
+
ob.name = "[blank]";
|
2083
1874
|
}
|
2084
1875
|
if (row_n_keys && row_n_keys.length > 0) {
|
2085
1876
|
agg = pivotData.getAggregator(row_n_keys[0], key); // tale first row
|
@@ -2087,7 +1878,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2087
1878
|
agg = pivotData.getAggregator([], key);
|
2088
1879
|
}
|
2089
1880
|
ob.y = agg.value();
|
2090
|
-
ob.name = highchartsRenderer.getFormattedColKey(ob.initialName, pivotData);
|
2091
1881
|
pie_series.push(ob);
|
2092
1882
|
});
|
2093
1883
|
|
@@ -2192,9 +1982,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2192
1982
|
}
|
2193
1983
|
};
|
2194
1984
|
|
2195
|
-
chartOptions.xAxis = {
|
2196
|
-
categories: highchartsRenderer.getFormattedColKeys(pivotData, null),
|
2197
|
-
};
|
1985
|
+
chartOptions.xAxis = {categories: pivotData.getColKeys()};
|
2198
1986
|
chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, null, null, opts, chartOptions);
|
2199
1987
|
|
2200
1988
|
var total = [];
|
@@ -2309,7 +2097,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2309
2097
|
backgroundColor: {
|
2310
2098
|
linearGradient: {x1: 0, y1: 0, x2: 0, y2: 1},
|
2311
2099
|
stops: [
|
2312
|
-
[0,
|
2100
|
+
[0, '#FFF'],
|
2313
2101
|
[1, '#333']
|
2314
2102
|
]
|
2315
2103
|
},
|
@@ -2320,7 +2108,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2320
2108
|
linearGradient: {x1: 0, y1: 0, x2: 0, y2: 1},
|
2321
2109
|
stops: [
|
2322
2110
|
[0, '#333'],
|
2323
|
-
[1,
|
2111
|
+
[1, '#FFF']
|
2324
2112
|
]
|
2325
2113
|
},
|
2326
2114
|
borderWidth: 1,
|
@@ -2336,9 +2124,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2336
2124
|
};
|
2337
2125
|
|
2338
2126
|
|
2339
|
-
chartOptions.xAxis = {
|
2340
|
-
categories: highchartsRenderer.getFormattedColKeys(pivotData, null),
|
2341
|
-
};
|
2127
|
+
chartOptions.xAxis = {categories: pivotData.getColKeys()};
|
2342
2128
|
chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, true, null, null, opts, chartOptions);
|
2343
2129
|
|
2344
2130
|
var total = [];
|
@@ -2374,12 +2160,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2374
2160
|
minorTickWidth: 1,
|
2375
2161
|
minorTickLength: 10,
|
2376
2162
|
minorTickPosition: 'inside',
|
2377
|
-
minorTickColor:
|
2163
|
+
minorTickColor: '#666',
|
2378
2164
|
tickPixelInterval: 30,
|
2379
2165
|
tickWidth: 2,
|
2380
2166
|
tickPosition: 'inside',
|
2381
2167
|
tickLength: 10,
|
2382
|
-
tickColor:
|
2168
|
+
tickColor: '#666',
|
2383
2169
|
labels: {
|
2384
2170
|
step: 2,
|
2385
2171
|
rotation: 'auto'
|
@@ -2604,7 +2390,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2604
2390
|
highchartsRenderer.ptRenderBasicLine = function (pivotData, opts) {
|
2605
2391
|
var chartOptions = {};
|
2606
2392
|
var rowAttrs = pivotData.rowAttrs;
|
2607
|
-
var colAttrs = pivotData.colAttrs;
|
2608
2393
|
|
2609
2394
|
var additionOptions = opts.chartOptions ? opts.chartOptions : highchartsRenderer.getDefaultValueForChart('line-chart');
|
2610
2395
|
|
@@ -2665,23 +2450,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2665
2450
|
};
|
2666
2451
|
}
|
2667
2452
|
|
2668
|
-
|
2669
|
-
|
2670
|
-
|
2671
|
-
}
|
2672
|
-
|
2673
|
-
chartOptions.tooltip = opts.insightsTooltipFunc
|
2674
|
-
? highchartsRenderer.customFormatterTooltipInsights(pivotData, opts)
|
2675
|
-
: {
|
2676
|
-
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
2677
|
-
valueDecimals: 2,
|
2678
|
-
};
|
2453
|
+
chartOptions.tooltip = {
|
2454
|
+
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
2455
|
+
valueDecimals: 2,
|
2456
|
+
};
|
2679
2457
|
|
2680
2458
|
chartOptions.xAxis = {
|
2681
|
-
categories:
|
2459
|
+
categories: pivotData.getColKeys(),
|
2682
2460
|
title: {
|
2683
2461
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
|
2684
|
-
}
|
2462
|
+
}
|
2685
2463
|
};
|
2686
2464
|
chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
|
2687
2465
|
chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, additionOptions, opts, chartOptions);
|
@@ -2751,18 +2529,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2751
2529
|
};
|
2752
2530
|
}
|
2753
2531
|
|
2754
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
2755
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
2756
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
2757
|
-
}
|
2758
|
-
|
2759
2532
|
chartOptions.tooltip = {
|
2760
2533
|
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
2761
2534
|
valueDecimals: 2,
|
2762
2535
|
};
|
2763
2536
|
|
2764
2537
|
chartOptions.xAxis = {
|
2765
|
-
categories:
|
2538
|
+
categories: pivotData.getColKeys(),
|
2766
2539
|
title: {
|
2767
2540
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
|
2768
2541
|
}
|
@@ -2848,11 +2621,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2848
2621
|
};
|
2849
2622
|
}
|
2850
2623
|
|
2851
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
2852
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
2853
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
2854
|
-
}
|
2855
|
-
|
2856
2624
|
chartOptions.tooltip = {
|
2857
2625
|
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
2858
2626
|
valueDecimals: 2,
|
@@ -2863,7 +2631,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2863
2631
|
}
|
2864
2632
|
|
2865
2633
|
chartOptions.xAxis = {
|
2866
|
-
categories:
|
2634
|
+
categories: pivotData.getColKeys(),
|
2867
2635
|
title: {
|
2868
2636
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
|
2869
2637
|
}
|
@@ -2911,7 +2679,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2911
2679
|
}
|
2912
2680
|
|
2913
2681
|
chartOptions.xAxis = {
|
2914
|
-
categories:
|
2682
|
+
categories: pivotData.getColKeys(),
|
2915
2683
|
tickmarkPlacement: 'on',
|
2916
2684
|
title: {
|
2917
2685
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
|
@@ -2925,11 +2693,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
2925
2693
|
chartOptions.plotOptions = {
|
2926
2694
|
[type === 'area-chart' ? 'area' : 'areaspline']: {
|
2927
2695
|
stacking: 'normal',
|
2928
|
-
lineColor:
|
2696
|
+
lineColor: '#666666',
|
2929
2697
|
lineWidth: 1,
|
2930
2698
|
marker: {
|
2931
2699
|
lineWidth: 1,
|
2932
|
-
lineColor:
|
2700
|
+
lineColor: '#666666'
|
2933
2701
|
}
|
2934
2702
|
},
|
2935
2703
|
series: {
|
@@ -3012,7 +2780,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3012
2780
|
}
|
3013
2781
|
|
3014
2782
|
chartOptions.xAxis = {
|
3015
|
-
categories:
|
2783
|
+
categories: pivotData.getColKeys(),
|
3016
2784
|
tickmarkPlacement: 'on',
|
3017
2785
|
title: {
|
3018
2786
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : '',
|
@@ -3037,7 +2805,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3037
2805
|
zoomType: additionOptions && additionOptions.chart && additionOptions.chart.zoom_type ? additionOptions.chart.zoom_type : 'None',
|
3038
2806
|
events: {
|
3039
2807
|
'drilldown': function (e) {
|
3040
|
-
highchartsRenderer.modifyEventPointForDrilldown(e, pivotData);
|
3041
2808
|
if (drilldownFunc)
|
3042
2809
|
drilldownFunc(e, this, "drilldown");
|
3043
2810
|
|
@@ -3088,13 +2855,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3088
2855
|
highchartsRenderer.setYAxisMinMax(chartOptions.yAxis, additionOptions.axisY);
|
3089
2856
|
}
|
3090
2857
|
|
3091
|
-
|
3092
|
-
|
3093
|
-
|
3094
|
-
|
3095
|
-
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
3096
|
-
valueDecimals: 2,
|
3097
|
-
};
|
2858
|
+
chartOptions.tooltip = {
|
2859
|
+
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
2860
|
+
valueDecimals: 2,
|
2861
|
+
};
|
3098
2862
|
|
3099
2863
|
highchartsRenderer.handleGridLines(additionOptions, chartOptions);
|
3100
2864
|
|
@@ -3134,11 +2898,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3134
2898
|
};
|
3135
2899
|
}
|
3136
2900
|
|
3137
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
3138
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
3139
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
3140
|
-
}
|
3141
|
-
|
3142
2901
|
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, false);
|
3143
2902
|
|
3144
2903
|
chartOptions.drilldown = highchartsRenderer.getDataLabelsStylesForDrillDown(additionOptions);
|
@@ -3156,7 +2915,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3156
2915
|
zoomType: 'x',
|
3157
2916
|
events: {
|
3158
2917
|
'drilldown': function (e) {
|
3159
|
-
highchartsRenderer.modifyEventPointForDrilldown(e, pivotData);
|
3160
2918
|
if (drilldownFunc)
|
3161
2919
|
drilldownFunc(e, this, "drilldown");
|
3162
2920
|
|
@@ -3232,12 +2990,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3232
2990
|
|
3233
2991
|
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, false);
|
3234
2992
|
|
3235
|
-
chartOptions.tooltip =
|
3236
|
-
|
3237
|
-
|
3238
|
-
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
3239
|
-
valueDecimals: 2,
|
3240
|
-
};
|
2993
|
+
chartOptions.tooltip = {
|
2994
|
+
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
2995
|
+
};
|
3241
2996
|
|
3242
2997
|
if (additionOptions && additionOptions.chart) {
|
3243
2998
|
chartOptions.colors = highchartsRenderer.getColorsWithOffset(additionOptions.chart.colors_offset);
|
@@ -3275,12 +3030,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3275
3030
|
}
|
3276
3031
|
};
|
3277
3032
|
}
|
3278
|
-
|
3279
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
3280
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
3281
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
3282
|
-
}
|
3283
|
-
|
3284
3033
|
chartOptions.xAxis = {
|
3285
3034
|
type: 'category',
|
3286
3035
|
crosshair: true,
|
@@ -3314,7 +3063,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3314
3063
|
type: 'column',
|
3315
3064
|
events: {
|
3316
3065
|
'drilldown': function (e) {
|
3317
|
-
highchartsRenderer.modifyEventPointForDrilldown(e, pivotData);
|
3318
3066
|
if (drilldownFunc)
|
3319
3067
|
drilldownFunc(e, this, "drilldown");
|
3320
3068
|
|
@@ -3377,9 +3125,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3377
3125
|
},
|
3378
3126
|
};
|
3379
3127
|
|
3380
|
-
chartOptions.xAxis = {
|
3381
|
-
type: 'category',
|
3382
|
-
};
|
3128
|
+
chartOptions.xAxis = {type: 'category'};
|
3383
3129
|
chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
|
3384
3130
|
chartOptions.series = highchartsRenderer.ptCreateSeriesToDrillDownChart(pivotData, chartOptions, additionOptions, opts);
|
3385
3131
|
//if (drilldownFunc)
|
@@ -3417,22 +3163,20 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3417
3163
|
if (additionOptions) {
|
3418
3164
|
highchartsRenderer.setYAxisMinMax(chartOptions.yAxis, additionOptions.axisY);
|
3419
3165
|
}
|
3420
|
-
chartOptions.tooltip =
|
3421
|
-
|
3422
|
-
:
|
3423
|
-
|
3424
|
-
valueDecimals: 2,
|
3425
|
-
};
|
3166
|
+
chartOptions.tooltip = {
|
3167
|
+
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
3168
|
+
valueDecimals: 2,
|
3169
|
+
};
|
3426
3170
|
|
3427
3171
|
if (additionOptions && additionOptions.chart) {
|
3428
3172
|
chartOptions.colors = highchartsRenderer.getColorsWithOffset(additionOptions.chart.colors_offset);
|
3429
3173
|
}
|
3430
3174
|
chartOptions.xAxis = {
|
3431
|
-
categories:
|
3175
|
+
categories: pivotData.getColKeys(),
|
3432
3176
|
crosshair: true,
|
3433
3177
|
title: {
|
3434
3178
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : ''
|
3435
|
-
}
|
3179
|
+
}
|
3436
3180
|
};
|
3437
3181
|
chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
|
3438
3182
|
chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
|
@@ -3467,12 +3211,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3467
3211
|
}
|
3468
3212
|
};
|
3469
3213
|
}
|
3470
|
-
|
3471
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
3472
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
3473
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
3474
|
-
}
|
3475
|
-
|
3476
3214
|
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, false);
|
3477
3215
|
|
3478
3216
|
return highchartsRenderer.ptCreateElementAndDraw(chartOptions, opts);
|
@@ -3511,14 +3249,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3511
3249
|
}
|
3512
3250
|
return "";
|
3513
3251
|
},
|
3514
|
-
style:
|
3515
|
-
|
3516
|
-
|
3517
|
-
|
3518
|
-
|| LABEL_DEFAULT_OPTIONS.color,
|
3519
|
-
},
|
3520
|
-
highchartsRenderer.getDataLabelsStyle(additionOptions)
|
3521
|
-
),
|
3252
|
+
style: {
|
3253
|
+
fontWeight: 'normal',
|
3254
|
+
color: (highchartsRenderer.highcharts_theme && highchartsRenderer.highcharts_theme.textColor) || 'gray'
|
3255
|
+
}
|
3522
3256
|
},
|
3523
3257
|
labels: {
|
3524
3258
|
formatter: highchartsRenderer.defaultValueLabelsFormatter(pivotData, opts)
|
@@ -3528,14 +3262,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3528
3262
|
highchartsRenderer.setYAxisMinMax(chartOptions.yAxis, additionOptions.axisY);
|
3529
3263
|
}
|
3530
3264
|
|
3531
|
-
|
3532
|
-
|
3265
|
+
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, rowAttrs.length, false);
|
3266
|
+
chartOptions.legend.reversed = true;
|
3533
3267
|
|
3534
|
-
chartOptions.tooltip =
|
3535
|
-
|
3536
|
-
|
3537
|
-
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts)
|
3538
|
-
};
|
3268
|
+
chartOptions.tooltip = {
|
3269
|
+
formatter: highchartsRenderer.defaultFormatterToTooltip(pivotData, opts),
|
3270
|
+
};
|
3539
3271
|
|
3540
3272
|
if (additionOptions && additionOptions.chart) {
|
3541
3273
|
chartOptions.colors = highchartsRenderer.getColorsWithOffset(additionOptions.chart.colors_offset);
|
@@ -3557,16 +3289,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3557
3289
|
};
|
3558
3290
|
}
|
3559
3291
|
|
3560
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
3561
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
3562
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
3563
|
-
}
|
3564
|
-
|
3565
3292
|
chartOptions.xAxis = {
|
3566
|
-
categories:
|
3293
|
+
categories: pivotData.getColKeys(),
|
3567
3294
|
title: {
|
3568
3295
|
text: additionOptions && additionOptions.axisX ? additionOptions.axisX.name : ''
|
3569
|
-
}
|
3296
|
+
}
|
3570
3297
|
};
|
3571
3298
|
chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
|
3572
3299
|
chartOptions.series = highchartsRenderer.ptCreateBasicLineSeries(pivotData, null, null, null, null, opts, chartOptions);
|
@@ -3671,16 +3398,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3671
3398
|
};
|
3672
3399
|
}
|
3673
3400
|
|
3674
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
3675
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
3676
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
3677
|
-
}
|
3678
|
-
|
3679
3401
|
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, 3, false);
|
3680
3402
|
chartOptions.legend.useHTML = true;
|
3681
3403
|
chartOptions.legend.labelFormatter = function() {
|
3682
3404
|
const name = this.name;
|
3683
|
-
const findTotal =
|
3405
|
+
const findTotal = _.find(this.options.data, {isTotal: true});
|
3684
3406
|
const color = lodash.get(findTotal, 'color') ? findTotal.color : this.color;
|
3685
3407
|
return `<span style="margin: 5px; vertical-align: middle; display:inline-block; background-color: ${color};
|
3686
3408
|
width: 12px; height: 12px; border-radius: 50%"></span>
|
@@ -3791,18 +3513,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3791
3513
|
}
|
3792
3514
|
};
|
3793
3515
|
}
|
3794
|
-
|
3795
|
-
if (lodash.get(chartOptions, 'plotOptions.series.point.events')) {
|
3796
|
-
chartOptions.plotOptions.series.point.events.mouseOver = opts.trackUserInsightsTooltipFunc;
|
3797
|
-
chartOptions.plotOptions.series.point.events.mouseOut = opts.trackUserInsightsTooltipFunc;
|
3798
|
-
}
|
3799
|
-
|
3800
3516
|
if (waterfallOptions.colors) {
|
3801
3517
|
chartOptions.legend = highchartsRenderer.getOptionsForLegends(additionOptions, 3, false);
|
3802
3518
|
chartOptions.legend.useHTML = true;
|
3803
3519
|
chartOptions.legend.labelFormatter = function() {
|
3804
3520
|
const name = this.options.className ? 'Total': this.name;
|
3805
|
-
const findTotal =
|
3521
|
+
const findTotal = _.find(this.options.data, {isTotal: true});
|
3806
3522
|
const color = lodash.get(findTotal, 'color') ? findTotal.color : this.color;
|
3807
3523
|
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>';
|
3808
3524
|
}
|
@@ -3968,10 +3684,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3968
3684
|
calculated_formats: calculated_info.formats,
|
3969
3685
|
isChangeable: false,
|
3970
3686
|
push: function (record) {
|
3971
|
-
if (highchartsRenderer.enabledNewWidgetValueFormatting) {
|
3972
|
-
record.formats = highchartsRenderer.getRecordFormats(render_options, record['DR_Values']);
|
3973
|
-
}
|
3974
|
-
|
3975
3687
|
if (record.hasOwnProperty('data_types') && $.isArray(record['data_types'])) {
|
3976
3688
|
this.data_types = this.data_types.concat(record['data_types']);
|
3977
3689
|
this.data_types = lodash.uniq(this.data_types);
|
@@ -3990,7 +3702,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
3990
3702
|
this.ignoreValue = true;
|
3991
3703
|
}
|
3992
3704
|
|
3993
|
-
if (
|
3705
|
+
if (useTotalsCalculation && !isNaN(parseFloat(record[attr]))) {
|
3994
3706
|
return this.sum = parseFloat(record[attr]);
|
3995
3707
|
} else if (!isNaN(parseFloat(record[attr]))) {
|
3996
3708
|
return this.sum += parseFloat(record[attr]);
|
@@ -4016,7 +3728,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4016
3728
|
number_format = 'General';
|
4017
3729
|
}
|
4018
3730
|
|
4019
|
-
if (this.widget_values_format
|
3731
|
+
if (this.widget_values_format) {
|
4020
3732
|
number_format = this.widget_values_format;
|
4021
3733
|
}
|
4022
3734
|
|
@@ -4124,11 +3836,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4124
3836
|
}
|
4125
3837
|
}
|
4126
3838
|
var val = parseFloat(record[attr]);
|
4127
|
-
|
4128
3839
|
if (!isNaN(val)) {
|
4129
|
-
if (highchartsRenderer.enabledNewWidgetValueFormatting) {
|
4130
|
-
record.formats = highchartsRenderer.getRecordFormats(render_options, record['DR_Values']);
|
4131
|
-
}
|
4132
3840
|
|
4133
3841
|
if (record.hasOwnProperty('data_types') && $.isArray(record['data_types'])) {
|
4134
3842
|
this.data_types = this.data_types.concat(record['data_types']);
|
@@ -4148,7 +3856,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4148
3856
|
this.ignoreValue = true;
|
4149
3857
|
}
|
4150
3858
|
|
4151
|
-
if (
|
3859
|
+
if (useTotalsCalculation) {
|
4152
3860
|
return this.sum = val;
|
4153
3861
|
} else {
|
4154
3862
|
return this.sum += val;
|
@@ -4175,13 +3883,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4175
3883
|
number_format = 'General';
|
4176
3884
|
}
|
4177
3885
|
|
4178
|
-
if (this.widget_values_format
|
3886
|
+
if (this.widget_values_format) {
|
4179
3887
|
number_format = this.widget_values_format;
|
4180
3888
|
}
|
4181
3889
|
|
4182
3890
|
number_format = highchartsRenderer.getCalculatedValueFormat(this.calculated_formats, rowKey, colKey) || number_format;
|
4183
|
-
var formated_value = highchartsRenderer.formatValue('n', number_format, x)
|
4184
3891
|
|
3892
|
+
var formated_value = highchartsRenderer.formatValue('n', number_format, x)
|
4185
3893
|
if (formated_value && formated_value.hasOwnProperty('value') && formated_value.value != null) {
|
4186
3894
|
return formated_value.value;
|
4187
3895
|
} else {
|
@@ -4219,10 +3927,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4219
3927
|
var ref, x;
|
4220
3928
|
x = parseFloat(record[attr]);
|
4221
3929
|
if (!isNaN(x)) {
|
4222
|
-
if (highchartsRenderer.enabledNewWidgetValueFormatting) {
|
4223
|
-
record.formats = highchartsRenderer.getRecordFormats(render_options, record['DR_Values']);
|
4224
|
-
}
|
4225
|
-
|
4226
3930
|
if (record.hasOwnProperty('data_types') && $.isArray(record['data_types'])) {
|
4227
3931
|
this.data_types = this.data_types.concat(record['data_types']);
|
4228
3932
|
this.data_types = lodash.uniq(this.data_types);
|
@@ -4240,7 +3944,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4240
3944
|
if (highchartsRenderer.ignoreIfCalculatedValue(data, rowKey, colKey, record, calculated_info.associated_fields, render_options, is_graph)) {
|
4241
3945
|
this.ignoreValue = true;
|
4242
3946
|
}
|
4243
|
-
if (
|
3947
|
+
if (useTotalsCalculation) {
|
4244
3948
|
return this.val = x;
|
4245
3949
|
} else {
|
4246
3950
|
return this.val = Math.min(x, (ref = this.val) != null ? ref : x);
|
@@ -4265,7 +3969,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4265
3969
|
number_format = 'General';
|
4266
3970
|
}
|
4267
3971
|
|
4268
|
-
if (this.widget_values_format
|
3972
|
+
if (this.widget_values_format) {
|
4269
3973
|
number_format = this.widget_values_format;
|
4270
3974
|
}
|
4271
3975
|
|
@@ -4309,10 +4013,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4309
4013
|
var ref, x;
|
4310
4014
|
x = parseFloat(record[attr]);
|
4311
4015
|
if (!isNaN(x)) {
|
4312
|
-
if (highchartsRenderer.enabledNewWidgetValueFormatting) {
|
4313
|
-
record.formats = highchartsRenderer.getRecordFormats(render_options, record['DR_Values']);
|
4314
|
-
}
|
4315
|
-
|
4316
4016
|
if (record.hasOwnProperty('data_types') && $.isArray(record['data_types'])) {
|
4317
4017
|
this.data_types = this.data_types.concat(record['data_types']);
|
4318
4018
|
this.data_types = lodash.uniq(this.data_types);
|
@@ -4331,12 +4031,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4331
4031
|
this.ignoreValue = true;
|
4332
4032
|
}
|
4333
4033
|
|
4334
|
-
if (
|
4034
|
+
if (useTotalsCalculation) {
|
4335
4035
|
return this.val = x;
|
4336
4036
|
} else {
|
4337
|
-
return this.val = Math.
|
4338
|
-
}
|
4339
|
-
}
|
4037
|
+
return this.val = Math.min(x, (ref = this.val) != null ? ref : x);
|
4038
|
+
} }
|
4340
4039
|
},
|
4341
4040
|
value: function () {
|
4342
4041
|
if (this.ignoreValue) {
|
@@ -4356,7 +4055,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4356
4055
|
number_format = 'General';
|
4357
4056
|
}
|
4358
4057
|
|
4359
|
-
if (this.widget_values_format
|
4058
|
+
if (this.widget_values_format) {
|
4360
4059
|
number_format = this.widget_values_format;
|
4361
4060
|
}
|
4362
4061
|
|
@@ -4401,10 +4100,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4401
4100
|
var ref, x;
|
4402
4101
|
x = parseFloat(record[attr]);
|
4403
4102
|
if (!isNaN(x)) {
|
4404
|
-
if (highchartsRenderer.enabledNewWidgetValueFormatting) {
|
4405
|
-
record.formats = highchartsRenderer.getRecordFormats(render_options, record['DR_Values']);
|
4406
|
-
}
|
4407
|
-
|
4408
4103
|
if (record.hasOwnProperty('data_types') && $.isArray(record['data_types'])) {
|
4409
4104
|
this.data_types = this.data_types.concat(record['data_types']);
|
4410
4105
|
this.data_types = lodash.uniq(this.data_types);
|
@@ -4424,7 +4119,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4424
4119
|
}
|
4425
4120
|
|
4426
4121
|
|
4427
|
-
if (
|
4122
|
+
if (useTotalsCalculation) {
|
4428
4123
|
this.sum = parseFloat(x);
|
4429
4124
|
} else {
|
4430
4125
|
this.sum += parseFloat(x);
|
@@ -4437,7 +4132,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4437
4132
|
if (this.ignoreValue) {
|
4438
4133
|
return null;
|
4439
4134
|
}
|
4440
|
-
if (
|
4135
|
+
if (useTotalsCalculation) {
|
4441
4136
|
return this.sum;
|
4442
4137
|
}
|
4443
4138
|
return this.sum / this.len;
|
@@ -4454,7 +4149,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4454
4149
|
number_format = 'General';
|
4455
4150
|
}
|
4456
4151
|
|
4457
|
-
if (this.widget_values_format
|
4152
|
+
if (this.widget_values_format) {
|
4458
4153
|
number_format = this.widget_values_format;
|
4459
4154
|
}
|
4460
4155
|
|
@@ -4473,84 +4168,300 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4473
4168
|
};
|
4474
4169
|
};
|
4475
4170
|
|
4476
|
-
highchartsRenderer.
|
4477
|
-
|
4478
|
-
|
4479
|
-
|
4480
|
-
if (axis == 'col_total') {
|
4481
|
-
return 'row_total';
|
4482
|
-
} else {
|
4483
|
-
return 'col_total';
|
4484
|
-
}
|
4485
|
-
}
|
4486
|
-
return axis;
|
4487
|
-
};
|
4171
|
+
highchartsRenderer.createTotalColFiltersArr = function (colKeys, colTotals, totalFilters, pivotData) {
|
4172
|
+
var colIndexesToFilter = []
|
4173
|
+
if (!totalFilters || !totalFilters.type)
|
4174
|
+
return colIndexesToFilter
|
4488
4175
|
|
4489
|
-
|
4490
|
-
|
4491
|
-
|
4492
|
-
|
4493
|
-
|
4176
|
+
var colTotalsWithoutSubTotals = {};
|
4177
|
+
var i, flatKey;
|
4178
|
+
for (i in colKeys) {
|
4179
|
+
flatKey = colKeys[i].join($.pivotUtilities.delim);
|
4180
|
+
if (colTotals[flatKey])
|
4181
|
+
colTotalsWithoutSubTotals[flatKey] = colTotals[flatKey];
|
4494
4182
|
}
|
4495
4183
|
|
4496
|
-
|
4497
|
-
|
4184
|
+
var filterFunc = highchartsRenderer.getTotalsFilter(totalFilters.type, totalFilters.value, totalFilters.is_absolute, colTotalsWithoutSubTotals)
|
4185
|
+
for (var j in colKeys) {
|
4186
|
+
var totalVal = pivotData.getAggregator([], colKeys[j]).value();
|
4187
|
+
if (filterFunc(totalVal)) {
|
4188
|
+
colIndexesToFilter.push(j)
|
4189
|
+
}
|
4498
4190
|
}
|
4499
4191
|
|
4500
|
-
|
4501
|
-
|
4192
|
+
let keyAttListToFilter = [];
|
4193
|
+
for (var attr in pivotData.colAttrs) {
|
4194
|
+
for (var key in pivotData.colKeys) {
|
4195
|
+
if ($.inArray(key, colIndexesToFilter) >= 0) {
|
4196
|
+
keyAttListToFilter.push(pivotData.colKeys[key])
|
4197
|
+
}
|
4198
|
+
}
|
4502
4199
|
}
|
4503
|
-
|
4200
|
+
return keyAttListToFilter;
|
4504
4201
|
};
|
4505
4202
|
|
4506
|
-
highchartsRenderer.
|
4507
|
-
|
4203
|
+
highchartsRenderer.createTotalRowFiltersArr = function (rowKeys, rowTotals, totalFilters, pivotData) {
|
4204
|
+
var rowIndexesToFilter = [];
|
4205
|
+
if (!totalFilters || !totalFilters.type)
|
4206
|
+
return rowIndexesToFilter;
|
4508
4207
|
|
4509
|
-
|
4510
|
-
|
4511
|
-
|
4512
|
-
|
4208
|
+
var rowTotalsWithoutSubTotals = {};
|
4209
|
+
var i, flatKey;
|
4210
|
+
for (i in rowKeys) {
|
4211
|
+
flatKey = rowKeys[i].join($.pivotUtilities.delim);
|
4212
|
+
if (rowTotals[flatKey])
|
4213
|
+
rowTotalsWithoutSubTotals[flatKey] = rowTotals[flatKey];
|
4513
4214
|
}
|
4514
4215
|
|
4515
|
-
|
4216
|
+
var filterFunc = highchartsRenderer.getTotalsFilter(totalFilters.type, totalFilters.value, totalFilters.is_absolute, rowTotalsWithoutSubTotals)
|
4217
|
+
for (var j in rowKeys) {
|
4218
|
+
var totalVal = pivotData.getAggregator(rowKeys[j], []).value();
|
4219
|
+
if (filterFunc(totalVal)) {
|
4220
|
+
rowIndexesToFilter.push(j)
|
4221
|
+
}
|
4222
|
+
}
|
4223
|
+
|
4224
|
+
let keyAttListToFilter = [];
|
4225
|
+
for (var attr in pivotData.rowAttrs) {
|
4226
|
+
for (var key in pivotData.rowKeys) {
|
4227
|
+
if ($.inArray(key, rowIndexesToFilter) >= 0) {
|
4228
|
+
keyAttListToFilter.push(pivotData.rowKeys[key])
|
4229
|
+
}
|
4230
|
+
}
|
4231
|
+
}
|
4232
|
+
return keyAttListToFilter;
|
4516
4233
|
};
|
4517
4234
|
|
4518
|
-
highchartsRenderer.
|
4519
|
-
|
4520
|
-
|
4521
|
-
|
4522
|
-
|
4523
|
-
|
4524
|
-
|
4525
|
-
|
4526
|
-
|
4527
|
-
|
4528
|
-
|
4529
|
-
|
4530
|
-
|
4531
|
-
|
4532
|
-
|
4235
|
+
highchartsRenderer.getTotalsFilter = function (type, vals, is_absolute, totals) {
|
4236
|
+
var filter = (a) => false;
|
4237
|
+
switch (type) {
|
4238
|
+
case "filter_above":
|
4239
|
+
if (is_absolute)
|
4240
|
+
filter = (a) => Math.abs(a) <= vals[0];
|
4241
|
+
else
|
4242
|
+
filter = (a) => a <= vals[0];
|
4243
|
+
break;
|
4244
|
+
case "filter_below":
|
4245
|
+
if (is_absolute)
|
4246
|
+
filter = (a) => Math.abs(a) >= vals[0];
|
4247
|
+
else
|
4248
|
+
filter = (a) => a >= vals[0];
|
4249
|
+
break;
|
4250
|
+
case "filter_between":
|
4251
|
+
if (is_absolute)
|
4252
|
+
filter = (a) => Math.abs(a) <= vals[0] || Math.abs(a) >= vals[1];
|
4253
|
+
else
|
4254
|
+
filter = (a) => a <= vals[0] || a >= vals[1];
|
4255
|
+
break;
|
4256
|
+
case "filter_out_of_range":
|
4257
|
+
if (is_absolute)
|
4258
|
+
filter = (a) => Math.abs(a) >= vals[0] && Math.abs(a) <= vals[1];
|
4259
|
+
else
|
4260
|
+
filter = (a) => a >= vals[0] && a <= vals[1];
|
4261
|
+
break;
|
4262
|
+
case "filter_top_x":
|
4263
|
+
var topx;
|
4264
|
+
if (is_absolute)
|
4265
|
+
topx = lodash.map(totals, (x) => Math.abs(x.value())).filter((v, i, a) => a.indexOf(v) === i).sort((a, b) => b - a).slice(0, vals[0]).pop();
|
4266
|
+
else
|
4267
|
+
topx = lodash.map(totals, (x) => x.value()).filter((v, i, a) => a.indexOf(v) === i).sort((a, b) => b - a).slice(0, vals[0]).pop();
|
4533
4268
|
|
4534
|
-
|
4269
|
+
if (topx != undefined) {
|
4270
|
+
if (is_absolute)
|
4271
|
+
filter = (a) => Math.abs(a) < topx;
|
4272
|
+
else
|
4273
|
+
filter = (a) => a < topx;
|
4274
|
+
}
|
4275
|
+
break;
|
4276
|
+
case "filter_bottom_x":
|
4277
|
+
var bottomx;
|
4278
|
+
if (is_absolute)
|
4279
|
+
bottomx = lodash.map(totals, (x) => Math.abs(x.value())).filter((v, i, a) => a.indexOf(v) === i).sort((a, b) => a - b).slice(0, vals[0]).pop();
|
4280
|
+
else
|
4281
|
+
bottomx = lodash.map(totals, (x) => x.value()).filter((v, i, a) => a.indexOf(v) === i).sort((a, b) => a - b).slice(0, vals[0]).pop();
|
4282
|
+
|
4283
|
+
if (bottomx != undefined) {
|
4284
|
+
if (is_absolute)
|
4285
|
+
filter = (a) => Math.abs(a) > bottomx;
|
4286
|
+
else
|
4287
|
+
filter = (a) => a > bottomx;
|
4288
|
+
}
|
4289
|
+
break;
|
4290
|
+
case "filter_smallest":
|
4291
|
+
const smallest_sumOfFields = lodash.reduce(totals, (acc, curr) => acc += curr.sum, 0);
|
4292
|
+
const smallest = Math.floor((smallest_sumOfFields * vals[0])/100);
|
4293
|
+
|
4294
|
+
if (is_absolute)
|
4295
|
+
filter = (a) => Math.abs(a) > smallest;
|
4296
|
+
else
|
4297
|
+
filter = (a) => a > smallest;
|
4298
|
+
break;
|
4299
|
+
case "filter_largest":
|
4300
|
+
const largest_sumOfFields = lodash.reduce(totals, (acc, curr) => acc += curr.sum, 0);
|
4301
|
+
const largest = Math.floor((largest_sumOfFields * vals[0])/100);
|
4302
|
+
|
4303
|
+
if (is_absolute)
|
4304
|
+
filter = (a) => Math.abs(a) < largest;
|
4305
|
+
else
|
4306
|
+
filter = (a) => a < largest;
|
4307
|
+
break;
|
4308
|
+
case "filter_out_zero":
|
4309
|
+
if (is_absolute)
|
4310
|
+
filter = (a) => Math.abs(a) == 0;
|
4311
|
+
else
|
4312
|
+
filter = (a) => a == 0;
|
4313
|
+
break;
|
4314
|
+
default:
|
4315
|
+
|
4316
|
+
}
|
4317
|
+
return filter;
|
4318
|
+
};
|
4319
|
+
|
4320
|
+
highchartsRenderer.getAxis = function (axis, opts, farceIsTable = false) {
|
4321
|
+
let is_transpose = lodash.get(opts, 'rendererOptions.chartOptions.table_options.transpose_table', false);
|
4322
|
+
let is_table = opts.isTable;
|
4323
|
+
if (is_transpose && (is_table || farceIsTable)) {
|
4324
|
+
if (axis == 'col_total') {
|
4325
|
+
return 'row_total';
|
4535
4326
|
} else {
|
4536
|
-
|
4327
|
+
return 'col_total';
|
4328
|
+
}
|
4329
|
+
}
|
4330
|
+
return axis;
|
4331
|
+
};
|
4332
|
+
|
4333
|
+
highchartsRenderer.generateFilteredResult = function (totalFilters, optsFiltered, rowData, opts, pivotData) {
|
4334
|
+
let keyAttListToFilter;
|
4335
|
+
let axis = highchartsRenderer.getAxis(totalFilters.filter_options.axis, opts);
|
4537
4336
|
|
4538
|
-
|
4539
|
-
|
4337
|
+
if (axis == 'col_total') {
|
4338
|
+
keyAttListToFilter = highchartsRenderer.createTotalColFiltersArr(pivotData.colKeys, pivotData.colTotals, totalFilters.filter_options, pivotData);
|
4339
|
+
return highchartsRenderer.generateFilteredResultForRowAndCol(keyAttListToFilter, optsFiltered, pivotData.colAttrs, rowData, opts, pivotData);
|
4340
|
+
} else if (axis == 'row_total') {
|
4341
|
+
keyAttListToFilter = highchartsRenderer.createTotalRowFiltersArr(pivotData.rowKeys, pivotData.rowTotals, totalFilters.filter_options, pivotData);
|
4342
|
+
return highchartsRenderer.generateFilteredResultForRowAndCol(keyAttListToFilter, optsFiltered, pivotData.rowAttrs, rowData, opts, pivotData);
|
4343
|
+
} else {
|
4344
|
+
return opts.renderer(pivotData, opts.rendererOptions);
|
4345
|
+
}
|
4346
|
+
};
|
4347
|
+
|
4348
|
+
highchartsRenderer.generateFilteredResultForRowAndCol = function (keyAttListToFilter, optsFiltered, attrs, rowData, opts, pivotData) {
|
4349
|
+
let pivotDataFiltered = pivotData;
|
4350
|
+
if (!lodash.isEmpty(keyAttListToFilter)) {
|
4351
|
+
var myfilter = function (rec) {
|
4352
|
+
for (var i in keyAttListToFilter) {
|
4353
|
+
var allsame = true;
|
4354
|
+
var find_one = lodash.find(attrs, function (val, j) {
|
4355
|
+
return ((rec[val] != keyAttListToFilter[i][j]) && !(!rec[val] && keyAttListToFilter[i][j] == "null"))
|
4356
|
+
});
|
4357
|
+
if (find_one == undefined) {
|
4358
|
+
return false;
|
4359
|
+
}
|
4540
4360
|
}
|
4361
|
+
return true;
|
4362
|
+
}
|
4363
|
+
optsFiltered.filter = myfilter;
|
4541
4364
|
|
4542
|
-
|
4365
|
+
pivotDataFiltered = $.pivotUtilities.getPivotDataModel(rowData, optsFiltered);
|
4366
|
+
}
|
4367
|
+
return opts.renderer(pivotDataFiltered, opts.rendererOptions);
|
4368
|
+
};
|
4369
|
+
|
4370
|
+
highchartsRenderer.sanitizeOptions = function (opts) {
|
4371
|
+
if (opts && opts.rendererOptions) {
|
4372
|
+
if (opts.rendererOptions.chart_title) {
|
4373
|
+
opts.rendererOptions.chart_title = highchartsRenderer.decodeFunc(opts.rendererOptions.chart_title);
|
4374
|
+
}
|
4375
|
+
}
|
4376
|
+
|
4377
|
+
if (opts && opts.chartOptions && opts.chartOptions.subtitle) {
|
4378
|
+
opts.chartOptions.subtitle.subtitle = highchartsRenderer.decodeFunc(opts.chartOptions.subtitle.subtitle);
|
4379
|
+
}
|
4380
|
+
|
4381
|
+
if (opts && opts.rendererOptions && opts.rendererOptions.chartOptions && opts.rendererOptions.chartOptions.subtitle) {
|
4382
|
+
opts.rendererOptions.chartOptions.subtitle.subtitle = highchartsRenderer.decodeFunc(opts.rendererOptions.chartOptions.subtitle.subtitle);
|
4383
|
+
}
|
4384
|
+
|
4385
|
+
};
|
4386
|
+
|
4387
|
+
highchartsRenderer.getIconsForTotalOptions = function (options, axis) {
|
4388
|
+
let tr_axis = axis;
|
4389
|
+
|
4390
|
+
let ret_str = '';
|
4391
|
+
if (options && options.total_value_options && options.total_value_options.filter_options && options.total_value_options.filter_options.axis == tr_axis) {
|
4392
|
+
//TODO add tooltip with description of filter
|
4393
|
+
ret_str += '<i class="fa fa-filter"></i>';
|
4394
|
+
}
|
4395
|
+
|
4396
|
+
return ret_str;
|
4397
|
+
};
|
4398
|
+
|
4399
|
+
highchartsRenderer.getNewAttrSortingForCol = function (pivotData, sortingOptions) {
|
4400
|
+
let rowAttrs, rowKeys, colKeys, colAttrs;
|
4401
|
+
rowAttrs = pivotData.rowAttrs;
|
4402
|
+
rowKeys = pivotData.rowKeys;
|
4403
|
+
colKeys = pivotData.colKeys;
|
4404
|
+
colAttrs = pivotData.colAttrs;
|
4405
|
+
|
4406
|
+
|
4407
|
+
if (!colAttrs || colAttrs.length == 0) {
|
4408
|
+
return null;
|
4409
|
+
}
|
4410
|
+
|
4411
|
+
let values_names_arr = [];
|
4412
|
+
let keysArray = sortingOptions.field ? rowKeys : colKeys;
|
4413
|
+
|
4414
|
+
lodash.forEach(keysArray, function (val) {
|
4415
|
+
let firstArray = sortingOptions.field ? [val[0]] : [];
|
4416
|
+
let secondArray = sortingOptions.field ? sortingOptions.field.split(highchartsRenderer.delimer) : [val[0]];
|
4417
|
+
let aggregator_subtotal = pivotData.getAggregator(firstArray, secondArray);
|
4543
4418
|
|
4544
|
-
|
4545
|
-
|
4419
|
+
if (aggregator_subtotal) {
|
4420
|
+
let value_subtotal = aggregator_subtotal.value();
|
4421
|
+
if (sortingOptions && sortingOptions.is_absolute && !isNaN(parseFloat(value_subtotal))) {
|
4422
|
+
value_subtotal = Math.abs(value_subtotal);
|
4546
4423
|
}
|
4424
|
+
values_names_arr.push({name: val[0], value: value_subtotal});
|
4547
4425
|
}
|
4426
|
+
});
|
4548
4427
|
|
4549
|
-
|
4550
|
-
|
4551
|
-
|
4428
|
+
// ORDERING
|
4429
|
+
let sorting_vector = ['asc'];
|
4430
|
+
if (sortingOptions && sortingOptions.type == 'largestToSmallest') {
|
4431
|
+
sorting_vector = ['desc'];
|
4432
|
+
}
|
4433
|
+
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
4434
|
+
|
4435
|
+
// map only names
|
4436
|
+
let attr_sorted_values = lodash.map(values_names_arr, 'name');
|
4437
|
+
return {name: sortingOptions.field ? rowAttrs[0] : colAttrs[0], values: attr_sorted_values};
|
4438
|
+
};
|
4439
|
+
|
4440
|
+
highchartsRenderer.getNewAttrSortingForRow = function (pivotData, sortingOptions) {
|
4441
|
+
let rowAttrs, rowKeys, colKeys, colAttrs;
|
4442
|
+
rowAttrs = pivotData.rowAttrs;
|
4443
|
+
rowKeys = pivotData.rowKeys;
|
4444
|
+
colKeys = pivotData.colKeys;
|
4445
|
+
colAttrs = pivotData.colAttrs;
|
4446
|
+
|
4447
|
+
if (!rowAttrs || rowAttrs.length == 0) {
|
4448
|
+
return null;
|
4449
|
+
}
|
4450
|
+
|
4451
|
+
let values_names_arr = [];
|
4452
|
+
let keysArray = sortingOptions.field ? colKeys : rowKeys;
|
4453
|
+
|
4454
|
+
lodash.forEach(keysArray, function (val) {
|
4455
|
+
let firstArray = sortingOptions.field ? sortingOptions.field.split(highchartsRenderer.delimer) : [val[0]];
|
4456
|
+
let secondArray = sortingOptions.field ? [val[0]] : [];
|
4457
|
+
let aggregator_subtotal = pivotData.getAggregator(firstArray, secondArray);
|
4458
|
+
|
4459
|
+
if (aggregator_subtotal) {
|
4460
|
+
let value_subtotal = aggregator_subtotal.value();
|
4461
|
+
if (sortingOptions && sortingOptions.is_absolute && !isNaN(parseFloat(value_subtotal))) {
|
4462
|
+
value_subtotal = Math.abs(value_subtotal);
|
4552
4463
|
}
|
4553
|
-
values_names_arr.push({name:
|
4464
|
+
values_names_arr.push({name: val[0], value: value_subtotal});
|
4554
4465
|
}
|
4555
4466
|
});
|
4556
4467
|
|
@@ -4562,33 +4473,36 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4562
4473
|
values_names_arr = lodash.orderBy(values_names_arr, ['value'], sorting_vector);
|
4563
4474
|
|
4564
4475
|
// map only names
|
4565
|
-
|
4476
|
+
let attr_sorted_values = lodash.map(values_names_arr, 'name');
|
4477
|
+
return {name: sortingOptions.field ? colAttrs[0] : rowAttrs[0], values: attr_sorted_values};
|
4566
4478
|
};
|
4567
4479
|
|
4568
|
-
highchartsRenderer.generateSortingFunctionByValues = function (
|
4480
|
+
highchartsRenderer.generateSortingFunctionByValues = function (sortingOptions, pivotData, opts) {
|
4481
|
+
let new_map;
|
4482
|
+
let axis = highchartsRenderer.getAxis(sortingOptions.axis, opts);
|
4483
|
+
if (axis == 'col_total') {
|
4484
|
+
new_map = highchartsRenderer.getNewAttrSortingForCol(pivotData, sortingOptions);
|
4485
|
+
} else if (axis == 'row_total') {
|
4486
|
+
new_map = highchartsRenderer.getNewAttrSortingForRow(pivotData, sortingOptions);
|
4487
|
+
}
|
4488
|
+
|
4569
4489
|
let old_sorters_function = opts.sorters;
|
4570
4490
|
if (!old_sorters_function) {
|
4571
4491
|
old_sorters_function = function () {
|
4572
4492
|
};
|
4573
4493
|
}
|
4574
|
-
|
4575
|
-
|
4576
|
-
|
4577
|
-
|
4578
|
-
|
4579
|
-
|
4580
|
-
|
4581
|
-
|
4582
|
-
sortingOptions.sorting,
|
4583
|
-
pivotData[isColumnSort ? 'colKeys' : 'rowKeys'],
|
4584
|
-
pivotData[isColumnSort ? 'colAttrs' : 'rowAttrs'],
|
4585
|
-
fieldIndex,
|
4586
|
-
widget
|
4587
|
-
);
|
4588
|
-
return $.pivotUtilities.sortAs(orderedNamesList);
|
4589
|
-
} else {
|
4590
|
-
return old_sorters_function(attr);
|
4494
|
+
if (new_map) {
|
4495
|
+
var sortAs = $.pivotUtilities.sortAs;
|
4496
|
+
let new_sorters_function = function (attr) {
|
4497
|
+
if (new_map.name == attr) {
|
4498
|
+
return $.pivotUtilities.sortAs(new_map.values);
|
4499
|
+
} else {
|
4500
|
+
return old_sorters_function(attr);
|
4501
|
+
}
|
4591
4502
|
}
|
4503
|
+
return new_sorters_function;
|
4504
|
+
} else {
|
4505
|
+
return old_sorters_function;
|
4592
4506
|
}
|
4593
4507
|
};
|
4594
4508
|
|
@@ -4690,6 +4604,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4690
4604
|
}
|
4691
4605
|
};
|
4692
4606
|
|
4607
|
+
highchartsRenderer.waterfallConstants = {
|
4608
|
+
[highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN]: {
|
4609
|
+
minCategoriesCount: 2,
|
4610
|
+
maxCategoriesCount: 5,
|
4611
|
+
},
|
4612
|
+
[highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH]: {
|
4613
|
+
minCategoriesCount: 2,
|
4614
|
+
maxCategoriesCount: 10,
|
4615
|
+
}
|
4616
|
+
};
|
4617
|
+
|
4693
4618
|
highchartsRenderer.rhPivotView = function (rowData, options, isTable = false, widget = null) {
|
4694
4619
|
if (!rowData || !rowData) {
|
4695
4620
|
if (options.onlyOptions) {
|
@@ -4720,20 +4645,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4720
4645
|
(category) => category.trend !== 'total'
|
4721
4646
|
);
|
4722
4647
|
}
|
4723
|
-
if (uniqueCategories && ((maxCategories && uniqueCategories.length > maxCategories)
|
4724
|
-
|| (minCategories && uniqueCategories.length < minCategories))) {
|
4725
|
-
options.error_has_occurred = true;
|
4726
|
-
const breakdownText = `Please adjust your dashboard's reference date or filter selections as \
|
4727
|
-
the quantity of data doesn't match the limit of at least ${ minCategories } values.`;
|
4728
|
-
const walkthroughText = `Please adjust your dashboard's reference date and filter selections as \
|
4729
|
-
the quantity of data doesn't match the chart's ${ minCategories }-${ maxCategories } value limit.`;
|
4730
4648
|
|
4649
|
+
if (uniqueCategories && (uniqueCategories.length > maxCategories || uniqueCategories.length < minCategories )) {
|
4650
|
+
options.error_has_occurred = true;
|
4731
4651
|
options.error_params = {
|
4732
4652
|
title: 'Data Conflict',
|
4733
|
-
text:
|
4653
|
+
text: `Please adjust your dashboard's reference date and filter selections as \
|
4654
|
+
the quantity of data doesn't match the chart's ${ minCategories }-${ maxCategories } value limit.`,
|
4734
4655
|
class: uniqueCategories.length < minCategories ? 'waterfall-nodata' : 'waterfall-too-much-data',
|
4735
4656
|
}
|
4736
|
-
|
4737
4657
|
return highchartsRenderer.getNoDataResult(options.rendererOptions, true);
|
4738
4658
|
}
|
4739
4659
|
}
|
@@ -4791,12 +4711,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4791
4711
|
optsFiltered = $.extend(defaults, opts);
|
4792
4712
|
result = null;
|
4793
4713
|
try {
|
4794
|
-
const isTranspose = lodash.get(opts, 'rendererOptions.chartOptions.table_options.transpose_table', false);
|
4795
|
-
opts.getFormattedColKeys = isTranspose ? highchartsRenderer.getFormattedRowKeys : highchartsRenderer.getFormattedColKeys;
|
4796
|
-
opts.getFormattedRowKeys = isTranspose ? highchartsRenderer.getFormattedColKeys : highchartsRenderer.getFormattedRowKeys;
|
4797
|
-
|
4798
4714
|
pivotData = $.pivotUtilities.getPivotDataModel(rowData, opts);
|
4799
|
-
pivotData.sortByValueAttrs = [];
|
4800
4715
|
try {
|
4801
4716
|
if (options && options.onlyOptions) {
|
4802
4717
|
if (!opts.rendererOptions) {
|
@@ -4804,24 +4719,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4804
4719
|
}
|
4805
4720
|
opts.rendererOptions.onlyOptions = true;
|
4806
4721
|
}
|
4807
|
-
|
4808
|
-
if (
|
4809
|
-
|
4810
|
-
|
4811
|
-
|
4812
|
-
|
4813
|
-
|
4814
|
-
if (sortByValueSettings.length) {
|
4815
|
-
pivotData.sortByValueAttrs = lodash.map(sortByValueSettings, fieldSorting => fieldSorting.name);
|
4816
|
-
let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(sortByValueSettings, pivotData, opts, widget);
|
4817
|
-
opts.sorters = new_sorting_function;
|
4818
|
-
optsFiltered.sorters = new_sorting_function;
|
4819
|
-
pivotData.sorters = new_sorting_function;
|
4820
|
-
|
4821
|
-
if (lodash.isObject(lodash.get(widget, 'pivot'))) {
|
4822
|
-
widget.pivot.sorters = new_sorting_function;
|
4823
|
-
}
|
4824
|
-
}
|
4722
|
+
var totalFilters = lodash.get(opts, 'rendererOptions.total_value_options', null);
|
4723
|
+
if (totalFilters && totalFilters.sorting_options) {
|
4724
|
+
let new_sorting_function = highchartsRenderer.generateSortingFunctionByValues(totalFilters.sorting_options, pivotData, opts);
|
4725
|
+
opts.sorters = new_sorting_function;
|
4726
|
+
optsFiltered.sorters = new_sorting_function;
|
4727
|
+
pivotData.sorters = new_sorting_function;
|
4825
4728
|
}
|
4826
4729
|
|
4827
4730
|
result = opts.renderer(pivotData, opts.rendererOptions);
|
@@ -4835,10 +4738,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4835
4738
|
result = {};
|
4836
4739
|
}
|
4837
4740
|
}
|
4838
|
-
|
4839
|
-
if (lodash.isObject(lodash.get(widget, 'pivot'))) {
|
4840
|
-
widget.pivot.sortByValueAttrs = pivotData.sortByValueAttrs;
|
4841
|
-
}
|
4842
4741
|
} catch (_error) {
|
4843
4742
|
e = _error;
|
4844
4743
|
if (typeof console !== "undefined" && console !== null) {
|
@@ -4849,7 +4748,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4849
4748
|
result = {};
|
4850
4749
|
}
|
4851
4750
|
}
|
4852
|
-
|
4853
4751
|
return result;
|
4854
4752
|
};
|
4855
4753
|
|
@@ -4874,17 +4772,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4874
4772
|
if (!pivotOptions) {
|
4875
4773
|
return;
|
4876
4774
|
}
|
4877
|
-
|
4878
4775
|
var subopts = {
|
4879
4776
|
sorters: pivotOptions ? pivotOptions.sorters : null,
|
4880
|
-
sortByValueAttrs: pivotOptions ? pivotOptions.sortByValueAttrs : null,
|
4881
4777
|
cols: lodash.map(pivotOptions.axisArray, 'name'),
|
4882
4778
|
rows: lodash.map(pivotOptions.legendArray, 'name'),
|
4883
|
-
colFormats: highchartsRenderer.getTableFormatInfosForWidgetFields(widget, pivotOptions, widget.cols),
|
4884
|
-
rowFormats: highchartsRenderer.getTableFormatInfosForWidgetFields(widget, pivotOptions, widget.rows),
|
4885
4779
|
rendererOptions: widget.options,
|
4886
4780
|
dateValuesDictionary: pivotOptions ? pivotOptions.dateValuesDictionary : null,
|
4887
|
-
keysObject: pivotOptions ? pivotOptions.keysObject : null,
|
4888
4781
|
};
|
4889
4782
|
|
4890
4783
|
if (!subopts.rendererOptions) {
|
@@ -4967,7 +4860,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4967
4860
|
return 'Q' + q + " " + dateObj.getFullYear();
|
4968
4861
|
};
|
4969
4862
|
|
4970
|
-
highchartsRenderer.
|
4863
|
+
highchartsRenderer.getWeekNumber = function (d) {
|
4971
4864
|
// Copy date so don't modify original
|
4972
4865
|
d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
|
4973
4866
|
// get Thursday of the year and get year of week
|
@@ -4999,6 +4892,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
4999
4892
|
return "W" + weekNo;
|
5000
4893
|
}
|
5001
4894
|
|
4895
|
+
highchartsRenderer.returnRawDataWeekValue = function (dateObj) {
|
4896
|
+
return highchartsRenderer.getWeekNumber(dateObj);
|
4897
|
+
};
|
4898
|
+
|
5002
4899
|
highchartsRenderer.check_values_not_for_convert = function (currentgraph, field_name) {
|
5003
4900
|
let vals_not_convert = [];
|
5004
4901
|
if (lodash.has(currentgraph, "options.chartOptions.delta_column") && currentgraph.options.chartOptions.delta_column) {
|
@@ -5037,7 +4934,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5037
4934
|
})
|
5038
4935
|
};
|
5039
4936
|
|
5040
|
-
highchartsRenderer.returnRawDataValue = function (type, value, format, field_name, vals_not_for_convert
|
4937
|
+
highchartsRenderer.returnRawDataValue = function (type, value, format, field_name, vals_not_for_convert) {
|
5041
4938
|
if (vals_not_for_convert && vals_not_for_convert.length && lodash.includes(vals_not_for_convert, value)) {
|
5042
4939
|
return value;
|
5043
4940
|
}
|
@@ -5058,7 +4955,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5058
4955
|
}
|
5059
4956
|
|
5060
4957
|
if (typeof (value) != 'number') {
|
5061
|
-
const drAdditionalField =
|
4958
|
+
const drAdditionalField = _.find($.pivotUtilities.additionalFieldsList, {key: value});
|
5062
4959
|
if (drAdditionalField && drAdditionalField.key)
|
5063
4960
|
return drAdditionalField.key;
|
5064
4961
|
|
@@ -5088,25 +4985,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5088
4985
|
format = format.replace('yyyy', 'YYYY');
|
5089
4986
|
format = format.replace('yy', 'YY');
|
5090
4987
|
format = lodash.replace(format, /h/g, 'H');
|
5091
|
-
|
5092
|
-
const timeframe = highchartsRenderer.getTimeframeByFormat(format);
|
5093
|
-
const fiscalYearMonthsModifier = highchartsRenderer.getFiscalYearMonthModifier();
|
5094
|
-
|
5095
|
-
let date = moment_lib(tryParse).utcOffset(0);
|
5096
|
-
if (lodash.includes(['quarter', 'year'], timeframe)) {
|
5097
|
-
date = date.subtract(fiscalYearMonthsModifier, 'M');
|
5098
|
-
}
|
5099
|
-
|
5100
|
-
return date.format(format) + "";
|
4988
|
+
return moment_lib(tryParse).utcOffset(0).format(format) + "";
|
5101
4989
|
} else {
|
5102
4990
|
return 'Wrong date format';
|
5103
4991
|
}
|
5104
4992
|
} else {
|
5105
|
-
const isFormatting = highchartsRenderer.isFormattingAxisFeatureOn() && isFormattingNumbers && format && !isNaN(value);
|
5106
4993
|
if (value === null || value === '[null]') {
|
5107
4994
|
return '[null]';
|
5108
|
-
} else if (isFormatting) {
|
5109
|
-
return highchartsRenderer.formatValue('n', format, value).value;
|
5110
4995
|
}
|
5111
4996
|
}
|
5112
4997
|
|
@@ -5146,18 +5031,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5146
5031
|
};
|
5147
5032
|
|
5148
5033
|
highchartsRenderer.isSystemField = function (field) {
|
5149
|
-
|
5150
|
-
|
5151
|
-
const areMultipleAndScenarioTags = highchartsRenderer.hasFeature(FEATURES.MULTIPLE_DIMENSION_TAGS)
|
5152
|
-
&& highchartsRenderer.hasFeature(FEATURES.USE_NEW_SCENARIO_TAG);
|
5153
|
-
|
5154
|
-
if (areMultipleAndScenarioTags) {
|
5155
|
-
dynamicSystemFields.push('Scenario', 'Budget Cycle');
|
5156
|
-
}
|
5157
|
-
|
5158
|
-
const regexDelimer = '|';
|
5159
|
-
const dynamicSystemFieldsRegex = dynamicSystemFields.length ? dynamicSystemFields.join(regexDelimer) + regexDelimer : '';
|
5160
|
-
var regex = new RegExp(`^(${dynamicSystemFieldsRegex}Calc_Model_Name|Calc_Model_ID|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");
|
5034
|
+
var regex = new RegExp("^(Calc_Model_Name|Calc_Model_ID|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");
|
5161
5035
|
|
5162
5036
|
return (field.category && field.category.includes("")) || regex.test(field.name)
|
5163
5037
|
};
|
@@ -5342,7 +5216,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5342
5216
|
options.chartOptions = lodash.merge(defaultOptions, options.chartOptions);
|
5343
5217
|
};
|
5344
5218
|
|
5345
|
-
highchartsRenderer.addPivotOptions = function (selectedTemplateWOData, widgetOptions, drilldownFunction, drillDownListFunction
|
5219
|
+
highchartsRenderer.addPivotOptions = function (selectedTemplateWOData, widgetOptions, drilldownFunction, drillDownListFunction) {
|
5346
5220
|
// Check if not rendered data, than it will render
|
5347
5221
|
|
5348
5222
|
var fields = highchartsRenderer.objectCopyJsonMethod(selectedTemplateWOData.fields);
|
@@ -5352,8 +5226,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5352
5226
|
var valuesFields = [];
|
5353
5227
|
var drilldownFunc = drilldownFunction;
|
5354
5228
|
var drillDownListFunc = drillDownListFunction;
|
5355
|
-
var insightsTooltipFunc = insightsTooltipFunction;
|
5356
|
-
var trackUserInsightsTooltipFunc = trackUserInsightsTooltipFunction;
|
5357
5229
|
|
5358
5230
|
// fill value fields
|
5359
5231
|
lodash.forEach(widgetOptions.vals, function (valObj) {
|
@@ -5408,7 +5280,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5408
5280
|
widgetOptions.pivot.valuesArray = valuesFields;
|
5409
5281
|
widgetOptions.pivot.chartType = widgetOptions.chart_type;
|
5410
5282
|
widgetOptions.pivot.chartOptions = widgetOptions.options;
|
5411
|
-
widgetOptions.pivot.chartRender = highchartsRenderer.getChartRendererFunction(widgetOptions.pivot.chartType, drilldownFunc, drillDownListFunc
|
5283
|
+
widgetOptions.pivot.chartRender = highchartsRenderer.getChartRendererFunction(widgetOptions.pivot.chartType, drilldownFunc, drillDownListFunc);
|
5412
5284
|
|
5413
5285
|
// TODO: remove this logic after BE sort is implemented
|
5414
5286
|
// it is required to do sort by totals for comparative analysis - we need to change deltas if columns swaped vice versa
|
@@ -5552,7 +5424,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5552
5424
|
dynamicRangeOptions.pivot.calculatedValues = highchartsRenderer.objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
|
5553
5425
|
}
|
5554
5426
|
|
5555
|
-
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions, calcModelPredefinedField
|
5427
|
+
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions, calcModelPredefinedField) {
|
5556
5428
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
5557
5429
|
const fields = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.fields);
|
5558
5430
|
const predefinedField = lodash.cloneDeep(calcModelPredefinedField);
|
@@ -5632,12 +5504,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5632
5504
|
const fieldOb = lodash.find(fields, { id: filterObj.id });
|
5633
5505
|
if (!fieldOb) return;
|
5634
5506
|
|
5635
|
-
|
5636
|
-
|
5637
|
-
|
5638
|
-
|
5639
|
-
filterObj.
|
5640
|
-
|
5507
|
+
filterObj.values = filterObj.values && lodash.map(filterObj.values, highchartsRenderer.decodeFunc);
|
5508
|
+
filterObj.includes = filterObj.includes && lodash.map(filterObj.includes, highchartsRenderer.decodeFunc);
|
5509
|
+
|
5510
|
+
if (lodash.get(filterObj, 'values.datetype') === 'list') {
|
5511
|
+
filterObj.values = lodash.map(filterObj.values.val, highchartsRenderer.decodeFunc);
|
5512
|
+
}
|
5513
|
+
|
5514
|
+
fieldOb.includes = filterObj.includes;
|
5515
|
+
fieldOb.values = filterObj.values;
|
5516
|
+
|
5517
|
+
if (filterObj.allow_nulls && fieldOb) {
|
5518
|
+
fieldOb.allow_nulls = filterObj.allow_nulls;
|
5641
5519
|
}
|
5642
5520
|
});
|
5643
5521
|
|
@@ -5662,18 +5540,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5662
5540
|
/**
|
5663
5541
|
* We can have several common fields, so we should ignore deleting during fillData
|
5664
5542
|
* */
|
5665
|
-
const commonFieldsId =
|
5666
|
-
|
5667
|
-
|
5668
|
-
|
5669
|
-
|
5670
|
-
const
|
5671
|
-
const valueFields = isInputStep ? fillData(storedAggFields, commonFieldsId) : [];
|
5672
|
-
|
5673
|
-
// for Output step
|
5674
|
-
const dateFields = !isInputStep ? fillData(storedDateFields, commonFieldsId) : [];
|
5675
|
-
const dataTypeFields = !isInputStep ? fillData(storedDataTypeFields, commonFieldsId) : [];
|
5676
|
-
const dataSeriesFields = !isInputStep ? fillData(storedGroupByFields, commonFieldsId) : [];
|
5543
|
+
const commonFieldsId = [scenarioField && scenarioField.id];
|
5544
|
+
const filterFields = fillData(filters, commonFieldsId);
|
5545
|
+
const valueFields = fillData(storedAggFields, commonFieldsId);
|
5546
|
+
const dateFields = fillData(storedDateFields, commonFieldsId);
|
5547
|
+
const dataTypeFields = fillData(storedDataTypeFields, commonFieldsId);
|
5548
|
+
const dataSeriesFields = fillData(storedGroupByFields, commonFieldsId);
|
5677
5549
|
|
5678
5550
|
lodash.remove(fields, _field => lodash.includes(commonFieldsId, _field.id));
|
5679
5551
|
|
@@ -5700,20 +5572,21 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5700
5572
|
|
5701
5573
|
lodash.forEach(functionOptions.filters, function (filterObj) {
|
5702
5574
|
fieldOb = lodash.find(fields, {id: filterObj.field});
|
5703
|
-
if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype
|
5575
|
+
if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype == 'list') {
|
5704
5576
|
filterObj.values = filterObj.values.val
|
5705
|
-
} else if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype
|
5577
|
+
} else if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype != 'list') {
|
5706
5578
|
fieldOb.values = filterObj.values;
|
5707
5579
|
} else if (fieldOb && filterObj.values && filterObj.values.type === 'advanced') {
|
5708
5580
|
fieldOb.values = filterObj.values;
|
5709
5581
|
}
|
5710
5582
|
|
5711
5583
|
if (fieldOb && filterObj.values && filterObj.values instanceof Array) {
|
5712
|
-
if (filterObj.is_excluded) {
|
5584
|
+
if (filterObj.is_excluded == true) {
|
5713
5585
|
fieldOb.excludes = filterObj.values;
|
5714
5586
|
} else {
|
5715
5587
|
fieldOb.includes = filterObj.values;
|
5716
5588
|
}
|
5589
|
+
//includes[fieldOb.name] = highchartsRenderer.getOnlyIncludedOfField(fieldOb);
|
5717
5590
|
}
|
5718
5591
|
if (filterObj.show_in_graph && fieldOb) {
|
5719
5592
|
fieldOb.show_in_graph = filterObj.show_in_graph
|
@@ -5879,6 +5752,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5879
5752
|
widgetOptions.pivot.legendArray = legendFields;
|
5880
5753
|
widgetOptions.pivot.valuesArray = valuesFields;
|
5881
5754
|
widgetOptions.pivot.filtersArray = filterFields;
|
5755
|
+
//widgetOptions.pivot.filter = filterFn;
|
5882
5756
|
widgetOptions.pivot.filterIncludes = includes;
|
5883
5757
|
widgetOptions.pivot.chartType = widgetOptions.chart_type;
|
5884
5758
|
widgetOptions.pivot.chartOptions = widgetOptions.options;
|
@@ -5936,7 +5810,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5936
5810
|
return toReturn;
|
5937
5811
|
};
|
5938
5812
|
|
5939
|
-
highchartsRenderer.getChartRendererFunction = function (newChartType, drilldownFunc, drillDownListFunc
|
5813
|
+
highchartsRenderer.getChartRendererFunction = function (newChartType, drilldownFunc, drillDownListFunc) {
|
5940
5814
|
var fnToReturn = null;
|
5941
5815
|
|
5942
5816
|
if (newChartType == highchartsRenderer.richTextSubType.type) {
|
@@ -5963,12 +5837,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
5963
5837
|
if (!opt) {
|
5964
5838
|
opt = {};
|
5965
5839
|
}
|
5966
|
-
opt.drillDownListFunc =
|
5967
|
-
highchartsRenderer.modifyEventPointForDrilldown(e, pivotData);
|
5968
|
-
drillDownListFunc(e);
|
5969
|
-
};
|
5970
|
-
opt.insightsTooltipFunc = insightsTooltipFunc;
|
5971
|
-
opt.trackUserInsightsTooltipFunc = trackUserInsightsTooltipFunc;
|
5840
|
+
opt.drillDownListFunc = drillDownListFunc;
|
5972
5841
|
} else {
|
5973
5842
|
opt.drillDownListFunc = null;
|
5974
5843
|
}
|
@@ -6110,6 +5979,63 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6110
5979
|
return key
|
6111
5980
|
};
|
6112
5981
|
|
5982
|
+
const fontSizeValues = lodash.map(new Array(19), (item, index) => {
|
5983
|
+
const fontValue = index + 6;
|
5984
|
+
return {label: fontValue, value: fontValue}
|
5985
|
+
})
|
5986
|
+
const fonts = [
|
5987
|
+
'Arial',
|
5988
|
+
'Arial Black',
|
5989
|
+
'Comic Sans MS',
|
5990
|
+
'Courier New',
|
5991
|
+
'Helvetica',
|
5992
|
+
'Impact',
|
5993
|
+
'Nunito Sans',
|
5994
|
+
'Tahoma',
|
5995
|
+
'Times New Roman',
|
5996
|
+
'Verdana',
|
5997
|
+
'Poppins'
|
5998
|
+
];
|
5999
|
+
|
6000
|
+
const TOOLTIP_DEFAULT_SETTINGS = {
|
6001
|
+
FONT_COLOR: '#545a6b',
|
6002
|
+
FONT_SIZE: '12',
|
6003
|
+
FONT_FAMILY: HIGHCHARTS_FONT_FAMILY,
|
6004
|
+
};
|
6005
|
+
|
6006
|
+
const TOOLTIP_DEFAULT_OPTIONS = {
|
6007
|
+
borderColor: '#fff',
|
6008
|
+
shadow: {
|
6009
|
+
color: '#9199b4',
|
6010
|
+
width: 10,
|
6011
|
+
opacity: 0.05
|
6012
|
+
},
|
6013
|
+
style: {
|
6014
|
+
fontSize: TOOLTIP_DEFAULT_SETTINGS.FONT_SIZE,
|
6015
|
+
fontFamily: TOOLTIP_DEFAULT_SETTINGS.FONT_FAMILY,
|
6016
|
+
color: TOOLTIP_DEFAULT_SETTINGS.FONT_COLOR,
|
6017
|
+
},
|
6018
|
+
enabled: true,
|
6019
|
+
};
|
6020
|
+
|
6021
|
+
const LABEL_DEFAULT_SETTINGS = {
|
6022
|
+
FONT_COLOR: textColor,
|
6023
|
+
FONT_SIZE: '11',
|
6024
|
+
FONT_FAMILY: HIGHCHARTS_FONT_FAMILY,
|
6025
|
+
};
|
6026
|
+
|
6027
|
+
const LABEL_DEFAULT_OPTIONS = {
|
6028
|
+
style: {
|
6029
|
+
fontSize: LABEL_DEFAULT_SETTINGS.FONT_SIZE,
|
6030
|
+
fontFamily: LABEL_DEFAULT_SETTINGS.FONT_FAMILY,
|
6031
|
+
fontWeight: 'normal',
|
6032
|
+
},
|
6033
|
+
color: LABEL_DEFAULT_SETTINGS.FONT_COLOR,
|
6034
|
+
};
|
6035
|
+
|
6036
|
+
const CHART_AXIS_DEFAULT_LABEL = 'Axis (Category)';
|
6037
|
+
const CHART_LEGEND_DEFAULT_LABEL = 'Legend (Series)';
|
6038
|
+
|
6113
6039
|
highchartsRenderer.getDefaultValueForSubOptions = function (type, existing_options) {
|
6114
6040
|
var valToReturn = {};
|
6115
6041
|
var option = highchartsRenderer.suboptions[type] || lodash.find(highchartsRenderer.suboptions, suboption => suboption.category_type === type);
|
@@ -6130,6 +6056,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6130
6056
|
return valToReturn;
|
6131
6057
|
};
|
6132
6058
|
|
6059
|
+
|
6133
6060
|
highchartsRenderer.getChartAxisLabel = function(type) {
|
6134
6061
|
return highchartsRenderer.chartsTypesInfo[type] ? highchartsRenderer.chartsTypesInfo[type].axisName : CHART_AXIS_DEFAULT_LABEL;
|
6135
6062
|
};
|
@@ -6140,11 +6067,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6140
6067
|
|
6141
6068
|
highchartsRenderer.widgetPlaceholders = lodash.assign({}, $.pivotUtilities.errorHandling.placeholders);
|
6142
6069
|
|
6143
|
-
const suboptionsFontSizeValues = (lodash.map(lodash.fill(new Array(19), null), function (item, index) {
|
6144
|
-
const fontValue = index + 6;
|
6145
|
-
return { label: fontValue, value: fontValue }
|
6146
|
-
}));
|
6147
|
-
|
6148
6070
|
highchartsRenderer.suboptions = {
|
6149
6071
|
'widget_library': {
|
6150
6072
|
is_hidden: true,
|
@@ -6299,14 +6221,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6299
6221
|
element_type: 'select',
|
6300
6222
|
value_name: 'columns_font_style',
|
6301
6223
|
element_label: 'Font style',
|
6302
|
-
element_options:
|
6224
|
+
element_options: fonts,
|
6303
6225
|
default_value: 'Poppins'
|
6304
6226
|
},
|
6305
6227
|
{
|
6306
6228
|
element_type: 'select',
|
6307
6229
|
value_name: 'columns_font_size',
|
6308
6230
|
element_label: 'Font size',
|
6309
|
-
element_options:
|
6231
|
+
element_options: fontSizeValues,
|
6310
6232
|
default_value: '10'
|
6311
6233
|
},
|
6312
6234
|
{
|
@@ -6328,14 +6250,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6328
6250
|
element_type: 'select',
|
6329
6251
|
value_name: 'rows_font_style',
|
6330
6252
|
element_label: 'Font style',
|
6331
|
-
element_options:
|
6253
|
+
element_options: fonts,
|
6332
6254
|
default_value: 'Poppins'
|
6333
6255
|
},
|
6334
6256
|
{
|
6335
6257
|
element_type: 'select',
|
6336
6258
|
value_name: 'rows_font_size',
|
6337
6259
|
element_label: 'Font size',
|
6338
|
-
element_options:
|
6260
|
+
element_options: fontSizeValues,
|
6339
6261
|
default_value: '10'
|
6340
6262
|
},
|
6341
6263
|
{
|
@@ -6357,14 +6279,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6357
6279
|
element_type: 'select',
|
6358
6280
|
value_name: 'values_font_style',
|
6359
6281
|
element_label: 'Font style',
|
6360
|
-
element_options:
|
6282
|
+
element_options: fonts,
|
6361
6283
|
default_value: 'Poppins'
|
6362
6284
|
},
|
6363
6285
|
{
|
6364
6286
|
element_type: 'select',
|
6365
6287
|
value_name: 'values_font_size',
|
6366
6288
|
element_label: 'Font size',
|
6367
|
-
element_options:
|
6289
|
+
element_options: fontSizeValues,
|
6368
6290
|
default_value: '10'
|
6369
6291
|
},
|
6370
6292
|
{
|
@@ -6386,14 +6308,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6386
6308
|
element_type: 'select',
|
6387
6309
|
value_name: 'totals_font_style',
|
6388
6310
|
element_label: 'Font style',
|
6389
|
-
element_options:
|
6311
|
+
element_options: fonts,
|
6390
6312
|
default_value: 'Poppins'
|
6391
6313
|
},
|
6392
6314
|
{
|
6393
6315
|
element_type: 'select',
|
6394
6316
|
value_name: 'totals_font_size',
|
6395
6317
|
element_label: 'Font size',
|
6396
|
-
element_options:
|
6318
|
+
element_options: fontSizeValues,
|
6397
6319
|
default_value: '10'
|
6398
6320
|
},
|
6399
6321
|
{
|
@@ -6510,14 +6432,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6510
6432
|
value_name: 'eliminate_calc_totals',
|
6511
6433
|
default_value: false
|
6512
6434
|
},
|
6513
|
-
{
|
6514
|
-
element_type: 'checkbox',
|
6515
|
-
element_label: 'Show data in dashboard if more than 1000 rows',
|
6516
|
-
value_name: 'show_more_than_thousand_rows',
|
6517
|
-
default_value: false,
|
6518
|
-
showFn: chartType => chartType === highchartsRenderer.CHART_TYPES.TABLE_ONLY,
|
6519
|
-
disabled_fn: (value) => !!value.use_handsOnTable
|
6520
|
-
},
|
6521
6435
|
]
|
6522
6436
|
},
|
6523
6437
|
'value': {
|
@@ -6670,14 +6584,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6670
6584
|
element_type: 'select',
|
6671
6585
|
value_name: 'font_style',
|
6672
6586
|
element_label: 'Font style',
|
6673
|
-
element_options:
|
6587
|
+
element_options: fonts,
|
6674
6588
|
default_value: LABEL_DEFAULT_SETTINGS.FONT_FAMILY,
|
6675
6589
|
},
|
6676
6590
|
{
|
6677
6591
|
element_type: 'select',
|
6678
6592
|
value_name: 'font_size',
|
6679
6593
|
element_label: 'Font size',
|
6680
|
-
element_options:
|
6594
|
+
element_options: fontSizeValues,
|
6681
6595
|
default_value: LABEL_DEFAULT_SETTINGS.FONT_SIZE,
|
6682
6596
|
},
|
6683
6597
|
{
|
@@ -6748,14 +6662,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6748
6662
|
element_type: 'select',
|
6749
6663
|
value_name: 'font_style',
|
6750
6664
|
element_label: 'Font style',
|
6751
|
-
element_options:
|
6665
|
+
element_options: fonts,
|
6752
6666
|
default_value: LABEL_DEFAULT_SETTINGS.FONT_FAMILY,
|
6753
6667
|
},
|
6754
6668
|
{
|
6755
6669
|
element_type: 'select',
|
6756
6670
|
value_name: 'font_size',
|
6757
6671
|
element_label: 'Font size',
|
6758
|
-
element_options:
|
6672
|
+
element_options: fontSizeValues,
|
6759
6673
|
default_value: LABEL_DEFAULT_SETTINGS.FONT_SIZE,
|
6760
6674
|
},
|
6761
6675
|
{
|
@@ -6825,14 +6739,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6825
6739
|
element_type: 'select',
|
6826
6740
|
value_name: 'font_style',
|
6827
6741
|
element_label: 'Font style',
|
6828
|
-
element_options:
|
6742
|
+
element_options: fonts,
|
6829
6743
|
default_value: LABEL_DEFAULT_SETTINGS.FONT_FAMILY,
|
6830
6744
|
},
|
6831
6745
|
{
|
6832
6746
|
element_type: 'select',
|
6833
6747
|
value_name: 'font_size',
|
6834
6748
|
element_label: 'Font size',
|
6835
|
-
element_options:
|
6749
|
+
element_options: fontSizeValues,
|
6836
6750
|
default_value: LABEL_DEFAULT_SETTINGS.FONT_SIZE,
|
6837
6751
|
},
|
6838
6752
|
{
|
@@ -6994,14 +6908,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6994
6908
|
element_type: 'select',
|
6995
6909
|
value_name: 'font_style',
|
6996
6910
|
element_label: 'Font style',
|
6997
|
-
element_options:
|
6911
|
+
element_options: fonts,
|
6998
6912
|
default_value: TOOLTIP_DEFAULT_SETTINGS.FONT_FAMILY,
|
6999
6913
|
},
|
7000
6914
|
{
|
7001
6915
|
element_type: 'select',
|
7002
6916
|
value_name: 'font_size',
|
7003
6917
|
element_label: 'Font size',
|
7004
|
-
element_options:
|
6918
|
+
element_options: fontSizeValues,
|
7005
6919
|
default_value: TOOLTIP_DEFAULT_SETTINGS.FONT_SIZE,
|
7006
6920
|
},
|
7007
6921
|
{
|
@@ -7084,14 +6998,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
7084
6998
|
element_type: 'select',
|
7085
6999
|
value_name: 'font_style',
|
7086
7000
|
element_label: 'Font style',
|
7087
|
-
element_options:
|
7001
|
+
element_options: fonts,
|
7088
7002
|
default_value: TOOLTIP_DEFAULT_SETTINGS.FONT_FAMILY,
|
7089
7003
|
},
|
7090
7004
|
{
|
7091
7005
|
element_type: 'select',
|
7092
7006
|
value_name: 'font_size',
|
7093
7007
|
element_label: 'Font size',
|
7094
|
-
element_options:
|
7008
|
+
element_options: fontSizeValues,
|
7095
7009
|
default_value: TOOLTIP_DEFAULT_SETTINGS.FONT_SIZE,
|
7096
7010
|
},
|
7097
7011
|
{
|
@@ -7196,6 +7110,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
7196
7110
|
value_name: 'is_percentage',
|
7197
7111
|
default_value: false,
|
7198
7112
|
hidden: true,
|
7113
|
+
}, {
|
7114
|
+
element_type: 'checkbox',
|
7115
|
+
element_label: 'Sort by variance',
|
7116
|
+
value_name: 'sort_by_variance',
|
7117
|
+
default_value: false,
|
7118
|
+
hidden: true
|
7119
|
+
}, {
|
7120
|
+
element_type: 'checkbox',
|
7121
|
+
element_label: 'Sort by absolute variance',
|
7122
|
+
value_name: 'sort_by_absolute_variance',
|
7123
|
+
default_value: false,
|
7124
|
+
hidden: true
|
7199
7125
|
}]
|
7200
7126
|
},
|
7201
7127
|
'delta_column_for_drill_down': {
|
@@ -7262,6 +7188,18 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
7262
7188
|
value_name: 'is_percentage',
|
7263
7189
|
default_value: false,
|
7264
7190
|
hidden: true,
|
7191
|
+
}, {
|
7192
|
+
element_type: 'checkbox',
|
7193
|
+
element_label: 'Sort by variance',
|
7194
|
+
value_name: 'sort_by_variance',
|
7195
|
+
default_value: false,
|
7196
|
+
hidden: true
|
7197
|
+
}, {
|
7198
|
+
element_type: 'checkbox',
|
7199
|
+
element_label: 'Sort by absolute variance',
|
7200
|
+
value_name: 'sort_by_absolute_variance',
|
7201
|
+
default_value: false,
|
7202
|
+
hidden: true
|
7265
7203
|
}, {
|
7266
7204
|
element_type: 'checkbox',
|
7267
7205
|
element_label: 'Filter zero values',
|
@@ -7556,7 +7494,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
7556
7494
|
},
|
7557
7495
|
};
|
7558
7496
|
|
7559
|
-
highchartsRenderer.chartsData =
|
7497
|
+
highchartsRenderer.chartsData =
|
7498
|
+
[
|
7560
7499
|
{
|
7561
7500
|
type: 'line',
|
7562
7501
|
name: 'Line',
|
@@ -8040,7 +7979,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8040
7979
|
suboptions: []
|
8041
7980
|
};
|
8042
7981
|
|
8043
|
-
highchartsRenderer.
|
7982
|
+
highchartsRenderer.MAX_SELECTED_ITEMS_IN_LABEL = 20;
|
7983
|
+
highchartsRenderer.MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL = 50;
|
7984
|
+
|
7985
|
+
highchartsRenderer.getFilterLabel = function (fieldFilter, showTemplateName) {
|
8044
7986
|
var displayname;
|
8045
7987
|
if (fieldFilter.new_name)
|
8046
7988
|
displayname = fieldFilter.new_name.replace('RH_DIM_', '');
|
@@ -8063,6 +8005,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8063
8005
|
var tooltip = '';
|
8064
8006
|
var all_vals = [];
|
8065
8007
|
if (fieldFilter.type == 'Date') {
|
8008
|
+
all_vals = [];
|
8066
8009
|
var invertValueFormatMap = lodash.invert(fieldFilter.valueFormatMap);
|
8067
8010
|
lodash.forEach(fieldFilter.includes, function (val) {
|
8068
8011
|
if (invertValueFormatMap && invertValueFormatMap[val]) {
|
@@ -8072,10 +8015,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8072
8015
|
}
|
8073
8016
|
all_vals.push(val);
|
8074
8017
|
});
|
8075
|
-
} else if (isFormattingNumbers && highchartsRenderer.isFormattingAxisFeatureOn()) {
|
8076
|
-
all_vals = lodash.map(lodash.cloneDeep(fieldFilter.includes), val =>
|
8077
|
-
highchartsRenderer.returnRawDataValue(fieldFilter.type, val, fieldFilter.format || '', null, null, true) + ""
|
8078
|
-
);
|
8079
8018
|
} else {
|
8080
8019
|
all_vals = lodash.clone(fieldFilter.includes);
|
8081
8020
|
}
|
@@ -8168,7 +8107,8 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8168
8107
|
};
|
8169
8108
|
}
|
8170
8109
|
} else {
|
8171
|
-
if (fieldFilter && fieldFilter.type && fieldFilter.type === 'Date'
|
8110
|
+
if (fieldFilter && fieldFilter.type && fieldFilter.type === 'Date'
|
8111
|
+
&& fieldFilter.datetypevalues && fieldFilter.datetypevalues) {
|
8172
8112
|
if (fieldFilter.datetypevalues.datetype === "frame") {
|
8173
8113
|
displayname += ` (${fieldFilter.datetypevalues.val.timeframe})`;
|
8174
8114
|
} else if (fieldFilter.datetypevalues.datetype === "range") {
|
@@ -8180,7 +8120,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8180
8120
|
// range timestamps currently are set presupposing that user selects UTC dates,
|
8181
8121
|
// that is why for consistency we also should show in filters values which user selected
|
8182
8122
|
// and not local dates, that can differ
|
8183
|
-
|
8123
|
+
_.forEach(Object.keys(dates), key => {
|
8184
8124
|
const dateConfiguration = dates[key];
|
8185
8125
|
const timestamp = dateConfiguration.timestamp;
|
8186
8126
|
if (timestamp) {
|
@@ -8246,7 +8186,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8246
8186
|
highchartsRenderer.getDashboardOverrideValues = function (data_model, graph, local_current_dashboard) {
|
8247
8187
|
let overrideValues = [];
|
8248
8188
|
|
8249
|
-
if (!local_current_dashboard) {
|
8189
|
+
if (!local_current_dashboard == undefined) {
|
8250
8190
|
local_current_dashboard = data_model.current_dashboard;
|
8251
8191
|
}
|
8252
8192
|
|
@@ -8322,11 +8262,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8322
8262
|
local_current_dashboard = data_model.current_dashboard;
|
8323
8263
|
}
|
8324
8264
|
|
8325
|
-
if (local_current_dashboard.date_tags
|
8265
|
+
if (local_current_dashboard.date_tags.length > 0) {
|
8326
8266
|
return 'date_tags';
|
8327
8267
|
}
|
8328
8268
|
|
8329
|
-
if (local_current_dashboard.plan_tags
|
8269
|
+
if (local_current_dashboard.plan_tags.length > 0) {
|
8330
8270
|
return 'plan_tags';
|
8331
8271
|
}
|
8332
8272
|
};
|
@@ -8352,7 +8292,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8352
8292
|
};
|
8353
8293
|
|
8354
8294
|
highchartsRenderer.getDashboardApplyScenarios = function (data_model, graph, local_current_dashboard) {
|
8355
|
-
if (local_current_dashboard == undefined) {
|
8295
|
+
if (!local_current_dashboard == undefined) {
|
8356
8296
|
local_current_dashboard = data_model.current_dashboard;
|
8357
8297
|
}
|
8358
8298
|
|
@@ -8378,7 +8318,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8378
8318
|
};
|
8379
8319
|
|
8380
8320
|
highchartsRenderer.isDate = function (date) {
|
8381
|
-
return new Date(date) !== "Invalid Date" && !isNaN(new Date(date));
|
8321
|
+
return ((new Date(date) !== "Invalid Date" && !isNaN(new Date(date))));
|
8382
8322
|
};
|
8383
8323
|
|
8384
8324
|
highchartsRenderer.isDateFormat = function (datestr, format) {
|
@@ -8386,12 +8326,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8386
8326
|
};
|
8387
8327
|
|
8388
8328
|
highchartsRenderer.containsIgnoreCase = function (str, it) {
|
8389
|
-
return str.toLowerCase().indexOf(it
|
8329
|
+
return str.toLowerCase().indexOf(it) != -1;
|
8390
8330
|
};
|
8391
8331
|
|
8392
8332
|
highchartsRenderer.createDateTypeFromValue = function (fieldnametoFilter, format, colName) {
|
8393
|
-
|
8394
|
-
const fiscalYearMonthsModifier = highchartsRenderer.getFiscalYearMonthModifier();
|
8333
|
+
const initialDateString = fieldnametoFilter;
|
8395
8334
|
|
8396
8335
|
if (format) {
|
8397
8336
|
format = format.replace(/y/g, 'Y');
|
@@ -8400,86 +8339,83 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8400
8339
|
format = 'MMM YYYY';
|
8401
8340
|
}
|
8402
8341
|
|
8403
|
-
|
8404
|
-
const timeframe = highchartsRenderer.getTimeframeByFormat(format);
|
8342
|
+
var range = {datetype: "range", val: {todate: 0, fromdate: 0}}
|
8405
8343
|
|
8406
|
-
|
8407
|
-
|
8408
|
-
|
8409
|
-
|
8344
|
+
if (format) {
|
8345
|
+
if (!highchartsRenderer.isDateFormat(fieldnametoFilter, format)) {
|
8346
|
+
return {};
|
8347
|
+
} else {
|
8410
8348
|
fieldnametoFilter = moment_lib(fieldnametoFilter, format, true).toISOString();
|
8411
8349
|
}
|
8412
|
-
|
8413
|
-
|
8414
|
-
|
8415
|
-
|
8350
|
+
} else if (!highchartsRenderer.isDate(fieldnametoFilter))
|
8351
|
+
return {};
|
8352
|
+
|
8353
|
+
var dt = new Date(fieldnametoFilter);
|
8354
|
+
var timeframe = 'day';
|
8355
|
+
if (format && highchartsRenderer.containsIgnoreCase(format, 'q'))
|
8356
|
+
timeframe = 'quarter';
|
8357
|
+
else if (format && !highchartsRenderer.containsIgnoreCase(format, 'dd') && !highchartsRenderer.containsIgnoreCase(format, 'mm') && highchartsRenderer.containsIgnoreCase(format, 'yy'))
|
8358
|
+
timeframe = 'year';
|
8359
|
+
else if (format && !highchartsRenderer.containsIgnoreCase(format, 'dd') && highchartsRenderer.containsIgnoreCase(format, 'mm') && highchartsRenderer.containsIgnoreCase(format, 'yy'))
|
8360
|
+
timeframe = 'month';
|
8361
|
+
switch (timeframe) {
|
8362
|
+
case 'day':
|
8363
|
+
range.val.fromdate = Math.round(Date.UTC(
|
8364
|
+
dt.getFullYear(),
|
8365
|
+
dt.getMonth(),
|
8366
|
+
dt.getDate(),
|
8367
|
+
0,
|
8368
|
+
0,
|
8369
|
+
0
|
8370
|
+
) / 1000);
|
8371
|
+
range.val.todate = range.val.fromdate + 60 * 60 * 24 - 1;
|
8372
|
+
return range;
|
8373
|
+
break;
|
8374
|
+
case 'month':
|
8375
|
+
range.val.fromdate = Math.round(
|
8376
|
+
Date.UTC(
|
8416
8377
|
dt.getFullYear(),
|
8417
8378
|
dt.getMonth(),
|
8418
|
-
dt.getDate(),
|
8419
|
-
0,
|
8420
|
-
0,
|
8421
|
-
0
|
8422
|
-
) / 1000);
|
8423
|
-
range.val.todate = range.val.fromdate + 60 * 60 * 24 - 1;
|
8424
|
-
return range;
|
8425
|
-
case 'month':
|
8426
|
-
range.val.fromdate = Math.round(
|
8427
|
-
Date.UTC(
|
8428
|
-
dt.getFullYear(),
|
8429
|
-
dt.getMonth(),
|
8430
|
-
1,
|
8431
|
-
0, 0, 0, 0
|
8432
|
-
) / 1000)
|
8433
|
-
let lastDay = new Date(dt.getFullYear(), dt.getMonth() + 1, 0);
|
8434
|
-
range.val.todate = Math.round(
|
8435
|
-
Date.UTC(
|
8436
|
-
lastDay.getFullYear(),
|
8437
|
-
lastDay.getMonth(),
|
8438
|
-
lastDay.getDate(),
|
8439
|
-
23,
|
8440
|
-
59,
|
8441
|
-
59) / 1000)
|
8442
|
-
return range;
|
8443
|
-
case 'year':
|
8444
|
-
range.val.fromdate = Math.round(Date.UTC(
|
8445
|
-
dt.getFullYear(),
|
8446
|
-
fiscalYearMonthsModifier || dt.getMonth(),
|
8447
8379
|
1,
|
8448
8380
|
0, 0, 0, 0
|
8449
|
-
) / 1000);
|
8450
|
-
|
8451
|
-
let lastDay2 = new Date(dt.getFullYear() + 1, fiscalYearMonthsModifier || 0, 0);
|
8452
|
-
range.val.todate = Math.round(Date.UTC(
|
8453
|
-
lastDay2.getFullYear(),
|
8454
|
-
lastDay2.getMonth(),
|
8455
|
-
lastDay2.getDate(),
|
8456
|
-
23, 59, 59
|
8457
8381
|
) / 1000)
|
8458
|
-
|
8459
|
-
|
8460
|
-
|
8461
|
-
|
8462
|
-
|
8463
|
-
|
8464
|
-
|
8465
|
-
|
8466
|
-
|
8467
|
-
|
8468
|
-
|
8469
|
-
|
8470
|
-
|
8471
|
-
|
8472
|
-
|
8473
|
-
|
8474
|
-
|
8475
|
-
|
8476
|
-
|
8477
|
-
|
8478
|
-
|
8479
|
-
|
8382
|
+
let lastDay = new Date(dt.getFullYear(), dt.getMonth() + 1, 0);
|
8383
|
+
range.val.todate = Math.round(
|
8384
|
+
Date.UTC(
|
8385
|
+
lastDay.getFullYear(),
|
8386
|
+
lastDay.getMonth(),
|
8387
|
+
lastDay.getDate(),
|
8388
|
+
23,
|
8389
|
+
59,
|
8390
|
+
59) / 1000)
|
8391
|
+
return range;
|
8392
|
+
break;
|
8393
|
+
case 'year':
|
8394
|
+
range.val.fromdate = Math.round(Date.UTC(
|
8395
|
+
dt.getFullYear(),
|
8396
|
+
dt.getMonth(),
|
8397
|
+
1,
|
8398
|
+
0, 0, 0, 0
|
8399
|
+
) / 1000);
|
8400
|
+
|
8401
|
+
let lastDay2 = new Date(dt.getFullYear() + 1, 0, 0);
|
8402
|
+
range.val.todate = Math.round(Date.UTC(
|
8403
|
+
lastDay2.getFullYear(),
|
8404
|
+
lastDay2.getMonth(),
|
8405
|
+
lastDay2.getDate(),
|
8406
|
+
23, 59, 59
|
8407
|
+
) / 1000)
|
8408
|
+
return range;
|
8409
|
+
break;
|
8410
|
+
case 'quarter':
|
8411
|
+
const utcDate = moment_lib.utc(initialDateString, format, true);
|
8412
|
+
range.val.fromdate = utcDate.startOf(timeframe).unix();
|
8413
|
+
range.val.todate = utcDate.endOf(timeframe).unix();
|
8414
|
+
return range;
|
8415
|
+
default:
|
8416
|
+
return "";
|
8480
8417
|
}
|
8481
8418
|
|
8482
|
-
return {};
|
8483
8419
|
};
|
8484
8420
|
|
8485
8421
|
highchartsRenderer.createDateFromString = function (dateString, format) {
|
@@ -8493,7 +8429,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8493
8429
|
}
|
8494
8430
|
|
8495
8431
|
highchartsRenderer.prepareDrillDownFilters = function (r_keys, c_keys, widget) {
|
8496
|
-
const isFormattingDatesAsOtherAxisTypes = highchartsRenderer.isFormattingDatesAsOtherAxisTypes();
|
8497
8432
|
let row_key = r_keys;
|
8498
8433
|
let col_key = c_keys;
|
8499
8434
|
if (widget.options &&
|
@@ -8511,18 +8446,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8511
8446
|
const labels = [];
|
8512
8447
|
colFilter.values = [];
|
8513
8448
|
lodash.forEach(col_key, function (col_value) {
|
8514
|
-
let label = col_value;
|
8515
8449
|
if (widget.cols[0].type === 'Date' && col_value !== NULL_VALUE) {
|
8516
|
-
|
8517
|
-
|
8450
|
+
let date = highchartsRenderer.createDateFromString(
|
8451
|
+
col_value,
|
8452
|
+
highchartsRenderer.getDateFieldFormat(widget, widget.cols[0])
|
8453
|
+
);
|
8518
8454
|
colFilter.values.push(date);
|
8519
|
-
label = isFormattingDatesAsOtherAxisTypes
|
8520
|
-
? highchartsRenderer.returnRawDataValue(widget.cols[0].type, +col_value, format, widget.cols[0].name)
|
8521
|
-
: col_value;
|
8522
8455
|
} else {
|
8523
8456
|
colFilter.values.push(col_value);
|
8524
8457
|
}
|
8525
|
-
labels.push(
|
8458
|
+
labels.push(col_value);
|
8526
8459
|
});
|
8527
8460
|
colFilter.value_to_show = labels.join(', ');
|
8528
8461
|
filters.push(colFilter);
|
@@ -8540,16 +8473,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8540
8473
|
if (widget && widget.cols[index]) {
|
8541
8474
|
let temp = highchartsRenderer.createFilterObject(widget.cols[index]);
|
8542
8475
|
if (widget.cols[index].type === 'Date' && col_value !== NULL_VALUE) {
|
8543
|
-
|
8544
|
-
|
8476
|
+
let datetrange = highchartsRenderer.createDateTypeFromValue(
|
8477
|
+
col_value,
|
8478
|
+
highchartsRenderer.getDateFieldFormat(widget, widget.cols[index])
|
8479
|
+
);
|
8545
8480
|
|
8546
8481
|
if ($.isEmptyObject(datetrange)) {
|
8547
8482
|
return;
|
8548
8483
|
}
|
8549
8484
|
temp.values = datetrange;
|
8550
|
-
temp.values.label =
|
8551
|
-
? highchartsRenderer.returnRawDataValue(widget.cols[index].type, +col_value, format, widget.cols[index].name)
|
8552
|
-
: col_value;
|
8485
|
+
temp.values.label = col_value;
|
8553
8486
|
} else {
|
8554
8487
|
temp.values = [col_value];
|
8555
8488
|
}
|
@@ -8572,9 +8505,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8572
8505
|
return;
|
8573
8506
|
}
|
8574
8507
|
temp.values = datetrange;
|
8575
|
-
temp.values.label =
|
8576
|
-
? highchartsRenderer.returnRawDataValue(widget.rows[index].type, +row_value, format, widget.rows[index].name)
|
8577
|
-
: row_value;
|
8508
|
+
temp.values.label = row_value;
|
8578
8509
|
} else {
|
8579
8510
|
temp.values = [row_value];
|
8580
8511
|
}
|
@@ -8624,7 +8555,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8624
8555
|
};
|
8625
8556
|
|
8626
8557
|
highchartsRenderer.prepareDrillDownGraphFilters = function (r_key, c_key, widget) {
|
8627
|
-
const isFormattingDatesAsOtherAxisTypes = highchartsRenderer.isFormattingDatesAsOtherAxisTypes();
|
8628
8558
|
let rowKey = r_key;
|
8629
8559
|
let colKey = c_key;
|
8630
8560
|
let widgetOptions = typeof widget.options === 'string' ? JSON.parse(widget.options) : widget.options;
|
@@ -8638,19 +8568,16 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8638
8568
|
let filter = lodash.find(filters, {name: widget.rows[i].name});
|
8639
8569
|
if (filter) {
|
8640
8570
|
filter.is_excluded = false;
|
8641
|
-
filter.values = widget.rows[i].type === 'Date' && rowKey[i] !== NULL_VALUE
|
8642
|
-
|
8643
|
-
|
8644
|
-
highchartsRenderer.getDateFieldFormat(widget, widget.rows[i])
|
8645
|
-
)
|
8646
|
-
: [rowKey[i]];
|
8571
|
+
filter.values = widget.rows[i].type === 'Date' && rowKey[i] !== NULL_VALUE ?
|
8572
|
+
highchartsRenderer.createDateTypeFromValue(rowKey[i], highchartsRenderer.getDateFieldFormat(widget, widget.rows[i])) :
|
8573
|
+
[rowKey[i]];
|
8647
8574
|
} else {
|
8648
8575
|
filters.push(highchartsRenderer.createDrillDownFilterObject(widget, widget.rows[i], rowKey[i]))
|
8649
8576
|
}
|
8650
8577
|
}
|
8651
8578
|
|
8652
8579
|
if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN) {
|
8653
|
-
let filter = lodash.find(filters,
|
8580
|
+
let filter = lodash.find(filters, {name: widget.cols[0].name});
|
8654
8581
|
if (filter) {
|
8655
8582
|
filter.is_excluded = false;
|
8656
8583
|
} else {
|
@@ -8660,12 +8587,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8660
8587
|
filter.values = [];
|
8661
8588
|
for (let i = 0; i < colKey.length; i++) {
|
8662
8589
|
filter.values.push(
|
8663
|
-
widget.cols[0].type === 'Date' && colKey[i] !== NULL_VALUE
|
8590
|
+
widget.cols[0].type === 'Date' && colKey[i] !== NULL_VALUE
|
8664
8591
|
? highchartsRenderer.createDateFromString(
|
8665
8592
|
colKey[i],
|
8666
8593
|
highchartsRenderer.getDateFieldFormat(widget, widget.cols[0])
|
8667
8594
|
)
|
8668
|
-
:
|
8595
|
+
: colKey[i]
|
8669
8596
|
);
|
8670
8597
|
}
|
8671
8598
|
} else if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_WALKTHROUGH) {
|
@@ -8688,12 +8615,9 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8688
8615
|
let filter = lodash.find(filters, {name: widget.cols[i].name});
|
8689
8616
|
if (filter) {
|
8690
8617
|
filter.is_excluded = false;
|
8691
|
-
filter.values = widget.cols[i].type === 'Date' && colKey[i] !== NULL_VALUE
|
8692
|
-
|
8693
|
-
|
8694
|
-
highchartsRenderer.getDateFieldFormat(widget, widget.cols[i])
|
8695
|
-
)
|
8696
|
-
: [colKey[i]];
|
8618
|
+
filter.values = widget.cols[i].type === 'Date' && colKey[i] !== NULL_VALUE ?
|
8619
|
+
highchartsRenderer.createDateTypeFromValue(colKey[i], highchartsRenderer.getDateFieldFormat(widget, widget.cols[i])) :
|
8620
|
+
[colKey[i]];
|
8697
8621
|
} else {
|
8698
8622
|
filters.push(highchartsRenderer.createDrillDownFilterObject(widget, widget.cols[i], colKey[i]))
|
8699
8623
|
}
|
@@ -8713,10 +8637,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8713
8637
|
filtOb.field = field.id;
|
8714
8638
|
filtOb.name = highchartsRenderer.decodeFunc(field.name);
|
8715
8639
|
if (field.type === 'Date' && value !== NULL_VALUE) {
|
8716
|
-
filtOb.values = highchartsRenderer.createDateTypeFromValue(
|
8717
|
-
value,
|
8718
|
-
highchartsRenderer.getDateFieldFormat(widget, field)
|
8719
|
-
);
|
8640
|
+
filtOb.values = highchartsRenderer.createDateTypeFromValue(value, highchartsRenderer.getDateFieldFormat(widget, field));
|
8720
8641
|
}
|
8721
8642
|
|
8722
8643
|
return filtOb;
|
@@ -8726,6 +8647,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8726
8647
|
return $.pivotUtilities.getPivotTableFormula(rowData, opts, func, axisFields, legendFields, aggregationDefaults, utils);
|
8727
8648
|
};
|
8728
8649
|
|
8650
|
+
|
8729
8651
|
// widget Renderer
|
8730
8652
|
highchartsRenderer.updateSelectedOverrideValues = function (widget, override_values, res) {
|
8731
8653
|
if (override_values && override_values.length > 0) {
|
@@ -8773,7 +8695,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8773
8695
|
};
|
8774
8696
|
|
8775
8697
|
highchartsRenderer.setNewFieldNames = function (res) {
|
8776
|
-
if (
|
8698
|
+
if (useTotalsCalculation) {
|
8777
8699
|
return res;
|
8778
8700
|
}
|
8779
8701
|
|
@@ -8787,9 +8709,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8787
8709
|
};
|
8788
8710
|
|
8789
8711
|
highchartsRenderer.getWidgetDataSorters = function (res, widget, defaultDateFormat) {
|
8790
|
-
const isFormattingDatesAsOtherAxisTypes = highchartsRenderer.isFormattingDatesAsOtherAxisTypes();
|
8791
|
-
let sorters;
|
8792
|
-
|
8793
8712
|
if ($.pivotUtilities && !$.pivotUtilities.additionalFieldsList) {
|
8794
8713
|
$.pivotUtilities.additionalFieldsList = [
|
8795
8714
|
{key: 'DR_Average', name: 'DR_Average'},
|
@@ -8797,202 +8716,212 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8797
8716
|
];
|
8798
8717
|
}
|
8799
8718
|
|
8800
|
-
|
8719
|
+
var datesFields = [];
|
8801
8720
|
datesFields = lodash.filter(widget.rows, element => element.type == 'Date');
|
8802
8721
|
datesFields = datesFields.concat(lodash.filter(widget.cols, element => element.type == 'Date'));
|
8803
8722
|
|
8804
8723
|
const isCustomSorting = widget.options.sortingFields && Array.isArray(widget.options.sortingFields) && widget.options.sortingFields.length > 0;
|
8805
8724
|
if (isCustomSorting) {
|
8806
8725
|
lodash.forEach(datesFields, function (field) {
|
8807
|
-
const fieldToSort = lodash.find(
|
8808
|
-
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
8809
|
-
);
|
8726
|
+
const fieldToSort = lodash.find(widget.options.sortingFields, element => element.id === field.id);
|
8810
8727
|
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8811
8728
|
});
|
8812
8729
|
}
|
8813
8730
|
|
8814
8731
|
datesFields = lodash.map(datesFields, function (row) {
|
8815
|
-
return {
|
8816
|
-
|
8817
|
-
|
8818
|
-
|
8819
|
-
|
8820
|
-
|
8821
|
-
|
8732
|
+
return { "format": highchartsRenderer.getDateFieldFormat(widget, row), "name": row.name, "type": row.type, "values": [], "sorting": row.sorting } //'MMM - yyyy' format
|
8733
|
+
});
|
8734
|
+
|
8735
|
+
var data = res;
|
8736
|
+
|
8737
|
+
lodash.forEach(datesFields, function (row) {
|
8738
|
+
row.val_not_convert = highchartsRenderer.check_values_not_for_convert(widget, row.name);
|
8822
8739
|
});
|
8823
8740
|
|
8824
|
-
if (!isFormattingDatesAsOtherAxisTypes) {
|
8825
|
-
lodash.forEach(datesFields, function (row) {
|
8826
|
-
row.val_not_convert = highchartsRenderer.check_values_not_for_convert(widget, row.name);
|
8827
|
-
});
|
8828
|
-
}
|
8829
|
-
|
8830
8741
|
if (datesFields.length > 0) {
|
8831
|
-
|
8832
|
-
lodash.forEach(res, function (element) {
|
8742
|
+
lodash.forEach(data, function (element) {
|
8833
8743
|
for (var i in datesFields) {
|
8834
8744
|
if (element.hasOwnProperty(datesFields[i].name)) {
|
8835
8745
|
datesFields[i].values.push(element[datesFields[i].name]);
|
8836
|
-
|
8837
|
-
|
8838
|
-
|
8839
|
-
|
8840
|
-
|
8841
|
-
|
8842
|
-
|
8843
|
-
if (!widget.pivot.dateValuesDictionary) {
|
8844
|
-
widget.pivot.dateValuesDictionary = {}
|
8845
|
-
}
|
8846
|
-
widget.pivot.dateValuesDictionary[dateStringValue] = element[datesFields[i].name];
|
8847
|
-
invertedDateStringMap[element[datesFields[i].name]] = dateStringValue;
|
8746
|
+
const dateStringValue = highchartsRenderer.returnRawDataValue(
|
8747
|
+
datesFields[i].type, element[datesFields[i].name],
|
8748
|
+
defaultDateFormat ? defaultDateFormat : datesFields[i].format,
|
8749
|
+
datesFields[i].name, datesFields[i].val_not_convert);
|
8750
|
+
if (widget.pivot) {
|
8751
|
+
if (!widget.pivot.dateValuesDictionary) {
|
8752
|
+
widget.pivot.dateValuesDictionary = {}
|
8848
8753
|
}
|
8849
|
-
element[datesFields[i].name]
|
8754
|
+
widget.pivot.dateValuesDictionary[dateStringValue] = element[datesFields[i].name];
|
8850
8755
|
}
|
8756
|
+
element[datesFields[i].name] = dateStringValue;
|
8851
8757
|
}
|
8852
8758
|
}
|
8853
8759
|
});
|
8854
|
-
|
8855
|
-
if (highchartsRenderer.sortHasBeenDoneOnBE(lodash.get(widget, 'pivot.keysObject')) && !isFormattingDatesAsOtherAxisTypes) {
|
8856
|
-
lodash.forEach(['col_keys', 'row_keys'], (keysListName, index) => {
|
8857
|
-
const widgetFields = index ? widget.rows : widget.cols;
|
8858
|
-
const uniqueFormattedKeysList = [];
|
8859
|
-
lodash.forEach(widget.pivot.keysObject[keysListName], subKeysList => {
|
8860
|
-
lodash.forEach(subKeysList, (key, index) => {
|
8861
|
-
if (widgetFields[index].type === 'Date') {
|
8862
|
-
subKeysList[index] = invertedDateStringMap[key] || key;
|
8863
|
-
}
|
8864
|
-
});
|
8865
|
-
if (!lodash.find(uniqueFormattedKeysList, formattedSubKeys => lodash.isEqual(formattedSubKeys, subKeysList))) {
|
8866
|
-
uniqueFormattedKeysList.push(subKeysList);
|
8867
|
-
}
|
8868
|
-
});
|
8869
|
-
widget.pivot.keysObject[keysListName] = uniqueFormattedKeysList;
|
8870
|
-
});
|
8871
|
-
}
|
8872
8760
|
}
|
8761
|
+
lodash.forEach(datesFields, function (row) {
|
8762
|
+
row.values = lodash.uniq(row.values);
|
8873
8763
|
|
8874
|
-
|
8875
|
-
|
8876
|
-
|
8877
|
-
|
8878
|
-
|
8879
|
-
const isTimestampDateField = row.type === 'Date' && lodash.some(row.values, value => typeof value ==='number');
|
8880
|
-
if (isTimestampDateField) {
|
8881
|
-
const nullValueIndex = row.values.indexOf(NULL_VALUE);
|
8882
|
-
if (~nullValueIndex) {
|
8883
|
-
row.values.splice(nullValueIndex, 1);
|
8884
|
-
}
|
8885
|
-
row.values = row.values.sort((a, b) => a - b);
|
8886
|
-
if (~nullValueIndex) {
|
8887
|
-
row.values.push(NULL_VALUE);
|
8888
|
-
}
|
8889
|
-
} else {
|
8890
|
-
row.values = row.values.sort();
|
8764
|
+
const isTimestampDateField = row.type === 'Date' && lodash.some(row.values, value => typeof value ==='number');
|
8765
|
+
if (isTimestampDateField) {
|
8766
|
+
const nullValueIndex = row.values.indexOf(NULL_VALUE);
|
8767
|
+
if (~nullValueIndex) {
|
8768
|
+
row.values.splice(nullValueIndex, 1);
|
8891
8769
|
}
|
8892
|
-
|
8893
|
-
if (
|
8894
|
-
row.values
|
8770
|
+
row.values = row.values.sort((a, b) => a - b);
|
8771
|
+
if (~nullValueIndex) {
|
8772
|
+
row.values.push(NULL_VALUE);
|
8895
8773
|
}
|
8896
|
-
|
8897
|
-
|
8898
|
-
|
8899
|
-
row.values = lodash.map(row.values, function (val) {
|
8900
|
-
return highchartsRenderer.returnRawDataValue(row.type, val, row.format, row.name, row.val_not_convert) + "";
|
8901
|
-
});
|
8902
|
-
}
|
8903
|
-
});
|
8774
|
+
} else {
|
8775
|
+
row.values = row.values.sort();
|
8776
|
+
}
|
8904
8777
|
|
8905
|
-
|
8906
|
-
|
8907
|
-
rowsAndCols = widget.rows.concat(widget.cols);
|
8908
|
-
|
8909
|
-
if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN) {
|
8910
|
-
|
8911
|
-
// if it is breakdown widget - redefine sorting according to breakdown_options
|
8912
|
-
// TODO: remove this when BE sort will be implemented (FE subtickets for story DR-18469)
|
8913
|
-
const isTwoColumnComparisonWidget = lodash.get(widget, 'options.breakdown_options.values.totals', []).length === 2;
|
8914
|
-
lodash.forEach(rowsAndCols, function (field) {
|
8915
|
-
const waterfallFieldType = field.id === widget.cols[0].id ? 'totals' : 'breakdown';
|
8916
|
-
if (waterfallFieldType !== 'totals' || isTwoColumnComparisonWidget) {
|
8917
|
-
field.sorting = {
|
8918
|
-
type: 'CustomOrder',
|
8919
|
-
values: lodash.map(
|
8920
|
-
widget.options.breakdown_options.values[waterfallFieldType],
|
8921
|
-
value => value.key
|
8922
|
-
),
|
8923
|
-
};
|
8924
|
-
} else {
|
8925
|
-
field.sorting = null;
|
8926
|
-
}
|
8927
|
-
});
|
8928
|
-
} else if (isCustomSorting) {
|
8929
|
-
lodash.forEach(rowsAndCols, function (field) {
|
8930
|
-
const fieldToSort = lodash.find(
|
8931
|
-
widget.options.sortingFields, element => element.id === field.id && lodash.get(element, 'sorting.sort_by') === 'field_items'
|
8932
|
-
);
|
8933
|
-
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8934
|
-
});
|
8778
|
+
if (row.sorting && row.sorting.type == "largestToSmallest") {
|
8779
|
+
row.values = lodash.reverse(row.values);
|
8935
8780
|
}
|
8781
|
+
delete row.sorting;
|
8782
|
+
row.values = lodash.map(row.values, function (val) {
|
8783
|
+
return highchartsRenderer.returnRawDataValue(row.type, val, row.format, row.name, row.val_not_convert) + "";
|
8784
|
+
})
|
8936
8785
|
|
8786
|
+
});
|
8787
|
+
|
8788
|
+
/* date string */
|
8789
|
+
var rowsAndCols = [];
|
8790
|
+
rowsAndCols = widget.rows.concat(widget.cols);
|
8791
|
+
|
8792
|
+
if (widget.chart_type === highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN) {
|
8793
|
+
|
8794
|
+
// if it is breakdown widget - redefine sorting according to breakdown_options
|
8795
|
+
// TODO: remove this when BE sort will be implemented
|
8937
8796
|
lodash.forEach(rowsAndCols, function (field) {
|
8938
|
-
|
8939
|
-
|
8940
|
-
|
8941
|
-
|
8942
|
-
|
8943
|
-
|
8944
|
-
|
8945
|
-
|
8946
|
-
|
8947
|
-
|
8948
|
-
|
8949
|
-
|
8950
|
-
|
8951
|
-
|
8952
|
-
|
8797
|
+
const waterfallFieldType = field.id === widget.cols[0].id ? 'totals' : 'breakdown';
|
8798
|
+
field.sorting = {
|
8799
|
+
type: 'CustomOrder',
|
8800
|
+
values: lodash.map(
|
8801
|
+
widget.options.breakdown_options.values[waterfallFieldType],
|
8802
|
+
value => value.key
|
8803
|
+
),
|
8804
|
+
};
|
8805
|
+
});
|
8806
|
+
} else if (isCustomSorting) {
|
8807
|
+
lodash.forEach(rowsAndCols, function (field) {
|
8808
|
+
const fieldToSort = lodash.find(widget.options.sortingFields, element => element.id === field.id);
|
8809
|
+
field.sorting = fieldToSort ? fieldToSort.sorting : field.sorting;
|
8810
|
+
});
|
8811
|
+
}
|
8812
|
+
|
8813
|
+
lodash.forEach(rowsAndCols, function (field) {
|
8814
|
+
if (field.sorting && (field.sorting.type == "DateString" || field.sorting.type == "largestToSmallest")) {
|
8815
|
+
var find_field = lodash.find(datesFields, {name: field.name});
|
8816
|
+
if (find_field) {
|
8817
|
+
if (find_field.type != 'Date')
|
8818
|
+
find_field.sorting = field.sorting;
|
8819
|
+
} else {
|
8953
8820
|
datesFields.push({
|
8954
8821
|
"format": field.format,
|
8955
8822
|
"name": field.name,
|
8956
8823
|
"type": field.type,
|
8957
|
-
"values":
|
8824
|
+
"values": [],
|
8825
|
+
"sorting": field.sorting,
|
8958
8826
|
});
|
8959
8827
|
}
|
8828
|
+
} else if (field.sorting && field.sorting.type == "CustomOrder" && field.sorting.values) {
|
8829
|
+
datesFields.push({
|
8830
|
+
"format": field.format,
|
8831
|
+
"name": field.name,
|
8832
|
+
"type": field.type,
|
8833
|
+
"values": field.sorting.values
|
8834
|
+
});
|
8835
|
+
}
|
8836
|
+
});
|
8837
|
+
|
8838
|
+
if (widget.vals && widget.vals.length > 1) {
|
8839
|
+
datesFields.push({name: "DR_Values", values: lodash.map(widget.vals, 'name')});
|
8840
|
+
}
|
8841
|
+
|
8842
|
+
/****** END *******/
|
8843
|
+
|
8844
|
+
if (lodash.has(widget, "options.chartOptions.delta_column") &&
|
8845
|
+
widget.options.chartOptions.delta_column.field != '' &&
|
8846
|
+
(widget.options.chartOptions.delta_column.sort_by_variance ||
|
8847
|
+
widget.options.chartOptions.delta_column.sort_by_absolute_variance) &&
|
8848
|
+
widget.rows.length > 0 &&
|
8849
|
+
widget.cols.length > 0 &&
|
8850
|
+
widget.vals.length
|
8851
|
+
) {
|
8852
|
+
let variance_config = widget.options.chartOptions.delta_column;
|
8853
|
+
let val_field = widget.vals[0];
|
8854
|
+
let field_for_sorting = null;
|
8855
|
+
let field_with_variant = null;
|
8856
|
+
if (variance_config.field == "series") {
|
8857
|
+
field_for_sorting = widget.cols[0];
|
8858
|
+
field_with_variant = widget.rows[0];
|
8859
|
+
} else if (variance_config.field == "category") {
|
8860
|
+
field_for_sorting = widget.rows[0];
|
8861
|
+
field_with_variant = widget.cols[0];
|
8862
|
+
}
|
8863
|
+
|
8864
|
+
let data_sorted = lodash.filter(data, function (data_row) {
|
8865
|
+
return data_row[field_with_variant.name] == variance_config.name && data_row[field_for_sorting.name] != undefined;
|
8960
8866
|
});
|
8961
8867
|
|
8962
|
-
|
8963
|
-
|
8868
|
+
const sorting_variance = widget.options.total_value_options && widget.options.total_value_options.sorting_variance === '' ? 'asc' : 'desc';
|
8869
|
+
|
8870
|
+
if (widget.options.chartOptions.delta_column.sort_by_absolute_variance) {
|
8871
|
+
data_sorted = lodash.sortBy(data_sorted, function (o) {
|
8872
|
+
if (sorting_variance === 'desc') {
|
8873
|
+
return Math.abs(o[val_field.name]) * -1;
|
8874
|
+
}
|
8875
|
+
|
8876
|
+
return Math.abs(o[val_field.name]) * 1;
|
8877
|
+
});
|
8878
|
+
} else {
|
8879
|
+
data_sorted = lodash.orderBy(data_sorted, [val_field.name], [sorting_variance]);
|
8964
8880
|
}
|
8965
|
-
|
8966
|
-
/****** END *******/
|
8967
8881
|
|
8968
|
-
|
8969
|
-
|
8970
|
-
|
8882
|
+
let values_for_sort = lodash.map(data_sorted, function (data_row) {
|
8883
|
+
return data_row[field_for_sorting.name];
|
8884
|
+
});
|
8885
|
+
|
8886
|
+
values_for_sort = lodash.uniq(values_for_sort);
|
8887
|
+
|
8888
|
+
if (values_for_sort.length > 0) {
|
8889
|
+
let field = lodash.find(datesFields, {name: field_for_sorting.name});
|
8971
8890
|
if (field) {
|
8972
|
-
field.values =
|
8891
|
+
field.values = values_for_sort;
|
8973
8892
|
field.sorting = null;
|
8974
8893
|
} else {
|
8975
|
-
datesFields.push({
|
8976
|
-
name: widget.options.sortingValues.field,
|
8977
|
-
values: widget.options.sortingValues.values
|
8978
|
-
});
|
8894
|
+
datesFields.push({name: field_for_sorting.name, values: values_for_sort});
|
8979
8895
|
}
|
8980
8896
|
}
|
8981
|
-
|
8982
|
-
|
8983
|
-
|
8984
|
-
|
8985
|
-
|
8986
|
-
|
8987
|
-
|
8988
|
-
|
8989
|
-
|
8990
|
-
|
8991
|
-
|
8992
|
-
}
|
8993
|
-
};
|
8897
|
+
} else if (widget.options && widget.options.sortingValues) {
|
8898
|
+
var field = lodash.find(datesFields, {name: widget.options.sortingValues.field});
|
8899
|
+
if (field) {
|
8900
|
+
field.values = widget.options.sortingValues.values;
|
8901
|
+
field.sorting = null;
|
8902
|
+
} else {
|
8903
|
+
datesFields.push({
|
8904
|
+
name: widget.options.sortingValues.field,
|
8905
|
+
values: widget.options.sortingValues.values
|
8906
|
+
});
|
8907
|
+
}
|
8994
8908
|
}
|
8995
8909
|
|
8910
|
+
let sorters = function (attr) {
|
8911
|
+
var field = lodash.find(datesFields, {name: attr});
|
8912
|
+
if (field)
|
8913
|
+
if (field.sorting && field.sorting.type == "DateString") {
|
8914
|
+
return $.pivotUtilities.sortDateStrings(field.sorting.month_order);
|
8915
|
+
} else if (field.sorting && field.sorting.type == "largestToSmallest") {
|
8916
|
+
if (field.sorting.is_absolute)
|
8917
|
+
return $.pivotUtilities.largeToSmallSortByAbsolute;
|
8918
|
+
|
8919
|
+
return $.pivotUtilities.largeToSmallSort;
|
8920
|
+
} else {
|
8921
|
+
return $.pivotUtilities.sortAs(field.values);
|
8922
|
+
}
|
8923
|
+
};
|
8924
|
+
|
8996
8925
|
return sorters;
|
8997
8926
|
};
|
8998
8927
|
|
@@ -9011,12 +8940,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9011
8940
|
|
9012
8941
|
//highchartsRenderer.getGraphOptions(scope.data, override_values, res, scope.dataModel.templatesWithOutData, scope.openDrillDownList, drillDownFunction)
|
9013
8942
|
highchartsRenderer.getGraphOptions = function (widget_obj, override_values, row_data, templates, openDrillDownListFunction, drillDownFunction) {
|
9014
|
-
|
9015
|
-
let keysObject;
|
9016
|
-
if (highchartsRenderer.isSortingOnBackendEnabled) {
|
9017
|
-
keysObject = row_data.pop();
|
9018
|
-
}
|
9019
|
-
|
9020
8943
|
let res = highchartsRenderer.updateSelectedOverrideValues(widget_obj, override_values, row_data);
|
9021
8944
|
res = highchartsRenderer.convertUniqueDateValues(widget_obj, templates, res);
|
9022
8945
|
|
@@ -9026,21 +8949,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9026
8949
|
res = highchartsRenderer.addTotalsToWalkthroughRowData(widget_obj, res);
|
9027
8950
|
}
|
9028
8951
|
|
9029
|
-
res = highchartsRenderer.fixIncompatibleCalculatedValuesTotals(widget_obj, res);
|
9030
|
-
|
9031
8952
|
let pivot = {};
|
9032
8953
|
|
9033
|
-
if (highchartsRenderer.sortHasBeenDoneOnBE(keysObject)) {
|
9034
|
-
pivot.keysObject = keysObject;
|
9035
|
-
}
|
9036
|
-
|
9037
8954
|
let templateNoData = lodash.find(templates, {id: widget_obj.template_id});
|
9038
8955
|
if (templateNoData) {
|
9039
8956
|
|
9040
|
-
lodash.forEach(templateNoData.fields, field => {
|
9041
|
-
field.name = highchartsRenderer.decodeFunc(field.name);
|
9042
|
-
});
|
9043
|
-
|
9044
8957
|
// we need to assign this before calling getWidgetDataSorters method
|
9045
8958
|
// other way we won't get dateValuesDictionary
|
9046
8959
|
// preserved condition templateNoData == true - not to interfere with further logic
|
@@ -9074,8 +8987,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9074
8987
|
subopts.onlyOptions = true;
|
9075
8988
|
}
|
9076
8989
|
|
9077
|
-
subopts.keysObject = keysObject;
|
9078
|
-
|
9079
8990
|
let hc_options = highchartsRenderer.rhPivotView(res, subopts, is_table, widget_obj);
|
9080
8991
|
|
9081
8992
|
return hc_options;
|
@@ -9174,7 +9085,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9174
9085
|
}
|
9175
9086
|
|
9176
9087
|
highchartsRenderer.getOptionsForLegends = function (additionOptions, rowAttrsLength, isLine, isPie) {
|
9177
|
-
const topPosition = {
|
9088
|
+
const topPosition = useNewUx ? {
|
9178
9089
|
enabled: rowAttrsLength > 0,
|
9179
9090
|
align: 'left',
|
9180
9091
|
verticalAlign: 'top',
|
@@ -9185,14 +9096,27 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9185
9096
|
x: -3,
|
9186
9097
|
y: isNewAngular ? -10 : -26,
|
9187
9098
|
layout: "horizontal"
|
9099
|
+
} : {
|
9100
|
+
enabled: rowAttrsLength > 0,
|
9101
|
+
align: 'left',
|
9102
|
+
verticalAlign: 'top',
|
9103
|
+
itemMarginTop: 4,
|
9104
|
+
maxHeight: 37,
|
9105
|
+
layout: "horizontal",
|
9106
|
+
padding: 0
|
9188
9107
|
};
|
9189
|
-
const bottomPosition = {
|
9108
|
+
const bottomPosition = useNewUx ? {
|
9109
|
+
enabled: rowAttrsLength > 0,
|
9110
|
+
maxHeight: 37,
|
9111
|
+
itemMarginTop: 2,
|
9112
|
+
padding: 0
|
9113
|
+
} : {
|
9190
9114
|
enabled: rowAttrsLength > 0,
|
9191
9115
|
maxHeight: 37,
|
9192
9116
|
itemMarginTop: 2,
|
9193
9117
|
padding: 0
|
9194
9118
|
};
|
9195
|
-
const rightPosition = {
|
9119
|
+
const rightPosition = useNewUx ? {
|
9196
9120
|
enabled: rowAttrsLength > 0,
|
9197
9121
|
layout: 'vertical',
|
9198
9122
|
align: 'right',
|
@@ -9200,8 +9124,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9200
9124
|
borderWidth: 0,
|
9201
9125
|
itemMarginTop: 10,
|
9202
9126
|
y: additionOptions.hideChartHeader ? -25 : (additionOptions.subtitle && additionOptions.subtitle.subtitle ? 30 : 13)
|
9127
|
+
} : {
|
9128
|
+
layout: 'vertical',
|
9129
|
+
align: 'right',
|
9130
|
+
verticalAlign: 'middle',
|
9131
|
+
borderWidth: 0,
|
9132
|
+
itemMarginTop: 2,
|
9133
|
+
enabled: rowAttrsLength > 0
|
9203
9134
|
};
|
9204
|
-
const leftPosition = {
|
9135
|
+
const leftPosition = useNewUx ? {
|
9205
9136
|
enabled: rowAttrsLength > 0,
|
9206
9137
|
layout: 'vertical',
|
9207
9138
|
align: 'left',
|
@@ -9209,6 +9140,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9209
9140
|
borderWidth: 0,
|
9210
9141
|
itemMarginTop: 10,
|
9211
9142
|
y: additionOptions.hideChartHeader ? -25 : (additionOptions.subtitle && additionOptions.subtitle.subtitle ? 30 : 13)
|
9143
|
+
} : {
|
9144
|
+
enabled: rowAttrsLength > 0,
|
9145
|
+
layout: 'vertical',
|
9146
|
+
align: 'left',
|
9147
|
+
verticalAlign: 'middle',
|
9148
|
+
borderWidth: 0,
|
9149
|
+
itemMarginTop: 2,
|
9212
9150
|
};
|
9213
9151
|
const none = {
|
9214
9152
|
enabled: false,
|
@@ -9232,16 +9170,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9232
9170
|
return none;
|
9233
9171
|
}
|
9234
9172
|
} else if (isLine) {
|
9235
|
-
return leftPosition;
|
9173
|
+
return useNewUx ? leftPosition : rightPosition;
|
9236
9174
|
} else if (isPie) {
|
9237
|
-
return rightPosition;
|
9175
|
+
return useNewUx ? rightPosition : topPosition;
|
9238
9176
|
}
|
9239
9177
|
|
9240
|
-
|
9241
|
-
}
|
9242
|
-
highchartsRenderer.setStaticTicksAmount = function (yAxis) {
|
9243
|
-
yAxis.tickAmount = TICKS_COUNT;
|
9178
|
+
return useNewUx ? topPosition : bottomPosition;
|
9244
9179
|
}
|
9180
|
+
|
9245
9181
|
highchartsRenderer.setYAxisMinMax = function (yAxis, axisYOptions) {
|
9246
9182
|
if (!axisYOptions) {
|
9247
9183
|
return;
|
@@ -9251,14 +9187,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9251
9187
|
const maxNumber = parseInt(axisYOptions.max);
|
9252
9188
|
yAxis.min = !isNaN(minNumber) ? minNumber : null;
|
9253
9189
|
yAxis.max = !isNaN(maxNumber) ? maxNumber : null;
|
9254
|
-
if (minNumber || maxNumber) {
|
9255
|
-
highchartsRenderer.setStaticTicksAmount(yAxis);
|
9256
|
-
}
|
9257
9190
|
}
|
9258
9191
|
|
9259
9192
|
highchartsRenderer.getDateFieldFormat = function(widget, dateField) {
|
9260
9193
|
const aggregationConfig = widget.options && widget.options.date_aggregation_configs
|
9261
|
-
?
|
9194
|
+
? _.find(widget.options.date_aggregation_configs, { field_id: dateField.id })
|
9262
9195
|
: null;
|
9263
9196
|
|
9264
9197
|
if (aggregationConfig && aggregationConfig.aggregate_by && aggregationConfig.is_formatting_by_aggregation_method) {
|
@@ -9323,19 +9256,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9323
9256
|
|
9324
9257
|
// if it is not total value - then add it as rowData data row and sum it up
|
9325
9258
|
// else - add total with calculated sum as new rowData data row (totals do not initially exist in BE response)
|
9326
|
-
if (value
|
9259
|
+
if (value.trend !== 'total') {
|
9327
9260
|
const rowIndex = lodash.findIndex(rowData, (responseRow) =>
|
9328
9261
|
lodash.every(categoryFields, (field, fieldKey) => responseRow[field.name] === value.key[fieldKey])
|
9329
9262
|
);
|
9330
|
-
|
9331
|
-
|
9332
|
-
|
9333
|
-
rowData.splice(rowIndex, 1);
|
9334
|
-
}
|
9263
|
+
modifiedRowData.push(rowData[rowIndex]);
|
9264
|
+
sum += rowData[rowIndex][valueField.name];
|
9265
|
+
rowData.splice(rowIndex, 1);
|
9335
9266
|
} else {
|
9336
9267
|
const totalRow = {};
|
9337
|
-
|
9338
|
-
totalRow[field.name] = value
|
9268
|
+
_.forEach(categoryFields, (field, fieldKey) => {
|
9269
|
+
totalRow[field.name] = value.key[fieldKey];
|
9339
9270
|
});
|
9340
9271
|
totalRow[valueField.name] = sum;
|
9341
9272
|
modifiedRowData.push(totalRow);
|
@@ -9356,13 +9287,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9356
9287
|
filter.values.push(colValue);
|
9357
9288
|
});
|
9358
9289
|
} else {
|
9359
|
-
const format = highchartsRenderer.getDateFieldFormat(widget, field);
|
9360
9290
|
filter.values = field.type === 'Date' && colKey !== NULL_VALUE
|
9361
|
-
? highchartsRenderer.createDateTypeFromValue(colKey,
|
9291
|
+
? highchartsRenderer.createDateTypeFromValue(colKey, highchartsRenderer.getDateFieldFormat(widget, field))
|
9362
9292
|
: [colKey];
|
9363
|
-
filter.value_to_show =
|
9364
|
-
? highchartsRenderer.returnRawDataValue(field.type, +colKey, format, field.name)
|
9365
|
-
: colKey;
|
9293
|
+
filter.value_to_show = colKey;
|
9366
9294
|
}
|
9367
9295
|
}
|
9368
9296
|
|
@@ -9395,225 +9323,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
9395
9323
|
});
|
9396
9324
|
}
|
9397
9325
|
|
9398
|
-
highchartsRenderer.getFiscalYearMonthModifier = function() {
|
9399
|
-
return lodash.get(document, 'ReportHippo.user.organization.fiscal_year_starts_from', 1) - 1;
|
9400
|
-
}
|
9401
|
-
|
9402
|
-
highchartsRenderer.getTimeframeByFormat = function(format) {
|
9403
|
-
if (format && highchartsRenderer.containsIgnoreCase(format, 'q'))
|
9404
|
-
return 'quarter';
|
9405
|
-
else if (format && !highchartsRenderer.containsIgnoreCase(format, 'dd') && !highchartsRenderer.containsIgnoreCase(format, 'mm') && highchartsRenderer.containsIgnoreCase(format, 'yy'))
|
9406
|
-
return 'year';
|
9407
|
-
else if (format && !highchartsRenderer.containsIgnoreCase(format, 'dd') && highchartsRenderer.containsIgnoreCase(format, 'mm') && highchartsRenderer.containsIgnoreCase(format, 'yy'))
|
9408
|
-
return 'month';
|
9409
|
-
else {
|
9410
|
-
return 'day';
|
9411
|
-
}
|
9412
|
-
}
|
9413
|
-
|
9414
|
-
// Check if chart has multiple values
|
9415
|
-
highchartsRenderer.isChartWithMultiValues = function(pivotData) {
|
9416
|
-
return lodash.get(pivotData, 'rowAttrs[0]') === 'DR_Values';
|
9417
|
-
}
|
9418
|
-
|
9419
|
-
highchartsRenderer.checkFormats = function(render_options, widget_values_format) {
|
9420
|
-
let isSecondaryAxis = false;
|
9421
|
-
let formats = [];
|
9422
|
-
if (render_options && render_options.comboOptions && render_options.comboOptions.seriesOptions) {
|
9423
|
-
isSecondaryAxis = lodash.some(render_options.comboOptions.seriesOptions, series => series.secondaryAxis);
|
9424
|
-
formats = lodash.map(render_options.comboOptions.seriesOptions, series => series.format);
|
9425
|
-
}
|
9426
|
-
const isCustomFormat = !lodash.includes(formats, widget_values_format);
|
9427
|
-
|
9428
|
-
return { isSecondaryAxis, isCustomFormat }
|
9429
|
-
}
|
9430
|
-
|
9431
|
-
highchartsRenderer.getRecordFormats = function(render_options, recordName) {
|
9432
|
-
let formats = [];
|
9433
|
-
if (render_options && render_options.comboOptions && render_options.comboOptions.seriesOptions) {
|
9434
|
-
formats = render_options.comboOptions.seriesOptions
|
9435
|
-
.filter(series => series.series === recordName)
|
9436
|
-
.map(series => series.format);
|
9437
|
-
}
|
9438
|
-
return formats;
|
9439
|
-
}
|
9440
|
-
|
9441
|
-
// Will be FALSE when all 4 conditions true: 1. User applies SecondaryAxis 2. Format on 'format editor panel' is same as any Value field table format
|
9442
|
-
// 3. Chart has more than one value fields in Values block 4. enable_new_widget_value_formatting is turned ON
|
9443
|
-
// In that case we apply for both value fields their format from the table
|
9444
|
-
// In all other cases we are applying format from editor panel to both of them (specification: DR-20955)
|
9445
|
-
highchartsRenderer.isUsingWidgetValuesFormat = function (pivotData, render_options, widget_values_format) {
|
9446
|
-
const { isSecondaryAxis, isCustomFormat } = highchartsRenderer.checkFormats(render_options, widget_values_format);
|
9447
|
-
return !highchartsRenderer.enabledNewWidgetValueFormatting || !highchartsRenderer.isChartWithMultiValues(pivotData) || !isSecondaryAxis || isCustomFormat;
|
9448
|
-
}
|
9449
|
-
|
9450
|
-
highchartsRenderer.isFormattingNumberAxis = function (pivotData) {
|
9451
|
-
return highchartsRenderer.isFormattingAxisFeatureOn() && pivotData.isFormattingAxisLabels;
|
9452
|
-
}
|
9453
|
-
|
9454
|
-
highchartsRenderer.isFormattingDatesAsOtherAxisTypes = function () {
|
9455
|
-
return highchartsRenderer.isFormattingAxisFeatureOn() && highchartsRenderer.hasFeature(FEATURES.FORMAT_DATES_AS_OTHER_AXIS_TYPES);
|
9456
|
-
}
|
9457
|
-
|
9458
|
-
highchartsRenderer.isFormattingAxisFeatureOn = function () {
|
9459
|
-
return highchartsRenderer.hasFeature(FEATURES.FORMAT_AXIS);
|
9460
|
-
}
|
9461
|
-
|
9462
|
-
highchartsRenderer.sortHasBeenDoneOnBE = function (keysObject) {
|
9463
|
-
return highchartsRenderer.isSortingOnBackendEnabled && helpers.backendSortingKeysAreNotEmpty(keysObject);
|
9464
|
-
}
|
9465
|
-
|
9466
|
-
// Method for getting formatted kyes for Axis (cols, rows)
|
9467
|
-
highchartsRenderer.getFormattedKey = function (initialKey, pivotData, type) {
|
9468
|
-
const isFlatKey = lodash.isString(initialKey) || lodash.isNumber(initialKey);
|
9469
|
-
if (isFlatKey || lodash.isArray(initialKey)) {
|
9470
|
-
let values = isFlatKey ? initialKey.toString().split(highchartsRenderer.delimer) : lodash.cloneDeep(initialKey);
|
9471
|
-
if (values) {
|
9472
|
-
lodash.forEach(values, (value, key) => {
|
9473
|
-
const formatInfo = pivotData[type][key] || {};
|
9474
|
-
const valueToFloat = parseFloat(value);
|
9475
|
-
const isDate = formatInfo.type === 'Date';
|
9476
|
-
const isDateFormatting = isDate && highchartsRenderer.isFormattingDatesAsOtherAxisTypes();
|
9477
|
-
const isNumberFormatting = !isDate && formatInfo.format && highchartsRenderer.isFormattingNumberAxis(pivotData);
|
9478
|
-
const isApplyingFormat = !isNaN(valueToFloat) && (isNumberFormatting || isDateFormatting);
|
9479
|
-
if (isApplyingFormat) {
|
9480
|
-
values[key] = highchartsRenderer.returnRawDataValue(
|
9481
|
-
formatInfo.type,
|
9482
|
-
valueToFloat,
|
9483
|
-
formatInfo.format,
|
9484
|
-
formatInfo.name,
|
9485
|
-
formatInfo.val_not_convert,
|
9486
|
-
true
|
9487
|
-
);
|
9488
|
-
}
|
9489
|
-
});
|
9490
|
-
return isFlatKey ? values.join(highchartsRenderer.delimer) : values;
|
9491
|
-
}
|
9492
|
-
}
|
9493
|
-
return initialKey;
|
9494
|
-
}
|
9495
|
-
|
9496
|
-
highchartsRenderer.getFormattedColKey = function (initialValue, pivotData) {
|
9497
|
-
return highchartsRenderer.getFormattedKey(initialValue, pivotData, 'colFormats')
|
9498
|
-
}
|
9499
|
-
|
9500
|
-
highchartsRenderer.getFormattedRowKey = function (initialValue, pivotData) {
|
9501
|
-
return highchartsRenderer.getFormattedKey(initialValue, pivotData, 'rowFormats')
|
9502
|
-
}
|
9503
|
-
|
9504
|
-
highchartsRenderer.getFormattedKeys = function(pivotData, isCols, keys) {
|
9505
|
-
keys = keys || (isCols ? pivotData.getColKeys() : pivotData.getRowKeys());
|
9506
|
-
return highchartsRenderer.isFormattingAxisFeatureOn()
|
9507
|
-
? lodash.map(keys, key => highchartsRenderer.getFormattedKey(key, pivotData, isCols ? 'colFormats' : 'rowFormats'))
|
9508
|
-
: keys;
|
9509
|
-
}
|
9510
|
-
|
9511
|
-
highchartsRenderer.getFormattedColKeys = function(pivotData, keys) {
|
9512
|
-
return highchartsRenderer.getFormattedKeys(pivotData, true, keys);
|
9513
|
-
}
|
9514
|
-
|
9515
|
-
highchartsRenderer.getFormattedRowKeys = function(pivotData, keys) {
|
9516
|
-
return highchartsRenderer.getFormattedKeys(pivotData, false, keys);
|
9517
|
-
}
|
9518
|
-
|
9519
|
-
highchartsRenderer.modifyEventPointForDrilldown = function(e, pivotData) {
|
9520
|
-
if (!highchartsRenderer.isFormattingAxisFeatureOn()) {
|
9521
|
-
return;
|
9522
|
-
}
|
9523
|
-
e.point = lodash.cloneDeep(e.point);
|
9524
|
-
e.point.name = e.point.initialName;
|
9525
|
-
e.point.series.name = lodash.get(e.point.series, 'userOptions.initialName', e.point.series.name);
|
9526
|
-
lodash.set(e, 'point.category.userOptions', e.point.initialName.toString().split(highchartsRenderer.delimer));
|
9527
|
-
}
|
9528
|
-
|
9529
|
-
highchartsRenderer.getSeriesNameInFormatterContext = function(context, pivotData) {
|
9530
|
-
return ((highchartsRenderer.isFormattingAxisFeatureOn() && lodash.get(context, 'series.userOptions.initialName')) || context.series.name || '') + "";
|
9531
|
-
}
|
9532
|
-
|
9533
|
-
highchartsRenderer.getColsInFormatterContext = function(context, pivotData) {
|
9534
|
-
return lodash.get(context, 'point.options.colsForTotal')
|
9535
|
-
|| highchartsRenderer.isFormattingAxisFeatureOn() && (lodash.get(context, 'point.initialName') || lodash.get(context, 'options.initialName'))
|
9536
|
-
|| context.key;
|
9537
|
-
}
|
9538
|
-
|
9539
|
-
highchartsRenderer.getTableFormatInfosForWidgetFields = function(widget, pivotOptions, fields) {
|
9540
|
-
return lodash.map(fields, field => ({
|
9541
|
-
type: field.type,
|
9542
|
-
name: field.name,
|
9543
|
-
format: field.type === 'Date'
|
9544
|
-
? highchartsRenderer.getDateFieldFormat(widget, field) || pivotOptions.defaultDateFormat
|
9545
|
-
: highchartsRenderer.decodeFunc(field.format),
|
9546
|
-
val_not_convert: highchartsRenderer.check_values_not_for_convert(widget, field.name),
|
9547
|
-
}));
|
9548
|
-
}
|
9549
|
-
|
9550
|
-
// We are receiving not correct format for subtotals from BE for now - so we modyfing the response
|
9551
|
-
// in order to transform it to acceptable one. It is complex to fix currently on BE side.
|
9552
|
-
// TODO: remove it when fixed on BE side
|
9553
|
-
highchartsRenderer.fixIncompatibleCalculatedValuesTotals = function(widget, res) {
|
9554
|
-
|
9555
|
-
// if it is FE side calculation or empty response - just return unmodified
|
9556
|
-
if (!highchartsRenderer.useTotalsCalculation || !lodash.get(res, 'length')) return res;
|
9557
|
-
|
9558
|
-
const calculatedValuesInValsCount = lodash.filter(
|
9559
|
-
widget.calculated_values, calcVal => lodash.some(widget.vals, { field: calcVal.field })
|
9560
|
-
).length;
|
9561
|
-
|
9562
|
-
// do transformations only if widget has calculated in values
|
9563
|
-
if (calculatedValuesInValsCount) {
|
9564
|
-
const fieldWithDrValuesNames = lodash.reduce(
|
9565
|
-
widget.calculated_values,
|
9566
|
-
(fieldNames, calcVal) => {
|
9567
|
-
const fieldName = lodash.get(lodash.find(widget.vals, { field: calcVal.field }), 'name');
|
9568
|
-
return fieldName ? lodash.concat(fieldNames, [fieldName]) : fieldNames;
|
9569
|
-
},
|
9570
|
-
[]
|
9571
|
-
);
|
9572
|
-
|
9573
|
-
const existingRecords = [];
|
9574
|
-
lodash.forEach(res, (record) => {
|
9575
|
-
|
9576
|
-
// example: replace record { Type: "Discount", City: "Brest", DR_Values: "Normal 1", Amount: 52585.14 }
|
9577
|
-
// with { Type: "Discount", City: "Brest", DR_Values: "Normal 1", value: 52585.14 }
|
9578
|
-
if (widget.vals.length > 1 && !widget.rows.length) {
|
9579
|
-
const valueFieldNameFound = lodash.find(fieldWithDrValuesNames, name => record[name]);
|
9580
|
-
if (valueFieldNameFound) {
|
9581
|
-
record.value = record[valueFieldNameFound];
|
9582
|
-
delete record[valueFieldNameFound];
|
9583
|
-
}
|
9584
|
-
}
|
9585
|
-
|
9586
|
-
// in response from BE we have currently improper column subtotals:
|
9587
|
-
// they returned with 'DR_Values' not empty - same as for regular cell values
|
9588
|
-
// so we have two records with same column values and can't define which is subtotal
|
9589
|
-
const isSameColValuesWasBefore = lodash.some(existingRecords, existingRecord =>
|
9590
|
-
lodash.every(
|
9591
|
-
lodash.concat(['DR_Values'], lodash.map(widget.cols, 'name')), fieldName => existingRecord[fieldName] === record[fieldName]
|
9592
|
-
)
|
9593
|
-
);
|
9594
|
-
const isNoRowValues = lodash.every(widget.rows, field => typeof record[field.name] === 'undefined');
|
9595
|
-
const isSubtotal = isSameColValuesWasBefore && isNoRowValues;
|
9596
|
-
|
9597
|
-
// we need to remove DR_Values for response records which suppose to be subtotals
|
9598
|
-
if (isSubtotal) {
|
9599
|
-
delete record.DR_Values;
|
9600
|
-
}
|
9601
|
-
|
9602
|
-
existingRecords.push(record);
|
9603
|
-
});
|
9604
|
-
|
9605
|
-
// Another BE issue - it is not returning correct subtotals for case we have more than one calculated values
|
9606
|
-
// It is just not counting sum there. So we remove it in order not to show improper values
|
9607
|
-
if ((calculatedValuesInValsCount > 1 || calculatedValuesInValsCount && widget.vals.length > 1) && !widget.rows.length) {
|
9608
|
-
res = lodash.filter(res, record => {
|
9609
|
-
const isColsTotal = typeof record['DR_Values'] === 'undefined';
|
9610
|
-
return !isColsTotal;
|
9611
|
-
})
|
9612
|
-
}
|
9613
|
-
}
|
9614
|
-
return res;
|
9615
|
-
}
|
9616
|
-
|
9617
9326
|
return highchartsRenderer;
|
9618
9327
|
};
|
9619
9328
|
|