@datarailsshared/dr_renderer 1.2.365 → 1.2.366

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.
@@ -376,13 +376,14 @@ let initNovixRenderer = function($, window, document, Handsontable){
376
376
  //data columns
377
377
  if (pvtData.colKeys.length > 0) {
378
378
 
379
+ const formattedColKeys = pvtData.getFormattedColKeys(colKeys);
379
380
  var aux = rowData.length;
380
381
  var startCol = aux;
381
- var prior = colKeys[0][nn];
382
+ var prior = formattedColKeys[0][nn];
382
383
  var toMerge = 0;
383
- for (var cc = 0; cc < colKeys.length; cc++) {
384
+ for (var cc = 0; cc < formattedColKeys.length; cc++) {
384
385
 
385
- var textHeader = colKeys[cc][nn];
386
+ var textHeader = formattedColKeys[cc][nn];
386
387
 
387
388
  if (nn < pvtData.colAttrs.length - 1 && prior != textHeader) {
388
389
  rowData.push(textHeader);
@@ -456,8 +457,9 @@ let initNovixRenderer = function($, window, document, Handsontable){
456
457
  // DATA
457
458
 
458
459
  var mergeDic = {};
460
+ const formattedRowKeys = pvtData.getFormattedRowKeys(rowKeys);
459
461
 
460
- for (var rr = 0; rr < rowKeys.length; rr++) {
462
+ for (var rr = 0; rr < formattedRowKeys.length; rr++) {
461
463
 
462
464
  var rowData = [];
463
465
 
@@ -466,29 +468,29 @@ let initNovixRenderer = function($, window, document, Handsontable){
466
468
  mergeDic[cc] = {
467
469
  toMerge: 1,
468
470
  row: 0,
469
- priorText: rowKeys[rr][cc]
471
+ priorText: formattedRowKeys[rr][cc]
470
472
  };
471
473
  }
472
474
  }
473
475
 
474
476
  //column for row atts
475
477
  for (var cc = 0; cc < pvtData.rowAttrs.length; cc++) {
476
- rowData.push(rowKeys[rr][cc]);
477
- if (rowKeys[rr][cc] === subtotal) {
478
+ rowData.push(formattedRowKeys[rr][cc]);
479
+ if (formattedRowKeys[rr][cc] === subtotal) {
478
480
  addMergeCell(rr + pvtData.colAttrs.length + 1, cc, 1, dataSource.fixedColumns - cc, true, true);
479
- } else if (cc === rowKeys[rr].length - 1 && hasColumnAttr) {
481
+ } else if (cc === formattedRowKeys[rr].length - 1 && hasColumnAttr) {
480
482
  addMergeCell(rr + pvtData.colAttrs.length + 1, cc, 1, 2, true, true);
481
483
  }
482
484
  // merge cell (last column)
483
485
  if (opts.chartOptions.table_options.show_column_total && rr != 0 && mergeDic[cc]) { // check for merge dic
484
- if (rowKeys[rr][cc] == mergeDic[cc].priorText) {
486
+ if (formattedRowKeys[rr][cc] == mergeDic[cc].priorText) {
485
487
  mergeDic[cc].toMerge++;
486
- } else if (cc < rowKeys[rr].length - 1) {
488
+ } else if (cc < formattedRowKeys[rr].length - 1) {
487
489
  //create merge cell for this column
488
490
  addMergeCell(mergeDic[cc].row + pvtData.colAttrs.length + 1, cc, mergeDic[cc].toMerge, 1);
489
491
  mergeDic[cc].row = rr;
490
492
  mergeDic[cc].toMerge = 1;
491
- mergeDic[cc].priorText = rowKeys[rr][cc];
493
+ mergeDic[cc].priorText = formattedRowKeys[rr][cc];
492
494
  }
493
495
  }
494
496
  }
package/src/pivottable.js CHANGED
@@ -1,3 +1,5 @@
1
+ const helpers = require('./dr-renderer-helpers');
2
+
1
3
  // from pivottable@2.23.0
2
4
  let initPivotTable = function($, window, document) {
3
5
  var indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
@@ -577,6 +579,7 @@ let initPivotTable = function($, window, document) {
577
579
  l_mapping = {};
578
580
  for (i in order) {
579
581
  x = order[i];
582
+ if (order[i] === null) x = '[null]';
580
583
  mapping[x] = i;
581
584
  if (typeof x === "string") {
582
585
  l_mapping[x.toLowerCase()] = i;
@@ -684,13 +687,30 @@ let initPivotTable = function($, window, document) {
684
687
  return true;
685
688
  });
686
689
  this.tree = {};
687
- this.rowKeys = [];
688
- this.colKeys = [];
690
+ this.insights = [];
691
+
692
+ this.isKeysSortingDoneOnBackendSide = opts.keysObject && typeof opts.keysObject === 'object' && helpers.backendSortingKeysAreNotEmpty(opts.keysObject);
693
+ if (this.isKeysSortingDoneOnBackendSide) {
694
+ this.rowKeys = opts.keysObject.row_keys;
695
+ this.colKeys = opts.keysObject.col_keys;
696
+ // TODO: add also for breakdown sort object when BE story is ready.
697
+ } else {
698
+ this.rowKeys = [];
699
+ this.colKeys = [];
700
+ }
701
+
689
702
  this.rowTotals = {};
690
703
  this.colTotals = {};
691
704
  this.allTotal = this.aggregator(this, [], []);
692
705
  this.sorted = false;
693
706
  this.dateValuesDictionary = opts.dateValuesDictionary;
707
+ this.sortByValueAttrs = opts.sortByValueAttrs || [];
708
+ this.colFormats = opts.colFormats || [];
709
+ this.rowFormats = opts.rowFormats || [];
710
+ this.isFormattingAxisLabels = opts.rendererOptions && opts.rendererOptions.isFormattingAxisLabels;
711
+ this.getFormattedColKeys = (keys) => opts.getFormattedColKeys(this, keys);
712
+ this.getFormattedRowKeys = (keys) => opts.getFormattedRowKeys(this, keys);
713
+
694
714
  PivotData.forEachRecord(this.input, this.derivedAttributes, (function(_this) {
695
715
  return function(record) {
696
716
  if (_this.filter(record)) {
@@ -850,12 +870,16 @@ let initPivotTable = function($, window, document) {
850
870
  };
851
871
 
852
872
  PivotData.prototype.getColKeys = function() {
853
- this.sortKeys();
873
+ if (!this.isKeysSortingDoneOnBackendSide) {
874
+ this.sortKeys();
875
+ }
854
876
  return this.colKeys;
855
877
  };
856
878
 
857
879
  PivotData.prototype.getRowKeys = function() {
858
- this.sortKeys();
880
+ if (!this.isKeysSortingDoneOnBackendSide) {
881
+ this.sortKeys();
882
+ }
859
883
  return this.rowKeys;
860
884
  };
861
885
 
@@ -0,0 +1,34 @@
1
+ describe('dr-renderer-helpers', () => {
2
+ const drRendererHelpers = require('../src/dr-renderer-helpers');
3
+
4
+ describe('backendSortingKeysAreNotEmpty', () => {
5
+ it('should return true if keys are not empty', () => {
6
+ const keys = {
7
+ row_keys: [1, 2, 3],
8
+ col_keys: [1, 2, 3]
9
+ };
10
+ expect(drRendererHelpers.backendSortingKeysAreNotEmpty(keys)).toBe(true);
11
+ });
12
+
13
+ it('should return true if one of the keys is not empty', () => {
14
+ const keys = {
15
+ row_keys: [1, 2, 3],
16
+ col_keys: []
17
+ };
18
+ expect(drRendererHelpers.backendSortingKeysAreNotEmpty(keys)).toBe(true);
19
+ });
20
+
21
+ it('should return false if keys are empty', () => {
22
+ const keys = {
23
+ row_keys: [],
24
+ col_keys: [],
25
+ };
26
+ expect(drRendererHelpers.backendSortingKeysAreNotEmpty(keys)).toBe(false);
27
+ });
28
+
29
+ it('should return false if keys are null', () => {
30
+ const keys = null;
31
+ expect(drRendererHelpers.backendSortingKeysAreNotEmpty(keys)).toBe(false);
32
+ });
33
+ });
34
+ });