@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/dr_renderer",
3
- "version": "1.5.52",
3
+ "version": "1.5.54",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -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 = highchartsRenderer.objectCopyJsonMethod(highchartsRenderer.highcharts_theme.colors);
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 = highchartsRenderer.objectCopyJsonMethod(oldOptions);
2292
+ const newOptions = objectCopyJsonMethod(oldOptions);
2320
2293
  const { range, segments } = newOptions;
2321
2294
 
2322
2295
  if (!segments) {
2323
- newOptions.segments = highchartsRenderer.objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.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 = highchartsRenderer.objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplateWOData.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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(exTableOptions.calculated_values || []);
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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(functionOptions.calculated_values || []);
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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(widgetOptions.calculated_values || []);
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);