Skip to content

Commit b5b1297

Browse files
committed
feat: NullType
1 parent 96a6357 commit b5b1297

5 files changed

Lines changed: 60 additions & 22 deletions

File tree

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"scroller",
5757
"Sercurity",
5858
"sortablejs",
59+
"SQLSERVER",
5960
"temurin",
6061
"thymeleaf",
6162
"Tigger",

CHANGELOG.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
**Changelog**
44
- ⭐【New Features】The tree node operation menu supports right-clicking
55
- ⭐【New Features】The tree node operation menu can copy the names of tables, fields, keys, indexes, and functions
6+
- ⭐【New Features】Edit table structure supports setting primary keys in columns
67
- ⚡️【Optimize】
7-
- 🐞【Fixed】
8+
- 🐞【Fixed】Fixed table structure editing floating-point decimal Settings display exception
89

910
**更新日志**
1011
- ⭐【新功能】树节点操作菜单支持右键唤出
1112
- ⭐【新功能】树节点操作菜单支持复制表、字段、key、index、函数等名称
13+
- ⭐【新功能】编辑表结构支持在列中设置主键
1214
- ⚡️【优化】
13-
- 🐞【修复】
15+
- 🐞【修复】修复表结构编辑浮点数小数位设置显示异常
1416

1517

1618
# 3.0.9

chat2db-client/src/blocks/DatabaseTableEditor/ColumnList/index.tsx

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { CSS } from '@dnd-kit/utilities';
1010
import { Context } from '../index';
1111
import { IColumnItemNew, IColumnTypes } from '@/typings';
1212
import i18n from '@/i18n';
13-
import { EditColumnOperationType, DatabaseTypeCode } from '@/constants';
13+
import { EditColumnOperationType, DatabaseTypeCode, NullableType } from '@/constants';
1414
import CustomSelect from '@/components/CustomSelect';
1515
import Iconfont from '@/components/Iconfont';
1616

@@ -129,6 +129,7 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
129129
key: uuidv4(),
130130
};
131131
}) || [];
132+
setEditingConfig(null);
132133
setDataSource(list);
133134
}
134135
}, [tableDetails]);
@@ -213,15 +214,18 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
213214
title: i18n('editTable.label.nullable'),
214215
dataIndex: 'nullable',
215216
width: '100px',
216-
render: (nullable: number, record: IColumnItemNew) => {
217-
const editable = isEditing(record);
218-
return editable ? (
219-
<Form.Item name="nullable" style={{ margin: 0 }} valuePropName="checked">
220-
<Checkbox checked={nullable === 1} disabled={!editingConfig?.supportNullable} />
221-
</Form.Item>
222-
) : (
217+
render: (nullable: NullableType | null, record: IColumnItemNew) => {
218+
console.log(nullable);
219+
// const editable = isEditing(record);
220+
return (
223221
<div>
224-
<Checkbox checked={nullable === 1} />
222+
<Checkbox
223+
onChange={() => {
224+
handelNullable(record);
225+
}}
226+
checked={nullable === NullableType.Null}
227+
disabled={editingConfig?.supportNullable === false || !!record.primaryKey}
228+
/>
225229
</div>
226230
);
227231
},
@@ -233,11 +237,13 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
233237
render: (primaryKey: boolean, record: IColumnItemNew) => {
234238
return (
235239
<div>
236-
<div className={styles.keyBox} onClick={()=>{handelPrimaryKey(record)} }>
237-
{
238-
primaryKey &&
239-
<Iconfont code="&#xe775;" />
240-
}
240+
<div
241+
className={styles.keyBox}
242+
onClick={() => {
243+
handelPrimaryKey(record);
244+
}}
245+
>
246+
{primaryKey && <Iconfont code="&#xe775;" />}
241247
</div>
242248
</div>
243249
);
@@ -280,7 +286,7 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
280286
},
281287
];
282288

283-
const handelPrimaryKey = (_data: IColumnItemNew)=>{
289+
const handelPrimaryKey = (_data: IColumnItemNew) => {
284290
const newData = dataSource.map((item) => {
285291
if (item.key === _data?.key) {
286292
// 判断当前数据是新增的数据还是编辑后的数据
@@ -291,14 +297,35 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
291297
const editingDataItem = {
292298
...item,
293299
primaryKey: !item.primaryKey,
300+
nullable: !item.primaryKey ? NullableType.NotNull : item.nullable,
294301
editStatus,
295302
};
296303
return editingDataItem;
297304
}
298305
return item;
299306
});
300307
setDataSource(newData);
301-
}
308+
};
309+
310+
const handelNullable = (_data: IColumnItemNew) => {
311+
const newData = dataSource.map((item) => {
312+
if (item.key === _data?.key) {
313+
// 判断当前数据是新增的数据还是编辑后的数据
314+
let editStatus = item.editStatus;
315+
if (editStatus !== EditColumnOperationType.Add) {
316+
editStatus = EditColumnOperationType.Modify;
317+
}
318+
const editingDataItem = {
319+
...item,
320+
nullable: !item.nullable ? NullableType.Null : NullableType.NotNull,
321+
editStatus,
322+
};
323+
return editingDataItem;
324+
}
325+
return item;
326+
});
327+
setDataSource(newData);
328+
};
302329

303330
const onDragEnd = ({ active, over }: DragEndEvent) => {
304331
if (active.id !== over?.id) {
@@ -315,7 +342,7 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
315342
const { name: nameList } = field[0];
316343
const name = nameList[0];
317344
if (name === 'nullable') {
318-
value = value ? 1 : 0;
345+
value = value ? NullableType.Null : NullableType.NotNull;
319346
}
320347

321348
const newData = dataSource.map((item) => {
@@ -453,7 +480,7 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef<IColumnListRef>)
453480
</Form.Item>
454481
)}
455482
{editingConfig?.supportScale && (
456-
<Form.Item labelCol={labelCol} label={i18n('editTable.label.decimalPoint')} name="decimalPoint">
483+
<Form.Item labelCol={labelCol} label={i18n('editTable.label.decimalPoint')} name="decimalDigits">
457484
<Input autoComplete="off" />
458485
</Form.Item>
459486
)}

chat2db-client/src/constants/editTable.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,11 @@ export enum EditColumnOperationType {
66
// 删除
77
Delete = 'DELETE',
88
}
9+
10+
// nullable
11+
export enum NullableType {
12+
// 不可为空
13+
NotNull = 0,
14+
// 可为空
15+
Null = 1,
16+
}

chat2db-client/src/typings/editTable.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IndexesType, EditColumnOperationType } from '@/constants';
1+
import { IndexesType, EditColumnOperationType, NullableType } from '@/constants';
22

33
// 编辑表时表的基础数据
44
export interface IBaseInfo {
@@ -35,7 +35,7 @@ export interface IColumnItemNew {
3535
sqlDatetimeSub: string| null; // sql日期时间子类型
3636
charOctetLength:string| null; // 字符串最大长度
3737
ordinalPosition: number| null; // 位置
38-
nullable: 0 | 1 | null; //是否为空
38+
nullable: NullableType | null; //是否为空
3939
generatedColumn: string | null; // 是否生成列
4040

4141
charSetName: string | null; // 字符集名

0 commit comments

Comments
 (0)