Skip to content

Commit d14aa67

Browse files
author
sa gorelov
committed
[DOP-30115] add advanced parameters changes to normal transfer editing
1 parent 022c0fd commit d14aa67

File tree

14 files changed

+123
-26
lines changed

14 files changed

+123
-26
lines changed

src/entities/transformation/ui/TransformationForm/TransformationForm.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Button, Form } from 'antd';
1+
import { Button, Form, FormListFieldData } from 'antd';
22
import React, { memo, useLayoutEffect } from 'react';
33
import { useTranslation } from 'react-i18next';
44

@@ -10,6 +10,7 @@ import { TransformationFormProps } from './types';
1010

1111
const TransformationFormComponent = <T extends TransformationType>({
1212
transformationType,
13+
canHaveEmptyRecordsList,
1314
...props
1415
}: TransformationFormProps<T>) => {
1516
const { t } = useTranslation();
@@ -25,10 +26,13 @@ const TransformationFormComponent = <T extends TransformationType>({
2526
* because it is inconvenient to check for the presence of a default value of this array,
2627
* when forming a request to backend or initial form values */
2728
useLayoutEffect(() => {
28-
if (!filtersValues || !filtersValues.length) {
29+
const needFillEmpty = !canHaveEmptyRecordsList && !filtersValues?.length;
30+
if (needFillEmpty) {
2931
formInstance.setFieldValue(['transformations', transformationType], [{}]);
3032
}
31-
}, [formInstance, filtersValues, transformationType]);
33+
}, [formInstance, filtersValues, transformationType, canHaveEmptyRecordsList]);
34+
35+
const canCanRemoveItem = ({ name }: FormListFieldData) => (name || canHaveEmptyRecordsList) && isDisplayed;
3236

3337
return (
3438
<Form.List name={['transformations', transformationType]}>
@@ -39,7 +43,7 @@ const TransformationFormComponent = <T extends TransformationType>({
3943
{...field}
4044
{...props}
4145
transformationType={transformationType}
42-
onRemove={field.name && isDisplayed ? remove : undefined}
46+
onRemove={canCanRemoveItem(field) ? remove : undefined}
4347
key={field.key}
4448
/>
4549
))}

src/entities/transformation/ui/TransformationForm/types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ import { TransformationType } from '@entities/transformation';
33
import { TransformationFormItemProps } from './components';
44

55
export interface TransformationFormProps<T extends TransformationType>
6-
extends Pick<TransformationFormItemProps<T>, 'transformationType' | 'nestedTypeSelectLabel' | 'hasColumnField'> {}
6+
extends Pick<TransformationFormItemProps<T>, 'transformationType' | 'nestedTypeSelectLabel' | 'hasColumnField'> {
7+
/** Can have empty records list */
8+
canHaveEmptyRecordsList?: boolean;
9+
}
10+
11+
export interface FilterFormItemProps<T extends TransformationType>
12+
extends Pick<TransformationFormProps<T>, 'canHaveEmptyRecordsList'> {}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React, { memo } from 'react';
2+
import { FilterFormItemProps, TransformationForm, TransformationType } from '@entities/transformation';
3+
import { useTranslation } from 'react-i18next';
4+
5+
export const FilterColumnsFormItem = memo(
6+
<T extends TransformationType>({ canHaveEmptyRecordsList }: FilterFormItemProps<T>) => {
7+
const { t } = useTranslation('transformation');
8+
9+
return (
10+
<TransformationForm
11+
transformationType={TransformationType.FILTER_COLUMNS}
12+
nestedTypeSelectLabel={t('type', { ns: 'shared' })}
13+
canHaveEmptyRecordsList={canHaveEmptyRecordsList}
14+
hasColumnField
15+
/>
16+
);
17+
},
18+
);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './FilterColumnsFormItem';

src/features/transfer/MutateTransferForm/components/FilterColumnsNode/FilterColumnsNode.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import React, { useMemo } from 'react';
22
import { CanvasNode } from '@shared/ui';
33
import { Handle, Position } from '@xyflow/react';
44
import { FilterOutlined } from '@ant-design/icons';
5-
import { TransformationForm, TransformationType } from '@entities/transformation';
65
import { useTranslation } from 'react-i18next';
76

87
import {
98
TransferCanvasEdge,
109
TransferCanvasTransformNodeType,
1110
TRANSFER_CANVAS_TRANSFORM_NODE_TYPE_NAME_DISPLAY,
1211
} from '../TransferConnectionsCanvas';
12+
import { FilterColumnsFormItem } from '../FilterColumnsFormItem';
1313

1414
import classes from './styles.module.less';
1515

@@ -24,15 +24,11 @@ export const FilterColumnsNode = () => {
2424
return (
2525
<>
2626
<Handle type="target" position={Position.Left} id={TransferCanvasEdge.FILTER_COLUMNS_TARGET} />
27-
<TransformationForm
28-
transformationType={TransformationType.FILTER_COLUMNS}
29-
nestedTypeSelectLabel={t('type', { ns: 'shared' })}
30-
hasColumnField
31-
/>
27+
<FilterColumnsFormItem />
3228
<Handle type="source" position={Position.Right} id={TransferCanvasEdge.FILTER_COLUMNS_SOURCE} />
3329
</>
3430
);
35-
}, [t]);
31+
}, []);
3632

3733
return (
3834
<CanvasNode
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import React, { memo } from 'react';
2+
import { FilterFormItemProps, TransformationForm, TransformationType } from '@entities/transformation';
3+
import { useTranslation } from 'react-i18next';
4+
5+
export const FilterFileFormItem = memo(
6+
<T extends TransformationType>({ canHaveEmptyRecordsList }: FilterFormItemProps<T>) => {
7+
const { t } = useTranslation('transformation');
8+
9+
return (
10+
<TransformationForm
11+
transformationType={TransformationType.FILTER_FILE}
12+
nestedTypeSelectLabel={t('type', { ns: 'shared' })}
13+
canHaveEmptyRecordsList={canHaveEmptyRecordsList}
14+
/>
15+
);
16+
},
17+
);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './FilterFileFormItem';

src/features/transfer/MutateTransferForm/components/FilterFileNode/FilterFileNode.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import React, { useMemo } from 'react';
22
import { CanvasNode } from '@shared/ui';
33
import { Handle, Position } from '@xyflow/react';
44
import { FilterOutlined } from '@ant-design/icons';
5-
import { TransformationForm, TransformationType } from '@entities/transformation';
65
import { useTranslation } from 'react-i18next';
76

87
import {
98
TransferCanvasEdge,
109
TransferCanvasTransformNodeType,
1110
TRANSFER_CANVAS_TRANSFORM_NODE_TYPE_NAME_DISPLAY,
1211
} from '../TransferConnectionsCanvas';
12+
import { FilterFileFormItem } from '../FilterFileFormItem';
1313

1414
import classes from './styles.module.less';
1515

@@ -24,14 +24,11 @@ export const FilterFileNode = () => {
2424
return (
2525
<>
2626
<Handle type="target" position={Position.Left} id={TransferCanvasEdge.FILTER_FILE_TARGET} />
27-
<TransformationForm
28-
transformationType={TransformationType.FILTER_FILE}
29-
nestedTypeSelectLabel={t('type', { ns: 'shared' })}
30-
/>
27+
<FilterFileFormItem />
3128
<Handle type="source" position={Position.Right} id={TransferCanvasEdge.FILTER_FILE_SOURCE} />
3229
</>
3330
);
34-
}, [t]);
31+
}, []);
3532

3633
return (
3734
<CanvasNode
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React, { memo } from 'react';
2+
import { FilterFormItemProps, TransformationForm, TransformationType } from '@entities/transformation';
3+
import { useTranslation } from 'react-i18next';
4+
5+
export const FilterRowsFormItem = memo(
6+
<T extends TransformationType>({ canHaveEmptyRecordsList }: FilterFormItemProps<T>) => {
7+
const { t } = useTranslation('transformation');
8+
9+
return (
10+
<TransformationForm
11+
transformationType={TransformationType.FILTER_ROWS}
12+
nestedTypeSelectLabel={t('operator')}
13+
canHaveEmptyRecordsList={canHaveEmptyRecordsList}
14+
hasColumnField
15+
/>
16+
);
17+
},
18+
);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './FilterRowsFormItem';

0 commit comments

Comments
 (0)