Skip to content

Commit 6b1ad3f

Browse files
ZabilsyaZabilsya
andauthored
[DOP-22358] add filter columns (#70)
Co-authored-by: Zabilsya <[email protected]>
1 parent 794a009 commit 6b1ad3f

File tree

41 files changed

+473
-163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+473
-163
lines changed
Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
export enum TransformationType {
2-
ROWS_FILTER = 'dataframe_rows_filter',
2+
FILTER_ROWS = 'dataframe_rows_filter',
3+
FILTER_COLUMNS = 'dataframe_columns_filter',
34
}
45

5-
export enum TransformationRowsFilterType {
6+
export enum TransformationFilterRowsType {
67
IS_NULL = 'is_null',
78
IS_NOT_NULL = 'is_not_null',
89
EQUAL = 'equal',
@@ -18,30 +19,64 @@ export enum TransformationRowsFilterType {
1819
REGEXP = 'regexp',
1920
}
2021

21-
interface TransformationRowsFilterNullable {
22+
interface TransformationFilterRowsNullable {
2223
type: Extract<
23-
TransformationRowsFilterType,
24-
TransformationRowsFilterType.IS_NULL | TransformationRowsFilterType.IS_NOT_NULL
24+
TransformationFilterRowsType,
25+
TransformationFilterRowsType.IS_NULL | TransformationFilterRowsType.IS_NOT_NULL
2526
>;
2627
field: string;
2728
}
2829

29-
interface TransformationRowsFilterDefault {
30+
interface TransformationFilterRowsDefault {
3031
type: Exclude<
31-
TransformationRowsFilterType,
32-
TransformationRowsFilterType.IS_NULL | TransformationRowsFilterType.IS_NOT_NULL
32+
TransformationFilterRowsType,
33+
TransformationFilterRowsType.IS_NULL | TransformationFilterRowsType.IS_NOT_NULL
3334
>;
3435
field: string;
3536
value: string;
3637
}
3738

38-
export interface TransformationRowsFilter {
39-
type: TransformationType.ROWS_FILTER;
40-
filters: Array<TransformationRowsFilterNullable | TransformationRowsFilterDefault>;
39+
export interface TransformationFilterRows {
40+
type: TransformationType.FILTER_ROWS;
41+
filters: Array<TransformationFilterRowsNullable | TransformationFilterRowsDefault>;
4142
}
4243

43-
export type Transformations = Array<TransformationRowsFilter>;
44+
export enum TransformationFilterColumnsType {
45+
CAST = 'cast',
46+
INCLUDE = 'include',
47+
RENAME = 'rename',
48+
}
49+
50+
interface TransformationFilterColumnsInclude {
51+
type: TransformationFilterColumnsType.INCLUDE;
52+
field: string;
53+
}
54+
55+
interface TransformationFilterColumnsRename {
56+
type: TransformationFilterColumnsType.RENAME;
57+
field: string;
58+
to: string;
59+
}
60+
61+
interface TransformationFilterColumnsCast {
62+
type: TransformationFilterColumnsType.CAST;
63+
field: string;
64+
as_type: string;
65+
}
66+
67+
export interface TransformationFilterColumns {
68+
type: TransformationType.FILTER_COLUMNS;
69+
filters: Array<
70+
TransformationFilterColumnsInclude | TransformationFilterColumnsRename | TransformationFilterColumnsCast
71+
>;
72+
}
73+
74+
export type Transformations = Array<TransformationFilterRows | TransformationFilterColumns>;
4475

4576
export interface TransformationsForm {
46-
[TransformationType.ROWS_FILTER]?: TransformationRowsFilter['filters'];
77+
[TransformationType.FILTER_ROWS]?: TransformationFilterRows['filters'];
78+
[TransformationType.FILTER_COLUMNS]?: TransformationFilterColumns['filters'];
4779
}
80+
81+
export type TransformationsFormNestedType<T extends keyof TransformationsForm> =
82+
Required<TransformationsForm>[T][number]['type'];
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React from 'react';
2+
import { Form, Input } from 'antd';
3+
import { TransformationFilterColumnsType } from '@entities/transformation';
4+
5+
import { FilterColumnsValueProps } from './types';
6+
import classes from './styles.module.less';
7+
8+
export const FilterColumnsValue = ({ name, type }: FilterColumnsValueProps) => {
9+
switch (type) {
10+
case TransformationFilterColumnsType.INCLUDE:
11+
case undefined:
12+
return null;
13+
case TransformationFilterColumnsType.RENAME:
14+
return (
15+
<Form.Item className={classes.root} label="Value" name={[name, 'to']} rules={[{ required: true }]}>
16+
<Input className="nodrag" size="large" />
17+
</Form.Item>
18+
);
19+
case TransformationFilterColumnsType.CAST:
20+
return (
21+
<Form.Item className={classes.root} label="Value" name={[name, 'as_type']} rules={[{ required: true }]}>
22+
<Input className="nodrag" size="large" />
23+
</Form.Item>
24+
);
25+
}
26+
};

src/entities/transformation/ui/FilterRows/components/FilterRowsValue/styles.module.less renamed to src/entities/transformation/ui/FilterColumnsValue/styles.module.less

File renamed without changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { TransformationFilterColumnsType } from '@entities/transformation';
2+
3+
export interface FilterColumnsValueProps {
4+
name: number;
5+
type?: TransformationFilterColumnsType;
6+
}

src/entities/transformation/ui/FilterRows/components/FilterRowsItem/constants.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/entities/transformation/ui/FilterRows/components/FilterRowsItem/types.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/entities/transformation/ui/FilterRows/components/FilterRowsValue/types.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/entities/transformation/ui/FilterRows/components/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/entities/transformation/ui/FilterRows/index.tsx

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/entities/transformation/ui/FilterRows/components/FilterRowsValue/index.tsx renamed to src/entities/transformation/ui/FilterRowsValue/index.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import React from 'react';
22
import { Form, Input } from 'antd';
3-
4-
import { TransformationRowsFilterType } from '../../../../types';
3+
import { TransformationFilterRowsType } from '@entities/transformation';
54

65
import { FilterRowsValueProps } from './types';
76
import classes from './styles.module.less';
87

98
export const FilterRowsValue = ({ name, type }: FilterRowsValueProps) => {
109
switch (type) {
11-
case TransformationRowsFilterType.IS_NULL:
12-
case TransformationRowsFilterType.IS_NOT_NULL:
10+
case TransformationFilterRowsType.IS_NULL:
11+
case TransformationFilterRowsType.IS_NOT_NULL:
1312
case undefined:
1413
return null;
1514
default:

0 commit comments

Comments
 (0)