@datarailsshared/dr_renderer 1.2.431 → 1.2.433

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.2.431",
3
+ "version": "1.2.433",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -0,0 +1,6 @@
1
+ declare class DataFormatterImpl {
2
+ formatValue(type: string, format: string, value: number, overrideFormat?: string): string
3
+ }
4
+
5
+ declare const DataFormatter: DataFormatterImpl;
6
+ export = DataFormatter;
@@ -153,6 +153,7 @@ const FEATURES = {
153
153
  MULTIPLE_DIMENSION_TAGS: 'multiple_dimension_tags',
154
154
  USE_NEW_SCENARIO_TAG: 'use_new_scenario_tag',
155
155
  ENABLE_SERVER_WIDGET_DATA_SORTING: 'enable_server_widget_data_sorting',
156
+ CLIENT_WIDGET_SORTING_KEYS_MERGE: 'client_widget_sorting_keys_merge',
156
157
  }
157
158
 
158
159
  const TICKS_COUNT = 5;
@@ -207,6 +208,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
207
208
  disableAnimation = document.ReportHippo.user.organization && document.ReportHippo.user.organization.settings && document.ReportHippo.user.organization.settings.disable_animation
208
209
  highchartsRenderer.enabledNewWidgetValueFormatting = highchartsRenderer.hasFeature(FEATURES.ENABLE_NEW_WIDGET_VALUE_FORMATTING);
209
210
  highchartsRenderer.isSortingOnBackendEnabled = highchartsRenderer.hasFeature(FEATURES.ENABLE_SERVER_WIDGET_DATA_SORTING);
211
+ highchartsRenderer.CLIENT_WIDGET_SORTING_KEYS_MERGE = highchartsRenderer.hasFeature(FEATURES.CLIENT_WIDGET_SORTING_KEYS_MERGE);
210
212
  }
211
213
 
212
214
  // fix issue of use tootip.stickOnContact with tooltip.outside , source: https://github.com/highcharts/highcharts/pull/15960
@@ -9678,7 +9680,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
9678
9680
  return res;
9679
9681
  }
9680
9682
 
9681
- // TODO: move this logic to BE (the problem it is solving that BE returns several sorting objects for more than 1 field in Values)
9682
9683
  highchartsRenderer.getAggregatedSortingObjects = function(res) {
9683
9684
  let sortingObjectToReturn = null;
9684
9685
 
@@ -9687,7 +9688,17 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
9687
9688
  if (!sortingObjectToReturn) {
9688
9689
  sortingObjectToReturn = lodash.clone(dataRow);
9689
9690
  } else {
9690
- sortingObjectToReturn.row_keys = lodash.concat(sortingObjectToReturn.row_keys, dataRow.row_keys || []);
9691
+ if (highchartsRenderer.CLIENT_WIDGET_SORTING_KEYS_MERGE) {
9692
+ const concatUniqueKeys = (keysA, keysB) => {
9693
+ if (!Array.isArray(keysB) || !keysB.length) return keysA;
9694
+ return lodash.chain(keysA).concat(keysB).uniqWith(lodash.isEqual).value();
9695
+ }
9696
+ sortingObjectToReturn.row_keys = concatUniqueKeys(sortingObjectToReturn.row_keys, dataRow.row_keys);
9697
+ sortingObjectToReturn.col_keys = concatUniqueKeys(sortingObjectToReturn.col_keys, dataRow.col_keys);
9698
+ } else {
9699
+ sortingObjectToReturn.row_keys = lodash.concat(sortingObjectToReturn.row_keys, dataRow.row_keys || []);
9700
+ }
9701
+
9691
9702
  }
9692
9703
  dataRow.isSortingObject = true;
9693
9704
  }
@@ -5257,8 +5257,41 @@ describe('highcharts_renderer', () => {
5257
5257
  });
5258
5258
  });
5259
5259
 
5260
- it('should get sort object and remove from data rows (several object encounters - for more than one Values field)', () => {
5260
+ it('should get sort object and remove from data rows (several object encounters - for more than one Values field) with merge cols and rows under FF', () => {
5261
+ highchartsRenderer.CLIENT_WIDGET_SORTING_KEYS_MERGE = true;
5262
+ const expectedObj = {
5263
+ col_keys: [['colKey1'], ['colKey2'], ['colKey3'], ['colKey4'], ['colKey5']],
5264
+ row_keys: [['rowKey1'], ['rowKey2'], ['rowKey1', 'rowKey2'], ['rowKey3']],
5265
+ };
5266
+ const rowData = [
5267
+ { someField1: 'someValue1' },
5268
+ { col_keys: [['colKey1'], ['colKey2']], row_keys: [['rowKey1']] },
5269
+ { someField2: 'someValue2' },
5270
+ { col_keys: [['colKey1'], ['colKey3'], ['colKey4'], ['colKey5']], row_keys: [['rowKey2']] },
5271
+ { someField3: 'someValue3' },
5272
+ { col_keys: [], row_keys: [['rowKey1', 'rowKey2']] },
5273
+ { someField4: 'someValue4' },
5274
+ { col_keys: [], row_keys: [['rowKey1', 'rowKey2']] },
5275
+ { someField4: 'someValue5' },
5276
+ { col_keys: [], row_keys: [] },
5277
+ { someField4: 'someValue6' },
5278
+ { col_keys: [['colKey5']], row_keys: [['rowKey3']] },
5279
+ ];
5280
+
5281
+ const sortObj = highchartsRenderer.getAggregatedSortingObjects(rowData);
5261
5282
 
5283
+ expect(rowData).toEqual([
5284
+ { someField1: 'someValue1' },
5285
+ { someField2: 'someValue2' },
5286
+ { someField3: 'someValue3' },
5287
+ { someField4: 'someValue4' },
5288
+ { someField4: 'someValue5' },
5289
+ { someField4: 'someValue6' },
5290
+ ]);
5291
+ expect(sortObj).toEqual(expectedObj);
5292
+ });
5293
+
5294
+ it('should get sort object and remove from data rows (several object encounters - for more than one Values field)', () => {
5262
5295
  const expectedObj = { col_keys: ['colKey1', 'colKey2'], row_keys: ['rowKey1', 'rowKey2'] };
5263
5296
  const rowData = [
5264
5297
  { someField1: 'someValue1' },