@builttocreate/engine-utils 2.6.0-beta.23 → 2.6.0-beta.25
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/dist/constants/PageTypes.js +17 -0
- package/dist/joyDocHelper.js +120 -46
- package/dist/tableHelper.js +50 -2
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Page Types
|
|
10
|
+
*/
|
|
11
|
+
var PageTypes = {
|
|
12
|
+
desktop: 'desktop',
|
|
13
|
+
mobile: 'mobile',
|
|
14
|
+
pdf: 'pdf'
|
|
15
|
+
};
|
|
16
|
+
var _default = PageTypes;
|
|
17
|
+
exports["default"] = _default;
|
package/dist/joyDocHelper.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.sortPages = exports.sortFieldPositionsByXAndYCoordinates = exports.
|
|
8
|
+
exports.sortPages = exports.sortFieldPositionsByXAndYCoordinates = exports.mergeAssoicatedFieldPositionsForMobilePage = exports.getPageOrder = exports.getMobileViewFromFile = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.generatePDFPageFieldPositions = exports.generatePDFPage = exports.generateMobileViewFromFile = exports.generateMobilePageFieldPositions = exports.generateMobilePage = exports.formatTableFieldPositions = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
|
|
9
9
|
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
11
|
|
|
@@ -21,6 +21,8 @@ var _FieldPresentationModes = _interopRequireDefault(require("./constants/FieldP
|
|
|
21
21
|
|
|
22
22
|
var _DocumentTypes = _interopRequireDefault(require("./constants/DocumentTypes"));
|
|
23
23
|
|
|
24
|
+
var _PageTypes = _interopRequireDefault(require("./constants/PageTypes"));
|
|
25
|
+
|
|
24
26
|
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
25
27
|
|
|
26
28
|
var _FieldDisplayTypes = _interopRequireDefault(require("./constants/FieldDisplayTypes"));
|
|
@@ -646,11 +648,11 @@ var getMobileViewFromFile = function getMobileViewFromFile(file) {
|
|
|
646
648
|
pageOrder: mobileViewPageOrder
|
|
647
649
|
});
|
|
648
650
|
} else {
|
|
649
|
-
return
|
|
651
|
+
return generateMobileViewFromFile(file);
|
|
650
652
|
}
|
|
651
653
|
};
|
|
652
654
|
/**
|
|
653
|
-
*
|
|
655
|
+
* Generates the alternative mobile view from the default file view.
|
|
654
656
|
*
|
|
655
657
|
* @param {Object} file //Full file object
|
|
656
658
|
* @returns {Object}
|
|
@@ -659,7 +661,7 @@ var getMobileViewFromFile = function getMobileViewFromFile(file) {
|
|
|
659
661
|
|
|
660
662
|
exports.getMobileViewFromFile = getMobileViewFromFile;
|
|
661
663
|
|
|
662
|
-
var
|
|
664
|
+
var generateMobileViewFromFile = function generateMobileViewFromFile(file) {
|
|
663
665
|
var pages = file.pages || [];
|
|
664
666
|
var pageOrder = cleanPageOrder(getPageOrder(file.pageOrder, file.pages), file.pages);
|
|
665
667
|
return {
|
|
@@ -670,7 +672,7 @@ var generateMobileViewFile = function generateMobileViewFile(file) {
|
|
|
670
672
|
name = page.name,
|
|
671
673
|
identifier = page.identifier,
|
|
672
674
|
fieldPositions = page.fieldPositions;
|
|
673
|
-
return
|
|
675
|
+
return generateMobilePage({
|
|
674
676
|
_id: _id,
|
|
675
677
|
identifier: identifier,
|
|
676
678
|
name: name,
|
|
@@ -681,18 +683,19 @@ var generateMobileViewFile = function generateMobileViewFile(file) {
|
|
|
681
683
|
};
|
|
682
684
|
};
|
|
683
685
|
/**
|
|
684
|
-
* Apply the
|
|
686
|
+
* Apply the pr
|
|
685
687
|
*
|
|
686
688
|
* @param {Object} page
|
|
687
689
|
* @returns {Objectg}
|
|
688
690
|
*/
|
|
689
691
|
|
|
690
692
|
|
|
691
|
-
exports.
|
|
693
|
+
exports.generateMobileViewFromFile = generateMobileViewFromFile;
|
|
692
694
|
|
|
693
|
-
var
|
|
695
|
+
var generateMobilePage = function generateMobilePage(page) {
|
|
694
696
|
return _objectSpread(_objectSpread({}, page), {}, {
|
|
695
|
-
fieldPositions: page.fieldPositions ?
|
|
697
|
+
fieldPositions: page.fieldPositions ? generateMobilePageFieldPositions(page.fieldPositions, page.rowHeight) : [],
|
|
698
|
+
type: _PageTypes["default"].mobile,
|
|
696
699
|
rowHeight: 1,
|
|
697
700
|
cols: 1,
|
|
698
701
|
padding: 12,
|
|
@@ -703,9 +706,9 @@ var generateMobileViewPage = function generateMobileViewPage(page) {
|
|
|
703
706
|
});
|
|
704
707
|
};
|
|
705
708
|
|
|
706
|
-
exports.
|
|
709
|
+
exports.generateMobilePage = generateMobilePage;
|
|
707
710
|
|
|
708
|
-
var
|
|
711
|
+
var generateMobilePageFieldPositions = function generateMobilePageFieldPositions(fieldPositions, originalRowHeight) {
|
|
709
712
|
var mobileFieldPositions = [];
|
|
710
713
|
/**
|
|
711
714
|
* Step 1: Sort fieldPositions
|
|
@@ -728,7 +731,7 @@ var generateMobileViewPageFieldPositions = function generateMobileViewPageFieldP
|
|
|
728
731
|
if (joySpecFieldPosition.type === _FieldTypes["default"].chart) mobileFieldPositionData.primaryDisplayOnly = true;
|
|
729
732
|
mobileFieldPositions.push(mobileFieldPositionData);
|
|
730
733
|
});
|
|
731
|
-
return
|
|
734
|
+
return mergeAssoicatedFieldPositionsForMobilePage(mobileFieldPositions);
|
|
732
735
|
};
|
|
733
736
|
/**
|
|
734
737
|
* Merge Field Positions assoicated with the same Field.
|
|
@@ -746,9 +749,9 @@ var generateMobileViewPageFieldPositions = function generateMobileViewPageFieldP
|
|
|
746
749
|
*/
|
|
747
750
|
|
|
748
751
|
|
|
749
|
-
exports.
|
|
752
|
+
exports.generateMobilePageFieldPositions = generateMobilePageFieldPositions;
|
|
750
753
|
|
|
751
|
-
var
|
|
754
|
+
var mergeAssoicatedFieldPositionsForMobilePage = function mergeAssoicatedFieldPositionsForMobilePage(fieldPositions) {
|
|
752
755
|
var filteredFieldPositions = [];
|
|
753
756
|
fieldPositions === null || fieldPositions === void 0 ? void 0 : fieldPositions.forEach(function (fieldPosition) {
|
|
754
757
|
var fieldPositionIndex = filteredFieldPositions.findIndex(function (filtered) {
|
|
@@ -761,6 +764,52 @@ var mergeAssoicatedFieldPositionsForMobileView = function mergeAssoicatedFieldPo
|
|
|
761
764
|
});
|
|
762
765
|
return filteredFieldPositions;
|
|
763
766
|
};
|
|
767
|
+
/**
|
|
768
|
+
* Generate a page that targets the PDF page type
|
|
769
|
+
*
|
|
770
|
+
* @param {Object} page
|
|
771
|
+
* @returns {Objectg}
|
|
772
|
+
*/
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
exports.mergeAssoicatedFieldPositionsForMobilePage = mergeAssoicatedFieldPositionsForMobilePage;
|
|
776
|
+
|
|
777
|
+
var generatePDFPage = function generatePDFPage(page) {
|
|
778
|
+
return _objectSpread(_objectSpread({}, page), {}, {
|
|
779
|
+
fieldPositions: page.fieldPositions ? generatePDFPageFieldPositions(page.fieldPositions) : [],
|
|
780
|
+
type: _PageTypes["default"].pdf,
|
|
781
|
+
width: 816,
|
|
782
|
+
height: 1056,
|
|
783
|
+
rowHeight: 1,
|
|
784
|
+
cols: 816,
|
|
785
|
+
layout: _PageLayoutModes["default"]["float"],
|
|
786
|
+
presentation: _FieldPresentationModes["default"].transparent,
|
|
787
|
+
padding: 0,
|
|
788
|
+
margin: 0,
|
|
789
|
+
borderWidth: 0
|
|
790
|
+
});
|
|
791
|
+
};
|
|
792
|
+
/**
|
|
793
|
+
* Generate a field positions for the PDF page type
|
|
794
|
+
*
|
|
795
|
+
* @param {Array} fieldPositions
|
|
796
|
+
* @returns {Array}
|
|
797
|
+
*/
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
exports.generatePDFPage = generatePDFPage;
|
|
801
|
+
|
|
802
|
+
var generatePDFPageFieldPositions = function generatePDFPageFieldPositions(fieldPositions) {
|
|
803
|
+
return fieldPositions.map(function (joySpecFieldPosition) {
|
|
804
|
+
return _objectSpread(_objectSpread({}, joySpecFieldPosition), {}, {
|
|
805
|
+
titleDisplay: _FormStyleOptions["default"].displayNone,
|
|
806
|
+
padding: 0,
|
|
807
|
+
margin: 0,
|
|
808
|
+
borderRadius: 0,
|
|
809
|
+
borderWidth: 1
|
|
810
|
+
});
|
|
811
|
+
});
|
|
812
|
+
};
|
|
764
813
|
/**
|
|
765
814
|
* Sort fields by their y and x coordinates
|
|
766
815
|
*
|
|
@@ -788,7 +837,7 @@ var mergeAssoicatedFieldPositionsForMobileView = function mergeAssoicatedFieldPo
|
|
|
788
837
|
*/
|
|
789
838
|
|
|
790
839
|
|
|
791
|
-
exports.
|
|
840
|
+
exports.generatePDFPageFieldPositions = generatePDFPageFieldPositions;
|
|
792
841
|
|
|
793
842
|
var sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoordinates(fieldPositions) {
|
|
794
843
|
var sortedFieldPositions = (0, _toConsumableArray2["default"])(fieldPositions);
|
|
@@ -824,8 +873,7 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
824
873
|
* We use these lookups because multiple table fieldPositions belonging to the same table
|
|
825
874
|
* field will all use the same table value calculated lookup.
|
|
826
875
|
*/
|
|
827
|
-
var
|
|
828
|
-
var tableFieldColumnLookups = {};
|
|
876
|
+
var tableFieldLookup = {};
|
|
829
877
|
var nextFieldPositions = [];
|
|
830
878
|
(0, _toConsumableArray2["default"])(fieldPositions).forEach(function (fieldPosition) {
|
|
831
879
|
var nextFieldPosition = _objectSpread({}, fieldPosition);
|
|
@@ -839,37 +887,57 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
839
887
|
rowOrder = fieldPosition.rowOrder,
|
|
840
888
|
tableColumnOrder = fieldPosition.tableColumnOrder;
|
|
841
889
|
/**
|
|
842
|
-
*
|
|
843
|
-
*
|
|
844
|
-
* with
|
|
890
|
+
* Step 1: Generate rows, rowOrder, tableColumns, etc. lookups for associated field. We only have to
|
|
891
|
+
* do this once per-field. This increases performance if there are multiple form positions associated
|
|
892
|
+
* with the same form.
|
|
845
893
|
*/
|
|
846
894
|
|
|
847
|
-
|
|
848
|
-
|
|
895
|
+
if (!tableFieldLookup[field]) {
|
|
896
|
+
/**
|
|
897
|
+
* Step 1.1 Handle rows
|
|
898
|
+
*/
|
|
899
|
+
var nextRows = (0, _tableHelper.getRows)(value);
|
|
900
|
+
var nextRowOrder = (0, _tableHelper.getCleanedRowOrder)(rowOrder, nextRows);
|
|
901
|
+
var nextSortedRows = (0, _tableHelper.sortRows)(nextRows, nextRowOrder);
|
|
902
|
+
/**
|
|
903
|
+
* Step 1.2 Handle columns
|
|
904
|
+
*/
|
|
849
905
|
|
|
850
|
-
|
|
851
|
-
var
|
|
852
|
-
(0, _tableHelper.getColumns)(
|
|
853
|
-
|
|
906
|
+
var nextTableColumnOrder = (0, _tableHelper.getCleanedColumnOrder)(tableColumnOrder, tableColumns);
|
|
907
|
+
var nextSortedTableColumns = (0, _tableHelper.sortColumns)(tableColumns, nextTableColumnOrder);
|
|
908
|
+
var nextTableColumns = (0, _tableHelper.getColumns)(nextSortedTableColumns);
|
|
909
|
+
var nextTableColumnLookup = {};
|
|
910
|
+
nextTableColumns.forEach(function (column) {
|
|
911
|
+
return nextTableColumnLookup[column._id] = column;
|
|
854
912
|
});
|
|
855
|
-
|
|
856
|
-
|
|
913
|
+
/**
|
|
914
|
+
* Step 1.3 Handle cell calculations
|
|
915
|
+
*/
|
|
857
916
|
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
917
|
+
var calculatedValue = (0, _tableHelper.generateTableLookup)(nextSortedRows, nextSortedTableColumns);
|
|
918
|
+
tableFieldLookup[field] = {
|
|
919
|
+
value: nextSortedRows,
|
|
920
|
+
rowOrder: nextRowOrder,
|
|
921
|
+
tableColumns: nextTableColumns,
|
|
922
|
+
tableColumnOrder: nextTableColumnOrder,
|
|
923
|
+
tableColumnLookup: nextTableColumnLookup,
|
|
924
|
+
calculatedValue: calculatedValue
|
|
925
|
+
};
|
|
861
926
|
}
|
|
862
927
|
/**
|
|
863
|
-
* Ensure each table field has a properly formatted
|
|
928
|
+
* Ensure each table field has a properly formatted properties
|
|
864
929
|
*/
|
|
865
930
|
|
|
866
931
|
|
|
867
|
-
|
|
932
|
+
nextFieldPosition.value = tableFieldLookup[field].value;
|
|
933
|
+
nextFieldPosition.rowOrder = tableFieldLookup[field].rowOrder;
|
|
934
|
+
nextFieldPosition.tableColumns = tableFieldLookup[field].tableColumns;
|
|
935
|
+
nextFieldPosition.tableColumnOrder = tableFieldLookup[field].tableColumnOrder;
|
|
868
936
|
/**
|
|
869
937
|
* Add calculated value lookup. For instance, { A1: '', B1: '', C1: '', ... }
|
|
870
938
|
*/
|
|
871
939
|
|
|
872
|
-
|
|
940
|
+
nextFieldPosition.calculatedValue = tableFieldLookup[field].calculatedValue;
|
|
873
941
|
/**
|
|
874
942
|
* Individual Table Cell vs Entire Table
|
|
875
943
|
*
|
|
@@ -891,8 +959,8 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
891
959
|
* with it (ie rows[rowIndex] is undefined) it means that particular row is deleted
|
|
892
960
|
*/
|
|
893
961
|
|
|
894
|
-
if (
|
|
895
|
-
var
|
|
962
|
+
if (tableFieldLookup[field] && column && typeof rowIndex === 'number') {
|
|
963
|
+
var _tableFieldLookup$fie;
|
|
896
964
|
|
|
897
965
|
/**
|
|
898
966
|
* What is the difference between rowIndex and targetRowIndex?
|
|
@@ -905,10 +973,10 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
905
973
|
* order. The rowOrder is updated when users insert rows, move rows up or down, etc. it manages where rows
|
|
906
974
|
* are at in the list and how they should be rendered. This is why the rowIndex uses the rowOrder.
|
|
907
975
|
*/
|
|
908
|
-
var targetColumn =
|
|
909
|
-
var targetRowId =
|
|
910
|
-
var targetRowIndex =
|
|
911
|
-
return row._id === targetRowId;
|
|
976
|
+
var targetColumn = tableFieldLookup[field].tableColumnLookup[column];
|
|
977
|
+
var targetRowId = tableFieldLookup[field].rowOrder[rowIndex];
|
|
978
|
+
var targetRowIndex = tableFieldLookup[field].value.findIndex(function (row) {
|
|
979
|
+
return (row === null || row === void 0 ? void 0 : row._id) === targetRowId;
|
|
912
980
|
});
|
|
913
981
|
/**
|
|
914
982
|
* Add proper rowId to the field position so that it can be used
|
|
@@ -921,10 +989,14 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
|
|
|
921
989
|
* at the particular rowIndex was deleted
|
|
922
990
|
*/
|
|
923
991
|
|
|
924
|
-
nextFieldPosition.cellValue = ((
|
|
992
|
+
nextFieldPosition.cellValue = ((_tableFieldLookup$fie = tableFieldLookup[field].value[targetRowIndex]) === null || _tableFieldLookup$fie === void 0 ? void 0 : _tableFieldLookup$fie.cells[column]) || '';
|
|
993
|
+
/**
|
|
994
|
+
* Skip any individual field position that is associated with a deleted column.
|
|
995
|
+
* targetColumn will appear as undefined if a column is deleted
|
|
996
|
+
*/
|
|
925
997
|
|
|
926
998
|
if (targetColumn) {
|
|
927
|
-
nextFieldPosition.calculatedCellValue =
|
|
999
|
+
nextFieldPosition.calculatedCellValue = tableFieldLookup[field].calculatedValue["".concat(targetColumn.operand).concat(targetRowIndex + 1)];
|
|
928
1000
|
nextFieldPosition.columnType = targetColumn.type;
|
|
929
1001
|
nextFieldPosition.options = targetColumn.options;
|
|
930
1002
|
nextFieldPosition.columnIdentifier = targetColumn.identifier;
|
|
@@ -962,10 +1034,12 @@ var _default = {
|
|
|
962
1034
|
getPageOrder: getPageOrder,
|
|
963
1035
|
sortPages: sortPages,
|
|
964
1036
|
sortFieldPositionsByXAndYCoordinates: sortFieldPositionsByXAndYCoordinates,
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
1037
|
+
mergeAssoicatedFieldPositionsForMobilePage: mergeAssoicatedFieldPositionsForMobilePage,
|
|
1038
|
+
generateMobileViewFromFile: generateMobileViewFromFile,
|
|
1039
|
+
generateMobilePage: generateMobilePage,
|
|
1040
|
+
generateMobilePageFieldPositions: generateMobilePageFieldPositions,
|
|
1041
|
+
generatePDFPage: generatePDFPage,
|
|
1042
|
+
generatePDFPageFieldPositions: generatePDFPageFieldPositions,
|
|
969
1043
|
formatTableFieldPositions: formatTableFieldPositions
|
|
970
1044
|
};
|
|
971
1045
|
exports["default"] = _default;
|
package/dist/tableHelper.js
CHANGED
|
@@ -7,7 +7,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
10
|
+
exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCleanedColumnOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
|
|
11
11
|
|
|
12
12
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
13
|
|
|
@@ -386,12 +386,60 @@ var getColumnOrder = function getColumnOrder(columnOrder, columns) {
|
|
|
386
386
|
return column._id;
|
|
387
387
|
});
|
|
388
388
|
};
|
|
389
|
+
/**
|
|
390
|
+
* This method removes the columnIds of the deleted columns (or) any duplicate columnIds
|
|
391
|
+
* from the tableColumnOrder there by returning a cleaned tableColumnOrder
|
|
392
|
+
*
|
|
393
|
+
* @param {*} tableColumnOrder
|
|
394
|
+
* @param {*} tableColumns
|
|
395
|
+
*
|
|
396
|
+
* @returns {Array}
|
|
397
|
+
**/
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
exports.getColumnOrder = getColumnOrder;
|
|
401
|
+
|
|
402
|
+
var getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns) {
|
|
403
|
+
var nextColumnOrder = [];
|
|
404
|
+
/**
|
|
405
|
+
* Step 1: Handle generating or retrieving proper column order.
|
|
406
|
+
*/
|
|
407
|
+
|
|
408
|
+
if (columnOrder && columnOrder.length > 0) {
|
|
409
|
+
nextColumnOrder = columnOrder;
|
|
410
|
+
} else if (columns && columns.length > 0) {
|
|
411
|
+
columns.forEach(function (column) {
|
|
412
|
+
if (!column.deleted) nextColumnOrder.push(column._id);
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Step 2: Remove column Ids from columnOrder for columns that no longer exist or have been deleted
|
|
417
|
+
*/
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
var columnLookup = {};
|
|
421
|
+
columns.forEach(function (column) {
|
|
422
|
+
return columnLookup[column._id] = column && !column.deleted;
|
|
423
|
+
});
|
|
424
|
+
nextColumnOrder = nextColumnOrder.filter(function (columnId) {
|
|
425
|
+
return columnLookup[columnId];
|
|
426
|
+
});
|
|
427
|
+
/**
|
|
428
|
+
* Step 3: Remove any duplicate column Id references in the column order.
|
|
429
|
+
*/
|
|
430
|
+
|
|
431
|
+
var filteredNextColumnOrder = [];
|
|
432
|
+
nextColumnOrder.forEach(function (columnId) {
|
|
433
|
+
if (columnId && filteredNextColumnOrder.indexOf(columnId) === -1) filteredNextColumnOrder.push(columnId);
|
|
434
|
+
});
|
|
435
|
+
return filteredNextColumnOrder;
|
|
436
|
+
};
|
|
389
437
|
/**
|
|
390
438
|
* Get table columns with added operands. Operands are the A, B, C, etc.
|
|
391
439
|
*/
|
|
392
440
|
|
|
393
441
|
|
|
394
|
-
exports.
|
|
442
|
+
exports.getCleanedColumnOrder = getCleanedColumnOrder;
|
|
395
443
|
|
|
396
444
|
var getColumns = function getColumns(columns) {
|
|
397
445
|
var parsedColumns = columns;
|