Skip to content

Commit b79187d

Browse files
authored
Add some form fields for in cluster creation
1 parent 6e84a3e commit b79187d

File tree

7 files changed

+191
-53
lines changed

7 files changed

+191
-53
lines changed

ui/src/components/SelectWithTooltip/index.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,26 @@ interface SelectWithTooltipProps {
55
selectList: API.TooltipData[];
66
form: any;
77
name: string | number | (string | number)[];
8+
type: string;
89
TooltipItemContent: (item: API.TooltipData) => JSX.Element;
910
}
1011

1112
export default function SelectWithTooltip({
1213
selectList,
1314
form,
1415
name,
15-
TooltipItemContent
16+
type,
17+
TooltipItemContent,
1618
}: SelectWithTooltipProps) {
1719
const filterOption = (
1820
input: string,
1921
option: { label: string; value: string },
20-
) =>{
22+
) => {
2123
return (option?.value ?? '').toLowerCase().includes(input.toLowerCase());
22-
}
24+
};
2325

2426
const formatData = (selectList: API.TooltipData[]) => {
25-
selectList.forEach((item: API.TooltipData) => {
27+
selectList?.forEach((item: API.TooltipData) => {
2628
item.label = (
2729
<Tooltip
2830
color="#fff"
@@ -34,7 +36,7 @@ export default function SelectWithTooltip({
3436
'0 3px 6px -4px rgba(0,0,0,.12), 0 6px 16px 0 rgba(0,0,0,.08), 0 9px 28px 8px rgba(0,0,0,.05)',
3537
}}
3638
placement="right"
37-
title={<TooltipItemContent item={item}/>}
39+
title={<TooltipItemContent item={item} />}
3840
>
3941
<div>{item.value}</div>
4042
</Tooltip>
@@ -59,7 +61,11 @@ export default function SelectWithTooltip({
5961
filterOption={filterOption}
6062
options={formatData(selectList)}
6163
onChange={selectChange}
62-
value={form.getFieldValue(name)}
64+
value={
65+
type === 'observer' && formatData(selectList)?.length !== 1
66+
? ''
67+
: form.getFieldValue(name)
68+
}
6369
// dropdownRender={DropDownComponent}
6470
/>
6571
);

ui/src/constants/index.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,3 +473,30 @@ export const EVENTSTABLE_STATUS_LIST = [
473473
badgeStatus: 'warning',
474474
},
475475
];
476+
477+
export const LOADTYPE_LIST = [
478+
{
479+
value: 'EXPRESS_OLTP',
480+
label: 'Express OLTP',
481+
},
482+
{
483+
value: 'EXPRESS_OLTP_PERF',
484+
label: 'Express OLTP PERF',
485+
},
486+
{
487+
value: 'COMPLEX_OLTP',
488+
label: 'Complex OLTP',
489+
},
490+
{
491+
value: 'HTAP',
492+
label: 'HTAP',
493+
},
494+
{
495+
value: 'OLAP',
496+
label: 'OLAP',
497+
},
498+
{
499+
value: 'KV',
500+
label: 'KV',
501+
},
502+
];

ui/src/pages/Cluster/New/BasicInfo.tsx

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { intl } from '@/utils/intl';
2-
import { Card, Col, Form, Input, Row, Select } from 'antd';
2+
import { Card, Checkbox, Col, Form, Input, Row, Select, Space } from 'antd';
33
import type { FormInstance } from 'antd/lib/form';
44

55
import PasswordInput from '@/components/PasswordInput';
66
import SelectNSFromItem from '@/components/SelectNSFromItem';
77
import TooltipPretty from '@/components/TooltipPretty';
8-
import { MODE_MAP } from '@/constants';
8+
import { LOADTYPE_LIST, MODE_MAP } from '@/constants';
99
import { resourceNameRule } from '@/constants/rules';
1010

11+
const { Option } = Select;
12+
1113
interface BasicInfoProps {
1214
form: FormInstance<API.CreateClusterData>;
1315
passwordVal: string;
@@ -17,7 +19,9 @@ interface BasicInfoProps {
1719
export default function BasicInfo({
1820
form,
1921
passwordVal,
22+
deleteValue,
2023
setPasswordVal,
24+
setDeleteValue,
2125
}: BasicInfoProps) {
2226
return (
2327
<Card
@@ -147,7 +151,37 @@ export default function BasicInfo({
147151
/>
148152
</Form.Item>
149153
</Col>
154+
<Col span={8}>
155+
<Form.Item
156+
label={'优化场景'}
157+
name={'loadType'}
158+
initialValue="HTAP"
159+
rules={[
160+
{
161+
required: true,
162+
message: '请选择优化场景',
163+
},
164+
]}
165+
>
166+
<Select>
167+
{LOADTYPE_LIST?.map((item) => (
168+
<Option key={item.value} value={item.value}>
169+
{item.label}
170+
</Option>
171+
))}
172+
</Select>
173+
</Form.Item>
174+
</Col>
150175
</Row>
176+
<Space>
177+
删除保护
178+
<Checkbox
179+
defaultChecked={deleteValue}
180+
onChange={(e) => {
181+
setDeleteValue(e.target.value);
182+
}}
183+
/>
184+
</Space>
151185
</Card>
152186
);
153187
}

ui/src/pages/Cluster/New/Observer.tsx

Lines changed: 63 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
import { CustomFormItem } from '@/components/CustomFormItem';
2+
import IconTip from '@/components/IconTip';
23
import SelectWithTooltip from '@/components/SelectWithTooltip';
34
import { MINIMAL_CONFIG, SUFFIX_UNIT } from '@/constants';
45
import { MIRROR_SERVER } from '@/constants/doc';
56
import { intl } from '@/utils/intl';
6-
import { Button, Card, Col, Input, InputNumber, Row, Tooltip } from 'antd';
7+
import {
8+
Button,
9+
Card,
10+
Checkbox,
11+
Col,
12+
Form,
13+
Input,
14+
InputNumber,
15+
Row,
16+
Space,
17+
Tooltip,
18+
} from 'antd';
719
import { FormInstance } from 'antd/lib/form';
820
import { clone } from 'lodash';
921
import styles from './index.less';
1022

1123
interface ObserverProps {
1224
storageClasses: API.TooltipData[] | undefined;
1325
form: FormInstance<API.CreateClusterData>;
26+
setPvcValue: boolean;
27+
pvcValue: boolean;
1428
}
1529

1630
const observerToolTipText = intl.formatMessage({
@@ -59,7 +73,12 @@ export const TooltipItemContent = ({ item }) => {
5973
);
6074
};
6175

62-
export default function Observer({ storageClasses, form }: ObserverProps) {
76+
export default function Observer({
77+
storageClasses,
78+
form,
79+
pvcValue,
80+
setPvcValue,
81+
}: ObserverProps) {
6382
const setMinimalConfiguration = () => {
6483
const originObserver = clone(form.getFieldsValue());
6584
form.setFieldsValue({
@@ -173,7 +192,21 @@ export default function Observer({ storageClasses, form }: ObserverProps) {
173192
</Col>
174193
</Row>
175194
<p className={styles.titleText}>storage</p>
176-
195+
<p className={styles.subTitleText}>存储卷配置</p>
196+
<Space style={{ marginBottom: '10px' }}>
197+
<IconTip
198+
tip={
199+
'勾选后,在删除 OBServer 资源之后不会级联删除 PVC;默认会进行级联删除'
200+
}
201+
content={'PVC 独立生命周期'}
202+
/>
203+
<Checkbox
204+
value={pvcValue}
205+
onChange={(e) => {
206+
setPvcValue(e.target.checked);
207+
}}
208+
/>
209+
</Space>
177210
<Row gutter={16}>
178211
<Col span={8}>
179212
<p className={styles.subTitleText}>
@@ -197,19 +230,18 @@ export default function Observer({ storageClasses, form }: ObserverProps) {
197230
})}
198231
/>
199232
</CustomFormItem>
200-
<CustomFormItem
233+
<Form.Item
201234
label="storageClass"
202235
name={['observer', 'storage', 'data', 'storageClass']}
203236
>
204-
{storageClasses && (
205-
<SelectWithTooltip
206-
name={['observer', 'storage', 'data', 'storageClass']}
207-
form={form}
208-
selectList={storageClasses}
209-
TooltipItemContent={TooltipItemContent}
210-
/>
211-
)}
212-
</CustomFormItem>
237+
<SelectWithTooltip
238+
type="observer"
239+
name={['observer', 'storage', 'data', 'storageClass']}
240+
form={form}
241+
selectList={storageClasses}
242+
TooltipItemContent={TooltipItemContent}
243+
/>
244+
</Form.Item>
213245
</div>
214246
</Col>
215247
<Col span={8}>
@@ -234,19 +266,18 @@ export default function Observer({ storageClasses, form }: ObserverProps) {
234266
})}
235267
/>
236268
</CustomFormItem>
237-
<CustomFormItem
269+
<Form.Item
238270
label="storageClass"
239271
name={['observer', 'storage', 'log', 'storageClass']}
240272
>
241-
{storageClasses && (
242-
<SelectWithTooltip
243-
form={form}
244-
name={['observer', 'storage', 'log', 'storageClass']}
245-
selectList={storageClasses}
246-
TooltipItemContent={TooltipItemContent}
247-
/>
248-
)}
249-
</CustomFormItem>
273+
<SelectWithTooltip
274+
type="observer"
275+
name={['observer', 'storage', 'data', 'storageClass']}
276+
form={form}
277+
selectList={storageClasses}
278+
TooltipItemContent={TooltipItemContent}
279+
/>
280+
</Form.Item>
250281
</div>
251282
</Col>
252283
<Col span={8}>
@@ -266,20 +297,19 @@ export default function Observer({ storageClasses, form }: ObserverProps) {
266297
})}
267298
/>
268299
</CustomFormItem>
269-
<CustomFormItem
300+
<Form.Item
270301
label="storageClass"
271302
validateTrigger="onBlur"
272303
name={['observer', 'storage', 'redoLog', 'storageClass']}
273304
>
274-
{storageClasses && (
275-
<SelectWithTooltip
276-
form={form}
277-
name={['observer', 'storage', 'redoLog', 'storageClass']}
278-
selectList={storageClasses}
279-
TooltipItemContent={TooltipItemContent}
280-
/>
281-
)}
282-
</CustomFormItem>
305+
<SelectWithTooltip
306+
type="observer"
307+
name={['observer', 'storage', 'data', 'storageClass']}
308+
form={form}
309+
selectList={storageClasses}
310+
TooltipItemContent={TooltipItemContent}
311+
/>
312+
</Form.Item>
283313
</div>
284314
</Col>
285315
</Row>

ui/src/pages/Cluster/New/index.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ import Topo from './Topo';
1919
export default function New() {
2020
const navigate = useNavigate();
2121
const [form] = Form.useForm<API.CreateClusterData>();
22-
const [passwordVal, setPasswordVal] = useState('');
22+
const [passwordVal, setPasswordVal] = useState<string>('');
23+
const [pvcValue, setPvcValue] = useState<boolean>(false);
24+
// 默认勾选
25+
const [deleteValue, setDeleteValue] = useState<boolean>(true);
2326
const { data: storageClassesRes, run: fetchStorageClasses } = useRequest(
2427
getStorageClasses,
2528
{
@@ -53,6 +56,8 @@ export default function New() {
5356
message.success(res.message, 3);
5457
form.resetFields();
5558
setPasswordVal('');
59+
setPvcValue(false);
60+
setDeleteValue(true);
5661
history.back();
5762
}
5863
};
@@ -114,12 +119,19 @@ export default function New() {
114119
<Col span={24}>
115120
<BasicInfo
116121
passwordVal={passwordVal}
122+
deleteValue={deleteValue}
117123
setPasswordVal={setPasswordVal}
124+
setDeleteValue={setDeleteValue}
118125
form={form}
119126
/>
120127
</Col>
121128
<Topo form={form} />
122-
<Observer storageClasses={storageClasses} form={form} />
129+
<Observer
130+
storageClasses={storageClasses}
131+
form={form}
132+
pvcValue={pvcValue}
133+
setPvcValue={setPvcValue}
134+
/>
123135
<Monitor />
124136
<Parameters />
125137
<BackUp />

0 commit comments

Comments
 (0)