fuse-importer 0.1.6-testing → 0.1.7-testing
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/Review/ReviewContextProvider.d.ts +2 -0
- package/lib/esm/Importer/Review/ReviewContextProvider.js +18 -13
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +2 -2
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +0 -2
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +3 -4
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +7 -5
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +2 -2
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +2 -2
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +1 -1
- package/lib/esm/Importer/data/index.d.ts +5 -1
- package/lib/esm/Importer/data/index.js +14 -9
- package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +1 -1
- package/lib/esm/Importer/hooks/useSubmitToServer.js +3 -2
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +6 -5
- package/lib/esm/common/Table/TableActions/RowFilters.js +2 -2
- package/lib/esm/common/Table/TableActions/SearchRows.js +8 -8
- package/lib/esm/common/Table/TableActions/TableActions.js +9 -4
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +5 -1
- package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +19 -39
- package/lib/esm/common/buttons.js +6 -6
- package/lib/esm/styled/theme/textCss.js +1 -1
- package/lib/main.js +2 -2
- package/package.json +1 -1
|
@@ -19,6 +19,8 @@ type State = {
|
|
|
19
19
|
onSubmit: (dataSet: RecordDataSet) => Promise<void>;
|
|
20
20
|
setReviewInitialDataSetDeprecated: (dataSet: any) => void;
|
|
21
21
|
setInitialDataSetUpdatedAt: React.Dispatch<any>;
|
|
22
|
+
isTransformTooltipOpened: boolean;
|
|
23
|
+
setIsTransformTooltipOpened: React.Dispatch<React.SetStateAction<boolean>>;
|
|
22
24
|
};
|
|
23
25
|
export type ExportDataType = "csv" | "excel";
|
|
24
26
|
type Props = {
|
|
@@ -57,14 +57,15 @@ var ReviewContext = createContext({});
|
|
|
57
57
|
export var ReviewContextProvider = function (_a) {
|
|
58
58
|
var initialRecords = _a.initialRecords, children = _a.children;
|
|
59
59
|
var _b = useImporterContext(), templateHeaderMatchings = _b.templateHeaderMatchings, enumFieldValueMatchings = _b.enumFieldValueMatchings, templateHeaders = _b.templateHeaders, uploadedDataHeaders = _b.uploadedDataHeaders, headerRowIndex = _b.headerRowIndex, uploadedData = _b.uploadedData, currentStepIndex = _b.currentStepIndex, setSelectedRows = _b.setSelectedRows, _c = _b.importerOptions, disableSubmitIfInvalid = _c.disableSubmitIfInvalid, batchValidationDelayMs = _c.batchValidationDelayMs, batchValidationSize = _c.batchValidationSize, loadingComponent = _c.loadingComponent, onValidateRecord = _b.onValidateRecord, formatRecord = _b.formatRecord;
|
|
60
|
-
var _d =
|
|
60
|
+
var _d = useState(false), isTransformTooltipOpened = _d[0], setIsTransformTooltipOpened = _d[1];
|
|
61
|
+
var _e = useSubmitToServer(setIsTransformTooltipOpened), appResponse = _e.appResponse, isSubmitting = _e.isSubmitting, importWasSuccessful = _e.importWasSuccessful, onSubmitToServer = _e.onSubmitToServer;
|
|
61
62
|
var setIsLoadingApp = useAppLoadingContext().setIsLoadingApp;
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
63
|
+
var _f = useState([]), previewFields = _f[0], setPreviewFields = _f[1];
|
|
64
|
+
var _g = useState(null), previewInitialDataSet = _g[0], setPreviewInitialDataSet = _g[1];
|
|
65
|
+
var _h = useState([]), reviewFields = _h[0], setReviewFields = _h[1];
|
|
65
66
|
var reviewInitialDataSet = useRef(null);
|
|
66
|
-
var
|
|
67
|
-
var
|
|
67
|
+
var _j = useState(null), initialDataSetUpdatedAt = _j[0], setInitialDataSetUpdatedAt = _j[1];
|
|
68
|
+
var _k = useState(false), _ = _k[0], setInefficientRerender = _k[1];
|
|
68
69
|
var setReviewInitialDataSetDeprecated = function (dataSet) {
|
|
69
70
|
reviewInitialDataSet.current = dataSet;
|
|
70
71
|
setInefficientRerender(function (prev) { return !prev; });
|
|
@@ -103,17 +104,17 @@ export var ReviewContextProvider = function (_a) {
|
|
|
103
104
|
else if (currentStepIndex === 2) {
|
|
104
105
|
setIsLoadingApp(true);
|
|
105
106
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
-
var generateRecords, fields, records, initialDataSet;
|
|
107
|
-
return __generator(this, function (
|
|
108
|
-
switch (
|
|
107
|
+
var generateRecords, fields, records, _a, isDatasetTransformed, initialDataSet;
|
|
108
|
+
return __generator(this, function (_b) {
|
|
109
|
+
switch (_b.label) {
|
|
109
110
|
case 0:
|
|
110
111
|
if (!(uploadedData && uploadedData.length > 10000)) return [3 /*break*/, 2];
|
|
111
112
|
// wait for the first render to complete before blocking main thread with review step logic
|
|
112
113
|
return [4 /*yield*/, sleep(200)];
|
|
113
114
|
case 1:
|
|
114
115
|
// wait for the first render to complete before blocking main thread with review step logic
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
_b.sent();
|
|
117
|
+
_b.label = 2;
|
|
117
118
|
case 2:
|
|
118
119
|
generateRecords = function () {
|
|
119
120
|
return transformToRecords({
|
|
@@ -127,10 +128,12 @@ export var ReviewContextProvider = function (_a) {
|
|
|
127
128
|
};
|
|
128
129
|
fields = getTemplateFields({ templateHeaders: templateHeaders });
|
|
129
130
|
records = initialRecords !== null && initialRecords !== void 0 ? initialRecords : generateRecords();
|
|
130
|
-
|
|
131
|
+
_a = getReviewDataSet({
|
|
131
132
|
records: records,
|
|
132
133
|
fields: fields,
|
|
133
|
-
}).initialDataSet;
|
|
134
|
+
}), isDatasetTransformed = _a.isDatasetTransformed, initialDataSet = _a.initialDataSet;
|
|
135
|
+
if (isDatasetTransformed)
|
|
136
|
+
setIsTransformTooltipOpened(true);
|
|
134
137
|
setSelectedRows([]);
|
|
135
138
|
setReviewFields(fields);
|
|
136
139
|
setReviewInitialDataSetDeprecated(initialDataSet);
|
|
@@ -178,6 +181,8 @@ export var ReviewContextProvider = function (_a) {
|
|
|
178
181
|
onDataSetChanged: onDataSetChanged,
|
|
179
182
|
setReviewInitialDataSetDeprecated: setReviewInitialDataSetDeprecated,
|
|
180
183
|
setInitialDataSetUpdatedAt: setInitialDataSetUpdatedAt,
|
|
184
|
+
isTransformTooltipOpened: isTransformTooltipOpened,
|
|
185
|
+
setIsTransformTooltipOpened: setIsTransformTooltipOpened,
|
|
181
186
|
};
|
|
182
187
|
function renderLoading() {
|
|
183
188
|
return isSubmitting ? (loadingComponent ? (loadingComponent()) : (_jsx(AppLoading, {}))) : null;
|
|
@@ -28,7 +28,7 @@ var HeadersList = function (_a) {
|
|
|
28
28
|
var title = _a.title, headers = _a.headers, props = __rest(_a, ["title", "headers"]);
|
|
29
29
|
return (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ label3: true }, props, { children: title })), headers.map(function (header, index) {
|
|
30
30
|
var isLast = index === headers.length - 1;
|
|
31
|
-
return (_jsx(S.HeaderListItem, __assign({ body1: true, isLast: isLast, mt: 16 }, { children: header }), index));
|
|
31
|
+
return (_jsx(S.HeaderListItem, __assign({ body1: true, "data-cy": header, isLast: isLast, mt: 16 }, { children: header }), index));
|
|
32
32
|
})] }));
|
|
33
33
|
};
|
|
34
34
|
export var HeaderCard = function (_a) {
|
|
@@ -40,5 +40,5 @@ export var HeaderCard = function (_a) {
|
|
|
40
40
|
.filter(function (h) { return !h.required; })
|
|
41
41
|
.map(function (h) { return h.label; });
|
|
42
42
|
var t = useTranslation("upload").t;
|
|
43
|
-
return (_jsx(S.HeaderCardWrapper, { children: _jsxs(S.HeaderCardContainer, __assign({}, props, { children: [_jsx(Div, __assign({ body3: true, mb: 24 }, { children: t("header.title") })), requiredHeaders.length > 0 && (_jsx(HeadersList, { title: t("header.required_headers"), headers: requiredHeaders })), optionalHeaders.length > 0 && (_jsx(HeadersList, { title: t("header.optional_headers"), headers: optionalHeaders, mt: 30 }))] })) }));
|
|
43
|
+
return (_jsx(S.HeaderCardWrapper, { children: _jsxs(S.HeaderCardContainer, __assign({}, props, { children: [_jsx(Div, __assign({ "data-cy": "header_title", body3: true, mb: 24 }, { children: t("header.title") })), requiredHeaders.length > 0 && (_jsx(HeadersList, { "data-cy": "required_header", title: t("header.required_headers"), headers: requiredHeaders })), optionalHeaders.length > 0 && (_jsx(HeadersList, { "data-cy": "optional_header", title: t("header.optional_headers"), headers: optionalHeaders, mt: 30 }))] })) }));
|
|
44
44
|
};
|
|
@@ -12,8 +12,6 @@ type State = {
|
|
|
12
12
|
setSelectedRows: React.Dispatch<React.SetStateAction<string[]>>;
|
|
13
13
|
lastClickedIndexRef: React.MutableRefObject<number | null>;
|
|
14
14
|
checkboxColumnWidth: number;
|
|
15
|
-
setIsTransformTooltipOpened: React.Dispatch<React.SetStateAction<boolean>>;
|
|
16
|
-
isTransformTooltipOpened: boolean;
|
|
17
15
|
inefficientRerender: boolean;
|
|
18
16
|
setInefficientRerender: React.Dispatch<React.SetStateAction<boolean>>;
|
|
19
17
|
};
|
|
@@ -27,10 +27,9 @@ import { useValidationContext } from "../ValidationContextProvider";
|
|
|
27
27
|
var SpreadsheetContext = createContext({});
|
|
28
28
|
export var SpreadsheetContextProvider = function (_a) {
|
|
29
29
|
var fields = _a.fields, options = _a.options, isReadOnly = _a.isReadOnly, children = _a.children, onValidateRecord = _a.onValidateRecord, selectedRows = _a.selectedRows, setSelectedRows = _a.setSelectedRows;
|
|
30
|
-
var _b = useState(false),
|
|
31
|
-
var _c = useState(false), inefficientRerender = _c[0], setInefficientRerender = _c[1];
|
|
30
|
+
var _b = useState(false), inefficientRerender = _b[0], setInefficientRerender = _b[1];
|
|
32
31
|
var filteredDataIds = useFilteredDataContext().filteredDataIds;
|
|
33
|
-
var
|
|
32
|
+
var _c = useValidationContext(), calculateColumnErrorCounts = _c.calculateColumnErrorCounts, calculateColumnWarningCounts = _c.calculateColumnWarningCounts, warnings = _c.warnings, errors = _c.errors, validationState = __rest(_c, ["calculateColumnErrorCounts", "calculateColumnWarningCounts", "warnings", "errors"]);
|
|
34
33
|
var lastClickedIndexRef = useRef(null);
|
|
35
34
|
var checkboxColumnWidth = useMemo(function () {
|
|
36
35
|
var lastRowIndexLength = filteredDataIds.length.toString().length;
|
|
@@ -39,7 +38,7 @@ export var SpreadsheetContextProvider = function (_a) {
|
|
|
39
38
|
var baseCheckboxColumnWidth = lastRowIndexLength * singleLetterWidth + horizontalSpacing;
|
|
40
39
|
return baseCheckboxColumnWidth < 40 ? 40 : baseCheckboxColumnWidth;
|
|
41
40
|
}, [filteredDataIds.length]);
|
|
42
|
-
var value = __assign(__assign({ filteredDataIds: filteredDataIds, fields: fields }, validationState), { isReadOnly: isReadOnly, options: options, onValidateRecord: onValidateRecord, selectedRows: selectedRows, setSelectedRows: setSelectedRows, lastClickedIndexRef: lastClickedIndexRef, checkboxColumnWidth: checkboxColumnWidth,
|
|
41
|
+
var value = __assign(__assign({ filteredDataIds: filteredDataIds, fields: fields }, validationState), { isReadOnly: isReadOnly, options: options, onValidateRecord: onValidateRecord, selectedRows: selectedRows, setSelectedRows: setSelectedRows, lastClickedIndexRef: lastClickedIndexRef, checkboxColumnWidth: checkboxColumnWidth, inefficientRerender: inefficientRerender, setInefficientRerender: setInefficientRerender });
|
|
43
42
|
return (_jsx(SpreadsheetContext.Provider, __assign({ value: value }, { children: children })));
|
|
44
43
|
};
|
|
45
44
|
export var useSpreadsheetContext = function () { return useContext(SpreadsheetContext); };
|
|
@@ -35,17 +35,18 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
35
35
|
};
|
|
36
36
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
37
37
|
import { useMemo } from "react";
|
|
38
|
+
import ReactVirtualizedAutoSizer from "react-virtualized-auto-sizer";
|
|
38
39
|
import { FixedSizeGrid as Grid } from "react-window";
|
|
39
40
|
import styled, { css } from "styled-components";
|
|
41
|
+
import { Checkbox } from "../../../../common/inputs/Checkbox";
|
|
40
42
|
import { Div } from "../../../../styled/utils";
|
|
43
|
+
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
44
|
+
import { useReviewContext } from "../../../Review/ReviewContextProvider";
|
|
41
45
|
import { spreadsheetRowHeightPx } from "../common";
|
|
42
46
|
import { spreadsheetHeaderHeightPx } from "../common/index";
|
|
47
|
+
import { useDataSetContext } from "../DataSetContextProvider";
|
|
43
48
|
import { useSpreadsheetContext } from "../SpreadsheetContextProvider";
|
|
44
|
-
import { Checkbox } from "../../../../common/inputs/Checkbox";
|
|
45
|
-
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
46
|
-
import ReactVirtualizedAutoSizer from "react-virtualized-auto-sizer";
|
|
47
49
|
import { rowIsEmpty } from "../SpreadsheetContextProvider/utils";
|
|
48
|
-
import { useDataSetContext } from "../DataSetContextProvider";
|
|
49
50
|
var StyledGrid = styled(Grid)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n overflow-y: scroll;\n"], ["\n background: ", ";\n overflow-y: scroll;\n"])), function (_a) {
|
|
50
51
|
var theme = _a.theme;
|
|
51
52
|
return theme.colors.white50;
|
|
@@ -58,7 +59,8 @@ var gridStyles = {
|
|
|
58
59
|
};
|
|
59
60
|
export var SpreadsheetRowCheckboxes = function (_a) {
|
|
60
61
|
var height = _a.height, gridRef = _a.gridRef, isLoadingData = _a.isLoadingData, props = __rest(_a, ["height", "gridRef", "isLoadingData"]);
|
|
61
|
-
var _b = useSpreadsheetContext(), selectedRows = _b.selectedRows, options = _b.options, filteredDataIds = _b.filteredDataIds, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth
|
|
62
|
+
var _b = useSpreadsheetContext(), selectedRows = _b.selectedRows, options = _b.options, filteredDataIds = _b.filteredDataIds, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth;
|
|
63
|
+
var isTransformTooltipOpened = useReviewContext().isTransformTooltipOpened;
|
|
62
64
|
var getRecord = useDataSetContext().getRecord;
|
|
63
65
|
var currentStepIndex = useImporterContext().currentStepIndex;
|
|
64
66
|
var nonEmptyRows = useMemo(function () { return filteredDataIds.filter(function (rowId) { return !rowIsEmpty(getRecord(rowId)); }); }, [filteredDataIds]);
|
|
@@ -19,8 +19,8 @@ import { SpreadsheetField, useSpreadsheetField } from ".";
|
|
|
19
19
|
import { Autocomplete as AutocompleteBase, } from "../../../../../common/inputs/Autocomplete";
|
|
20
20
|
import { SelectMenuDiv, SelectMenuScrollArea, } from "../../../../../common/inputs/SelectMenu";
|
|
21
21
|
import { HTMLInput, TextInputIcon, } from "../../../../../common/inputs/TextInput";
|
|
22
|
+
import { useReviewContext } from "../../../../Review/ReviewContextProvider";
|
|
22
23
|
import { spreadsheetRowHeightPx } from "../../common";
|
|
23
|
-
import { useSpreadsheetContext } from "../../SpreadsheetContextProvider";
|
|
24
24
|
var Autocomplete = styled(AutocompleteBase)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n\n :hover {\n background: transparent;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"], ["\n ", " {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent;\n height: ", "px;\n padding: 0 12px;\n\n ", "\n\n ::placeholder {\n ", "\n\n ", "\n\n ::placeholder {\n ", "\n }\n }\n\n :focus {\n border: none;\n box-shadow: none;\n }\n\n :hover {\n background: transparent;\n }\n }\n ", " {\n right: 6px;\n }\n ", " {\n border-radius: 7px;\n }\n ", " {\n padding: 4px;\n }\n"])), HTMLInput, spreadsheetRowHeightPx - 5, function (p) {
|
|
25
25
|
return p.hasWarning && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), function (p) { return p.theme.colors.orange1200; });
|
|
26
26
|
}, function (p) {
|
|
@@ -34,7 +34,7 @@ export var SpreadsheetAutocomplete = function (props) {
|
|
|
34
34
|
var _a, _b, _c;
|
|
35
35
|
var name = props.name, record = props.record, options = props.options, fieldType = props.fieldType, _d = props.isInputDisabled, isInputDisabled = _d === void 0 ? false : _d, id = props.id;
|
|
36
36
|
var _e = useSpreadsheetField(name, record, fieldType), value = _e.value, setValue = _e.setValue, validationError = _e.validationError, validationWarning = _e.validationWarning;
|
|
37
|
-
var isTransformTooltipOpened =
|
|
37
|
+
var isTransformTooltipOpened = useReviewContext().isTransformTooltipOpened;
|
|
38
38
|
var isHighlighted = isTransformTooltipOpened &&
|
|
39
39
|
((_c = (_b = (_a = record._meta) === null || _a === void 0 ? void 0 : _a.transformedRow) === null || _b === void 0 ? void 0 : _b[name]) === null || _c === void 0 ? void 0 : _c.transformed);
|
|
40
40
|
return (_jsx(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted }, { children: _jsx(Autocomplete, { placement: "bottom", isInputDisabled: isInputDisabled, hasError: !!validationError, hasWarning: !!validationWarning, options: options, value: value, icon: chevronDownIcon, onChange: function (v) { return !isTransformTooltipOpened && setValue(v); }, disabledWhen: isTransformTooltipOpened, id: id }) })));
|
|
@@ -29,7 +29,7 @@ import { useMemo } from "react";
|
|
|
29
29
|
import styled, { css } from "styled-components";
|
|
30
30
|
import { SpreadsheetField, useSpreadsheetField } from ".";
|
|
31
31
|
import { Div } from "../../../../../styled/utils";
|
|
32
|
-
import {
|
|
32
|
+
import { useReviewContext } from "../../../../Review/ReviewContextProvider";
|
|
33
33
|
import { AVERAGE_CHAR_SIZE, getFieldContentWidth } from "./utils";
|
|
34
34
|
var parseValue = function (value) {
|
|
35
35
|
var isFalsyButNotZero = !value && value !== 0;
|
|
@@ -39,7 +39,7 @@ export var SpreadsheetInput = function (_a) {
|
|
|
39
39
|
var _b, _c, _d, _e, _f, _g;
|
|
40
40
|
var name = _a.name, record = _a.record, fieldType = _a.fieldType, columnWidth = _a.columnWidth, props = __rest(_a, ["name", "record", "fieldType", "columnWidth"]);
|
|
41
41
|
var _h = useSpreadsheetField(name, record, fieldType), value = _h.value, setValue = _h.setValue, validationError = _h.validationError, validationWarning = _h.validationWarning;
|
|
42
|
-
var isTransformTooltipOpened =
|
|
42
|
+
var isTransformTooltipOpened = useReviewContext().isTransformTooltipOpened;
|
|
43
43
|
var defaultWidthAsNumber = Number.parseInt(columnWidth.replace("px", ""));
|
|
44
44
|
var _fieldContentWidth = getFieldContentWidth({
|
|
45
45
|
record: record,
|
|
@@ -47,5 +47,5 @@ export var transformRecord = function (_a) {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
var isTransformedRecordsEmpty = Object.keys(transformedRecords).length === 0;
|
|
50
|
-
return isTransformedRecordsEmpty ?
|
|
50
|
+
return isTransformedRecordsEmpty ? {} : transformedRecords;
|
|
51
51
|
};
|
|
@@ -8,7 +8,10 @@ export declare const addEmptyRows: (data: Record[], fields: Field[]) => (Record
|
|
|
8
8
|
})[];
|
|
9
9
|
export declare const addMeta: (record: any, index: number, uploadedRow?: any, transformedRow?: TransformedRecord) => Record;
|
|
10
10
|
export declare const calculatePossibleDateFormats: (fieldsWithDateTransformations: Field[], sample: Record[]) => string[];
|
|
11
|
-
export declare const recordListToDataSet: (data: Record[], fields: Field[]) =>
|
|
11
|
+
export declare const recordListToDataSet: (data: Record[], fields: Field[], withTransformations?: boolean) => {
|
|
12
|
+
isDatasetTransformed: boolean;
|
|
13
|
+
dataSet: RecordDataSet;
|
|
14
|
+
};
|
|
12
15
|
type transformToRecordsArgs = {
|
|
13
16
|
templateHeaderMatchings: HeaderMatchings;
|
|
14
17
|
enumFieldValueMatchings: EnumFieldValueMatchings;
|
|
@@ -46,6 +49,7 @@ type GetReviewDataSetArgs = {
|
|
|
46
49
|
fields: Field[];
|
|
47
50
|
};
|
|
48
51
|
export declare const getReviewDataSet: ({ records, fields }: GetReviewDataSetArgs) => {
|
|
52
|
+
isDatasetTransformed: boolean;
|
|
49
53
|
initialDataSet: {
|
|
50
54
|
[x: string]: Record;
|
|
51
55
|
};
|
|
@@ -43,10 +43,10 @@ export var addEmptyRows = function (data, fields) {
|
|
|
43
43
|
export var addMeta = function (record, index, uploadedRow, transformedRow) {
|
|
44
44
|
var _a;
|
|
45
45
|
if (uploadedRow === void 0) { uploadedRow = null; }
|
|
46
|
-
if (transformedRow === void 0) { transformedRow =
|
|
46
|
+
if (transformedRow === void 0) { transformedRow = {}; }
|
|
47
47
|
var rId = getRowId(index);
|
|
48
48
|
var meta = (_a = record._meta) !== null && _a !== void 0 ? _a : {};
|
|
49
|
-
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, uploadedRow: uploadedRow, transformedRow:
|
|
49
|
+
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, uploadedRow: uploadedRow, transformedRow: transformedRow }) });
|
|
50
50
|
};
|
|
51
51
|
export var calculatePossibleDateFormats = function (fieldsWithDateTransformations, sample) {
|
|
52
52
|
var possibleDateFormats = [];
|
|
@@ -71,7 +71,8 @@ export var calculatePossibleDateFormats = function (fieldsWithDateTransformation
|
|
|
71
71
|
}
|
|
72
72
|
return Array.from(new Set(possibleDateFormats));
|
|
73
73
|
};
|
|
74
|
-
export var recordListToDataSet = function (data, fields) {
|
|
74
|
+
export var recordListToDataSet = function (data, fields, withTransformations) {
|
|
75
|
+
if (withTransformations === void 0) { withTransformations = true; }
|
|
75
76
|
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; });
|
|
76
77
|
var initialData = data;
|
|
77
78
|
if (data.length < MINIMUM_ROW_COUNT) {
|
|
@@ -86,19 +87,23 @@ export var recordListToDataSet = function (data, fields) {
|
|
|
86
87
|
if (fieldsWithDateTransformations.length > 0) {
|
|
87
88
|
possibleDateFormats.push.apply(possibleDateFormats, calculatePossibleDateFormats(fieldsWithDateTransformations, _.sampleSize(initialData, 100)));
|
|
88
89
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
var isDatasetTransformed = false;
|
|
91
|
+
var res = initialData.reduce(function (dataSet, record, i) {
|
|
92
|
+
var transformedRecord = {};
|
|
93
|
+
if (withTransformations && fieldWithTransformations.length > 0) {
|
|
92
94
|
transformedRecord = transformRecord({
|
|
93
95
|
record: record,
|
|
94
96
|
fields: fieldWithTransformations,
|
|
95
97
|
possibleDateFormats: possibleDateFormats,
|
|
96
98
|
});
|
|
97
99
|
}
|
|
100
|
+
if (JSON.stringify(transformedRecord) !== "{}")
|
|
101
|
+
isDatasetTransformed = true;
|
|
98
102
|
var recordWithMeta = addMeta(record, i, undefined, transformedRecord);
|
|
99
103
|
dataSet[recordWithMeta._meta.id] = recordWithMeta;
|
|
100
104
|
return dataSet;
|
|
101
105
|
}, {});
|
|
106
|
+
return { isDatasetTransformed: isDatasetTransformed, dataSet: res };
|
|
102
107
|
};
|
|
103
108
|
var compareFormattedRecord = function (originalRecord, formattedRecord) {
|
|
104
109
|
var comparisonResult = {};
|
|
@@ -177,7 +182,7 @@ export var getPreviewDataSet = function (_a) {
|
|
|
177
182
|
});
|
|
178
183
|
return entry;
|
|
179
184
|
});
|
|
180
|
-
return recordListToDataSet(data, fields);
|
|
185
|
+
return recordListToDataSet(data, fields).dataSet;
|
|
181
186
|
};
|
|
182
187
|
return { fields: fields, initialDataSet: getInitialDataSet() };
|
|
183
188
|
};
|
|
@@ -197,7 +202,7 @@ export var getTemplateFields = function (_a) {
|
|
|
197
202
|
export var getReviewDataSet = function (_a) {
|
|
198
203
|
var _b;
|
|
199
204
|
var records = _a.records, fields = _a.fields;
|
|
200
|
-
var
|
|
205
|
+
var _c = recordListToDataSet(addEmptyRows(records, fields), fields), isDatasetTransformed = _c.isDatasetTransformed, baseInitialDataSet = _c.dataSet;
|
|
201
206
|
var highestRowIndex = 0;
|
|
202
207
|
Object.keys(baseInitialDataSet).forEach(function (key) {
|
|
203
208
|
var record = baseInitialDataSet[key];
|
|
@@ -207,5 +212,5 @@ export var getReviewDataSet = function (_a) {
|
|
|
207
212
|
});
|
|
208
213
|
var emptyRowAtBottom = addMeta({}, highestRowIndex + 1);
|
|
209
214
|
var initialDataSet = __assign(__assign({}, baseInitialDataSet), (_b = {}, _b[emptyRowAtBottom._meta.id] = emptyRowAtBottom, _b));
|
|
210
|
-
return { initialDataSet: initialDataSet };
|
|
215
|
+
return { isDatasetTransformed: isDatasetTransformed, initialDataSet: initialDataSet };
|
|
211
216
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AppResponse, RecordDataSet } from "../../types";
|
|
2
|
-
export declare const useSubmitToServer: () => {
|
|
2
|
+
export declare const useSubmitToServer: (setIsTransformTooltipOpened: any) => {
|
|
3
3
|
appResponse: AppResponse;
|
|
4
4
|
isSubmitting: boolean;
|
|
5
5
|
onSubmitToServer: (dataSet: RecordDataSet, afterSubmitCallback: (dataSet: RecordDataSet) => void) => Promise<void>;
|
|
@@ -118,7 +118,7 @@ var filterAndMapWithBackendErrors = function (dataSet, errors) {
|
|
|
118
118
|
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { isInvalid: true, backendErrors: errors[rId] }) });
|
|
119
119
|
}, []);
|
|
120
120
|
};
|
|
121
|
-
export var useSubmitToServer = function () {
|
|
121
|
+
export var useSubmitToServer = function (setIsTransformTooltipOpened) {
|
|
122
122
|
var _a = useImporterContext(), templateHeaderMatchings = _a.templateHeaderMatchings, templateHeaders = _a.templateHeaders, integrations = _a.integrations, templateSlug = _a.templateSlug, fuseApi = _a.fuseApi, previewMode = _a.importerOptions.previewMode, onSubmit = _a.onSubmit;
|
|
123
123
|
var _b = useState(false), isSubmitting = _b[0], setIsSubmitting = _b[1];
|
|
124
124
|
var _c = useState(false), importWasSuccessful = _c[0], setImportWasSuccessful = _c[1];
|
|
@@ -157,7 +157,8 @@ export var useSubmitToServer = function () {
|
|
|
157
157
|
});
|
|
158
158
|
invalidRecords_1 = __spreadArray(__spreadArray([], invalidRecords_1, true), (recordsToDisplayFiltered || []), true);
|
|
159
159
|
}
|
|
160
|
-
invalidDataSet = recordListToDataSet(invalidRecords_1, reviewFields_1);
|
|
160
|
+
invalidDataSet = recordListToDataSet(invalidRecords_1, reviewFields_1, false).dataSet;
|
|
161
|
+
setIsTransformTooltipOpened(false);
|
|
161
162
|
afterSubmitCallback(invalidDataSet);
|
|
162
163
|
if (!!previewMode) return [3 /*break*/, 5];
|
|
163
164
|
return [4 /*yield*/, trackImportedRowsCount(fuseApi, templateSlug, validDataSetLength)];
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
|
-
import {
|
|
4
|
+
import { addToast } from "../../../../common/Toast";
|
|
5
|
+
import { useReviewContext, useSpreadsheetContext } from "../../../../Importer";
|
|
5
6
|
import { useFilteredDataContext } from "../../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
|
|
6
7
|
import { useValidationContext } from "../../../../Importer/common/Spreadsheet/ValidationContextProvider";
|
|
7
|
-
import { addToast } from "../../../../common/Toast";
|
|
8
8
|
import { useEventManagerContext } from "../../../EventManagerContextProvider";
|
|
9
9
|
import * as S from "./FilterByErrors.styles";
|
|
10
10
|
export var FilterByErrors = function () {
|
|
11
11
|
var _a, _b;
|
|
12
12
|
var _c = useFilteredDataContext(), spreadsheetFilter = _c.spreadsheetFilter, resetSpreadsheetFilter = _c.resetSpreadsheetFilter, filterRecordsByFieldErrors = _c.filterRecordsByFieldErrors;
|
|
13
13
|
var _d = useEventManagerContext(), on = _d.on, off = _d.off, EVENTS = _d.EVENTS;
|
|
14
|
-
var
|
|
14
|
+
var fields = useSpreadsheetContext().fields;
|
|
15
|
+
var isTransformTooltipOpened = useReviewContext().isTransformTooltipOpened;
|
|
15
16
|
var columnsWithErrorCounts = useValidationContext().columnsWithErrorCounts;
|
|
16
17
|
var t = useTranslation("review").t;
|
|
17
|
-
var
|
|
18
|
-
var
|
|
18
|
+
var _e = useState([]), errorArray = _e[0], setErrorArray = _e[1];
|
|
19
|
+
var _f = useState(false), isMenuOpened = _f[0], setIsMenuOpened = _f[1];
|
|
19
20
|
useEffect(function () {
|
|
20
21
|
var listener = function () {
|
|
21
22
|
var getErrorArray = function () {
|
|
@@ -17,7 +17,7 @@ import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-run
|
|
|
17
17
|
import { useEffect, useState } from "react";
|
|
18
18
|
import { useTranslation } from "react-i18next";
|
|
19
19
|
import styled, { css } from "styled-components";
|
|
20
|
-
import {
|
|
20
|
+
import { useReviewContext } from "../../../Importer";
|
|
21
21
|
import { useDataSetContext } from "../../../Importer/common/Spreadsheet/DataSetContextProvider";
|
|
22
22
|
import { useDuplicateDataContext } from "../../../Importer/common/Spreadsheet/DuplicateDataContextProvider";
|
|
23
23
|
import { useFilteredDataContext } from "../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
|
|
@@ -45,7 +45,7 @@ export var RowFilters = function () {
|
|
|
45
45
|
var _a = useFilteredDataContext(), spreadsheetFilter = _a.spreadsheetFilter, filterRecordsByRowType = _a.filterRecordsByRowType;
|
|
46
46
|
var _b = useDuplicateDataContext(), duplicateRecordIds = _b.duplicateRecordIds, calculateDuplicateRecords = _b.calculateDuplicateRecords;
|
|
47
47
|
var invalidRowsCountRef = useValidationContext().invalidRowsCountRef;
|
|
48
|
-
var isTransformTooltipOpened =
|
|
48
|
+
var isTransformTooltipOpened = useReviewContext().isTransformTooltipOpened;
|
|
49
49
|
var _c = useState(invalidRowsCountRef.current), invalidRowsCount = _c[0], setInvalidRowsCount = _c[1];
|
|
50
50
|
var _d = useDataSetContext(), dataSetLength = _d.dataSetLength, emptyRecordIds = _d.emptyRecordIds;
|
|
51
51
|
var _e = useEventManagerContext(), on = _e.on, off = _e.off, EVENTS = _e.EVENTS;
|
|
@@ -14,17 +14,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
14
14
|
return __assign.apply(this, arguments);
|
|
15
15
|
};
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { useRef, useState } from "react";
|
|
18
|
+
import { useTranslation } from "react-i18next";
|
|
17
19
|
import styled, { css } from "styled-components";
|
|
18
|
-
import {
|
|
19
|
-
import { SearchIcon } from "./icons";
|
|
20
|
+
import { TooltipProvider } from "../../../common/TooltipProvider";
|
|
20
21
|
import { useDebounce } from "../../../hooks";
|
|
21
|
-
import {
|
|
22
|
+
import { useReviewContext } from "../../../Importer";
|
|
23
|
+
import { useFilteredDataContext } from "../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
|
|
24
|
+
import { Div } from "../../../styled";
|
|
22
25
|
import { colors } from "../../../styled/theme/colorPalette";
|
|
23
26
|
import { textStyles } from "../../../styled/theme/textStyles";
|
|
24
|
-
import {
|
|
25
|
-
import { useTranslation } from "react-i18next";
|
|
26
|
-
import { Div } from "../../../styled";
|
|
27
|
-
import { useFilteredDataContext } from "../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
|
|
27
|
+
import { SearchIcon } from "./icons";
|
|
28
28
|
var Wrapper = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n height: 24px;\n overflow: hidden;\n padding: 8px;\n position: relative;\n transition: width 0.25s ease-in-out;\n width: ", ";\n"], ["\n background: ", ";\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n height: 24px;\n overflow: hidden;\n padding: 8px;\n position: relative;\n transition: width 0.25s ease-in-out;\n width: ", ";\n"])), function (_a) {
|
|
29
29
|
var isOpen = _a.isOpen;
|
|
30
30
|
return (isOpen ? colors.orange50 : "none");
|
|
@@ -66,7 +66,7 @@ var SearchInput = function (_a) {
|
|
|
66
66
|
export var SearchRows = function (_a) {
|
|
67
67
|
var _b = _a.testId, testId = _b === void 0 ? "ta-search-rows" : _b;
|
|
68
68
|
var _c = useFilteredDataContext(), filteredInputValue = _c.filteredInputValue, setFilteredInputValue = _c.setFilteredInputValue;
|
|
69
|
-
var isTransformTooltipOpened =
|
|
69
|
+
var isTransformTooltipOpened = useReviewContext().isTransformTooltipOpened;
|
|
70
70
|
var handleChangeInputValue = function (value) {
|
|
71
71
|
setFilteredInputValue(value);
|
|
72
72
|
};
|
|
@@ -21,17 +21,22 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
import { useReviewContext } from "../../../Importer";
|
|
24
25
|
import { defaultTableActionsHeightPx } from "./common";
|
|
26
|
+
import { CustomActions } from "./CustomActions";
|
|
25
27
|
import { DeleteSelectedRows } from "./DeleteSelectedRows";
|
|
26
|
-
import { SearchRows } from "./SearchRows";
|
|
27
28
|
import { ExportData } from "./ExportData";
|
|
28
|
-
import * as S from "./TableActions.styles";
|
|
29
29
|
import { FilterByErrors } from "./FilterByErrors/FilterByErrors";
|
|
30
30
|
import { RowFilters } from "./RowFilters";
|
|
31
|
+
import { SearchRows } from "./SearchRows";
|
|
32
|
+
import * as S from "./TableActions.styles";
|
|
31
33
|
import { TransformedRecordsCount } from "./TransformedRecordsCount";
|
|
32
|
-
import { CustomActions } from "./CustomActions";
|
|
33
34
|
import ValidationProgress from "./ValidationProgress";
|
|
34
35
|
export var TableActions = function (_a) {
|
|
35
36
|
var _b = _a.tableActionsHeight, tableActionsHeight = _b === void 0 ? defaultTableActionsHeightPx : _b, props = __rest(_a, ["tableActionsHeight"]);
|
|
36
|
-
|
|
37
|
+
var _c = useReviewContext(), isTransformTooltipOpened = _c.isTransformTooltipOpened, setIsTransformTooltipOpened = _c.setIsTransformTooltipOpened;
|
|
38
|
+
var onCloseTransformsTooltip = function () {
|
|
39
|
+
setIsTransformTooltipOpened(false);
|
|
40
|
+
};
|
|
41
|
+
return (_jsxs(S.TableActionsContainer, __assign({ height: tableActionsHeight }, props, { children: [_jsxs(S.TableActionsContent, { children: [_jsx(SearchRows, {}), _jsx(RowFilters, {}), _jsx(FilterByErrors, {}), _jsxs(S.ButtonActionsContainer, { children: [_jsx(DeleteSelectedRows, {}), _jsx(ExportData, {}), _jsx(CustomActions, {})] })] }), _jsxs(S.TableActionsInformations, { children: [_jsx(ValidationProgress, {}), isTransformTooltipOpened && (_jsx(TransformedRecordsCount, { onClose: onCloseTransformsTooltip }))] })] })));
|
|
37
42
|
};
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
export declare const TooltipBackdrop: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled").CSSProps, never>;
|
|
2
|
-
|
|
2
|
+
type TransformedRecordsCountProps = {
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
};
|
|
5
|
+
export declare const TransformedRecordsCount: ({ onClose, }: TransformedRecordsCountProps) => JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -14,14 +14,14 @@ var __assign = (this && this.__assign) || function () {
|
|
|
14
14
|
return __assign.apply(this, arguments);
|
|
15
15
|
};
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
|
-
import { useEffect, useMemo,
|
|
17
|
+
import { useEffect, useMemo, useState } from "react";
|
|
18
18
|
import { useTranslation } from "react-i18next";
|
|
19
19
|
import styled from "styled-components";
|
|
20
|
+
import { Button } from "../../../common/buttons";
|
|
20
21
|
import { useSpreadsheetContext } from "../../../Importer";
|
|
21
22
|
import { useDataSetContext } from "../../../Importer/common/Spreadsheet/DataSetContextProvider";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import { Div, colors } from "../../../styled";
|
|
23
|
+
import { useFilteredDataContext } from "../../../Importer/common/Spreadsheet/FilteredDataContextProvider";
|
|
24
|
+
import { colors, Div } from "../../../styled";
|
|
25
25
|
import { truncateString } from "../../../utils";
|
|
26
26
|
import { CheckIcon } from "./icons";
|
|
27
27
|
var formatToLocaleString = function (number) {
|
|
@@ -37,55 +37,35 @@ var ExampleCode = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemp
|
|
|
37
37
|
var StyledButton = styled(Button)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n align-self: flex-end;\n height: 36px;\n padding: 0px;\n width: 61px;\n"], ["\n align-self: flex-end;\n height: 36px;\n padding: 0px;\n width: 61px;\n"])));
|
|
38
38
|
export var TooltipBackdrop = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: rgba(0, 0, 0, 0.37);\n height: 100vh;\n left: 0px;\n margin: 0px;\n position: fixed;\n top: 0px;\n width: 100vw;\n z-index: 99;\n"], ["\n background: rgba(0, 0, 0, 0.37);\n height: 100vh;\n left: 0px;\n margin: 0px;\n position: fixed;\n top: 0px;\n width: 100vw;\n z-index: 99;\n"])));
|
|
39
39
|
var Tooltip = function (_a) {
|
|
40
|
-
var recordsCount = _a.recordsCount, onClose = _a.onClose
|
|
40
|
+
var recordsCount = _a.recordsCount, onClose = _a.onClose;
|
|
41
|
+
var getRecord = useDataSetContext().getRecord;
|
|
41
42
|
var t = useTranslation("review").t;
|
|
43
|
+
var filteredDataIds = useFilteredDataContext().filteredDataIds;
|
|
44
|
+
var _b = useState(null), exampleTransform = _b[0], setExampleTransform = _b[1];
|
|
45
|
+
useEffect(function () {
|
|
46
|
+
var foundId = filteredDataIds.find(function (id) { var _a, _b; return Object.keys((_b = (_a = getRecord(id)) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.transformedRow).length > 0; });
|
|
47
|
+
if (foundId)
|
|
48
|
+
setExampleTransform(Object.values(getRecord(foundId)._meta.transformedRow)[0]);
|
|
49
|
+
}, [filteredDataIds]);
|
|
42
50
|
return (_jsxs(_Fragment, { children: [_jsx(TooltipBackdrop, { "data-cy": "transformations-tooltip-backdrop", onClick: onClose }), _jsxs(TooltipContainer, __assign({ "data-cy": "transformations-tooltip" }, { children: [_jsx(Div, { children: _jsx(CheckIcon, {}) }), _jsx(Div, __assign({ subtitle: true }, { children: t("table_actions.transformed_records.auto_corrections_amount", {
|
|
43
51
|
amount: formatToLocaleString(recordsCount),
|
|
44
|
-
}) })),
|
|
52
|
+
}) })), _jsxs(Div, { children: [_jsx(Div, __assign({ mb: 5, label1: true, style: { color: colors.gray700 } }, { children: t("table_actions.transformed_records.example") })), exampleTransform && (_jsxs(ExampleCode, { children: [_jsx(Div, __assign({ body1: true }, { children: truncateString(exampleTransform === null || exampleTransform === void 0 ? void 0 : exampleTransform.transformed, 15) })), _jsx(Div, __assign({ body1: true, style: { textDecoration: "line-through" } }, { children: truncateString(exampleTransform === null || exampleTransform === void 0 ? void 0 : exampleTransform.original, 15) }))] }))] }), _jsx(StyledButton, __assign({ buttonTextSmall: true, uppercase: true, onClick: onClose }, { children: "OK" }))] }))] }));
|
|
45
53
|
};
|
|
46
|
-
export var TransformedRecordsCount = function () {
|
|
47
|
-
var
|
|
48
|
-
var
|
|
54
|
+
export var TransformedRecordsCount = function (_a) {
|
|
55
|
+
var onClose = _a.onClose;
|
|
56
|
+
var filteredDataIds = useSpreadsheetContext().filteredDataIds;
|
|
49
57
|
var getRecord = useDataSetContext().getRecord;
|
|
50
58
|
var t = useTranslation("review").t;
|
|
51
|
-
var tooltipWasAlreadyOpened = useRef(false);
|
|
52
59
|
var transformedRecordsCount = useMemo(function () {
|
|
53
60
|
var _a;
|
|
54
|
-
if (tooltipWasAlreadyOpened.current)
|
|
55
|
-
return;
|
|
56
61
|
var counter = 0;
|
|
57
62
|
for (var i = 0; i < filteredDataIds.length; i++) {
|
|
58
63
|
var currentData = getRecord(filteredDataIds[i]);
|
|
59
64
|
var transformedObj = (_a = currentData === null || currentData === void 0 ? void 0 : currentData._meta) === null || _a === void 0 ? void 0 : _a.transformedRow;
|
|
60
|
-
|
|
61
|
-
counter += Object.keys(transformedObj).length;
|
|
62
|
-
}
|
|
65
|
+
counter += Object.keys(transformedObj).length;
|
|
63
66
|
}
|
|
64
67
|
return counter;
|
|
65
68
|
}, [filteredDataIds]);
|
|
66
|
-
|
|
67
|
-
if (tooltipWasAlreadyOpened.current || !spreadsheetInitialized)
|
|
68
|
-
return;
|
|
69
|
-
if (transformedRecordsCount > 0 && !isTransformTooltipOpened) {
|
|
70
|
-
setIsTransformTooltipOpened(true);
|
|
71
|
-
tooltipWasAlreadyOpened.current = true;
|
|
72
|
-
}
|
|
73
|
-
}, [transformedRecordsCount, spreadsheetInitialized]);
|
|
74
|
-
var handleCloseTooltip = function () {
|
|
75
|
-
setIsTransformTooltipOpened(false);
|
|
76
|
-
};
|
|
77
|
-
var firstTransformedRow = useMemo(function () {
|
|
78
|
-
var _a;
|
|
79
|
-
for (var _i = 0, filteredDataIds_1 = filteredDataIds; _i < filteredDataIds_1.length; _i++) {
|
|
80
|
-
var id = filteredDataIds_1[_i];
|
|
81
|
-
var record = getRecord(id);
|
|
82
|
-
var transformedRow = (_a = record === null || record === void 0 ? void 0 : record._meta) === null || _a === void 0 ? void 0 : _a.transformedRow;
|
|
83
|
-
if (transformedRow && Object.keys(transformedRow).length > 0) {
|
|
84
|
-
return Object.values(transformedRow)[0];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return null;
|
|
88
|
-
}, []);
|
|
89
|
-
return (_jsx(_Fragment, { children: isTransformTooltipOpened && transformedRecordsCount ? (_jsxs(RecordsCountContainer, { children: [_jsxs(Counter, __assign({ body1: true }, { children: [_jsxs(Div, __assign({ bold: true, mr: 4, "data-cy": "transformations-counter" }, { children: [formatToLocaleString(transformedRecordsCount), " "] })), t("table_actions.transformed_records.auto_corrections_done")] })), isTransformTooltipOpened && (_jsx(Tooltip, { transformedRowData: firstTransformedRow, recordsCount: transformedRecordsCount, onClose: handleCloseTooltip }))] })) : null }));
|
|
69
|
+
return (_jsxs(RecordsCountContainer, { children: [_jsxs(Counter, __assign({ body1: true }, { children: [_jsxs(Div, __assign({ bold: true, mr: 4, "data-cy": "transformations-counter" }, { children: [formatToLocaleString(transformedRecordsCount), " "] })), t("table_actions.transformed_records.auto_corrections_done")] })), _jsx(Tooltip, { recordsCount: transformedRecordsCount, onClose: onClose })] }));
|
|
90
70
|
};
|
|
91
71
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
@@ -60,7 +60,7 @@ var styles = {
|
|
|
60
60
|
primary: css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n\n border: solid 4px ", ";\n box-sizing: border-box;\n\n :hover {\n background: ", ";\n /* a3 at the end adds 0.64 opacity */\n box-shadow: 0px 0px 8px ", "a3;\n }\n :active {\n background: ", ";\n border: 4px solid ", ";\n }\n :focus {\n background: ", ";\n /* a3 at the end adds 0.64 opacity */\n box-shadow: 0px 0px 8px ", "a3;\n }\n ", "\n "], ["\n color: ", ";\n background: ", ";\n\n border: solid 4px ", ";\n box-sizing: border-box;\n\n :hover {\n background: ", ";\n /* a3 at the end adds 0.64 opacity */\n box-shadow: 0px 0px 8px ", "a3;\n }\n :active {\n background: ", ";\n border: 4px solid ", ";\n }\n :focus {\n background: ", ";\n /* a3 at the end adds 0.64 opacity */\n box-shadow: 0px 0px 8px ", "a3;\n }\n ", "\n "])), function (props) { return props.theme.colors.white; }, getBgColor, getBgColor, getBgColor, getBgColor, getBgColor, getBorderColor, getBgColor, getBgColor, function (props) {
|
|
61
61
|
return props.isDisabled && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: ", " !important;\n opacity: 0.4;\n box-shadow: none !important;\n border: none !important;\n cursor: not-allowed !important;\n "], ["\n background: ", " !important;\n opacity: 0.4;\n box-shadow: none !important;\n border: none !important;\n cursor: not-allowed !important;\n "])), getBgColor);
|
|
62
62
|
}),
|
|
63
|
-
secondary: css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", ";\n box-sizing: border-box;\n border: solid
|
|
63
|
+
secondary: css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", ";\n box-sizing: border-box;\n border: 2px solid ", ";\n color: ", ";\n & > svg {\n & > path {\n fill: ", ";\n stroke: ", ";\n }\n }\n :active {\n border: 2px solid ", ";\n background: ", ";\n color: ", ";\n & > svg {\n & > path {\n fill: ", ";\n stroke: ", ";\n }\n }\n }\n :focus {\n box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.24);\n }\n ", "\n "], ["\n background: ", ";\n box-sizing: border-box;\n border: 2px solid ", ";\n color: ", ";\n & > svg {\n & > path {\n fill: ", ";\n stroke: ", ";\n }\n }\n :active {\n border: 2px solid ", ";\n background: ", ";\n color: ", ";\n & > svg {\n & > path {\n fill: ", ";\n stroke: ", ";\n }\n }\n }\n :focus {\n box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.24);\n }\n ", "\n "])), function (props) { return props.theme.colors.white; }, function (props) { return props.theme.colors.black; }, function (props) { return props.theme.colors.black; }, getSvgFillColorForNormalState, getSvgStrokeColorForNormalState, function (props) { return props.theme.colors.black; }, function (props) { return props.theme.colors.black; }, function (props) { return props.theme.colors.white; }, getSvgFillColorForActiveState, getSvgStrokeColorForActiveState, function (props) {
|
|
64
64
|
return props.isDisabled && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n border: 2px solid ", ";\n color: ", ";\n & > svg {\n & > path {\n fill: ", ";\n stroke: ", ";\n }\n }\n "], ["\n border: 2px solid ", ";\n color: ", ";\n & > svg {\n & > path {\n fill: ", ";\n stroke: ", ";\n }\n }\n "])), function (props) { return props.theme.colors.gray390; }, function (props) { return props.theme.colors.gray390; }, getSvgFillColorForDisabledState, getSvgStrokeColorForDisabledState);
|
|
65
65
|
}),
|
|
66
66
|
tertiary: css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n background: transparent;\n border: solid 1px transparent;\n color: ", ";\n :hover {\n background: ", ";\n }\n :active {\n background: ", ";\n color: ", ";\n }\n ", "\n "], ["\n background: transparent;\n border: solid 1px transparent;\n color: ", ";\n :hover {\n background: ", ";\n }\n :active {\n background: ", ";\n color: ", ";\n }\n ", "\n "])), function (props) { return props.theme.colors.text; }, function (props) { return props.theme.colors.white50; }, function (props) { return props.theme.colors.black; }, function (props) { return props.theme.colors.white; }, function (props) {
|
|
@@ -75,14 +75,14 @@ var styles = {
|
|
|
75
75
|
: withBrandingCSS;
|
|
76
76
|
}, function (props) { return props.theme.colors.black; }, function (props) { return props.theme.colors.white; }),
|
|
77
77
|
};
|
|
78
|
-
var commonButtonStyle = css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n padding: 12px 24px;\n user-select: none;\n width: fit-content;\n\n
|
|
79
|
-
return props.
|
|
80
|
-
}, function (props) {
|
|
81
|
-
return props.isDisabled && css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "])));
|
|
78
|
+
var commonButtonStyle = css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n padding: 12px 24px;\n user-select: none;\n width: fit-content;\n\n border: solid 1px black;\n border-radius: 4px;\n\n font-family: DM Sans;\n\n :focus {\n outline: none;\n }\n :hover {\n cursor: pointer;\n }\n\n ", "\n ", ";\n\n ", ";\n\n ", "\n"], ["\n padding: 12px 24px;\n user-select: none;\n width: fit-content;\n\n border: solid 1px black;\n border-radius: 4px;\n\n font-family: DM Sans;\n\n :focus {\n outline: none;\n }\n :hover {\n cursor: pointer;\n }\n\n ", "\n ", ";\n\n ", ";\n\n ", "\n"])), function (props) {
|
|
79
|
+
return props.isDisabled && css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "])));
|
|
82
80
|
}, function (props) {
|
|
83
81
|
var c = props.theme.css;
|
|
84
82
|
return [c.centered, c.buttonText];
|
|
85
|
-
}, function (props) { return styles[props.variant || "primary"]; })
|
|
83
|
+
}, function (props) { return styles[props.variant || "primary"]; }, function (props) {
|
|
84
|
+
return props.isSmall && css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n padding: 6px 20px;\n font-size: 14px;\n "], ["\n padding: 6px 20px;\n font-size: 14px;\n "])));
|
|
85
|
+
});
|
|
86
86
|
export var ButtonWrapper = styled(Div)(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n ", ";\n"], ["\n ", ";\n"])), commonButtonStyle);
|
|
87
87
|
export var ButtonElementWrapper = styled(HTMLButton)(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n ", ";\n"], ["\n ", ";\n"])), commonButtonStyle);
|
|
88
88
|
export var ContentWrapper = styled(Div)(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 12px;\n justify-content: center;\n"], ["\n display: flex;\n align-items: center;\n gap: 12px;\n justify-content: center;\n"])));
|