fuse-importer 0.27.0 → 0.30.0
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/lib/esm/Importer/ImporterWithContext.d.ts +2 -0
- package/lib/esm/Importer/ImporterWithContext.js +51 -13
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +2 -2
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +4 -3
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +14 -9
- package/lib/esm/Importer/Matcher/index.js +0 -11
- package/lib/esm/Importer/PreviewFirstTime.js +1 -1
- package/lib/esm/Importer/Review/AppResponseModal.js +2 -2
- package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +8 -6
- package/lib/esm/Importer/Review/ReviewContextProvider.js +72 -195
- package/lib/esm/Importer/Review/ReviewWithContext.js +2 -2
- package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +2 -1
- package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -2
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +1 -1
- package/lib/esm/Importer/Stepper/index.js +36 -13
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +2 -1
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +15 -64
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +2 -2
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +11 -3
- package/lib/esm/Importer/Uploader/HeadersPreview.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.d.ts +16 -0
- package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.js +63 -0
- package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.d.ts +19 -0
- package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.js +155 -0
- package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.d.ts +29 -0
- package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.js +150 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +6 -4
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +38 -45
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.d.ts +7 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.js +152 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +7 -30
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +10 -141
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.js +81 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.js +119 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +1 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +8 -0
- package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.d.ts +31 -0
- package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.js +324 -0
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +18 -9
- package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -3
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +0 -2
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +26 -11
- package/lib/esm/Importer/common/Spreadsheet/components/FindAndReplace/index.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/components/FindAndReplace/index.js +88 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +25 -17
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +48 -47
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +3 -3
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.d.ts +1 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +7 -3
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.d.ts +3 -1
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +45 -11
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +12 -5
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +81 -26
- package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.d.ts +11 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.js +29 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +1 -2
- package/lib/esm/Importer/common/Spreadsheet/index.d.ts +0 -1
- package/lib/esm/Importer/common/Spreadsheet/index.js +1 -84
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/styles.js +13 -1
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +2 -2
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +35 -13
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/dateTimeAutoformatUtils.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/dateTimeAutoformatUtils.js +231 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/index.d.ts +18 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/index.js +179 -0
- package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.js +81 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +5 -3
- package/lib/esm/Importer/common/Spreadsheet/validation/index.js +13 -17
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +3 -2
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +23 -7
- package/lib/esm/Importer/common/theme.d.ts +1 -0
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +13 -4
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +150 -21
- package/lib/esm/Importer/data/index.d.ts +7 -3
- package/lib/esm/Importer/data/index.js +49 -20
- package/lib/esm/Importer/hooks/useExportDataToFile.d.ts +5 -0
- package/lib/esm/Importer/hooks/useExportDataToFile.js +54 -0
- package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +7 -0
- package/lib/esm/Importer/hooks/useSubmitToServer.js +214 -0
- package/lib/esm/Importer/index.d.ts +4 -3
- package/lib/esm/Importer/index.js +2 -2
- package/lib/esm/common/CircleSpinner.d.ts +1 -0
- package/lib/esm/common/CircleSpinner.js +13 -0
- package/lib/esm/common/ConfirmationModal.js +1 -1
- package/lib/esm/common/EventManagerContextProvider/index.d.ts +22 -0
- package/lib/esm/common/EventManagerContextProvider/index.js +38 -0
- package/lib/esm/common/FileUploadDropzone/ImporterDropzone.d.ts +16 -0
- package/lib/esm/common/FileUploadDropzone/ImporterDropzone.js +143 -0
- package/lib/esm/common/FileUploadDropzone/index.d.ts +1 -0
- package/lib/esm/common/FileUploadDropzone/index.js +1 -0
- package/lib/esm/common/Modal.js +2 -2
- package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +150 -0
- package/lib/esm/common/Table/TableActions/CustomActions/index.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/CustomActions/index.js +1 -0
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +25 -8
- package/lib/esm/common/Table/TableActions/ExportData.js +5 -3
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +41 -10
- package/lib/esm/common/Table/TableActions/RowFilters.js +63 -11
- package/lib/esm/common/Table/TableActions/SearchRows.js +28 -17
- package/lib/esm/common/Table/TableActions/TableActions.js +15 -4
- package/lib/esm/common/Table/TableActions/TableActions.styles.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/TableActions.styles.js +4 -3
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +6 -0
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +71 -0
- package/lib/esm/common/Table/TableActions/ValidationProgress.d.ts +2 -0
- package/lib/esm/common/Table/TableActions/ValidationProgress.js +22 -0
- package/lib/esm/common/Table/TableActions/icons.d.ts +3 -0
- package/lib/esm/common/Table/TableActions/icons.js +3 -0
- package/lib/esm/common/Table/TableActions/useFindAndReplace.d.ts +5 -0
- package/lib/esm/common/Table/TableActions/useFindAndReplace.js +45 -0
- package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +1 -1
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +3 -3
- package/lib/esm/common/Table/TableView/TableRows/index.js +21 -6
- package/lib/esm/common/Table/TableView/index.d.ts +1 -1
- package/lib/esm/common/Table/TableView/index.js +7 -16
- package/lib/esm/common/Table/TableView/types.d.ts +9 -9
- package/lib/esm/common/Table/index.d.ts +2 -1
- package/lib/esm/common/Table/index.js +2 -2
- package/lib/esm/common/Toast.d.ts +42 -3
- package/lib/esm/common/Toast.js +56 -18
- package/lib/esm/common/TooltipProvider.d.ts +2 -0
- package/lib/esm/common/TooltipProvider.js +12 -9
- package/lib/esm/common/buttons.d.ts +5 -1
- package/lib/esm/common/buttons.js +19 -13
- package/lib/esm/common/columnsTransformations.d.ts +1 -0
- package/lib/esm/common/columnsTransformations.js +10 -16
- package/lib/esm/common/columnsValidations.d.ts +0 -26
- package/lib/esm/common/columnsValidations.js +1 -31
- package/lib/esm/common/datePatterns.d.ts +26 -0
- package/lib/esm/common/datePatterns.js +327 -0
- package/lib/esm/common/icons/index.d.ts +4 -0
- package/lib/esm/common/icons/index.js +6 -2
- package/lib/esm/common/index.d.ts +2 -0
- package/lib/esm/common/index.js +2 -0
- package/lib/esm/common/inputs/Autocomplete.js +2 -2
- package/lib/esm/common/inputs/Checkbox.d.ts +2 -1
- package/lib/esm/common/inputs/Checkbox.js +9 -7
- package/lib/esm/common/inputs/SelectMenu.d.ts +2 -1
- package/lib/esm/common/inputs/SelectMenu.js +14 -3
- package/lib/esm/common/inputs/TextInput.js +1 -1
- package/lib/esm/index.d.ts +3 -1
- package/lib/esm/index.js +9 -2
- package/lib/esm/locales/de.d.ts +13 -1
- package/lib/esm/locales/de.js +14 -2
- package/lib/esm/locales/en.d.ts +26 -1
- package/lib/esm/locales/en.js +30 -5
- package/lib/esm/locales/es.d.ts +13 -1
- package/lib/esm/locales/es.js +14 -2
- package/lib/esm/locales/fr.d.ts +13 -1
- package/lib/esm/locales/fr.js +14 -2
- package/lib/esm/styled/theme/colorPalette.d.ts +2 -0
- package/lib/esm/styled/theme/colorPalette.js +1 -0
- package/lib/esm/styled/theme/index.d.ts +1 -0
- package/lib/esm/styled/theme/textCss.js +1 -1
- package/lib/esm/types.d.ts +48 -5
- package/lib/esm/types.js +0 -1
- package/lib/esm/utils/index.d.ts +1 -0
- package/lib/esm/utils/index.js +4 -0
- package/lib/main.js +24 -24
- package/lib/main.js.LICENSE.txt +2 -0
- package/package.json +8 -6
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +0 -8
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -33
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -5
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +0 -3
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
- package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +0 -34
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -254
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +0 -8
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +0 -106
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +0 -11
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
- package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -18
- package/lib/esm/common/Table/TableActions/hooks.js +0 -41
- package/lib/esm/common/Table/TableView/CustomScrollbar.d.ts +0 -2
- package/lib/esm/common/Table/TableView/CustomScrollbar.js +0 -34
|
@@ -55,19 +55,14 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
55
55
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
56
56
|
};
|
|
57
57
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
58
|
-
import Fuse from "fuse.js";
|
|
59
58
|
import { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
|
|
60
59
|
import { FieldTypes, } from "../../types";
|
|
61
60
|
import { FuseApi } from "../common/FuseApi";
|
|
62
61
|
import { getCustomTheme, theme } from "../common/theme";
|
|
63
62
|
import { getColumnType, verifyDuplicateValue } from "../common/utils";
|
|
64
|
-
export var fusejsOptions = {
|
|
65
|
-
includeScore: true,
|
|
66
|
-
threshold: 0.35,
|
|
67
|
-
};
|
|
68
63
|
var ImporterContext = createContext({});
|
|
69
64
|
export var ImporterContextProvider = function (_a) {
|
|
70
|
-
var templateSlug = _a.templateSlug, initialRecords = _a.initialRecords, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns;
|
|
65
|
+
var templateSlug = _a.templateSlug, initialRecords = _a.initialRecords, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns, customActions = _a.customActions;
|
|
71
66
|
var _b = useState(initialRecords ? 2 : 0), currentStepIndex = _b[0], setCurrentStepIndex = _b[1];
|
|
72
67
|
var _c = useState(0), matcherSubstep = _c[0], setMatcherSubstep = _c[1];
|
|
73
68
|
var _d = useState(null), templateError = _d[0], setTemplateError = _d[1];
|
|
@@ -76,20 +71,51 @@ export var ImporterContextProvider = function (_a) {
|
|
|
76
71
|
var _g = useState(null), uploadedData = _g[0], setUploadedData = _g[1];
|
|
77
72
|
var _h = useState(null), organization = _h[0], setOrganization = _h[1];
|
|
78
73
|
var _j = useState(null), previewFirstTime = _j[0], setPreviewFirstTime = _j[1];
|
|
79
|
-
var _k = useState(
|
|
74
|
+
var _k = useState(null), headersMappings = _k[0], setHeadersMappings = _k[1];
|
|
75
|
+
var _l = useState({
|
|
80
76
|
theme: theme,
|
|
81
77
|
logoURL: null,
|
|
82
|
-
}), style =
|
|
83
|
-
var
|
|
84
|
-
var
|
|
85
|
-
var
|
|
86
|
-
var
|
|
78
|
+
}), style = _l[0], setStyle = _l[1];
|
|
79
|
+
var _m = useState(null), templateHeaderMatchings = _m[0], setTemplateHeaderMatchings = _m[1];
|
|
80
|
+
var _o = useState({}), enumFieldValueMatchings = _o[0], setEnumFieldValueMatchings = _o[1];
|
|
81
|
+
var _p = useState(null), uploadedDataEnumFieldValues = _p[0], setUploadedDataEnumFieldValues = _p[1];
|
|
82
|
+
var _q = useState([]), selectedRows = _q[0], setSelectedRows = _q[1];
|
|
87
83
|
var isUsingManualImport = useRef(false);
|
|
88
|
-
var
|
|
84
|
+
var _r = useState(0), headerRowIndex = _r[0], setHeaderRowIndex = _r[1];
|
|
85
|
+
var _s = useState(false), headerMappingsLoaded = _s[0], setHeaderMappingsLoaded = _s[1];
|
|
86
|
+
var _t = useState(false), valueMappingsLoaded = _t[0], setValueMappingsLoaded = _t[1];
|
|
89
87
|
var fuseApi = useMemo(function () { return new FuseApi(options.env, apiToken); }, [
|
|
90
88
|
options.env,
|
|
91
89
|
apiToken,
|
|
92
90
|
]);
|
|
91
|
+
var fetchColumnMappings = function (userDynamicColumns) { return __awaiter(void 0, void 0, void 0, function () {
|
|
92
|
+
var mappings;
|
|
93
|
+
return __generator(this, function (_a) {
|
|
94
|
+
switch (_a.label) {
|
|
95
|
+
case 0: return [4 /*yield*/, fuseApi.post("/api/v1/importer/templates/".concat(templateSlug, "/column_mappings"), {
|
|
96
|
+
file_headers: uploadedDataHeaders,
|
|
97
|
+
dynamic_columns: userDynamicColumns,
|
|
98
|
+
})];
|
|
99
|
+
case 1:
|
|
100
|
+
mappings = (_a.sent()).data.mappings;
|
|
101
|
+
return [2 /*return*/, mappings];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}); };
|
|
105
|
+
var fetchValueMappings = function (_uploadedDataEnumFieldValues, userDynamicValues) { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
var mappings;
|
|
107
|
+
return __generator(this, function (_a) {
|
|
108
|
+
switch (_a.label) {
|
|
109
|
+
case 0: return [4 /*yield*/, fuseApi.post("/api/v1/importer/templates/".concat(templateSlug, "/value_mappings"), {
|
|
110
|
+
file_values: _uploadedDataEnumFieldValues,
|
|
111
|
+
dynamic_values: userDynamicValues,
|
|
112
|
+
})];
|
|
113
|
+
case 1:
|
|
114
|
+
mappings = (_a.sent()).data.mappings;
|
|
115
|
+
return [2 /*return*/, mappings];
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}); };
|
|
93
119
|
var uploadedDataHeaders = useMemo(function () {
|
|
94
120
|
var _a;
|
|
95
121
|
if (!uploadedData)
|
|
@@ -104,23 +130,109 @@ export var ImporterContextProvider = function (_a) {
|
|
|
104
130
|
return typeof ud === "number" ? ud.toString() : ud;
|
|
105
131
|
});
|
|
106
132
|
}, [uploadedData, headerRowIndex]);
|
|
133
|
+
var userDynamicColumns = dynamicColumns.map(function (value) { return value.label; });
|
|
134
|
+
// use the API to match selected headers to the template
|
|
135
|
+
var loadHeaderMappings = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
136
|
+
var mappings, e_1;
|
|
137
|
+
return __generator(this, function (_a) {
|
|
138
|
+
switch (_a.label) {
|
|
139
|
+
case 0:
|
|
140
|
+
setHeaderMappingsLoaded(false);
|
|
141
|
+
_a.label = 1;
|
|
142
|
+
case 1:
|
|
143
|
+
_a.trys.push([1, 3, , 4]);
|
|
144
|
+
return [4 /*yield*/, fetchColumnMappings(userDynamicColumns)];
|
|
145
|
+
case 2:
|
|
146
|
+
mappings = _a.sent();
|
|
147
|
+
setHeadersMappings(mappings);
|
|
148
|
+
return [3 /*break*/, 4];
|
|
149
|
+
case 3:
|
|
150
|
+
e_1 = _a.sent();
|
|
151
|
+
setHeadersMappings([]);
|
|
152
|
+
console.error("Error occurred while fetching header mappings", e_1);
|
|
153
|
+
return [3 /*break*/, 4];
|
|
154
|
+
case 4:
|
|
155
|
+
setHeaderMappingsLoaded(true);
|
|
156
|
+
return [2 /*return*/];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}); };
|
|
160
|
+
useEffect(function () {
|
|
161
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
162
|
+
return __generator(this, function (_a) {
|
|
163
|
+
if (uploadedDataHeaders) {
|
|
164
|
+
loadHeaderMappings();
|
|
165
|
+
}
|
|
166
|
+
return [2 /*return*/];
|
|
167
|
+
});
|
|
168
|
+
}); })();
|
|
169
|
+
}, [uploadedDataHeaders]);
|
|
170
|
+
// Values mappings for enum columns
|
|
171
|
+
var loadValueMappings = function (_uploadedDataEnumFieldValues) { return __awaiter(void 0, void 0, void 0, function () {
|
|
172
|
+
var dynamicValues, mappings, e_2;
|
|
173
|
+
return __generator(this, function (_a) {
|
|
174
|
+
switch (_a.label) {
|
|
175
|
+
case 0:
|
|
176
|
+
setValueMappingsLoaded(false);
|
|
177
|
+
if (!(!!_uploadedDataEnumFieldValues &&
|
|
178
|
+
Object.keys(_uploadedDataEnumFieldValues).length > 0)) return [3 /*break*/, 4];
|
|
179
|
+
_a.label = 1;
|
|
180
|
+
case 1:
|
|
181
|
+
_a.trys.push([1, 3, , 4]);
|
|
182
|
+
dynamicValues = userDynamicColumns.reduce(function (acc, column) {
|
|
183
|
+
var _a;
|
|
184
|
+
var values = (_a = templateHeaders.find(function (header) { return header.label === column; })) === null || _a === void 0 ? void 0 : _a.values;
|
|
185
|
+
if (values) {
|
|
186
|
+
acc[column] = values;
|
|
187
|
+
}
|
|
188
|
+
return acc;
|
|
189
|
+
}, {});
|
|
190
|
+
return [4 /*yield*/, fetchValueMappings(_uploadedDataEnumFieldValues, dynamicValues)];
|
|
191
|
+
case 2:
|
|
192
|
+
mappings = _a.sent();
|
|
193
|
+
setEnumFieldValueMatchings(mappings);
|
|
194
|
+
return [3 /*break*/, 4];
|
|
195
|
+
case 3:
|
|
196
|
+
e_2 = _a.sent();
|
|
197
|
+
setEnumFieldValueMatchings({});
|
|
198
|
+
console.error("Error occurred while fetching value mappings", e_2);
|
|
199
|
+
return [3 /*break*/, 4];
|
|
200
|
+
case 4:
|
|
201
|
+
setValueMappingsLoaded(true);
|
|
202
|
+
return [2 /*return*/];
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}); };
|
|
107
206
|
useEffect(function () {
|
|
108
207
|
var setHeadersFromDataset = function () {
|
|
109
208
|
var _templateHeaderMatchings = {};
|
|
110
|
-
var fuse = new Fuse(uploadedDataHeaders, fusejsOptions);
|
|
111
209
|
templateHeaders.forEach(function (templateHeader, _index) {
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
210
|
+
var mappedHeader = headersMappings.find(function (headerMapping) {
|
|
211
|
+
var matchedColumn = Object.values(headerMapping)[0];
|
|
212
|
+
if (matchedColumn) {
|
|
213
|
+
return (matchedColumn.toLowerCase() === templateHeader.label.toLowerCase());
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
if (mappedHeader) {
|
|
220
|
+
_templateHeaderMatchings[templateHeader.label] = Object.keys(mappedHeader)[0];
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
_templateHeaderMatchings[templateHeader.label] = null;
|
|
224
|
+
}
|
|
115
225
|
});
|
|
116
226
|
setTemplateHeaderMatchings(_templateHeaderMatchings);
|
|
117
227
|
};
|
|
118
|
-
if (uploadedDataHeaders) {
|
|
228
|
+
if (uploadedDataHeaders && headersMappings) {
|
|
119
229
|
setHeadersFromDataset();
|
|
120
230
|
}
|
|
121
|
-
}, [uploadedDataHeaders]);
|
|
231
|
+
}, [uploadedDataHeaders, headersMappings]);
|
|
122
232
|
useEffect(function () {
|
|
123
|
-
if (!templateHeaderMatchings ||
|
|
233
|
+
if (!templateHeaderMatchings ||
|
|
234
|
+
!uploadedDataHeaders ||
|
|
235
|
+
!headerMappingsLoaded)
|
|
124
236
|
return;
|
|
125
237
|
var _uploadedDataEnumFieldValues = {};
|
|
126
238
|
var templateLabels = Object.keys(templateHeaderMatchings);
|
|
@@ -142,7 +254,13 @@ export var ImporterContextProvider = function (_a) {
|
|
|
142
254
|
});
|
|
143
255
|
});
|
|
144
256
|
setUploadedDataEnumFieldValues(_uploadedDataEnumFieldValues);
|
|
145
|
-
|
|
257
|
+
var valueLimitPerEnumField = Math.ceil(40 / enumFieldsLabels.length);
|
|
258
|
+
var enumFieldsLabelsLimited = {};
|
|
259
|
+
Object.keys(_uploadedDataEnumFieldValues).forEach(function (key) {
|
|
260
|
+
enumFieldsLabelsLimited[key] = _uploadedDataEnumFieldValues[key].slice(0, valueLimitPerEnumField);
|
|
261
|
+
});
|
|
262
|
+
loadValueMappings(enumFieldsLabelsLimited);
|
|
263
|
+
}, [headerMappingsLoaded, matcherSubstep]);
|
|
146
264
|
useEffect(function () {
|
|
147
265
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
148
266
|
var _a, organization_1, columns_1, importer_style_preferences, integrations_1, preview_first_time, error_1, errorMsg;
|
|
@@ -188,6 +306,11 @@ export var ImporterContextProvider = function (_a) {
|
|
|
188
306
|
var resetImport = function () {
|
|
189
307
|
setUploadedData(null);
|
|
190
308
|
setTemplateHeaderMatchings(null);
|
|
309
|
+
setHeadersMappings(null);
|
|
310
|
+
setEnumFieldValueMatchings({});
|
|
311
|
+
setUploadedDataEnumFieldValues(null);
|
|
312
|
+
setSelectedRows([]);
|
|
313
|
+
setHeaderRowIndex(0);
|
|
191
314
|
};
|
|
192
315
|
var resetImporterWhenUsingManualImport = function () {
|
|
193
316
|
setCurrentStepIndex(0);
|
|
@@ -207,6 +330,7 @@ export var ImporterContextProvider = function (_a) {
|
|
|
207
330
|
initialRecords: initialRecords,
|
|
208
331
|
currentStepIndex: currentStepIndex,
|
|
209
332
|
templateHeaders: templateHeaders,
|
|
333
|
+
userDynamicColumns: userDynamicColumns,
|
|
210
334
|
enumFieldValueMatchings: enumFieldValueMatchings,
|
|
211
335
|
templateHeaderMatchings: templateHeaderMatchings,
|
|
212
336
|
uploadedDataEnumFieldValues: uploadedDataEnumFieldValues,
|
|
@@ -226,6 +350,7 @@ export var ImporterContextProvider = function (_a) {
|
|
|
226
350
|
headerRowIndex: headerRowIndex,
|
|
227
351
|
setHeaderRowIndex: setHeaderRowIndex,
|
|
228
352
|
setUploadedData: setUploadedData,
|
|
353
|
+
setHeadersMappings: setHeadersMappings,
|
|
229
354
|
formatRecord: formatRecord,
|
|
230
355
|
setCurrentStepIndex: setCurrentStepIndex,
|
|
231
356
|
setEnumFieldValueMatchings: setEnumFieldValueMatchings,
|
|
@@ -241,6 +366,10 @@ export var ImporterContextProvider = function (_a) {
|
|
|
241
366
|
isUsingManualImport: isUsingManualImport,
|
|
242
367
|
resetImporterWhenUsingManualImport: resetImporterWhenUsingManualImport,
|
|
243
368
|
manualDataImportSelected: manualDataImportSelected,
|
|
369
|
+
customActions: customActions,
|
|
370
|
+
headerMappingsLoaded: headerMappingsLoaded,
|
|
371
|
+
valueMappingsLoaded: valueMappingsLoaded,
|
|
372
|
+
headersMappings: headersMappings,
|
|
244
373
|
};
|
|
245
374
|
return (_jsx(ImporterContext.Provider, __assign({ value: value }, { children: children })));
|
|
246
375
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Field, FieldTypes, FormatRecord, Record, RecordDataSet, TemplateHeader } from "../../types";
|
|
1
|
+
import { Field, FieldTypes, FormatRecord, Record, RecordDataSet, TemplateHeader, TransformedRecord } from "../../types";
|
|
2
2
|
import { EnumFieldValueMatchings, HeaderMatchings } from "../contexts/ImporterContextProvider";
|
|
3
3
|
export declare const addEmptyRows: (data: Record[], fields: Field[]) => (Record | {
|
|
4
4
|
_meta: {
|
|
@@ -6,8 +6,11 @@ export declare const addEmptyRows: (data: Record[], fields: Field[]) => (Record
|
|
|
6
6
|
rowIndex: number;
|
|
7
7
|
};
|
|
8
8
|
})[];
|
|
9
|
-
export declare const addMeta: (record: any, index: number, uploadedRow?: any) => Record;
|
|
10
|
-
export declare const recordListToDataSet: (data: Record[], fields: Field[]) =>
|
|
9
|
+
export declare const addMeta: (record: any, index: number, uploadedRow?: any, transformedRow?: TransformedRecord) => Record;
|
|
10
|
+
export declare const recordListToDataSet: (data: Record[], fields: Field[], withTransformations?: boolean) => {
|
|
11
|
+
isDatasetTransformed: boolean;
|
|
12
|
+
dataSet: RecordDataSet;
|
|
13
|
+
};
|
|
11
14
|
type transformToRecordsArgs = {
|
|
12
15
|
templateHeaderMatchings: HeaderMatchings;
|
|
13
16
|
enumFieldValueMatchings: EnumFieldValueMatchings;
|
|
@@ -45,6 +48,7 @@ type GetReviewDataSetArgs = {
|
|
|
45
48
|
fields: Field[];
|
|
46
49
|
};
|
|
47
50
|
export declare const getReviewDataSet: ({ records, fields }: GetReviewDataSetArgs) => {
|
|
51
|
+
isDatasetTransformed: boolean;
|
|
48
52
|
initialDataSet: {
|
|
49
53
|
[x: string]: Record;
|
|
50
54
|
};
|
|
@@ -23,8 +23,7 @@ import { FieldTypes, } from "../../types";
|
|
|
23
23
|
import { parseValue } from "../common/Spreadsheet/common";
|
|
24
24
|
var MINIMUM_ROW_COUNT = 20;
|
|
25
25
|
var getRowId = function (index) {
|
|
26
|
-
|
|
27
|
-
return "r".concat(index, "-").concat(uniqueTimestamp);
|
|
26
|
+
return index.toString();
|
|
28
27
|
};
|
|
29
28
|
export var addEmptyRows = function (data, fields) {
|
|
30
29
|
var emptyRecord = fields.reduce(function (obj, f) {
|
|
@@ -37,23 +36,51 @@ export var addEmptyRows = function (data, fields) {
|
|
|
37
36
|
} })); });
|
|
38
37
|
return __spreadArray(__spreadArray([], data, true), newData, true);
|
|
39
38
|
};
|
|
40
|
-
export var addMeta = function (record, index, uploadedRow) {
|
|
39
|
+
export var addMeta = function (record, index, uploadedRow, transformedRow) {
|
|
41
40
|
var _a;
|
|
42
41
|
if (uploadedRow === void 0) { uploadedRow = null; }
|
|
42
|
+
if (transformedRow === void 0) { transformedRow = {}; }
|
|
43
43
|
var rId = getRowId(index);
|
|
44
44
|
var meta = (_a = record._meta) !== null && _a !== void 0 ? _a : {};
|
|
45
|
-
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index,
|
|
45
|
+
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, uploadedRow: uploadedRow, transformedRow: transformedRow }) });
|
|
46
46
|
};
|
|
47
|
-
export var recordListToDataSet = function (data, fields) {
|
|
47
|
+
export var recordListToDataSet = function (data, fields, withTransformations) {
|
|
48
|
+
if (withTransformations === void 0) { withTransformations = true; }
|
|
49
|
+
var fieldWithTransformations = fields.filter(function (field) { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.transformations) === null || _a === void 0 ? void 0 : _a.length) > 0; });
|
|
48
50
|
var initialData = data;
|
|
49
51
|
if (data.length < MINIMUM_ROW_COUNT) {
|
|
50
52
|
initialData = addEmptyRows(data, fields);
|
|
51
53
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
var isDatasetTransformed = false;
|
|
55
|
+
var res = initialData.reduce(function (dataSet, record, i) {
|
|
56
|
+
var transformedRecord = {};
|
|
57
|
+
if (withTransformations && fieldWithTransformations.length > 0) {
|
|
58
|
+
transformedRecord = transformRecord({
|
|
59
|
+
record: record,
|
|
60
|
+
fields: fieldWithTransformations,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (JSON.stringify(transformedRecord) !== "{}")
|
|
64
|
+
isDatasetTransformed = true;
|
|
65
|
+
var recordWithMeta = addMeta(record, i, undefined, transformedRecord);
|
|
54
66
|
dataSet[recordWithMeta._meta.id] = recordWithMeta;
|
|
55
67
|
return dataSet;
|
|
56
68
|
}, {});
|
|
69
|
+
return { isDatasetTransformed: isDatasetTransformed, dataSet: res };
|
|
70
|
+
};
|
|
71
|
+
var compareFormattedRecord = function (originalRecord, formattedRecord) {
|
|
72
|
+
var comparisonResult = {};
|
|
73
|
+
for (var key in formattedRecord) {
|
|
74
|
+
if (formattedRecord.hasOwnProperty(key)) {
|
|
75
|
+
if (formattedRecord[key] !== originalRecord[key]) {
|
|
76
|
+
comparisonResult[key] = {
|
|
77
|
+
original: originalRecord[key],
|
|
78
|
+
transformed: formattedRecord[key],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return comparisonResult;
|
|
57
84
|
};
|
|
58
85
|
export var transformToRecords = function (_a) {
|
|
59
86
|
var templateHeaderMatchings = _a.templateHeaderMatchings, enumFieldValueMatchings = _a.enumFieldValueMatchings, templateHeaders = _a.templateHeaders, uploadedDataHeaders = _a.uploadedDataHeaders, uploadedData = _a.uploadedData, formatRecord = _a.formatRecord;
|
|
@@ -83,14 +110,21 @@ export var transformToRecords = function (_a) {
|
|
|
83
110
|
return;
|
|
84
111
|
record[key] = parseValue(FieldTypes[header.column_type], value, enumSet);
|
|
85
112
|
});
|
|
86
|
-
|
|
113
|
+
if (formatRecord) {
|
|
114
|
+
var formattedRecord = formatRecord(record);
|
|
115
|
+
var comparisonResult = compareFormattedRecord(record, formattedRecord);
|
|
116
|
+
record._meta.transformedRow = comparisonResult;
|
|
117
|
+
return formattedRecord;
|
|
118
|
+
}
|
|
119
|
+
return record;
|
|
87
120
|
};
|
|
88
121
|
return uploadedData.map(getRecord);
|
|
89
122
|
};
|
|
90
123
|
export var getPreviewDataSet = function (_a) {
|
|
91
124
|
var uploadedData = _a.uploadedData;
|
|
92
125
|
var rowLen = 0;
|
|
93
|
-
|
|
126
|
+
var previewSize = Math.min(100, uploadedData.length);
|
|
127
|
+
for (var i = 0; i < previewSize; i++)
|
|
94
128
|
rowLen = Math.max(rowLen, uploadedData[i].length);
|
|
95
129
|
var fields = new Array(rowLen).fill(null).map(function (_, i) {
|
|
96
130
|
var key = String.fromCharCode(65 + i);
|
|
@@ -102,14 +136,16 @@ export var getPreviewDataSet = function (_a) {
|
|
|
102
136
|
};
|
|
103
137
|
});
|
|
104
138
|
var getInitialDataSet = function () {
|
|
105
|
-
var data = uploadedData
|
|
139
|
+
var data = uploadedData
|
|
140
|
+
.slice(0, previewSize)
|
|
141
|
+
.map(function (row, index) {
|
|
106
142
|
var entry = addMeta({}, index);
|
|
107
143
|
fields.forEach(function (field, index) {
|
|
108
144
|
entry[field.name] = row[index];
|
|
109
145
|
});
|
|
110
146
|
return entry;
|
|
111
147
|
});
|
|
112
|
-
return recordListToDataSet(data, fields);
|
|
148
|
+
return recordListToDataSet(data, fields).dataSet;
|
|
113
149
|
};
|
|
114
150
|
return { fields: fields, initialDataSet: getInitialDataSet() };
|
|
115
151
|
};
|
|
@@ -129,14 +165,7 @@ export var getTemplateFields = function (_a) {
|
|
|
129
165
|
export var getReviewDataSet = function (_a) {
|
|
130
166
|
var _b;
|
|
131
167
|
var records = _a.records, fields = _a.fields;
|
|
132
|
-
|
|
133
|
-
var record = records_1[_i];
|
|
134
|
-
transformRecord({
|
|
135
|
-
record: record,
|
|
136
|
-
fields: fields,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
var baseInitialDataSet = recordListToDataSet(addEmptyRows(records, fields), fields);
|
|
168
|
+
var _c = recordListToDataSet(addEmptyRows(records, fields), fields), isDatasetTransformed = _c.isDatasetTransformed, baseInitialDataSet = _c.dataSet;
|
|
140
169
|
var highestRowIndex = 0;
|
|
141
170
|
Object.keys(baseInitialDataSet).forEach(function (key) {
|
|
142
171
|
var record = baseInitialDataSet[key];
|
|
@@ -146,5 +175,5 @@ export var getReviewDataSet = function (_a) {
|
|
|
146
175
|
});
|
|
147
176
|
var emptyRowAtBottom = addMeta({}, highestRowIndex + 1);
|
|
148
177
|
var initialDataSet = __assign(__assign({}, baseInitialDataSet), (_b = {}, _b[emptyRowAtBottom._meta.id] = emptyRowAtBottom, _b));
|
|
149
|
-
return { initialDataSet: initialDataSet };
|
|
178
|
+
return { isDatasetTransformed: isDatasetTransformed, initialDataSet: initialDataSet };
|
|
150
179
|
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { useCallback } from "react";
|
|
13
|
+
import Papa from "papaparse";
|
|
14
|
+
import { useImporterContext } from "../contexts/ImporterContextProvider";
|
|
15
|
+
function downloadCsv(data, fileName) {
|
|
16
|
+
var blob = new Blob([data], { type: "text/csv;charset=utf-8;" });
|
|
17
|
+
var link = document.createElement("a");
|
|
18
|
+
link.href = URL.createObjectURL(blob);
|
|
19
|
+
link.download = fileName;
|
|
20
|
+
document.body.appendChild(link);
|
|
21
|
+
link.click();
|
|
22
|
+
document.body.removeChild(link);
|
|
23
|
+
}
|
|
24
|
+
function csvExport(data) {
|
|
25
|
+
var valuesWithQuotesWhenNecessary = data.map(function (obj) {
|
|
26
|
+
var newObj = {};
|
|
27
|
+
for (var key in obj) {
|
|
28
|
+
var value = obj[key];
|
|
29
|
+
newObj[key] =
|
|
30
|
+
typeof value === "string" && value.includes(",") ? "\"".concat(value, "\"") : value;
|
|
31
|
+
}
|
|
32
|
+
return newObj;
|
|
33
|
+
});
|
|
34
|
+
var csv = Papa.unparse(valuesWithQuotesWhenNecessary);
|
|
35
|
+
downloadCsv(csv, "export.csv");
|
|
36
|
+
}
|
|
37
|
+
export var useExportDataToFile = function () {
|
|
38
|
+
var selectedRows = useImporterContext().selectedRows;
|
|
39
|
+
var onExport = useCallback(function (dataSet, dataType) {
|
|
40
|
+
if (!dataSet)
|
|
41
|
+
return;
|
|
42
|
+
var dataSetValues = Object.values(dataSet);
|
|
43
|
+
if (dataType === "csv") {
|
|
44
|
+
var valuesWithoutMeta = dataSetValues.map(function (_a) {
|
|
45
|
+
var _meta = _a._meta, rest = __rest(_a, ["_meta"]);
|
|
46
|
+
return rest;
|
|
47
|
+
});
|
|
48
|
+
csvExport(valuesWithoutMeta);
|
|
49
|
+
}
|
|
50
|
+
}, [selectedRows]);
|
|
51
|
+
return {
|
|
52
|
+
onExport: onExport,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppResponse, RecordDataSet } from "../../types";
|
|
2
|
+
export declare const useSubmitToServer: (setHasTransformedRecords: any) => {
|
|
3
|
+
appResponse: AppResponse;
|
|
4
|
+
isSubmitting: boolean;
|
|
5
|
+
onSubmitToServer: (dataSet: RecordDataSet, afterSubmitCallback: (dataSet: RecordDataSet) => void) => Promise<void>;
|
|
6
|
+
importWasSuccessful: boolean;
|
|
7
|
+
};
|