@datarailsshared/dr_renderer 1.5.52 → 1.5.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/highcharts_renderer.js +22 -176
- package/tests/highcharts_renderer.test.js +1 -421
package/package.json
CHANGED
|
@@ -463,6 +463,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
463
463
|
].includes(type);
|
|
464
464
|
};
|
|
465
465
|
|
|
466
|
+
const objectCopyJsonMethod = function (o) {
|
|
467
|
+
if(!o) return 0;
|
|
468
|
+
return JSON.parse(JSON.stringify(o));
|
|
469
|
+
};
|
|
470
|
+
|
|
466
471
|
/**
|
|
467
472
|
* @param {String} value
|
|
468
473
|
* @param {{ useUnitAbbreviation: boolean } labelOptions
|
|
@@ -495,7 +500,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
495
500
|
if (offset > highchartsRenderer.highcharts_theme.colors.length) {
|
|
496
501
|
offset = offset % highchartsRenderer.highcharts_theme.colors.length;
|
|
497
502
|
}
|
|
498
|
-
var colors_to_return =
|
|
503
|
+
var colors_to_return = objectCopyJsonMethod(highchartsRenderer.highcharts_theme.colors);
|
|
499
504
|
for (var i = 0; i < offset; i++) {
|
|
500
505
|
//colors_to_return.unshift(colors_to_return.pop());
|
|
501
506
|
colors_to_return.push(colors_to_return.shift());
|
|
@@ -536,38 +541,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
536
541
|
return str;
|
|
537
542
|
};
|
|
538
543
|
|
|
539
|
-
highchartsRenderer.updateDashboardFilterObject = function (value, dashboardId) {
|
|
540
|
-
value.excludes = null;
|
|
541
|
-
value.includes = null;
|
|
542
|
-
if (value.values && value.values.datetype && value.values.datetype != 'list') {
|
|
543
|
-
value.datetypevalues = value.values;
|
|
544
|
-
} else if (value.is_excluded) {
|
|
545
|
-
value.excludes = value.values;
|
|
546
|
-
} else {
|
|
547
|
-
value.includes = value.values;
|
|
548
|
-
}
|
|
549
|
-
value.dashboard = dashboardId;
|
|
550
|
-
};
|
|
551
|
-
|
|
552
|
-
highchartsRenderer.createDashboardFilterObject = function (value) {
|
|
553
|
-
var filtOb = {};
|
|
554
|
-
if (value.datetypevalues && value.datetypevalues.datetype !== 'list') {
|
|
555
|
-
filtOb.values = value.datetypevalues;
|
|
556
|
-
filtOb.is_excluded = false;
|
|
557
|
-
} else if (value.excludes) {
|
|
558
|
-
filtOb.is_excluded = true;
|
|
559
|
-
filtOb.values = value.excludes;
|
|
560
|
-
} else {
|
|
561
|
-
filtOb.is_excluded = false;
|
|
562
|
-
filtOb.values = value.includes;
|
|
563
|
-
}
|
|
564
|
-
filtOb.fields = value.fields;
|
|
565
|
-
filtOb.id = value.id;
|
|
566
|
-
filtOb.type = value.type;
|
|
567
|
-
filtOb.name = value.name;
|
|
568
|
-
return filtOb;
|
|
569
|
-
};
|
|
570
|
-
|
|
571
544
|
highchartsRenderer.createValFieldObject = function (value) {
|
|
572
545
|
var valFieldOb = {};
|
|
573
546
|
valFieldOb.field = value.id;
|
|
@@ -926,12 +899,14 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
926
899
|
if (this.category) {
|
|
927
900
|
category_text = '';
|
|
928
901
|
}
|
|
902
|
+
|
|
929
903
|
var series_text = '<br/>' + '<span style="font-weight: bold; color: ' + this.series.color + ';">\u200E' + this.series.name + '</span>';
|
|
930
904
|
if (tooltipOptions.show_value) {
|
|
931
905
|
series_text += ': '
|
|
932
906
|
}
|
|
933
907
|
|
|
934
|
-
|
|
908
|
+
// Hide series label for TOTAL points (e.g., Walkthrough TOTAL column)
|
|
909
|
+
if (lodash.get(this, 'point.options.isTotal')) {
|
|
935
910
|
series_text = ': ';
|
|
936
911
|
}
|
|
937
912
|
|
|
@@ -2316,11 +2291,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
2316
2291
|
|
|
2317
2292
|
|
|
2318
2293
|
highchartsRenderer.transformOldGaugeOptions = (oldOptions) => {
|
|
2319
|
-
const newOptions =
|
|
2294
|
+
const newOptions = objectCopyJsonMethod(oldOptions);
|
|
2320
2295
|
const { range, segments } = newOptions;
|
|
2321
2296
|
|
|
2322
2297
|
if (!segments) {
|
|
2323
|
-
newOptions.segments =
|
|
2298
|
+
newOptions.segments = objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.segments);
|
|
2324
2299
|
}
|
|
2325
2300
|
|
|
2326
2301
|
if (!range) {
|
|
@@ -2335,7 +2310,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
2335
2310
|
});
|
|
2336
2311
|
|
|
2337
2312
|
if (!newOptions.goal) {
|
|
2338
|
-
newOptions.goal =
|
|
2313
|
+
newOptions.goal = objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.goal);
|
|
2339
2314
|
}
|
|
2340
2315
|
|
|
2341
2316
|
newOptions.goal.value = 1 * range.max || newOptions.goal.value;
|
|
@@ -5225,11 +5200,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5225
5200
|
}
|
|
5226
5201
|
};
|
|
5227
5202
|
|
|
5228
|
-
highchartsRenderer.objectCopyJsonMethod = function (o) {
|
|
5229
|
-
if(!o) return 0;
|
|
5230
|
-
return JSON.parse(JSON.stringify(o));
|
|
5231
|
-
};
|
|
5232
|
-
|
|
5233
5203
|
highchartsRenderer.updateBackwardCompatibleWidgetOptions = function(options, type) {
|
|
5234
5204
|
if (lodash.get(options, 'chartOptions.chart.hideLegends', false)) {
|
|
5235
5205
|
options.chartOptions.legends_position = { value: 'none' };
|
|
@@ -5337,7 +5307,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5337
5307
|
highchartsRenderer.addPivotOptions = function (selectedTemplateWOData, widgetOptions, drilldownFunction, drillDownListFunction) {
|
|
5338
5308
|
// Check if not rendered data, than it will render
|
|
5339
5309
|
|
|
5340
|
-
var fields =
|
|
5310
|
+
var fields = objectCopyJsonMethod(selectedTemplateWOData.fields);
|
|
5341
5311
|
var fieldOb;
|
|
5342
5312
|
var xaxisFields = [];
|
|
5343
5313
|
var legendFields = [];
|
|
@@ -5438,7 +5408,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5438
5408
|
highchartsRenderer.addTemplateDataToExTableOptions = function (selectedTemplate, exTableOptions) {
|
|
5439
5409
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5440
5410
|
|
|
5441
|
-
var fields =
|
|
5411
|
+
var fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5442
5412
|
var fieldOb;
|
|
5443
5413
|
var filterFields = [];
|
|
5444
5414
|
var selectedFields = [];
|
|
@@ -5486,13 +5456,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5486
5456
|
exTableOptions.pivot.fieldsArray = fields;
|
|
5487
5457
|
exTableOptions.pivot.selectedFieldsArray = selectedFields;
|
|
5488
5458
|
exTableOptions.pivot.filtersArray = filterFields;
|
|
5489
|
-
exTableOptions.pivot.calculatedValues =
|
|
5459
|
+
exTableOptions.pivot.calculatedValues = objectCopyJsonMethod(exTableOptions.calculated_values || []);
|
|
5490
5460
|
};
|
|
5491
5461
|
|
|
5492
5462
|
highchartsRenderer.addTemplateDataToDynamicRangeOptions = function (selectedTemplate, dynamicRangeOptions) {
|
|
5493
5463
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5494
5464
|
|
|
5495
|
-
var fields =
|
|
5465
|
+
var fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5496
5466
|
var fieldOb;
|
|
5497
5467
|
var filterFields = [];
|
|
5498
5468
|
var selectedFields = [];
|
|
@@ -5537,12 +5507,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5537
5507
|
dynamicRangeOptions.pivot.fieldsArray = fields;
|
|
5538
5508
|
dynamicRangeOptions.pivot.selectedFieldsArray = selectedFields;
|
|
5539
5509
|
dynamicRangeOptions.pivot.filtersArray = filterFields;
|
|
5540
|
-
dynamicRangeOptions.pivot.calculatedValues =
|
|
5510
|
+
dynamicRangeOptions.pivot.calculatedValues = objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
|
|
5541
5511
|
}
|
|
5542
5512
|
|
|
5543
5513
|
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions, calcModelPredefinedField, isInputStep) {
|
|
5544
5514
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5545
|
-
const fields =
|
|
5515
|
+
const fields = objectCopyJsonMethod(selectedTemplate.fields);
|
|
5546
5516
|
const predefinedField = lodash.cloneDeep(calcModelPredefinedField);
|
|
5547
5517
|
|
|
5548
5518
|
const fillData = (fieldsArr, ignoreFieldsIdToRemove = []) => {
|
|
@@ -5682,7 +5652,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5682
5652
|
|
|
5683
5653
|
let fieldOb;
|
|
5684
5654
|
|
|
5685
|
-
const fields =
|
|
5655
|
+
const fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5686
5656
|
const filterFields = [];
|
|
5687
5657
|
const valuesFields = [];
|
|
5688
5658
|
|
|
@@ -5746,7 +5716,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5746
5716
|
functionOptions.pivot.fieldsArray = fields;
|
|
5747
5717
|
functionOptions.pivot.valuesArray = valuesFields;
|
|
5748
5718
|
functionOptions.pivot.filtersArray = filterFields;
|
|
5749
|
-
functionOptions.pivot.calculatedValues =
|
|
5719
|
+
functionOptions.pivot.calculatedValues = objectCopyJsonMethod(functionOptions.calculated_values || []);
|
|
5750
5720
|
};
|
|
5751
5721
|
|
|
5752
5722
|
highchartsRenderer.addTemplateDataToWidgetOptions = function (selectedTemplate, widgetOptions, doNotRemoveFilters) {
|
|
@@ -5755,7 +5725,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5755
5725
|
|
|
5756
5726
|
const options = typeof widgetOptions.options === 'string' ? JSON.parse(widgetOptions.options) : widgetOptions.options;
|
|
5757
5727
|
|
|
5758
|
-
var fields =
|
|
5728
|
+
var fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5759
5729
|
var fieldOb;
|
|
5760
5730
|
var xaxisFields = [];
|
|
5761
5731
|
var legendFields = [];
|
|
@@ -5851,7 +5821,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5851
5821
|
widgetOptions.pivot.sorters = sorters;
|
|
5852
5822
|
}
|
|
5853
5823
|
|
|
5854
|
-
widgetOptions.pivot.calculatedValues =
|
|
5824
|
+
widgetOptions.pivot.calculatedValues = objectCopyJsonMethod(widgetOptions.calculated_values || []);
|
|
5855
5825
|
widgetOptions.pivot.fieldsArray = fields;
|
|
5856
5826
|
widgetOptions.pivot.axisArray = xaxisFields;
|
|
5857
5827
|
widgetOptions.pivot.legendArray = legendFields;
|
|
@@ -8764,32 +8734,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8764
8734
|
return all_vals;
|
|
8765
8735
|
}
|
|
8766
8736
|
|
|
8767
|
-
highchartsRenderer.getRelevantFilters = function (filtersList) {
|
|
8768
|
-
var dashboardsFilters = lodash.filter(filtersList, function (element) {
|
|
8769
|
-
return (element.hasOwnProperty('includes') && element.includes != null) || (element.hasOwnProperty('excludes') && element.excludes != null) ||
|
|
8770
|
-
(element.datetypevalues && element.datetypevalues.datetype != 'list')
|
|
8771
|
-
});
|
|
8772
|
-
dashboardsFilters = lodash.map(dashboardsFilters, function (element) {
|
|
8773
|
-
var ret = {
|
|
8774
|
-
id: element.id,
|
|
8775
|
-
fields: element.fields,
|
|
8776
|
-
};
|
|
8777
|
-
if (element.datetypevalues && element.datetypevalues.datetype != 'list')
|
|
8778
|
-
ret['values'] = element.datetypevalues;
|
|
8779
|
-
else {
|
|
8780
|
-
ret['values'] = element['includes'] || element['excludes'] || [];
|
|
8781
|
-
ret['values'] = lodash.isArray(ret['values']) ? ret['values'].filter(function (n) {
|
|
8782
|
-
return n != undefined
|
|
8783
|
-
}) : ret['values'];
|
|
8784
|
-
}
|
|
8785
|
-
ret['is_excluded'] = element.hasOwnProperty('excludes') && element.excludes != null;
|
|
8786
|
-
ret['inject_only'] = element.hasOwnProperty('inject_only') ? element.inject_only : false;
|
|
8787
|
-
return ret;
|
|
8788
|
-
});
|
|
8789
|
-
|
|
8790
|
-
return dashboardsFilters;
|
|
8791
|
-
};
|
|
8792
|
-
|
|
8793
8737
|
highchartsRenderer.parseOptionsToObject = function (options) {
|
|
8794
8738
|
if (typeof options == 'object')
|
|
8795
8739
|
return options;
|
|
@@ -8802,104 +8746,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8802
8746
|
return options;
|
|
8803
8747
|
};
|
|
8804
8748
|
|
|
8805
|
-
highchartsRenderer.getDashboardOverrideValues = function (data_model, graph, local_current_dashboard) {
|
|
8806
|
-
let overrideValues = [];
|
|
8807
|
-
|
|
8808
|
-
if (!local_current_dashboard) {
|
|
8809
|
-
local_current_dashboard = data_model.current_dashboard;
|
|
8810
|
-
}
|
|
8811
|
-
|
|
8812
|
-
if (data_model.ebmedded_override_value_ids && data_model.ebmedded_override_value_ids.length > 0) {
|
|
8813
|
-
return lodash.map(data_model.ebmedded_override_value_ids, function (value_id) {
|
|
8814
|
-
return {"id": value_id}
|
|
8815
|
-
});
|
|
8816
|
-
}
|
|
8817
|
-
|
|
8818
|
-
if (local_current_dashboard && graph && graph.vals && graph.vals.length == 1) {
|
|
8819
|
-
// Check Field Selector
|
|
8820
|
-
let selector = lodash.find(local_current_dashboard.fields_selectors, function (dashboard_Selector) {
|
|
8821
|
-
if (dashboard_Selector && dashboard_Selector.value && dashboard_Selector.fields_selector && dashboard_Selector.fields_selector.default_field) {
|
|
8822
|
-
if (dashboard_Selector.fields_selector.default_field.id == graph.vals[0].field) {
|
|
8823
|
-
return true;
|
|
8824
|
-
}
|
|
8825
|
-
}
|
|
8826
|
-
return false;
|
|
8827
|
-
});
|
|
8828
|
-
if (selector && selector.value != graph.vals[0].field) {
|
|
8829
|
-
let temp_field = lodash.find(selector.fields_selector.other_fields, {id: selector.value});
|
|
8830
|
-
let name = "no_name_for_selected";
|
|
8831
|
-
if (temp_field) {
|
|
8832
|
-
name = temp_field.name;
|
|
8833
|
-
}
|
|
8834
|
-
overrideValues = [{id: selector.value, name: name}];
|
|
8835
|
-
}
|
|
8836
|
-
}
|
|
8837
|
-
return overrideValues;
|
|
8838
|
-
};
|
|
8839
|
-
|
|
8840
|
-
highchartsRenderer.getDashboardFilters = function (data_model, remove_filters_from_global, local_current_dashboard) {
|
|
8841
|
-
var dashboardsFilters = [];
|
|
8842
|
-
|
|
8843
|
-
if (local_current_dashboard == undefined) {
|
|
8844
|
-
local_current_dashboard = data_model.current_dashboard;
|
|
8845
|
-
}
|
|
8846
|
-
|
|
8847
|
-
if (data_model.ebmedded_filters) {
|
|
8848
|
-
dashboardsFilters = dashboardsFilters.concat(data_model.ebmedded_filters);
|
|
8849
|
-
}
|
|
8850
|
-
|
|
8851
|
-
if (local_current_dashboard && local_current_dashboard.filters) {
|
|
8852
|
-
dashboardsFilters = dashboardsFilters.concat(highchartsRenderer.getRelevantFilters(local_current_dashboard.filters));
|
|
8853
|
-
}
|
|
8854
|
-
|
|
8855
|
-
if (remove_filters_from_global) {
|
|
8856
|
-
dashboardsFilters = highchartsRenderer.objectCopyJsonMethod(dashboardsFilters);
|
|
8857
|
-
lodash.forEach(remove_filters_from_global, function (field) {
|
|
8858
|
-
lodash.forEach(dashboardsFilters, function (df) {
|
|
8859
|
-
lodash.remove(df.fields, {id: field.id});
|
|
8860
|
-
});
|
|
8861
|
-
});
|
|
8862
|
-
|
|
8863
|
-
lodash.remove(dashboardsFilters, (df) => df.fields.length == 0);
|
|
8864
|
-
}
|
|
8865
|
-
|
|
8866
|
-
return dashboardsFilters;
|
|
8867
|
-
};
|
|
8868
|
-
|
|
8869
|
-
highchartsRenderer.getPresentationTagType = function (data_model, local_current_dashboard) {
|
|
8870
|
-
if (local_current_dashboard == undefined) {
|
|
8871
|
-
local_current_dashboard = data_model.current_dashboard;
|
|
8872
|
-
}
|
|
8873
|
-
|
|
8874
|
-
if (local_current_dashboard.date_tags && local_current_dashboard.date_tags.length > 0) {
|
|
8875
|
-
return 'date_tags';
|
|
8876
|
-
}
|
|
8877
|
-
|
|
8878
|
-
if (local_current_dashboard.plan_tags && local_current_dashboard.plan_tags.length > 0) {
|
|
8879
|
-
return 'plan_tags';
|
|
8880
|
-
}
|
|
8881
|
-
};
|
|
8882
|
-
|
|
8883
|
-
highchartsRenderer.getPresentationDataTag = function (data_model, local_current_dashboard, dataKeyTag = 'date_tags') {
|
|
8884
|
-
let presentation_data_tag = null;
|
|
8885
|
-
|
|
8886
|
-
if (local_current_dashboard == undefined) {
|
|
8887
|
-
local_current_dashboard = data_model.current_dashboard;
|
|
8888
|
-
}
|
|
8889
|
-
|
|
8890
|
-
if (local_current_dashboard && local_current_dashboard.presentation_data_tag_object) {
|
|
8891
|
-
presentation_data_tag = local_current_dashboard.presentation_data_tag_object.value;
|
|
8892
|
-
}
|
|
8893
|
-
else if(local_current_dashboard && local_current_dashboard[dataKeyTag] && local_current_dashboard[dataKeyTag].length > 0){
|
|
8894
|
-
local_current_dashboard.presentation_data_tag_object = lodash.clone(lodash.maxBy(local_current_dashboard[dataKeyTag], 'value'));
|
|
8895
|
-
if(local_current_dashboard.presentation_data_tag_object){
|
|
8896
|
-
presentation_data_tag = local_current_dashboard.presentation_data_tag_object.value;
|
|
8897
|
-
}
|
|
8898
|
-
}
|
|
8899
|
-
|
|
8900
|
-
return presentation_data_tag;
|
|
8901
|
-
};
|
|
8902
|
-
|
|
8903
8749
|
highchartsRenderer.isDate = function (date) {
|
|
8904
8750
|
return new Date(date) !== "Invalid Date" && !isNaN(new Date(date));
|
|
8905
8751
|
};
|
|
@@ -275,83 +275,6 @@ describe('highcharts_renderer', () => {
|
|
|
275
275
|
});
|
|
276
276
|
});
|
|
277
277
|
|
|
278
|
-
describe('function updateDashboardFilterObject', () => {
|
|
279
|
-
const dashboardId = 1;
|
|
280
|
-
|
|
281
|
-
it('Filter includes', () => {
|
|
282
|
-
const object = {
|
|
283
|
-
values: ['test']
|
|
284
|
-
};
|
|
285
|
-
highchartsRenderer.updateDashboardFilterObject(object, dashboardId);
|
|
286
|
-
expect(object.includes).toEqual(object.values);
|
|
287
|
-
expect(object.excludes).toEqual(null);
|
|
288
|
-
expect(object.dashboard).toEqual(dashboardId);
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
it('Filter excludes', () => {
|
|
292
|
-
const object = {
|
|
293
|
-
is_excluded: true,
|
|
294
|
-
values: ['test'],
|
|
295
|
-
};
|
|
296
|
-
highchartsRenderer.updateDashboardFilterObject(object, dashboardId);
|
|
297
|
-
expect(object.includes).toEqual(null);
|
|
298
|
-
expect(object.excludes).toEqual(object.values);
|
|
299
|
-
expect(object.dashboard).toEqual(dashboardId);
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
it('Filter date', () => {
|
|
303
|
-
const object = {
|
|
304
|
-
is_excluded: true,
|
|
305
|
-
values: {
|
|
306
|
-
datetype: 'range'
|
|
307
|
-
},
|
|
308
|
-
};
|
|
309
|
-
highchartsRenderer.updateDashboardFilterObject(object, dashboardId);
|
|
310
|
-
expect(object.includes).toEqual(null);
|
|
311
|
-
expect(object.excludes).toEqual(null);
|
|
312
|
-
expect(object.datetypevalues ).toEqual(object.values);
|
|
313
|
-
expect(object.dashboard).toEqual(dashboardId);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
describe('function createDashboardFilterObject', () => {
|
|
318
|
-
let value;
|
|
319
|
-
beforeEach(() => {
|
|
320
|
-
value = {
|
|
321
|
-
id: 1,
|
|
322
|
-
type: 'Float',
|
|
323
|
-
name: 'name',
|
|
324
|
-
fields: [1,3,4],
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
it('Filter includes', () => {
|
|
329
|
-
value.includes = [123];
|
|
330
|
-
const filter = highchartsRenderer.createDashboardFilterObject(value);
|
|
331
|
-
expect(filter.values).toEqual(value.includes);
|
|
332
|
-
expect(filter.is_excluded).toEqual(false);
|
|
333
|
-
expect(filter.fields).toEqual(value.fields);
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
it('Filter excludes', () => {
|
|
337
|
-
value.excludes = [123];
|
|
338
|
-
const filter = highchartsRenderer.createDashboardFilterObject(value);
|
|
339
|
-
expect(filter.values).toEqual(value.excludes);
|
|
340
|
-
expect(filter.is_excluded).toEqual(true);
|
|
341
|
-
expect(filter.fields).toEqual(value.fields);
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
it('Filter date', () => {
|
|
345
|
-
value.datetypevalues = {
|
|
346
|
-
datetype: 'range'
|
|
347
|
-
};
|
|
348
|
-
const filter = highchartsRenderer.createDashboardFilterObject(value);
|
|
349
|
-
expect(filter.values).toEqual(value.datetypevalues);
|
|
350
|
-
expect(filter.is_excluded).toEqual(false);
|
|
351
|
-
expect(filter.fields).toEqual(value.fields);
|
|
352
|
-
});
|
|
353
|
-
});
|
|
354
|
-
|
|
355
278
|
describe('function createValFieldObject', () => {
|
|
356
279
|
const value = {
|
|
357
280
|
id: 1,
|
|
@@ -1900,26 +1823,6 @@ describe('highcharts_renderer', () => {
|
|
|
1900
1823
|
});
|
|
1901
1824
|
});
|
|
1902
1825
|
|
|
1903
|
-
describe("function objectCopyJsonMethod", () => {
|
|
1904
|
-
it("should return null for null input", () => {
|
|
1905
|
-
expect(highchartsRenderer.objectCopyJsonMethod(null)).toBe(0);
|
|
1906
|
-
});
|
|
1907
|
-
|
|
1908
|
-
it("should return a copy of the object", () => {
|
|
1909
|
-
const obj = { a: 1, b: 2 };
|
|
1910
|
-
const objCopy = highchartsRenderer.objectCopyJsonMethod(obj);
|
|
1911
|
-
expect(objCopy).toEqual(obj);
|
|
1912
|
-
expect(objCopy).not.toBe(obj);
|
|
1913
|
-
});
|
|
1914
|
-
|
|
1915
|
-
it("should return a copy of the array", () => {
|
|
1916
|
-
const arr = [1, 2, 3];
|
|
1917
|
-
const arrCopy = highchartsRenderer.objectCopyJsonMethod(arr);
|
|
1918
|
-
expect(arrCopy).toEqual(arr);
|
|
1919
|
-
expect(arrCopy).not.toBe(arr);
|
|
1920
|
-
});
|
|
1921
|
-
});
|
|
1922
|
-
|
|
1923
1826
|
describe("function updateBackwardCompatibleWidgetOptions", () => {
|
|
1924
1827
|
it("should delete chart 'hideLegends' option if exists and true", () => {
|
|
1925
1828
|
const options = {
|
|
@@ -4469,96 +4372,6 @@ describe('highcharts_renderer', () => {
|
|
|
4469
4372
|
});
|
|
4470
4373
|
});
|
|
4471
4374
|
|
|
4472
|
-
describe('function getRelevantFilters', () => {
|
|
4473
|
-
it('should return an empty array if given an empty array', () => {
|
|
4474
|
-
const filters = highchartsRenderer.getRelevantFilters([]);
|
|
4475
|
-
expect(filters).toEqual([]);
|
|
4476
|
-
});
|
|
4477
|
-
|
|
4478
|
-
it('should filter out elements that do not have includes, excludes, or datetypevalues properties', () => {
|
|
4479
|
-
const filters = [
|
|
4480
|
-
{fields: ['field1'], otherProperty: 'value'},
|
|
4481
|
-
{fields: ['field2'], includes: [1, 2, 3]},
|
|
4482
|
-
{fields: ['field3'], excludes: ['abc']},
|
|
4483
|
-
{fields: ['field4'], datetypevalues: {datetype: 'date', start: '2022-01-01', end: '2022-01-31'}}
|
|
4484
|
-
];
|
|
4485
|
-
const relevantFilters = highchartsRenderer.getRelevantFilters(filters);
|
|
4486
|
-
expect(relevantFilters.length).toEqual(3);
|
|
4487
|
-
expect(relevantFilters).toContainEqual({
|
|
4488
|
-
fields: ['field2'],
|
|
4489
|
-
values: [1, 2, 3],
|
|
4490
|
-
is_excluded: false,
|
|
4491
|
-
inject_only: false
|
|
4492
|
-
});
|
|
4493
|
-
expect(relevantFilters).toContainEqual({
|
|
4494
|
-
fields: ['field3'],
|
|
4495
|
-
values: ['abc'],
|
|
4496
|
-
is_excluded: true,
|
|
4497
|
-
inject_only: false
|
|
4498
|
-
});
|
|
4499
|
-
expect(relevantFilters).toContainEqual({
|
|
4500
|
-
fields: ['field4'],
|
|
4501
|
-
values: {datetype: 'date', start: '2022-01-01', end: '2022-01-31'},
|
|
4502
|
-
is_excluded: false,
|
|
4503
|
-
inject_only: false
|
|
4504
|
-
});
|
|
4505
|
-
});
|
|
4506
|
-
|
|
4507
|
-
it('should handle empty includes and excludes properties by returning an empty values array', () => {
|
|
4508
|
-
const filters = [
|
|
4509
|
-
{fields: ['field1'], includes: []},
|
|
4510
|
-
{fields: ['field2'], includes: [1, 2, 3], excludes: []},
|
|
4511
|
-
{fields: ['field3'], excludes: ['abc']}
|
|
4512
|
-
];
|
|
4513
|
-
const relevantFilters = highchartsRenderer.getRelevantFilters(filters);
|
|
4514
|
-
expect(relevantFilters.length).toEqual(3);
|
|
4515
|
-
expect(relevantFilters[0].values).toEqual([]);
|
|
4516
|
-
expect(relevantFilters[1].values).toEqual([1, 2, 3]);
|
|
4517
|
-
expect(relevantFilters[2].values).toEqual(['abc']);
|
|
4518
|
-
});
|
|
4519
|
-
|
|
4520
|
-
it('should set is_excluded to true for elements that have an excludes property', () => {
|
|
4521
|
-
const filters = [
|
|
4522
|
-
{fields: ['field1'], includes: [1, 2, 3]},
|
|
4523
|
-
{fields: ['field2'], excludes: ['abc']},
|
|
4524
|
-
{fields: ['field3'], excludes: [null]}
|
|
4525
|
-
];
|
|
4526
|
-
const relevantFilters = highchartsRenderer.getRelevantFilters(filters);
|
|
4527
|
-
expect(relevantFilters.length).toEqual(3);
|
|
4528
|
-
expect(relevantFilters[0].is_excluded).toBe(false);
|
|
4529
|
-
expect(relevantFilters[1].is_excluded).toBe(true);
|
|
4530
|
-
expect(relevantFilters[2].is_excluded).toBe(true);
|
|
4531
|
-
});
|
|
4532
|
-
|
|
4533
|
-
it('should handle datetypevalues', () => {
|
|
4534
|
-
const filtersList = [
|
|
4535
|
-
{
|
|
4536
|
-
fields: ['date'],
|
|
4537
|
-
datetypevalues: {
|
|
4538
|
-
datetype: 'last_month',
|
|
4539
|
-
from: null,
|
|
4540
|
-
to: null
|
|
4541
|
-
}
|
|
4542
|
-
}
|
|
4543
|
-
];
|
|
4544
|
-
|
|
4545
|
-
const expected = [
|
|
4546
|
-
{
|
|
4547
|
-
fields: ['date'],
|
|
4548
|
-
values: {
|
|
4549
|
-
datetype: 'last_month',
|
|
4550
|
-
from: null,
|
|
4551
|
-
to: null
|
|
4552
|
-
},
|
|
4553
|
-
is_excluded: false,
|
|
4554
|
-
inject_only: false
|
|
4555
|
-
}
|
|
4556
|
-
];
|
|
4557
|
-
|
|
4558
|
-
expect(highchartsRenderer.getRelevantFilters(filtersList)).toEqual(expected);
|
|
4559
|
-
});
|
|
4560
|
-
});
|
|
4561
|
-
|
|
4562
4375
|
describe('function parseOptionsToObject', () => {
|
|
4563
4376
|
it('should return an object when given an object', () => {
|
|
4564
4377
|
const obj = { key: 'value' };
|
|
@@ -4588,240 +4401,7 @@ describe('highcharts_renderer', () => {
|
|
|
4588
4401
|
expect(() => highchartsRenderer.parseOptionsToObject(str)).toThrow();
|
|
4589
4402
|
});
|
|
4590
4403
|
});
|
|
4591
|
-
|
|
4592
|
-
describe('function getDashboardOverrideValues', () => {
|
|
4593
|
-
let dataModel;
|
|
4594
|
-
let graph;
|
|
4595
|
-
let localCurrentDashboard;
|
|
4596
|
-
|
|
4597
|
-
beforeEach(() => {
|
|
4598
|
-
dataModel = {
|
|
4599
|
-
current_dashboard: {
|
|
4600
|
-
fields_selectors: [
|
|
4601
|
-
{
|
|
4602
|
-
value: 'field1',
|
|
4603
|
-
fields_selector: {
|
|
4604
|
-
default_field: { id: 'field1', name: 'Field 1' },
|
|
4605
|
-
other_fields: [
|
|
4606
|
-
{ id: 'field1', name: 'Field 1' },
|
|
4607
|
-
{ id: 'field2', name: 'Field 2' },
|
|
4608
|
-
]
|
|
4609
|
-
}
|
|
4610
|
-
},
|
|
4611
|
-
{
|
|
4612
|
-
value: 'field2',
|
|
4613
|
-
fields_selector: {
|
|
4614
|
-
default_field: { id: 'field2', name: 'Field 2' },
|
|
4615
|
-
other_fields: [
|
|
4616
|
-
{ id: 'field1', name: 'Field 1' },
|
|
4617
|
-
{ id: 'field2', name: 'Field 2' },
|
|
4618
|
-
]
|
|
4619
|
-
}
|
|
4620
|
-
}
|
|
4621
|
-
]
|
|
4622
|
-
},
|
|
4623
|
-
ebmedded_override_value_ids: []
|
|
4624
|
-
};
|
|
4625
|
-
|
|
4626
|
-
graph = {
|
|
4627
|
-
vals: [{ field: 'field1' }]
|
|
4628
|
-
};
|
|
4629
|
-
|
|
4630
|
-
localCurrentDashboard = {
|
|
4631
|
-
fields_selectors: [
|
|
4632
|
-
{
|
|
4633
|
-
value: 'field2',
|
|
4634
|
-
fields_selector: {
|
|
4635
|
-
default_field: { id: 'field1', name: 'Field 1' },
|
|
4636
|
-
other_fields: [
|
|
4637
|
-
{ id: 'field1', name: 'Field 1' },
|
|
4638
|
-
{ id: 'field2', name: 'Field 2' },
|
|
4639
|
-
]
|
|
4640
|
-
}
|
|
4641
|
-
}
|
|
4642
|
-
]
|
|
4643
|
-
};
|
|
4644
|
-
});
|
|
4645
|
-
|
|
4646
|
-
it('should return empty array when no conditions met', () => {
|
|
4647
|
-
expect(highchartsRenderer.getDashboardOverrideValues({}, {}, {})).toEqual([]);
|
|
4648
|
-
});
|
|
4649
|
-
|
|
4650
|
-
it('should return array of value objects when ebmedded_override_value_ids exist', () => {
|
|
4651
|
-
dataModel.ebmedded_override_value_ids = [1, 2, 3]
|
|
4652
|
-
expect(highchartsRenderer.getDashboardOverrideValues(dataModel, {}, {})).toEqual([
|
|
4653
|
-
{ id: 1 },
|
|
4654
|
-
{ id: 2 },
|
|
4655
|
-
{ id: 3 }
|
|
4656
|
-
]);
|
|
4657
|
-
});
|
|
4658
|
-
|
|
4659
|
-
it('should return empty array when local_current_dashboard undefined', () => {
|
|
4660
|
-
expect(highchartsRenderer.getDashboardOverrideValues({}, graph, undefined)).toEqual([]);
|
|
4661
|
-
});
|
|
4662
|
-
|
|
4663
|
-
it('should return empty array when graph undefined', () => {
|
|
4664
|
-
expect(highchartsRenderer.getDashboardOverrideValues(dataModel, undefined, localCurrentDashboard)).toEqual([]);
|
|
4665
|
-
});
|
|
4666
|
-
|
|
4667
|
-
it('should return empty array when graph vals empty', () => {
|
|
4668
|
-
expect(highchartsRenderer.getDashboardOverrideValues(dataModel, { vals: [] }, localCurrentDashboard)).toEqual([]);
|
|
4669
|
-
});
|
|
4670
|
-
|
|
4671
|
-
it('should return empty array when graph vals length > 1', () => {
|
|
4672
|
-
expect(highchartsRenderer.getDashboardOverrideValues(dataModel, { vals: [{ field: 'field1' }, { field: 'field2' }] }, localCurrentDashboard)).toEqual([]);
|
|
4673
|
-
});
|
|
4674
|
-
|
|
4675
|
-
it('should return empty array when no matching field selector', () => {
|
|
4676
|
-
expect(highchartsRenderer.getDashboardOverrideValues(dataModel, { vals: [{ field: 'field3' }] }, localCurrentDashboard)).toEqual([]);
|
|
4677
|
-
});
|
|
4678
|
-
|
|
4679
|
-
it('should return value object when selector value != graph val field', () => {
|
|
4680
|
-
expect(highchartsRenderer.getDashboardOverrideValues(dataModel, graph, localCurrentDashboard)).toEqual([{ id: 'field2', name: 'Field 2' }]);
|
|
4681
|
-
});
|
|
4682
|
-
});
|
|
4683
|
-
|
|
4684
|
-
describe('function getDashboardFilters', () => {
|
|
4685
|
-
let data_model;
|
|
4686
|
-
let remove_filters_from_global;
|
|
4687
|
-
|
|
4688
|
-
beforeEach(() => {
|
|
4689
|
-
data_model = {
|
|
4690
|
-
current_dashboard: {
|
|
4691
|
-
filters: [
|
|
4692
|
-
{
|
|
4693
|
-
fields: [{id: '1', name: 'Field 1'}],
|
|
4694
|
-
includes: ['value 1']
|
|
4695
|
-
},
|
|
4696
|
-
{
|
|
4697
|
-
fields: [{id: '2', name: 'Field 2'}],
|
|
4698
|
-
includes: ['value 2']
|
|
4699
|
-
}
|
|
4700
|
-
]
|
|
4701
|
-
},
|
|
4702
|
-
ebmedded_filters: []
|
|
4703
|
-
};
|
|
4704
|
-
remove_filters_from_global = [{id: '2', name: 'Field 2'}];
|
|
4705
|
-
});
|
|
4706
|
-
|
|
4707
|
-
it('should return an empty array when no relevant filters found', () => {
|
|
4708
|
-
const local_current_dashboard = {
|
|
4709
|
-
fields_selectors: [{value: '1', fields_selector: {default_field: {id: '1'}}}]
|
|
4710
|
-
};
|
|
4711
|
-
const result = highchartsRenderer.getDashboardFilters({}, [], local_current_dashboard);
|
|
4712
|
-
expect(result).toEqual([]);
|
|
4713
|
-
});
|
|
4714
|
-
|
|
4715
|
-
it('should return an array of relevant filters from the current dashboard', () => {
|
|
4716
|
-
const result = highchartsRenderer.getDashboardFilters(data_model, [], data_model.current_dashboard);
|
|
4717
|
-
expect(result.length).toEqual(2);
|
|
4718
|
-
});
|
|
4719
|
-
|
|
4720
|
-
it('should return an array of relevant filters from the current dashboard and embedded filters', () => {
|
|
4721
|
-
data_model.ebmedded_filters = [{
|
|
4722
|
-
fields: [{id: '3', name: 'Field 3'}],
|
|
4723
|
-
includes: ['value 3']
|
|
4724
|
-
}];
|
|
4725
|
-
const result = highchartsRenderer.getDashboardFilters(data_model, [], data_model.current_dashboard);
|
|
4726
|
-
expect(result.length).toEqual(3);
|
|
4727
|
-
});
|
|
4728
|
-
|
|
4729
|
-
it('should remove specified fields from the returned filters array', () => {
|
|
4730
|
-
const result = highchartsRenderer.getDashboardFilters(data_model, remove_filters_from_global, data_model.current_dashboard);
|
|
4731
|
-
expect(result.length).toEqual(1);
|
|
4732
|
-
});
|
|
4733
|
-
});
|
|
4734
|
-
|
|
4735
|
-
describe('function getPresentationTagType', () => {
|
|
4736
|
-
it('should return "date_tags" if local_current_dashboard has date tags', () => {
|
|
4737
|
-
const data_model = {
|
|
4738
|
-
current_dashboard: {
|
|
4739
|
-
date_tags: [{ id: 1, name: 'Date Tag 1' }]
|
|
4740
|
-
}
|
|
4741
|
-
};
|
|
4742
|
-
const result = highchartsRenderer.getPresentationTagType(data_model, data_model.current_dashboard);
|
|
4743
|
-
expect(result).toBe('date_tags');
|
|
4744
|
-
});
|
|
4745
|
-
|
|
4746
|
-
it('should return "plan_tags" if local_current_dashboard has plan tags', () => {
|
|
4747
|
-
const data_model = {
|
|
4748
|
-
current_dashboard: {
|
|
4749
|
-
plan_tags: [{ id: 1, name: 'Plan Tag 1' }]
|
|
4750
|
-
}
|
|
4751
|
-
};
|
|
4752
|
-
const result = highchartsRenderer.getPresentationTagType(data_model, data_model.current_dashboard);
|
|
4753
|
-
expect(result).toBe('plan_tags');
|
|
4754
|
-
});
|
|
4755
|
-
|
|
4756
|
-
it('should return undefined if local_current_dashboard has no tags', () => {
|
|
4757
|
-
const data_model = {
|
|
4758
|
-
current_dashboard: {}
|
|
4759
|
-
};
|
|
4760
|
-
const result = highchartsRenderer.getPresentationTagType(data_model);
|
|
4761
|
-
expect(result).toBeUndefined();
|
|
4762
|
-
});
|
|
4763
|
-
|
|
4764
|
-
it('should return "date_tags" if local_current_dashboard is undefined but data_model has date tags', () => {
|
|
4765
|
-
const data_model = {
|
|
4766
|
-
current_dashboard: {
|
|
4767
|
-
date_tags: [{ id: 1, name: 'Date Tag 1' }]
|
|
4768
|
-
}
|
|
4769
|
-
};
|
|
4770
|
-
const result = highchartsRenderer.getPresentationTagType(data_model);
|
|
4771
|
-
expect(result).toBe('date_tags');
|
|
4772
|
-
});
|
|
4773
|
-
|
|
4774
|
-
it('should return "plan_tags" if local_current_dashboard is undefined but data_model has plan tags', () => {
|
|
4775
|
-
const data_model = {
|
|
4776
|
-
current_dashboard: {
|
|
4777
|
-
plan_tags: [{ id: 1, name: 'Plan Tag 1' }]
|
|
4778
|
-
}
|
|
4779
|
-
};
|
|
4780
|
-
const result = highchartsRenderer.getPresentationTagType(data_model);
|
|
4781
|
-
expect(result).toBe('plan_tags');
|
|
4782
|
-
});
|
|
4783
|
-
});
|
|
4784
|
-
|
|
4785
|
-
describe('function getPresentationDataTag', () => {
|
|
4786
|
-
const data_model = { current_dashboard: { presentation_data_tag_object: { value: 'foo' } } };
|
|
4787
|
-
const dataKeyTag = 'date_tags';
|
|
4788
|
-
|
|
4789
|
-
it('returns presentation_data_tag_object value if local_current_dashboard is undefined', () => {
|
|
4790
|
-
const result = highchartsRenderer.getPresentationDataTag(data_model, undefined, dataKeyTag);
|
|
4791
|
-
expect(result).toBe('foo');
|
|
4792
|
-
});
|
|
4793
|
-
|
|
4794
|
-
it('returns presentation_data_tag_object value if local_current_dashboard has presentation_data_tag_object', () => {
|
|
4795
|
-
const local_current_dashboard = { presentation_data_tag_object: { value: 'bar' } };
|
|
4796
|
-
const result = highchartsRenderer.getPresentationDataTag(data_model, local_current_dashboard, dataKeyTag);
|
|
4797
|
-
expect(result).toBe('bar');
|
|
4798
|
-
});
|
|
4799
|
-
|
|
4800
|
-
it('returns value of highest dataKeyTag value in local_current_dashboard', () => {
|
|
4801
|
-
const local_current_dashboard = {
|
|
4802
|
-
date_tags: [
|
|
4803
|
-
{ value: '2022-01-01' },
|
|
4804
|
-
{ value: '2021-01-01' },
|
|
4805
|
-
{ value: '2023-01-01' },
|
|
4806
|
-
],
|
|
4807
|
-
};
|
|
4808
|
-
const result = highchartsRenderer.getPresentationDataTag(data_model, local_current_dashboard, dataKeyTag);
|
|
4809
|
-
expect(result).toBe('2023-01-01');
|
|
4810
|
-
});
|
|
4811
|
-
|
|
4812
|
-
it('returns null if local_current_dashboard has no presentation_data_tag_object or dataKeyTag values', () => {
|
|
4813
|
-
const local_current_dashboard = {};
|
|
4814
|
-
const result = highchartsRenderer.getPresentationDataTag(data_model, local_current_dashboard, dataKeyTag);
|
|
4815
|
-
expect(result).toBeNull();
|
|
4816
|
-
});
|
|
4817
|
-
|
|
4818
|
-
it('returns null if local_current_dashboard has empty dataKeyTag array', () => {
|
|
4819
|
-
const local_current_dashboard = { date_tags: [] };
|
|
4820
|
-
const result = highchartsRenderer.getPresentationDataTag(data_model, local_current_dashboard, dataKeyTag);
|
|
4821
|
-
expect(result).toBeNull();
|
|
4822
|
-
});
|
|
4823
|
-
});
|
|
4824
|
-
|
|
4404
|
+
|
|
4825
4405
|
describe('function isDate', () => {
|
|
4826
4406
|
it('returns true for valid date string', () => {
|
|
4827
4407
|
expect(highchartsRenderer.isDate('2022-01-01')).toBe(true);
|