Add enums to select types

This commit is contained in:
1ilit 2024-07-03 21:54:46 +03:00
parent 7c1eecd7a0
commit d48ccfff4b
2 changed files with 17 additions and 3 deletions

View File

@ -1,7 +1,7 @@
import { Action, ObjectType } from "../../../data/constants"; import { Action, ObjectType } from "../../../data/constants";
import { Row, Col, Input, Button, Popover, Select } from "@douyinfe/semi-ui"; import { Row, Col, Input, Button, Popover, Select } from "@douyinfe/semi-ui";
import { IconMore, IconKeyStroked } from "@douyinfe/semi-icons"; import { IconMore, IconKeyStroked } from "@douyinfe/semi-icons";
import { useTables, useTypes, useUndoRedo } from "../../../hooks"; import { useEnums, useTables, useTypes, useUndoRedo } from "../../../hooks";
import { useState } from "react"; import { useState } from "react";
import FieldDetails from "./FieldDetails"; import FieldDetails from "./FieldDetails";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@ -10,6 +10,7 @@ import { dbToTypes } from "../../../data/datatypes";
export default function TableField({ data, tid, index }) { export default function TableField({ data, tid, index }) {
const { updateField } = useTables(); const { updateField } = useTables();
const { types } = useTypes(); const { types } = useTypes();
const { enums } = useEnums();
const { tables, database } = useTables(); const { tables, database } = useTables();
const { t } = useTranslation(); const { t } = useTranslation();
const { setUndoStack, setRedoStack } = useUndoRedo(); const { setUndoStack, setRedoStack } = useUndoRedo();
@ -58,6 +59,10 @@ export default function TableField({ data, tid, index }) {
label: type.name.toUpperCase(), label: type.name.toUpperCase(),
value: type.name.toUpperCase(), value: type.name.toUpperCase(),
})), })),
...enums.map((type) => ({
label: type.name.toUpperCase(),
value: type.name.toUpperCase(),
})),
]} ]}
filter filter
value={data.type} value={data.type}

View File

@ -11,12 +11,13 @@ import {
Popover, Popover,
} from "@douyinfe/semi-ui"; } from "@douyinfe/semi-ui";
import { IconDeleteStroked, IconMore } from "@douyinfe/semi-icons"; import { IconDeleteStroked, IconMore } from "@douyinfe/semi-icons";
import { useUndoRedo, useTypes, useTables } from "../../../hooks"; import { useUndoRedo, useTypes, useTables, useEnums } from "../../../hooks";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { dbToTypes } from "../../../data/datatypes"; import { dbToTypes } from "../../../data/datatypes";
export default function TypeField({ data, tid, fid }) { export default function TypeField({ data, tid, fid }) {
const { types, updateType } = useTypes(); const { types, updateType } = useTypes();
const { enums } = useEnums();
const { database } = useTables(); const { database } = useTables();
const { setUndoStack, setRedoStack } = useUndoRedo(); const { setUndoStack, setRedoStack } = useUndoRedo();
const [editField, setEditField] = useState({}); const [editField, setEditField] = useState({});
@ -75,6 +76,10 @@ export default function TypeField({ data, tid, fid }) {
label: type.name.toUpperCase(), label: type.name.toUpperCase(),
value: type.name.toUpperCase(), value: type.name.toUpperCase(),
})), })),
...enums.map((type) => ({
label: type.name.toUpperCase(),
value: type.name.toUpperCase(),
})),
]} ]}
filter filter
value={data.type} value={data.type}
@ -118,7 +123,11 @@ export default function TypeField({ data, tid, fid }) {
updateType(tid, { updateType(tid, {
fields: types[tid].fields.map((e, id) => fields: types[tid].fields.map((e, id) =>
id === fid id === fid
? { ...data, type: value, size: dbToTypes[database][value].defaultSize } ? {
...data,
type: value,
size: dbToTypes[database][value].defaultSize,
}
: e, : e,
), ),
}); });