@datarailsshared/dr_renderer 1.5.52 → 1.5.54
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 +19 -175
- 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;
|
|
@@ -2316,11 +2289,11 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
2316
2289
|
|
|
2317
2290
|
|
|
2318
2291
|
highchartsRenderer.transformOldGaugeOptions = (oldOptions) => {
|
|
2319
|
-
const newOptions =
|
|
2292
|
+
const newOptions = objectCopyJsonMethod(oldOptions);
|
|
2320
2293
|
const { range, segments } = newOptions;
|
|
2321
2294
|
|
|
2322
2295
|
if (!segments) {
|
|
2323
|
-
newOptions.segments =
|
|
2296
|
+
newOptions.segments = objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.segments);
|
|
2324
2297
|
}
|
|
2325
2298
|
|
|
2326
2299
|
if (!range) {
|
|
@@ -2335,7 +2308,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
2335
2308
|
});
|
|
2336
2309
|
|
|
2337
2310
|
if (!newOptions.goal) {
|
|
2338
|
-
newOptions.goal =
|
|
2311
|
+
newOptions.goal = objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.goal);
|
|
2339
2312
|
}
|
|
2340
2313
|
|
|
2341
2314
|
newOptions.goal.value = 1 * range.max || newOptions.goal.value;
|
|
@@ -5225,11 +5198,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5225
5198
|
}
|
|
5226
5199
|
};
|
|
5227
5200
|
|
|
5228
|
-
highchartsRenderer.objectCopyJsonMethod = function (o) {
|
|
5229
|
-
if(!o) return 0;
|
|
5230
|
-
return JSON.parse(JSON.stringify(o));
|
|
5231
|
-
};
|
|
5232
|
-
|
|
5233
5201
|
highchartsRenderer.updateBackwardCompatibleWidgetOptions = function(options, type) {
|
|
5234
5202
|
if (lodash.get(options, 'chartOptions.chart.hideLegends', false)) {
|
|
5235
5203
|
options.chartOptions.legends_position = { value: 'none' };
|
|
@@ -5337,7 +5305,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5337
5305
|
highchartsRenderer.addPivotOptions = function (selectedTemplateWOData, widgetOptions, drilldownFunction, drillDownListFunction) {
|
|
5338
5306
|
// Check if not rendered data, than it will render
|
|
5339
5307
|
|
|
5340
|
-
var fields =
|
|
5308
|
+
var fields = objectCopyJsonMethod(selectedTemplateWOData.fields);
|
|
5341
5309
|
var fieldOb;
|
|
5342
5310
|
var xaxisFields = [];
|
|
5343
5311
|
var legendFields = [];
|
|
@@ -5438,7 +5406,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5438
5406
|
highchartsRenderer.addTemplateDataToExTableOptions = function (selectedTemplate, exTableOptions) {
|
|
5439
5407
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5440
5408
|
|
|
5441
|
-
var fields =
|
|
5409
|
+
var fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5442
5410
|
var fieldOb;
|
|
5443
5411
|
var filterFields = [];
|
|
5444
5412
|
var selectedFields = [];
|
|
@@ -5486,13 +5454,13 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5486
5454
|
exTableOptions.pivot.fieldsArray = fields;
|
|
5487
5455
|
exTableOptions.pivot.selectedFieldsArray = selectedFields;
|
|
5488
5456
|
exTableOptions.pivot.filtersArray = filterFields;
|
|
5489
|
-
exTableOptions.pivot.calculatedValues =
|
|
5457
|
+
exTableOptions.pivot.calculatedValues = objectCopyJsonMethod(exTableOptions.calculated_values || []);
|
|
5490
5458
|
};
|
|
5491
5459
|
|
|
5492
5460
|
highchartsRenderer.addTemplateDataToDynamicRangeOptions = function (selectedTemplate, dynamicRangeOptions) {
|
|
5493
5461
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5494
5462
|
|
|
5495
|
-
var fields =
|
|
5463
|
+
var fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5496
5464
|
var fieldOb;
|
|
5497
5465
|
var filterFields = [];
|
|
5498
5466
|
var selectedFields = [];
|
|
@@ -5537,12 +5505,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5537
5505
|
dynamicRangeOptions.pivot.fieldsArray = fields;
|
|
5538
5506
|
dynamicRangeOptions.pivot.selectedFieldsArray = selectedFields;
|
|
5539
5507
|
dynamicRangeOptions.pivot.filtersArray = filterFields;
|
|
5540
|
-
dynamicRangeOptions.pivot.calculatedValues =
|
|
5508
|
+
dynamicRangeOptions.pivot.calculatedValues = objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
|
|
5541
5509
|
}
|
|
5542
5510
|
|
|
5543
5511
|
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions, calcModelPredefinedField, isInputStep) {
|
|
5544
5512
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5545
|
-
const fields =
|
|
5513
|
+
const fields = objectCopyJsonMethod(selectedTemplate.fields);
|
|
5546
5514
|
const predefinedField = lodash.cloneDeep(calcModelPredefinedField);
|
|
5547
5515
|
|
|
5548
5516
|
const fillData = (fieldsArr, ignoreFieldsIdToRemove = []) => {
|
|
@@ -5682,7 +5650,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5682
5650
|
|
|
5683
5651
|
let fieldOb;
|
|
5684
5652
|
|
|
5685
|
-
const fields =
|
|
5653
|
+
const fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5686
5654
|
const filterFields = [];
|
|
5687
5655
|
const valuesFields = [];
|
|
5688
5656
|
|
|
@@ -5746,7 +5714,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5746
5714
|
functionOptions.pivot.fieldsArray = fields;
|
|
5747
5715
|
functionOptions.pivot.valuesArray = valuesFields;
|
|
5748
5716
|
functionOptions.pivot.filtersArray = filterFields;
|
|
5749
|
-
functionOptions.pivot.calculatedValues =
|
|
5717
|
+
functionOptions.pivot.calculatedValues = objectCopyJsonMethod(functionOptions.calculated_values || []);
|
|
5750
5718
|
};
|
|
5751
5719
|
|
|
5752
5720
|
highchartsRenderer.addTemplateDataToWidgetOptions = function (selectedTemplate, widgetOptions, doNotRemoveFilters) {
|
|
@@ -5755,7 +5723,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5755
5723
|
|
|
5756
5724
|
const options = typeof widgetOptions.options === 'string' ? JSON.parse(widgetOptions.options) : widgetOptions.options;
|
|
5757
5725
|
|
|
5758
|
-
var fields =
|
|
5726
|
+
var fields = objectCopyJsonMethod(selectedTemplate.widget_fields);
|
|
5759
5727
|
var fieldOb;
|
|
5760
5728
|
var xaxisFields = [];
|
|
5761
5729
|
var legendFields = [];
|
|
@@ -5851,7 +5819,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5851
5819
|
widgetOptions.pivot.sorters = sorters;
|
|
5852
5820
|
}
|
|
5853
5821
|
|
|
5854
|
-
widgetOptions.pivot.calculatedValues =
|
|
5822
|
+
widgetOptions.pivot.calculatedValues = objectCopyJsonMethod(widgetOptions.calculated_values || []);
|
|
5855
5823
|
widgetOptions.pivot.fieldsArray = fields;
|
|
5856
5824
|
widgetOptions.pivot.axisArray = xaxisFields;
|
|
5857
5825
|
widgetOptions.pivot.legendArray = legendFields;
|
|
@@ -8764,32 +8732,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8764
8732
|
return all_vals;
|
|
8765
8733
|
}
|
|
8766
8734
|
|
|
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
8735
|
highchartsRenderer.parseOptionsToObject = function (options) {
|
|
8794
8736
|
if (typeof options == 'object')
|
|
8795
8737
|
return options;
|
|
@@ -8802,104 +8744,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8802
8744
|
return options;
|
|
8803
8745
|
};
|
|
8804
8746
|
|
|
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
8747
|
highchartsRenderer.isDate = function (date) {
|
|
8904
8748
|
return new Date(date) !== "Invalid Date" && !isNaN(new Date(date));
|
|
8905
8749
|
};
|
|
@@ -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);
|