@builttocreate/engine-utils 2.6.0-beta.2 → 2.6.0-beta.21
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/joyDocHelper.js +206 -5
- package/package.json +3 -3
package/dist/joyDocHelper.js
CHANGED
|
@@ -5,7 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.sortPages = exports.getPageOrder = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
|
|
8
|
+
exports.sortPages = exports.sortFieldPositionsByXAndYCoordinates = exports.mergeAssoicatedFieldPositionsForMobileView = exports.getPageOrder = exports.getMobileViewFromFile = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.generateMobileViewPageFieldPositions = exports.generateMobileViewPage = exports.generateMobileViewFile = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
11
|
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
13
|
|
|
@@ -21,6 +23,10 @@ var _DocumentTypes = _interopRequireDefault(require("./constants/DocumentTypes")
|
|
|
21
23
|
|
|
22
24
|
var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
|
|
23
25
|
|
|
26
|
+
var _FieldDisplayTypes = _interopRequireDefault(require("./constants/FieldDisplayTypes"));
|
|
27
|
+
|
|
28
|
+
var _FileViews = _interopRequireDefault(require("./constants/FileViews"));
|
|
29
|
+
|
|
24
30
|
var _tableHelper = require("./tableHelper");
|
|
25
31
|
|
|
26
32
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -41,10 +47,11 @@ var getDefaultJoyDocPage = function getDefaultJoyDocPage() {
|
|
|
41
47
|
width: 816,
|
|
42
48
|
height: 1056,
|
|
43
49
|
rowHeight: 8,
|
|
44
|
-
cols:
|
|
50
|
+
cols: 8,
|
|
45
51
|
fieldPositions: [],
|
|
46
52
|
layout: _PageLayoutModes["default"].grid,
|
|
47
|
-
presentation: _FieldPresentationModes["default"].normal
|
|
53
|
+
presentation: _FieldPresentationModes["default"].normal,
|
|
54
|
+
padding: 24
|
|
48
55
|
}, defaults);
|
|
49
56
|
};
|
|
50
57
|
/**
|
|
@@ -66,7 +73,10 @@ var getDefaultJoyDocFile = function getDefaultJoyDocFile() {
|
|
|
66
73
|
_id: (0, _generateObjectId["default"])(),
|
|
67
74
|
name: 'New File',
|
|
68
75
|
pageOrder: [page._id],
|
|
69
|
-
pages: [page]
|
|
76
|
+
pages: [page],
|
|
77
|
+
styles: {
|
|
78
|
+
margin: 4
|
|
79
|
+
}
|
|
70
80
|
}, defaults);
|
|
71
81
|
};
|
|
72
82
|
/**
|
|
@@ -606,8 +616,194 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
|
|
|
606
616
|
doc: nextDoc
|
|
607
617
|
};
|
|
608
618
|
};
|
|
619
|
+
/**
|
|
620
|
+
* Generate the mobile view and add specific mobile view properties
|
|
621
|
+
*
|
|
622
|
+
* @param {Object} file //Full file object
|
|
623
|
+
* @returns {Object}
|
|
624
|
+
*/
|
|
625
|
+
|
|
609
626
|
|
|
610
627
|
exports.duplicateDocumentPage = duplicateDocumentPage;
|
|
628
|
+
|
|
629
|
+
var getMobileViewFromFile = function getMobileViewFromFile(file) {
|
|
630
|
+
var _file$views;
|
|
631
|
+
|
|
632
|
+
var mobileViewIndex = file !== null && file !== void 0 && file.views && (file === null || file === void 0 ? void 0 : (_file$views = file.views) === null || _file$views === void 0 ? void 0 : _file$views.length) > 0 ? file.views.findIndex(function (view) {
|
|
633
|
+
return view.type === _FileViews["default"].mobile;
|
|
634
|
+
}) : -1;
|
|
635
|
+
|
|
636
|
+
if (mobileViewIndex !== -1) {
|
|
637
|
+
/**
|
|
638
|
+
* Why do we do this? Early versions of alternative views did not contain pageOrder so
|
|
639
|
+
* we ensure it's populated here.
|
|
640
|
+
*/
|
|
641
|
+
var mobileView = file.views[mobileViewIndex];
|
|
642
|
+
var mobileViewPageOrder = cleanPageOrder(getPageOrder(mobileView.pageOrder, mobileView.pages), mobileView.pages);
|
|
643
|
+
return _objectSpread(_objectSpread({}, mobileView), {}, {
|
|
644
|
+
pageOrder: mobileViewPageOrder
|
|
645
|
+
});
|
|
646
|
+
} else {
|
|
647
|
+
return generateMobileViewFile(file);
|
|
648
|
+
}
|
|
649
|
+
};
|
|
650
|
+
/**
|
|
651
|
+
* Generate the mobile view and add specific mobile view properties
|
|
652
|
+
*
|
|
653
|
+
* @param {Object} file //Full file object
|
|
654
|
+
* @returns {Object}
|
|
655
|
+
*/
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
exports.getMobileViewFromFile = getMobileViewFromFile;
|
|
659
|
+
|
|
660
|
+
var generateMobileViewFile = function generateMobileViewFile(file) {
|
|
661
|
+
var pages = file.pages || [];
|
|
662
|
+
var pageOrder = cleanPageOrder(getPageOrder(file.pageOrder, file.pages), file.pages);
|
|
663
|
+
return {
|
|
664
|
+
_id: (0, _generateObjectId["default"])(),
|
|
665
|
+
type: _FileViews["default"].mobile,
|
|
666
|
+
pages: (0, _toConsumableArray2["default"])(pages).map(function (page) {
|
|
667
|
+
var _id = page._id,
|
|
668
|
+
name = page.name,
|
|
669
|
+
identifier = page.identifier,
|
|
670
|
+
fieldPositions = page.fieldPositions;
|
|
671
|
+
return generateMobileViewPage({
|
|
672
|
+
_id: _id,
|
|
673
|
+
identifier: identifier,
|
|
674
|
+
name: name,
|
|
675
|
+
fieldPositions: fieldPositions
|
|
676
|
+
});
|
|
677
|
+
}),
|
|
678
|
+
pageOrder: (0, _toConsumableArray2["default"])(pageOrder)
|
|
679
|
+
};
|
|
680
|
+
};
|
|
681
|
+
/**
|
|
682
|
+
* Apply the proper page defaults for a mobile view to existing page.
|
|
683
|
+
*
|
|
684
|
+
* @param {Object} page
|
|
685
|
+
* @returns {Objectg}
|
|
686
|
+
*/
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
exports.generateMobileViewFile = generateMobileViewFile;
|
|
690
|
+
|
|
691
|
+
var generateMobileViewPage = function generateMobileViewPage(page) {
|
|
692
|
+
return _objectSpread(_objectSpread({}, page), {}, {
|
|
693
|
+
fieldPositions: page.fieldPositions ? generateMobileViewPageFieldPositions(page.fieldPositions, page.rowHeight) : [],
|
|
694
|
+
rowHeight: 1,
|
|
695
|
+
cols: 1,
|
|
696
|
+
padding: 12,
|
|
697
|
+
width: 816,
|
|
698
|
+
height: 1056,
|
|
699
|
+
layout: _PageLayoutModes["default"].grid,
|
|
700
|
+
presentation: _FieldPresentationModes["default"].normal
|
|
701
|
+
});
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
exports.generateMobileViewPage = generateMobileViewPage;
|
|
705
|
+
|
|
706
|
+
var generateMobileViewPageFieldPositions = function generateMobileViewPageFieldPositions(fieldPositions, originalRowHeight) {
|
|
707
|
+
var mobileFieldPositions = [];
|
|
708
|
+
/**
|
|
709
|
+
* Step 1: Sort fieldPositions
|
|
710
|
+
*/
|
|
711
|
+
|
|
712
|
+
var sortedFieldPositions = sortFieldPositionsByXAndYCoordinates(fieldPositions);
|
|
713
|
+
sortedFieldPositions.forEach(function (joySpecFieldPosition) {
|
|
714
|
+
var mobileFieldPositionData = _objectSpread(_objectSpread({}, joySpecFieldPosition), {}, {
|
|
715
|
+
displayType: _FieldDisplayTypes["default"].original,
|
|
716
|
+
height: joySpecFieldPosition.height * (originalRowHeight || 1),
|
|
717
|
+
width: 1,
|
|
718
|
+
x: 0
|
|
719
|
+
});
|
|
720
|
+
/**
|
|
721
|
+
* Step 1.2 Hide chart lines on mobile
|
|
722
|
+
*/
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
if (joySpecFieldPosition.type === _FieldTypes["default"].chart) mobileFieldPositionData.primaryDisplayOnly = true;
|
|
726
|
+
mobileFieldPositions.push(mobileFieldPositionData);
|
|
727
|
+
});
|
|
728
|
+
return mergeAssoicatedFieldPositionsForMobileView(mobileFieldPositions);
|
|
729
|
+
};
|
|
730
|
+
/**
|
|
731
|
+
* Merge Field Positions assoicated with the same Field.
|
|
732
|
+
*
|
|
733
|
+
* Why do duplicate fields get created from fieldPositions
|
|
734
|
+
*
|
|
735
|
+
* The same field can get added twice because we may have multiple fieldPositions belonging
|
|
736
|
+
* to the same field. This can happen with dropdown, multiSelect, and table fields.
|
|
737
|
+
*
|
|
738
|
+
* Since the fields get generated by looping over the fieldPositions and not regular fields
|
|
739
|
+
* we may encounter the the same field multiple times because it has multiple fieldPositions.
|
|
740
|
+
*
|
|
741
|
+
* @param {Array} fields
|
|
742
|
+
* @returns {Array}
|
|
743
|
+
*/
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
exports.generateMobileViewPageFieldPositions = generateMobileViewPageFieldPositions;
|
|
747
|
+
|
|
748
|
+
var mergeAssoicatedFieldPositionsForMobileView = function mergeAssoicatedFieldPositionsForMobileView(fieldPositions) {
|
|
749
|
+
var filteredFieldPositions = [];
|
|
750
|
+
fieldPositions === null || fieldPositions === void 0 ? void 0 : fieldPositions.forEach(function (fieldPosition) {
|
|
751
|
+
var fieldPositionIndex = filteredFieldPositions.findIndex(function (filtered) {
|
|
752
|
+
var _filtered$field, _fieldPosition$field;
|
|
753
|
+
|
|
754
|
+
return (filtered === null || filtered === void 0 ? void 0 : (_filtered$field = filtered.field) === null || _filtered$field === void 0 ? void 0 : _filtered$field.toString()) === (fieldPosition === null || fieldPosition === void 0 ? void 0 : (_fieldPosition$field = fieldPosition.field) === null || _fieldPosition$field === void 0 ? void 0 : _fieldPosition$field.toString());
|
|
755
|
+
}); //Only add field to the list if it hasn't already been added
|
|
756
|
+
|
|
757
|
+
if (fieldPositionIndex === -1) filteredFieldPositions.push(fieldPosition);
|
|
758
|
+
});
|
|
759
|
+
return filteredFieldPositions;
|
|
760
|
+
};
|
|
761
|
+
/**
|
|
762
|
+
* Sort fields by their y and x coordinates
|
|
763
|
+
*
|
|
764
|
+
* For example:
|
|
765
|
+
* [
|
|
766
|
+
* { "y": 3, "x": 4 },
|
|
767
|
+
* { "y": 3, "x": 1 },
|
|
768
|
+
* { "y": 2, "x": 0 },
|
|
769
|
+
* { "y": 1, "x": 5.22 },
|
|
770
|
+
* { "y": 1, "x": 10 },
|
|
771
|
+
* { "y": 1, "x": 0 },
|
|
772
|
+
* ]
|
|
773
|
+
* will become the following after sort
|
|
774
|
+
* [
|
|
775
|
+
* { "y": 1, "x": 0 },
|
|
776
|
+
* { "y": 1, "x": 5.22 },
|
|
777
|
+
* { "y": 1, "x": 10 },
|
|
778
|
+
* { "y": 2, "x": 0 },
|
|
779
|
+
* { "y": 3, "x": 1 },
|
|
780
|
+
* { "y": 3, "x": 4 }
|
|
781
|
+
* ];
|
|
782
|
+
*
|
|
783
|
+
* @param {Array} fieldPositions
|
|
784
|
+
* @returns {Array}
|
|
785
|
+
*/
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
exports.mergeAssoicatedFieldPositionsForMobileView = mergeAssoicatedFieldPositionsForMobileView;
|
|
789
|
+
|
|
790
|
+
var sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoordinates(fieldPositions) {
|
|
791
|
+
var sortedFieldPositions = (0, _toConsumableArray2["default"])(fieldPositions);
|
|
792
|
+
sortedFieldPositions.sort(function (a, b) {
|
|
793
|
+
if (a.y === b.y) {
|
|
794
|
+
return a.x - b.x;
|
|
795
|
+
} else if (a.y > b.y) {
|
|
796
|
+
return 1;
|
|
797
|
+
} else if (a.y < b.y) {
|
|
798
|
+
return -1;
|
|
799
|
+
} else {
|
|
800
|
+
return 0;
|
|
801
|
+
}
|
|
802
|
+
});
|
|
803
|
+
return sortedFieldPositions;
|
|
804
|
+
};
|
|
805
|
+
|
|
806
|
+
exports.sortFieldPositionsByXAndYCoordinates = sortFieldPositionsByXAndYCoordinates;
|
|
611
807
|
var _default = {
|
|
612
808
|
getDefaultJoyDocPage: getDefaultJoyDocPage,
|
|
613
809
|
getDefaultJoyDocFile: getDefaultJoyDocFile,
|
|
@@ -620,6 +816,11 @@ var _default = {
|
|
|
620
816
|
duplicate: duplicate,
|
|
621
817
|
duplicateDocumentPage: duplicateDocumentPage,
|
|
622
818
|
getPageOrder: getPageOrder,
|
|
623
|
-
sortPages: sortPages
|
|
819
|
+
sortPages: sortPages,
|
|
820
|
+
sortFieldPositionsByXAndYCoordinates: sortFieldPositionsByXAndYCoordinates,
|
|
821
|
+
mergeAssoicatedFieldPositionsForMobileView: mergeAssoicatedFieldPositionsForMobileView,
|
|
822
|
+
generateMobileViewFile: generateMobileViewFile,
|
|
823
|
+
generateMobileViewPage: generateMobileViewPage,
|
|
824
|
+
generateMobileViewPageFieldPositions: generateMobileViewPageFieldPositions
|
|
624
825
|
};
|
|
625
826
|
exports["default"] = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builttocreate/engine-utils",
|
|
3
|
-
"version": "2.6.0-beta.
|
|
3
|
+
"version": "2.6.0-beta.21",
|
|
4
4
|
"description": "Utility library for common logic shared across web and mobile",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"clean": "rm -rf dist",
|
|
12
12
|
"build-src": "NODE_ENV=production babel src --out-dir dist --extensions '.js,.jsx' --ignore 'src/testUtils/*','src/**/*.stories.js','src/**/*.test.js','src/lib/**/*.test.js','src/**/__snapshots__','src/**/__mocks__'",
|
|
13
13
|
"build": "npm run clean && npm run build-src",
|
|
14
|
-
"
|
|
14
|
+
"prepare": "npm run build",
|
|
15
15
|
"publish-beta": "npm publish --tag beta",
|
|
16
16
|
"test": "jest",
|
|
17
17
|
"test-watch": "jest --watch",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"type": "git",
|
|
24
24
|
"url": "git+https://github.com/zionlabs/engine-utils.git"
|
|
25
25
|
},
|
|
26
|
-
"author": "
|
|
26
|
+
"author": "Joyfill Team",
|
|
27
27
|
"license": "ISC",
|
|
28
28
|
"bugs": {
|
|
29
29
|
"url": "https://github.com/zionlabs/engine-utils/issues"
|