@datarailsshared/dr_renderer 1.2.366 → 1.2.368
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
@@ -2,6 +2,12 @@ function backendSortingKeysAreNotEmpty(keys) {
|
|
2
2
|
return !!keys && (!!keys.row_keys && !!keys.row_keys.length || !!keys.col_keys && !!keys.col_keys.length);
|
3
3
|
}
|
4
4
|
|
5
|
+
function capitalize(string) {
|
6
|
+
if (typeof string !== 'string') return '';
|
7
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
8
|
+
}
|
9
|
+
|
5
10
|
module.exports = {
|
6
|
-
backendSortingKeysAreNotEmpty
|
11
|
+
backendSortingKeysAreNotEmpty,
|
12
|
+
capitalize,
|
7
13
|
}
|
@@ -85,6 +85,8 @@ const HIGHCHARTS_CONSTANTS = {
|
|
85
85
|
CHART_TYPES: CHART_TYPES,
|
86
86
|
MAX_SELECTED_ITEMS_IN_LABEL: 20,
|
87
87
|
MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL: 50,
|
88
|
+
MAX_SELECTED_ITEMS_BEFORE_COLLAPSING: 11,
|
89
|
+
MAX_SELECTED_ITEMS_BEFORE_SHOWING_COUNTER: 3,
|
88
90
|
}
|
89
91
|
|
90
92
|
const SUBOPTIONS_FONTS = [
|
@@ -484,7 +486,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
484
486
|
} else {
|
485
487
|
const graphIdString = graph_id.split('_')[1];
|
486
488
|
const graphId = Number(graphIdString) || graphIdString;
|
487
|
-
chart = lodash.
|
489
|
+
chart = lodash.findLast(Highcharts.charts, function(value) {
|
488
490
|
return value.options.widgetId === graphId;
|
489
491
|
});
|
490
492
|
}
|
@@ -8040,7 +8042,22 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8040
8042
|
suboptions: []
|
8041
8043
|
};
|
8042
8044
|
|
8043
|
-
highchartsRenderer.
|
8045
|
+
highchartsRenderer.DATE_FILTER_TIMEFRAME_LABELS = {
|
8046
|
+
day: 'End of period',
|
8047
|
+
week: 'Week to date',
|
8048
|
+
month: 'Month to date',
|
8049
|
+
quarter: 'Quarter to date',
|
8050
|
+
year: 'Year to date',
|
8051
|
+
'week-full': 'Full week',
|
8052
|
+
'month-full': 'Full month',
|
8053
|
+
'quarter-full': 'Full quarter',
|
8054
|
+
'year-full': 'Full year',
|
8055
|
+
year_over_year: 'Year over Year',
|
8056
|
+
year_to_go: 'Year to Go',
|
8057
|
+
}
|
8058
|
+
|
8059
|
+
// TODO: refactor, too many conditions, unreadable
|
8060
|
+
highchartsRenderer.getFilterLabel = function (fieldFilter, showTemplateName, isFormattingNumbers, isGlobalFilter = false) {
|
8044
8061
|
var displayname;
|
8045
8062
|
if (fieldFilter.new_name)
|
8046
8063
|
displayname = fieldFilter.new_name.replace('RH_DIM_', '');
|
@@ -8052,11 +8069,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8052
8069
|
displayname = fieldFilter.template_name + " - " + displayname;
|
8053
8070
|
}
|
8054
8071
|
|
8055
|
-
if (fieldFilter.template_name && fieldFilter.datetypevalues && (fieldFilter.datetypevalues.datetype == 'range' || fieldFilter.datetypevalues.datetype == 'frame'))
|
8072
|
+
if (fieldFilter.template_name && fieldFilter.datetypevalues && (fieldFilter.datetypevalues.datetype == 'range' || fieldFilter.datetypevalues.datetype == 'frame')) {
|
8073
|
+
const label = displayname + (isGlobalFilter ? highchartsRenderer.getGlobalFilterValueHighlighter(fieldFilter.datetypevalues.datetype) : ' (' + fieldFilter.datetypevalues.datetype + ')');
|
8056
8074
|
return {
|
8057
|
-
label
|
8075
|
+
label,
|
8058
8076
|
tooltip: displayname + ' (' + fieldFilter.datetypevalues.datetype + ')'
|
8059
8077
|
};
|
8078
|
+
}
|
8060
8079
|
|
8061
8080
|
if ((fieldFilter.includes && lodash.isArray(fieldFilter.includes)) || (fieldFilter.excludes && lodash.isArray(fieldFilter.excludes))) {
|
8062
8081
|
if (fieldFilter.includes && fieldFilter.includes.length > 0 && fieldFilter.includes.length < highchartsRenderer.MAX_SELECTED_ITEMS_IN_LABEL) {
|
@@ -8073,7 +8092,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8073
8092
|
all_vals.push(val);
|
8074
8093
|
});
|
8075
8094
|
} else if (isFormattingNumbers && highchartsRenderer.isFormattingAxisFeatureOn()) {
|
8076
|
-
all_vals = lodash.map(lodash.cloneDeep(fieldFilter.includes), val =>
|
8095
|
+
all_vals = lodash.map(lodash.cloneDeep(fieldFilter.includes), val =>
|
8077
8096
|
highchartsRenderer.returnRawDataValue(fieldFilter.type, val, fieldFilter.format || '', null, null, true) + ""
|
8078
8097
|
);
|
8079
8098
|
} else {
|
@@ -8083,10 +8102,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8083
8102
|
if (fieldFilter.allow_nulls && all_vals.length > 1) {
|
8084
8103
|
all_vals = all_vals.filter(x => x !== '[null]')
|
8085
8104
|
}
|
8086
|
-
all_vals = all_vals.join(',');
|
8105
|
+
all_vals = all_vals.join(', ');
|
8087
8106
|
tooltip = ' (' + all_vals + ')';
|
8088
|
-
if (all_vals.length > highchartsRenderer.
|
8089
|
-
all_vals
|
8107
|
+
if (all_vals.split(',').length > highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING && isGlobalFilter
|
8108
|
+
|| all_vals.length > highchartsRenderer.MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL && !isGlobalFilter) {
|
8109
|
+
all_vals = 'Many';
|
8090
8110
|
}
|
8091
8111
|
all_vals = ' (' + all_vals + ')';
|
8092
8112
|
} else {
|
@@ -8096,7 +8116,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8096
8116
|
|
8097
8117
|
all_vals = highchartsRenderer.decodeFunc(all_vals);
|
8098
8118
|
tooltip = highchartsRenderer.decodeFunc(tooltip);
|
8099
|
-
|
8119
|
+
if (isGlobalFilter) {
|
8120
|
+
all_vals = highchartsRenderer.getGlobalFilterCounterString(all_vals);
|
8121
|
+
displayname = displayname + ': ';
|
8122
|
+
};
|
8100
8123
|
return {
|
8101
8124
|
label: displayname + all_vals,
|
8102
8125
|
tooltip: displayname + tooltip
|
@@ -8123,20 +8146,24 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8123
8146
|
if (fieldFilter.allow_nulls && all_vals.length > 1) {
|
8124
8147
|
all_vals = all_vals.filter(x => x !== '[null]')
|
8125
8148
|
}
|
8126
|
-
all_vals = all_vals.join(',');
|
8149
|
+
all_vals = all_vals.join(', ');
|
8127
8150
|
tooltip = ' (Exclusions: ' + all_vals + ')';
|
8128
|
-
if (all_vals.length > highchartsRenderer.
|
8129
|
-
all_vals
|
8151
|
+
if (all_vals.split(',').length > highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING && isGlobalFilter
|
8152
|
+
|| all_vals.length > highchartsRenderer.MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL && !isGlobalFilter) {
|
8153
|
+
all_vals = 'Many';
|
8130
8154
|
}
|
8131
8155
|
all_vals = ' (Exclusions: ' + all_vals + ')';
|
8132
8156
|
} else {
|
8133
|
-
tooltip = ' (All)';
|
8134
|
-
all_vals = '
|
8157
|
+
tooltip = isGlobalFilter ? ': All' : ' (All)';
|
8158
|
+
all_vals = 'All';
|
8135
8159
|
}
|
8136
8160
|
|
8137
8161
|
all_vals = highchartsRenderer.decodeFunc(all_vals);
|
8138
8162
|
tooltip = highchartsRenderer.decodeFunc(tooltip);
|
8139
|
-
|
8163
|
+
if (isGlobalFilter) {
|
8164
|
+
all_vals = highchartsRenderer.getGlobalFilterCounterString(all_vals);
|
8165
|
+
displayname = displayname + ': ';
|
8166
|
+
};
|
8140
8167
|
return {
|
8141
8168
|
label: displayname + all_vals,
|
8142
8169
|
tooltip: displayname + tooltip
|
@@ -8144,33 +8171,42 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8144
8171
|
} else {
|
8145
8172
|
if ((fieldFilter.includes && fieldFilter.includes.length == 0))
|
8146
8173
|
return {
|
8147
|
-
label: displayname + ' (
|
8148
|
-
tooltip: displayname + ' (
|
8174
|
+
label: displayname + (isGlobalFilter ? ': None' : ' (None)'),
|
8175
|
+
tooltip: displayname + (isGlobalFilter ? ' None' : ' (None)'),
|
8149
8176
|
};
|
8150
8177
|
else if ((fieldFilter.excludes && fieldFilter.excludes.length == 0))
|
8151
8178
|
return {
|
8152
|
-
label: displayname + ' (All)',
|
8153
|
-
tooltip: displayname + ' (All)'
|
8179
|
+
label: displayname + (isGlobalFilter ? ': All' : ' (All)'),
|
8180
|
+
tooltip: displayname + (isGlobalFilter ? ' All' : ' (All)'),
|
8154
8181
|
};
|
8155
8182
|
else if ((fieldFilter.includes))
|
8156
8183
|
return {
|
8157
|
-
label: displayname + ' (
|
8184
|
+
label: displayname + (isGlobalFilter ? ': ' + highchartsRenderer.getGlobalFilterValueHighlighter('Many') : ' (Many)'),
|
8158
8185
|
tooltip: displayname + ' (' +
|
8159
8186
|
lodash.map(fieldFilter.includes, item => highchartsRenderer.returnRawDataValue(fieldFilter.type, item, fieldFilter.format)).join(', ') +
|
8160
8187
|
')'
|
8161
8188
|
};
|
8162
|
-
else
|
8163
|
-
|
8164
|
-
|
8165
|
-
|
8166
|
-
|
8167
|
-
|
8168
|
-
|
8189
|
+
else {
|
8190
|
+
const label = displayname + (isGlobalFilter ? ': ' + highchartsRenderer.getGlobalFilterValueHighlighter('Exclusions: Many') : ' (Exclusions Many)');
|
8191
|
+
return {
|
8192
|
+
label,
|
8193
|
+
tooltip: displayname + ' (Exclusions: ' +
|
8194
|
+
lodash.map(fieldFilter.excludes, item => highchartsRenderer.returnRawDataValue(fieldFilter.type, item, fieldFilter.format)).join(', ') +
|
8195
|
+
')'
|
8196
|
+
};
|
8197
|
+
}
|
8169
8198
|
}
|
8170
8199
|
} else {
|
8171
8200
|
if (fieldFilter && fieldFilter.type && fieldFilter.type === 'Date' && fieldFilter.datetypevalues) {
|
8172
8201
|
if (fieldFilter.datetypevalues.datetype === "frame") {
|
8173
|
-
|
8202
|
+
const timeframeLabel = highchartsRenderer.DATE_FILTER_TIMEFRAME_LABELS[fieldFilter.datetypevalues.val.timeframe] || highchartsRenderer.getDateFilterCustomTimeframeLabel(fieldFilter.datetypevalues.val);
|
8203
|
+
if (isGlobalFilter) {
|
8204
|
+
return {
|
8205
|
+
label: displayname + ': ' + highchartsRenderer.getGlobalFilterValueHighlighter(timeframeLabel),
|
8206
|
+
tooltip: displayname + ': ' + timeframeLabel,
|
8207
|
+
}
|
8208
|
+
}
|
8209
|
+
displayname += ` (${ timeframeLabel })`;
|
8174
8210
|
} else if (fieldFilter.datetypevalues.datetype === "range") {
|
8175
8211
|
const dates = {
|
8176
8212
|
from: { timestamp: fieldFilter.datetypevalues.val.fromdate, displayedValue: '' },
|
@@ -8189,16 +8225,29 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8189
8225
|
.toLocaleDateString();
|
8190
8226
|
}
|
8191
8227
|
});
|
8228
|
+
if (isGlobalFilter) {
|
8229
|
+
displayname += `: ${ highchartsRenderer.getGlobalFilterValueHighlighter(dates.from.displayedValue + '-' + dates.to.displayedValue) }`;
|
8230
|
+
return {
|
8231
|
+
label: displayname,
|
8232
|
+
tooltip: dates.from.displayedValue + '-' + dates.to.displayedValue,
|
8233
|
+
}
|
8234
|
+
}
|
8192
8235
|
displayname += ` (${ dates.from.displayedValue }-${ dates.to.displayedValue })`;
|
8193
8236
|
} else {
|
8194
|
-
displayname += ' (All)';
|
8237
|
+
displayname += isGlobalFilter ? ': All' : ' (All)';
|
8195
8238
|
}
|
8196
8239
|
} else if (fieldFilter &&
|
8197
8240
|
((fieldFilter.values && fieldFilter.values.type === 'advanced') || (fieldFilter.datetypevalues && fieldFilter.datetypevalues.type === 'advanced'))) {
|
8198
|
-
displayname += ' (Advanced)';
|
8241
|
+
displayname += (isGlobalFilter ? ': ' + highchartsRenderer.getGlobalFilterValueHighlighter('Advanced') : ' (Advanced)');
|
8242
|
+
return {
|
8243
|
+
label: displayname,
|
8244
|
+
tooltip: isGlobalFilter ? 'Advanced' : displayname,
|
8245
|
+
};
|
8246
|
+
|
8199
8247
|
} else {
|
8200
|
-
displayname += ' (All)';
|
8248
|
+
displayname += isGlobalFilter ? ': All' : ' (All)';
|
8201
8249
|
}
|
8250
|
+
|
8202
8251
|
return {
|
8203
8252
|
label: displayname,
|
8204
8253
|
tooltip: displayname
|
@@ -8206,6 +8255,27 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8206
8255
|
}
|
8207
8256
|
};
|
8208
8257
|
|
8258
|
+
highchartsRenderer.getGlobalFilterValueHighlighter = function (value) {
|
8259
|
+
return `<span class="filters-values-label">${ value }</span>`;
|
8260
|
+
}
|
8261
|
+
|
8262
|
+
highchartsRenderer.getDateFilterCustomTimeframeLabel = function (value) {
|
8263
|
+
if (!value || !value.timeframe || !value.timeframe.startsWith('x')) return 'Custom';
|
8264
|
+
|
8265
|
+
const deltaDirectionLabel = value.delta_direction === 'next' ? 'Next' : 'Last';
|
8266
|
+
return `${ deltaDirectionLabel } ${ value.delta_absolute } ${ helpers.capitalize(value.timeframe.slice(1)) }${ value.delta_absolute > 1 ? 's' : '' }`
|
8267
|
+
}
|
8268
|
+
|
8269
|
+
highchartsRenderer.getGlobalFilterCounterString = function(all_vals) {
|
8270
|
+
const counterStartsAt = highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_SHOWING_COUNTER;
|
8271
|
+
|
8272
|
+
all_vals = all_vals.slice(0, -1).slice(counterStartsAt - 1, all_vals.length);
|
8273
|
+
all_vals = all_vals.split(',');
|
8274
|
+
if (all_vals.length > counterStartsAt) all_vals = all_vals.slice(0, counterStartsAt - 1) + ' + ' + (all_vals.length - (counterStartsAt - 1));
|
8275
|
+
all_vals = highchartsRenderer.getGlobalFilterValueHighlighter(all_vals);
|
8276
|
+
return all_vals;
|
8277
|
+
}
|
8278
|
+
|
8209
8279
|
highchartsRenderer.getRelevantFilters = function (filtersList) {
|
8210
8280
|
var dashboardsFilters = lodash.filter(filtersList, function (element) {
|
8211
8281
|
return (element.hasOwnProperty('includes') && element.includes != null) || (element.hasOwnProperty('excludes') && element.excludes != null) ||
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
const drRendererHelpers = require('../src/dr-renderer-helpers');
|
1
|
+
import drRendererHelpers from '../src/dr-renderer-helpers';
|
3
2
|
|
3
|
+
describe('dr-renderer-helpers', () => {
|
4
4
|
describe('backendSortingKeysAreNotEmpty', () => {
|
5
5
|
it('should return true if keys are not empty', () => {
|
6
6
|
const keys = {
|
@@ -31,4 +31,21 @@ describe('dr-renderer-helpers', () => {
|
|
31
31
|
expect(drRendererHelpers.backendSortingKeysAreNotEmpty(keys)).toBe(false);
|
32
32
|
});
|
33
33
|
});
|
34
|
+
|
35
|
+
describe('capitalize', () => {
|
36
|
+
it('should capitalize a string', () => {
|
37
|
+
const string = 'test';
|
38
|
+
expect(drRendererHelpers.capitalize(string)).toBe('Test');
|
39
|
+
});
|
40
|
+
|
41
|
+
it('should not capitalize a string when it was not trimmed', () => {
|
42
|
+
const string = ' test';
|
43
|
+
expect(drRendererHelpers.capitalize(string)).toBe(' test');
|
44
|
+
});
|
45
|
+
|
46
|
+
it('should return an empty string if string is null', () => {
|
47
|
+
const string = null;
|
48
|
+
expect(drRendererHelpers.capitalize(string)).toBe('');
|
49
|
+
});
|
50
|
+
});
|
34
51
|
});
|
@@ -3571,95 +3571,145 @@ describe('highcharts_renderer', () => {
|
|
3571
3571
|
});
|
3572
3572
|
|
3573
3573
|
describe('Should present includes/excludes names', () => {
|
3574
|
-
|
3574
|
+
let fieldFilter;
|
3575
3575
|
|
3576
|
-
|
3577
|
-
|
3578
|
-
|
3579
|
-
|
3580
|
-
|
3581
|
-
|
3582
|
-
|
3583
|
-
|
3576
|
+
beforeEach(() => {
|
3577
|
+
fieldFilter = {
|
3578
|
+
name: 'test',
|
3579
|
+
includes: null,
|
3580
|
+
excludes: null,
|
3581
|
+
type: 'Text',
|
3582
|
+
};
|
3583
|
+
});
|
3584
3584
|
|
3585
|
-
|
3586
|
-
|
3587
|
-
|
3588
|
-
|
3589
|
-
|
3590
|
-
|
3585
|
+
it('Should return "none" label when excludes empty', () => {
|
3586
|
+
fieldFilter.includes = [];
|
3587
|
+
const res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3588
|
+
expect(res.label).toEqual('test (None)');
|
3589
|
+
expect(res.tooltip).toEqual('test (None)');
|
3590
|
+
});
|
3591
3591
|
|
3592
|
-
|
3593
|
-
|
3594
|
-
|
3595
|
-
|
3596
|
-
|
3597
|
-
|
3592
|
+
it('Should return "All" label when excludes empty', () => {
|
3593
|
+
fieldFilter.excludes = [];
|
3594
|
+
const res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3595
|
+
expect(res.label).toEqual('test (All)');
|
3596
|
+
expect(res.tooltip).toEqual('test (All)');
|
3597
|
+
});
|
3598
3598
|
|
3599
|
-
|
3600
|
-
|
3601
|
-
|
3602
|
-
|
3603
|
-
|
3604
|
-
|
3605
|
-
fieldFilter.excludes = fieldFilter.includes;
|
3606
|
-
delete fieldFilter.includes;
|
3607
|
-
res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3608
|
-
expect(res.label).toEqual('test (Exclusions many)');
|
3609
|
-
expect(res.tooltip).toEqual('test (Exclusions: ' + fieldFilter.excludes.join(', ') + ')');
|
3610
|
-
});
|
3599
|
+
it('Should return "none" global filter label when excludes empty', () => {
|
3600
|
+
fieldFilter.includes = [];
|
3601
|
+
const res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3602
|
+
expect(res.label).toEqual('test: None');
|
3603
|
+
expect(res.tooltip).toEqual('test None');
|
3604
|
+
});
|
3611
3605
|
|
3612
|
-
it('Should return "many" in label when includes has label length more than MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL', () => {
|
3613
|
-
fieldFilter.includes = ['[null]', 'long long long value 2', 'long long long value 3'];
|
3614
|
-
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3615
|
-
expect(res.label).toEqual('test (many)');
|
3616
|
-
expect(res.tooltip).toEqual('test (' + fieldFilter.includes.join(',') + ')');
|
3617
|
-
});
|
3618
3606
|
|
3619
|
-
|
3620
|
-
|
3621
|
-
|
3622
|
-
|
3623
|
-
|
3624
|
-
|
3607
|
+
it('Should return "All" global filter label when excludes empty', () => {
|
3608
|
+
fieldFilter.excludes = [];
|
3609
|
+
const res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3610
|
+
expect(res.label).toEqual('test: All');
|
3611
|
+
expect(res.tooltip).toEqual('test All');
|
3612
|
+
});
|
3625
3613
|
|
3626
|
-
|
3627
|
-
|
3628
|
-
|
3629
|
-
|
3630
|
-
|
3631
|
-
|
3632
|
-
|
3614
|
+
it('Should return "many" label when includes/excludes has more than MAX_SELECTED_ITEMS_IN_LABEL items', () => {
|
3615
|
+
fieldFilter.includes = new Array(highchartsRenderer.MAX_SELECTED_ITEMS_IN_LABEL).fill('val');
|
3616
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3617
|
+
expect(res.label).toEqual('test (Many)');
|
3618
|
+
expect(res.tooltip).toEqual('test (' + fieldFilter.includes.join(', ') + ')');
|
3619
|
+
|
3620
|
+
fieldFilter.excludes = fieldFilter.includes;
|
3621
|
+
delete fieldFilter.includes;
|
3622
|
+
res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3623
|
+
expect(res.label).toEqual('test (Exclusions Many)');
|
3624
|
+
expect(res.tooltip).toEqual('test (Exclusions: ' + fieldFilter.excludes.join(', ') + ')');
|
3625
|
+
});
|
3633
3626
|
|
3634
|
-
|
3635
|
-
|
3636
|
-
|
3637
|
-
|
3638
|
-
|
3639
|
-
|
3640
|
-
});
|
3627
|
+
it('Should return "many" in label when includes has label length more than MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL', () => {
|
3628
|
+
fieldFilter.includes = ['[null]', 'long long long value 2', 'long long long value 3'];
|
3629
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3630
|
+
expect(res.label).toEqual('test (Many)');
|
3631
|
+
expect(res.tooltip).toEqual('test (' + fieldFilter.includes.join(', ') + ')');
|
3632
|
+
});
|
3641
3633
|
|
3642
|
-
|
3643
|
-
|
3644
|
-
|
3645
|
-
|
3646
|
-
|
3647
|
-
|
3648
|
-
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3649
|
-
expect(res.label).toEqual('test (April 21, 2023,04/21/2023,04/20/2023)');
|
3650
|
-
expect(res.tooltip).toEqual('test (April 21, 2023,04/21/2023,04/20/2023)');
|
3651
|
-
});
|
3634
|
+
it('Should return "many" in label when excludes has label length more than MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL', () => {
|
3635
|
+
fieldFilter.excludes = ['[null]', 'long long long value 2', 'long long long value 3'];
|
3636
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3637
|
+
expect(res.label).toEqual('test (Exclusions: Many)');
|
3638
|
+
expect(res.tooltip).toEqual('test (Exclusions: ' + fieldFilter.excludes.join(', ') + ')');
|
3639
|
+
});
|
3652
3640
|
|
3653
|
-
|
3654
|
-
|
3655
|
-
|
3656
|
-
|
3657
|
-
|
3658
|
-
|
3659
|
-
|
3660
|
-
|
3661
|
-
|
3662
|
-
|
3641
|
+
it('Should return all selected values in global filter label when selected is acceptable to show actual values', () => {
|
3642
|
+
fieldFilter.includes = ['value', 'value', 'value']
|
3643
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3644
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">value, value, value</span>');
|
3645
|
+
expect(res.tooltip).toEqual('test: (' + fieldFilter.includes.join(', ') + ')');
|
3646
|
+
});
|
3647
|
+
|
3648
|
+
it('Should return "many" in global filter label when selected more than acceptable to show amount of values ', () => {
|
3649
|
+
fieldFilter.includes = new Array(highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING + 1).fill('val');
|
3650
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3651
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">Many</span>');
|
3652
|
+
expect(res.tooltip).toEqual('test: (' + fieldFilter.includes.join(', ') + ')');
|
3653
|
+
});
|
3654
|
+
|
3655
|
+
it('Should return selected value + counter in global filter label when selected more than acceptable to show amount of values but acceptable to show counter', () => {
|
3656
|
+
fieldFilter.includes = new Array(highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING).fill('val');
|
3657
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3658
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">val, val + 9</span>');
|
3659
|
+
expect(res.tooltip).toEqual('test: (' + fieldFilter.includes.join(', ') + ')');
|
3660
|
+
});
|
3661
|
+
|
3662
|
+
it('Should return selected values + counter in global filter label when selected more than acceptable to show amount of values but acceptable to show counter', () => {
|
3663
|
+
fieldFilter.includes = new Array(highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING).fill('val');
|
3664
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3665
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">val, val + 9</span>');
|
3666
|
+
expect(res.tooltip).toEqual('test: (' + fieldFilter.includes.join(', ') + ')');
|
3667
|
+
});
|
3668
|
+
|
3669
|
+
it('Should return excluded value + counter in global filter label when selected more than acceptable to show amount of values but acceptable to show counter', () => {
|
3670
|
+
fieldFilter.excludes = new Array(highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING).fill('val');
|
3671
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false, false, true);
|
3672
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">Exclusions: val, val + 9</span>');
|
3673
|
+
expect(res.tooltip).toEqual('test: (Exclusions: ' + fieldFilter.excludes.join(', ') + ')');
|
3674
|
+
});
|
3675
|
+
|
3676
|
+
it('Should exclude "[null]" from includes if allow_nulls enabled', () => {
|
3677
|
+
fieldFilter.allow_nulls = true;
|
3678
|
+
fieldFilter.includes = ['value 1', '[null]'];
|
3679
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3680
|
+
expect(res.label).toEqual('test (value 1)');
|
3681
|
+
expect(res.tooltip).toEqual('test (' + fieldFilter.includes[0] + ')');
|
3682
|
+
});
|
3683
|
+
|
3684
|
+
it('Should exclude "[null]" from excludes if allow_nulls enabled', () => {
|
3685
|
+
fieldFilter.allow_nulls = true;
|
3686
|
+
fieldFilter.excludes = ['value 1', '[null]'];
|
3687
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3688
|
+
expect(res.label).toEqual('test (Exclusions: value 1)');
|
3689
|
+
expect(res.tooltip).toEqual('test (Exclusions: ' + fieldFilter.excludes[0] + ')');
|
3690
|
+
});
|
3691
|
+
|
3692
|
+
it('Should present formatted dates in includes. Get formatted value from invertValueFormatMap object if exist ', () => {
|
3693
|
+
fieldFilter.includes = [1682063884, 1682060884, 1682013884];
|
3694
|
+
fieldFilter.type = 'Date';
|
3695
|
+
fieldFilter.valueFormatMap = {
|
3696
|
+
'April 21, 2023': 1682063884
|
3697
|
+
};
|
3698
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3699
|
+
expect(res.label).toEqual('test (April 21, 2023, 04/21/2023, 04/20/2023)');
|
3700
|
+
expect(res.tooltip).toEqual('test (April 21, 2023, 04/21/2023, 04/20/2023)');
|
3701
|
+
});
|
3702
|
+
|
3703
|
+
it('Should present formatted dates in excludes. Get formatted value from invertValueFormatMap object if exist ', () => {
|
3704
|
+
fieldFilter.excludes = [1682063884, 1682060884];
|
3705
|
+
fieldFilter.type = 'Date';
|
3706
|
+
fieldFilter.valueFormatMap = {
|
3707
|
+
'April 21, 2023': 1682063884
|
3708
|
+
};
|
3709
|
+
let res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3710
|
+
expect(res.label).toEqual('test (Exclusions: April 21, 2023, 04/21/2023)');
|
3711
|
+
expect(res.tooltip).toEqual('test (Exclusions: April 21, 2023, 04/21/2023)');
|
3712
|
+
});
|
3663
3713
|
});
|
3664
3714
|
|
3665
3715
|
describe('Should present date range or frame selection', () => {
|
@@ -3691,12 +3741,12 @@ describe('highcharts_renderer', () => {
|
|
3691
3741
|
fieldFilter.datetypevalues = {
|
3692
3742
|
datetype: 'frame',
|
3693
3743
|
val: {
|
3694
|
-
timeframe: '
|
3744
|
+
timeframe: 'day'
|
3695
3745
|
}
|
3696
3746
|
};
|
3697
3747
|
const res = highchartsRenderer.getFilterLabel(fieldFilter, false);
|
3698
|
-
expect(res.label).toEqual('test (
|
3699
|
-
expect(res.tooltip).toEqual('test (
|
3748
|
+
expect(res.label).toEqual('test (End of period)');
|
3749
|
+
expect(res.tooltip).toEqual('test (End of period)');
|
3700
3750
|
});
|
3701
3751
|
|
3702
3752
|
it('Should return "All" label when datetype is not selected', () => {
|
@@ -3707,19 +3757,31 @@ describe('highcharts_renderer', () => {
|
|
3707
3757
|
});
|
3708
3758
|
});
|
3709
3759
|
|
3710
|
-
|
3711
|
-
|
3760
|
+
describe('Should present advanced filter selection', () => {
|
3761
|
+
it('Should return "Advanced" label when advanced type in values', () => {
|
3712
3762
|
const res = highchartsRenderer.getFilterLabel({ name: 'test', values: { type: 'advanced'} }, false);
|
3713
3763
|
expect(res.label).toEqual('test (Advanced)');
|
3714
3764
|
expect(res.tooltip).toEqual('test (Advanced)');
|
3715
|
-
|
3765
|
+
});
|
3716
3766
|
|
3717
|
-
|
3767
|
+
it('Should return "Advanced" label when advanced type in datetypevalues', () => {
|
3718
3768
|
const res = highchartsRenderer.getFilterLabel({ name: 'test', datetypevalues: { type: 'advanced'} }, false);
|
3719
3769
|
expect(res.label).toEqual('test (Advanced)');
|
3720
3770
|
expect(res.tooltip).toEqual('test (Advanced)');
|
3721
|
-
|
3722
|
-
|
3771
|
+
});
|
3772
|
+
|
3773
|
+
it('Should return "Advanced" global filter label when advanced type in values', () => {
|
3774
|
+
const res = highchartsRenderer.getFilterLabel({ name: 'test', values: { type: 'advanced'} }, false, false, true);
|
3775
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">Advanced</span>');
|
3776
|
+
expect(res.tooltip).toEqual('Advanced');
|
3777
|
+
});
|
3778
|
+
|
3779
|
+
it('Should return "Advanced" global filter label when advanced type in datetypevalues', () => {
|
3780
|
+
const res = highchartsRenderer.getFilterLabel({ name: 'test', datetypevalues: { type: 'advanced'} }, false, false, true);
|
3781
|
+
expect(res.label).toEqual('test: <span class=\"filters-values-label\">Advanced</span>');
|
3782
|
+
expect(res.tooltip).toEqual('Advanced');
|
3783
|
+
});
|
3784
|
+
});
|
3723
3785
|
|
3724
3786
|
describe('Should present All if nothing selected', () => {
|
3725
3787
|
it('Should return "All" label when nothing selected', () => {
|
@@ -3730,6 +3792,48 @@ describe('highcharts_renderer', () => {
|
|
3730
3792
|
});
|
3731
3793
|
});
|
3732
3794
|
|
3795
|
+
describe('function getGlobalFilterValueHighlighter', () => {
|
3796
|
+
it('should return a html wrapper with value', () => {
|
3797
|
+
const value = 'test';
|
3798
|
+
const res = highchartsRenderer.getGlobalFilterValueHighlighter(value);
|
3799
|
+
expect(res).toEqual('<span class=\"filters-values-label\">test</span>');
|
3800
|
+
});
|
3801
|
+
|
3802
|
+
it('should return a html wrapper with empty value', () => {
|
3803
|
+
const value = '';
|
3804
|
+
const res = highchartsRenderer.getGlobalFilterValueHighlighter(value);
|
3805
|
+
expect(res).toEqual('<span class=\"filters-values-label\"></span>');
|
3806
|
+
});
|
3807
|
+
});
|
3808
|
+
|
3809
|
+
describe('function getDateFilterCustomTimeframeLabel', () => {
|
3810
|
+
it('should return a label for a timeframe that not in the list', () => {
|
3811
|
+
const timeframe = 'custom';
|
3812
|
+
const res = highchartsRenderer.getDateFilterCustomTimeframeLabel({ timeframe });
|
3813
|
+
expect(res).toEqual('Custom');
|
3814
|
+
});
|
3815
|
+
|
3816
|
+
it('should return a label for a empty timeframe', () => {
|
3817
|
+
const timeframe = '';
|
3818
|
+
const res = highchartsRenderer.getDateFilterCustomTimeframeLabel({ timeframe });
|
3819
|
+
expect(res).toEqual('Custom');
|
3820
|
+
});
|
3821
|
+
|
3822
|
+
it('should return a label for a xday timeframe', () => {
|
3823
|
+
const timeframe = 'xday';
|
3824
|
+
const res = highchartsRenderer.getDateFilterCustomTimeframeLabel({ timeframe, delta_absolute: 1, delta_direction: 'next' });
|
3825
|
+
|
3826
|
+
expect(res).toEqual('Next 1 Day');
|
3827
|
+
});
|
3828
|
+
|
3829
|
+
it('should return a label for a xday timeframe with delta_absolute > 1', () => {
|
3830
|
+
const timeframe = 'xday';
|
3831
|
+
const res = highchartsRenderer.getDateFilterCustomTimeframeLabel({ timeframe, delta_absolute: 2, delta_direction: 'next' });
|
3832
|
+
|
3833
|
+
expect(res).toEqual('Next 2 Days');
|
3834
|
+
});
|
3835
|
+
});
|
3836
|
+
|
3733
3837
|
describe('function getRelevantFilters', () => {
|
3734
3838
|
it('should return an empty array if given an empty array', () => {
|
3735
3839
|
const filters = highchartsRenderer.getRelevantFilters([]);
|