@datarailsshared/dr_renderer 1.2.367 → 1.2.369
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 = [
|
@@ -6546,25 +6548,29 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
6546
6548
|
element_type: 'input',
|
6547
6549
|
value_name: 'low',
|
6548
6550
|
element_label: 'Low %',
|
6549
|
-
default_value: 10
|
6551
|
+
default_value: 10,
|
6552
|
+
value_type: 'number'
|
6550
6553
|
},
|
6551
6554
|
{
|
6552
6555
|
element_type: 'input',
|
6553
6556
|
value_name: 'medium',
|
6554
6557
|
element_label: 'Medium %',
|
6555
|
-
default_value: 50
|
6558
|
+
default_value: 50,
|
6559
|
+
value_type: 'number'
|
6556
6560
|
},
|
6557
6561
|
{
|
6558
6562
|
element_type: 'input',
|
6559
6563
|
value_name: 'high',
|
6560
6564
|
element_label: 'High %',
|
6561
|
-
default_value: 90
|
6565
|
+
default_value: 90,
|
6566
|
+
value_type: 'number'
|
6562
6567
|
},
|
6563
6568
|
{
|
6564
6569
|
element_type: 'input',
|
6565
6570
|
value_name: 'max',
|
6566
6571
|
element_label: 'Max',
|
6567
|
-
default_value: 1000
|
6572
|
+
default_value: 1000,
|
6573
|
+
value_type: 'number'
|
6568
6574
|
}
|
6569
6575
|
]
|
6570
6576
|
},
|
@@ -8040,7 +8046,22 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8040
8046
|
suboptions: []
|
8041
8047
|
};
|
8042
8048
|
|
8043
|
-
highchartsRenderer.
|
8049
|
+
highchartsRenderer.DATE_FILTER_TIMEFRAME_LABELS = {
|
8050
|
+
day: 'End of period',
|
8051
|
+
week: 'Week to date',
|
8052
|
+
month: 'Month to date',
|
8053
|
+
quarter: 'Quarter to date',
|
8054
|
+
year: 'Year to date',
|
8055
|
+
'week-full': 'Full week',
|
8056
|
+
'month-full': 'Full month',
|
8057
|
+
'quarter-full': 'Full quarter',
|
8058
|
+
'year-full': 'Full year',
|
8059
|
+
year_over_year: 'Year over Year',
|
8060
|
+
year_to_go: 'Year to Go',
|
8061
|
+
}
|
8062
|
+
|
8063
|
+
// TODO: refactor, too many conditions, unreadable
|
8064
|
+
highchartsRenderer.getFilterLabel = function (fieldFilter, showTemplateName, isFormattingNumbers, isGlobalFilter = false) {
|
8044
8065
|
var displayname;
|
8045
8066
|
if (fieldFilter.new_name)
|
8046
8067
|
displayname = fieldFilter.new_name.replace('RH_DIM_', '');
|
@@ -8052,11 +8073,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8052
8073
|
displayname = fieldFilter.template_name + " - " + displayname;
|
8053
8074
|
}
|
8054
8075
|
|
8055
|
-
if (fieldFilter.template_name && fieldFilter.datetypevalues && (fieldFilter.datetypevalues.datetype == 'range' || fieldFilter.datetypevalues.datetype == 'frame'))
|
8076
|
+
if (fieldFilter.template_name && fieldFilter.datetypevalues && (fieldFilter.datetypevalues.datetype == 'range' || fieldFilter.datetypevalues.datetype == 'frame')) {
|
8077
|
+
const label = displayname + (isGlobalFilter ? highchartsRenderer.getGlobalFilterValueHighlighter(fieldFilter.datetypevalues.datetype) : ' (' + fieldFilter.datetypevalues.datetype + ')');
|
8056
8078
|
return {
|
8057
|
-
label
|
8079
|
+
label,
|
8058
8080
|
tooltip: displayname + ' (' + fieldFilter.datetypevalues.datetype + ')'
|
8059
8081
|
};
|
8082
|
+
}
|
8060
8083
|
|
8061
8084
|
if ((fieldFilter.includes && lodash.isArray(fieldFilter.includes)) || (fieldFilter.excludes && lodash.isArray(fieldFilter.excludes))) {
|
8062
8085
|
if (fieldFilter.includes && fieldFilter.includes.length > 0 && fieldFilter.includes.length < highchartsRenderer.MAX_SELECTED_ITEMS_IN_LABEL) {
|
@@ -8073,7 +8096,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8073
8096
|
all_vals.push(val);
|
8074
8097
|
});
|
8075
8098
|
} else if (isFormattingNumbers && highchartsRenderer.isFormattingAxisFeatureOn()) {
|
8076
|
-
all_vals = lodash.map(lodash.cloneDeep(fieldFilter.includes), val =>
|
8099
|
+
all_vals = lodash.map(lodash.cloneDeep(fieldFilter.includes), val =>
|
8077
8100
|
highchartsRenderer.returnRawDataValue(fieldFilter.type, val, fieldFilter.format || '', null, null, true) + ""
|
8078
8101
|
);
|
8079
8102
|
} else {
|
@@ -8083,10 +8106,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8083
8106
|
if (fieldFilter.allow_nulls && all_vals.length > 1) {
|
8084
8107
|
all_vals = all_vals.filter(x => x !== '[null]')
|
8085
8108
|
}
|
8086
|
-
all_vals = all_vals.join(',');
|
8109
|
+
all_vals = all_vals.join(', ');
|
8087
8110
|
tooltip = ' (' + all_vals + ')';
|
8088
|
-
if (all_vals.length > highchartsRenderer.
|
8089
|
-
all_vals
|
8111
|
+
if (all_vals.split(',').length > highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING && isGlobalFilter
|
8112
|
+
|| all_vals.length > highchartsRenderer.MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL && !isGlobalFilter) {
|
8113
|
+
all_vals = 'Many';
|
8090
8114
|
}
|
8091
8115
|
all_vals = ' (' + all_vals + ')';
|
8092
8116
|
} else {
|
@@ -8096,7 +8120,10 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8096
8120
|
|
8097
8121
|
all_vals = highchartsRenderer.decodeFunc(all_vals);
|
8098
8122
|
tooltip = highchartsRenderer.decodeFunc(tooltip);
|
8099
|
-
|
8123
|
+
if (isGlobalFilter) {
|
8124
|
+
all_vals = highchartsRenderer.getGlobalFilterCounterString(all_vals);
|
8125
|
+
displayname = displayname + ': ';
|
8126
|
+
};
|
8100
8127
|
return {
|
8101
8128
|
label: displayname + all_vals,
|
8102
8129
|
tooltip: displayname + tooltip
|
@@ -8123,20 +8150,24 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8123
8150
|
if (fieldFilter.allow_nulls && all_vals.length > 1) {
|
8124
8151
|
all_vals = all_vals.filter(x => x !== '[null]')
|
8125
8152
|
}
|
8126
|
-
all_vals = all_vals.join(',');
|
8153
|
+
all_vals = all_vals.join(', ');
|
8127
8154
|
tooltip = ' (Exclusions: ' + all_vals + ')';
|
8128
|
-
if (all_vals.length > highchartsRenderer.
|
8129
|
-
all_vals
|
8155
|
+
if (all_vals.split(',').length > highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_COLLAPSING && isGlobalFilter
|
8156
|
+
|| all_vals.length > highchartsRenderer.MAX_SELECTED_ITEMS_CHARECHTERS_IN_LABEL && !isGlobalFilter) {
|
8157
|
+
all_vals = 'Many';
|
8130
8158
|
}
|
8131
8159
|
all_vals = ' (Exclusions: ' + all_vals + ')';
|
8132
8160
|
} else {
|
8133
|
-
tooltip = ' (All)';
|
8134
|
-
all_vals = '
|
8161
|
+
tooltip = isGlobalFilter ? ': All' : ' (All)';
|
8162
|
+
all_vals = 'All';
|
8135
8163
|
}
|
8136
8164
|
|
8137
8165
|
all_vals = highchartsRenderer.decodeFunc(all_vals);
|
8138
8166
|
tooltip = highchartsRenderer.decodeFunc(tooltip);
|
8139
|
-
|
8167
|
+
if (isGlobalFilter) {
|
8168
|
+
all_vals = highchartsRenderer.getGlobalFilterCounterString(all_vals);
|
8169
|
+
displayname = displayname + ': ';
|
8170
|
+
};
|
8140
8171
|
return {
|
8141
8172
|
label: displayname + all_vals,
|
8142
8173
|
tooltip: displayname + tooltip
|
@@ -8144,33 +8175,42 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8144
8175
|
} else {
|
8145
8176
|
if ((fieldFilter.includes && fieldFilter.includes.length == 0))
|
8146
8177
|
return {
|
8147
|
-
label: displayname + ' (
|
8148
|
-
tooltip: displayname + ' (
|
8178
|
+
label: displayname + (isGlobalFilter ? ': None' : ' (None)'),
|
8179
|
+
tooltip: displayname + (isGlobalFilter ? ' None' : ' (None)'),
|
8149
8180
|
};
|
8150
8181
|
else if ((fieldFilter.excludes && fieldFilter.excludes.length == 0))
|
8151
8182
|
return {
|
8152
|
-
label: displayname + ' (All)',
|
8153
|
-
tooltip: displayname + ' (All)'
|
8183
|
+
label: displayname + (isGlobalFilter ? ': All' : ' (All)'),
|
8184
|
+
tooltip: displayname + (isGlobalFilter ? ' All' : ' (All)'),
|
8154
8185
|
};
|
8155
8186
|
else if ((fieldFilter.includes))
|
8156
8187
|
return {
|
8157
|
-
label: displayname + ' (
|
8188
|
+
label: displayname + (isGlobalFilter ? ': ' + highchartsRenderer.getGlobalFilterValueHighlighter('Many') : ' (Many)'),
|
8158
8189
|
tooltip: displayname + ' (' +
|
8159
8190
|
lodash.map(fieldFilter.includes, item => highchartsRenderer.returnRawDataValue(fieldFilter.type, item, fieldFilter.format)).join(', ') +
|
8160
8191
|
')'
|
8161
8192
|
};
|
8162
|
-
else
|
8163
|
-
|
8164
|
-
|
8165
|
-
|
8166
|
-
|
8167
|
-
|
8168
|
-
|
8193
|
+
else {
|
8194
|
+
const label = displayname + (isGlobalFilter ? ': ' + highchartsRenderer.getGlobalFilterValueHighlighter('Exclusions: Many') : ' (Exclusions Many)');
|
8195
|
+
return {
|
8196
|
+
label,
|
8197
|
+
tooltip: displayname + ' (Exclusions: ' +
|
8198
|
+
lodash.map(fieldFilter.excludes, item => highchartsRenderer.returnRawDataValue(fieldFilter.type, item, fieldFilter.format)).join(', ') +
|
8199
|
+
')'
|
8200
|
+
};
|
8201
|
+
}
|
8169
8202
|
}
|
8170
8203
|
} else {
|
8171
8204
|
if (fieldFilter && fieldFilter.type && fieldFilter.type === 'Date' && fieldFilter.datetypevalues) {
|
8172
8205
|
if (fieldFilter.datetypevalues.datetype === "frame") {
|
8173
|
-
|
8206
|
+
const timeframeLabel = highchartsRenderer.DATE_FILTER_TIMEFRAME_LABELS[fieldFilter.datetypevalues.val.timeframe] || highchartsRenderer.getDateFilterCustomTimeframeLabel(fieldFilter.datetypevalues.val);
|
8207
|
+
if (isGlobalFilter) {
|
8208
|
+
return {
|
8209
|
+
label: displayname + ': ' + highchartsRenderer.getGlobalFilterValueHighlighter(timeframeLabel),
|
8210
|
+
tooltip: displayname + ': ' + timeframeLabel,
|
8211
|
+
}
|
8212
|
+
}
|
8213
|
+
displayname += ` (${ timeframeLabel })`;
|
8174
8214
|
} else if (fieldFilter.datetypevalues.datetype === "range") {
|
8175
8215
|
const dates = {
|
8176
8216
|
from: { timestamp: fieldFilter.datetypevalues.val.fromdate, displayedValue: '' },
|
@@ -8189,16 +8229,29 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8189
8229
|
.toLocaleDateString();
|
8190
8230
|
}
|
8191
8231
|
});
|
8232
|
+
if (isGlobalFilter) {
|
8233
|
+
displayname += `: ${ highchartsRenderer.getGlobalFilterValueHighlighter(dates.from.displayedValue + '-' + dates.to.displayedValue) }`;
|
8234
|
+
return {
|
8235
|
+
label: displayname,
|
8236
|
+
tooltip: dates.from.displayedValue + '-' + dates.to.displayedValue,
|
8237
|
+
}
|
8238
|
+
}
|
8192
8239
|
displayname += ` (${ dates.from.displayedValue }-${ dates.to.displayedValue })`;
|
8193
8240
|
} else {
|
8194
|
-
displayname += ' (All)';
|
8241
|
+
displayname += isGlobalFilter ? ': All' : ' (All)';
|
8195
8242
|
}
|
8196
8243
|
} else if (fieldFilter &&
|
8197
8244
|
((fieldFilter.values && fieldFilter.values.type === 'advanced') || (fieldFilter.datetypevalues && fieldFilter.datetypevalues.type === 'advanced'))) {
|
8198
|
-
displayname += ' (Advanced)';
|
8245
|
+
displayname += (isGlobalFilter ? ': ' + highchartsRenderer.getGlobalFilterValueHighlighter('Advanced') : ' (Advanced)');
|
8246
|
+
return {
|
8247
|
+
label: displayname,
|
8248
|
+
tooltip: isGlobalFilter ? 'Advanced' : displayname,
|
8249
|
+
};
|
8250
|
+
|
8199
8251
|
} else {
|
8200
|
-
displayname += ' (All)';
|
8252
|
+
displayname += isGlobalFilter ? ': All' : ' (All)';
|
8201
8253
|
}
|
8254
|
+
|
8202
8255
|
return {
|
8203
8256
|
label: displayname,
|
8204
8257
|
tooltip: displayname
|
@@ -8206,6 +8259,27 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
8206
8259
|
}
|
8207
8260
|
};
|
8208
8261
|
|
8262
|
+
highchartsRenderer.getGlobalFilterValueHighlighter = function (value) {
|
8263
|
+
return `<span class="filters-values-label">${ value }</span>`;
|
8264
|
+
}
|
8265
|
+
|
8266
|
+
highchartsRenderer.getDateFilterCustomTimeframeLabel = function (value) {
|
8267
|
+
if (!value || !value.timeframe || !value.timeframe.startsWith('x')) return 'Custom';
|
8268
|
+
|
8269
|
+
const deltaDirectionLabel = value.delta_direction === 'next' ? 'Next' : 'Last';
|
8270
|
+
return `${ deltaDirectionLabel } ${ value.delta_absolute } ${ helpers.capitalize(value.timeframe.slice(1)) }${ value.delta_absolute > 1 ? 's' : '' }`
|
8271
|
+
}
|
8272
|
+
|
8273
|
+
highchartsRenderer.getGlobalFilterCounterString = function(all_vals) {
|
8274
|
+
const counterStartsAt = highchartsRenderer.MAX_SELECTED_ITEMS_BEFORE_SHOWING_COUNTER;
|
8275
|
+
|
8276
|
+
all_vals = all_vals.slice(0, -1).slice(counterStartsAt - 1, all_vals.length);
|
8277
|
+
all_vals = all_vals.split(',');
|
8278
|
+
if (all_vals.length > counterStartsAt) all_vals = all_vals.slice(0, counterStartsAt - 1) + ' + ' + (all_vals.length - (counterStartsAt - 1));
|
8279
|
+
all_vals = highchartsRenderer.getGlobalFilterValueHighlighter(all_vals);
|
8280
|
+
return all_vals;
|
8281
|
+
}
|
8282
|
+
|
8209
8283
|
highchartsRenderer.getRelevantFilters = function (filtersList) {
|
8210
8284
|
var dashboardsFilters = lodash.filter(filtersList, function (element) {
|
8211
8285
|
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([]);
|