@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/dr_renderer",
3
- "version": "1.5.52",
3
+ "version": "1.5.59",
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;
@@ -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
- if (pivotData.rowAttrs.length == 0 && !isTrendSeries) {
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 = highchartsRenderer.objectCopyJsonMethod(oldOptions);
2294
+ const newOptions = objectCopyJsonMethod(oldOptions);
2320
2295
  const { range, segments } = newOptions;
2321
2296
 
2322
2297
  if (!segments) {
2323
- newOptions.segments = highchartsRenderer.objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.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 = highchartsRenderer.objectCopyJsonMethod(GAUGE_OPTIONS_DEFAULT.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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplateWOData.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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(exTableOptions.calculated_values || []);
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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(dynamicRangeOptions.calculated_values || []);
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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(functionOptions.calculated_values || []);
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 = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.widget_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 = highchartsRenderer.objectCopyJsonMethod(widgetOptions.calculated_values || []);
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);