Undo and redo enum editing
This commit is contained in:
parent
1430db881c
commit
7c1eecd7a0
@ -101,7 +101,7 @@ export default function ControlPanel({
|
|||||||
deleteRelationship,
|
deleteRelationship,
|
||||||
database,
|
database,
|
||||||
} = useTables();
|
} = useTables();
|
||||||
const { enums, setEnums } = useEnums();
|
const { enums, setEnums, deleteEnum, addEnum, updateEnum } = useEnums();
|
||||||
const { types, addType, deleteType, updateType, setTypes } = useTypes();
|
const { types, addType, deleteType, updateType, setTypes } = useTypes();
|
||||||
const { notes, setNotes, updateNote, addNote, deleteNote } = useNotes();
|
const { notes, setNotes, updateNote, addNote, deleteNote } = useNotes();
|
||||||
const { areas, setAreas, updateArea, addArea, deleteArea } = useAreas();
|
const { areas, setAreas, updateArea, addArea, deleteArea } = useAreas();
|
||||||
@ -129,6 +129,8 @@ export default function ControlPanel({
|
|||||||
deleteRelationship(a.data.id, false);
|
deleteRelationship(a.data.id, false);
|
||||||
} else if (a.element === ObjectType.TYPE) {
|
} else if (a.element === ObjectType.TYPE) {
|
||||||
deleteType(types.length - 1, false);
|
deleteType(types.length - 1, false);
|
||||||
|
} else if (a.element === ObjectType.ENUM) {
|
||||||
|
deleteEnum(enums.length - 1, false);
|
||||||
}
|
}
|
||||||
setRedoStack((prev) => [...prev, a]);
|
setRedoStack((prev) => [...prev, a]);
|
||||||
} else if (a.action === Action.MOVE) {
|
} else if (a.action === Action.MOVE) {
|
||||||
@ -163,6 +165,8 @@ export default function ControlPanel({
|
|||||||
addArea(a.data, false);
|
addArea(a.data, false);
|
||||||
} else if (a.element === ObjectType.TYPE) {
|
} else if (a.element === ObjectType.TYPE) {
|
||||||
addType({ id: a.id, ...a.data }, false);
|
addType({ id: a.id, ...a.data }, false);
|
||||||
|
} else if (a.element === ObjectType.ENUM) {
|
||||||
|
addEnum({ id: a.id, ...a.data }, false);
|
||||||
}
|
}
|
||||||
setRedoStack((prev) => [...prev, a]);
|
setRedoStack((prev) => [...prev, a]);
|
||||||
} else if (a.action === Action.EDIT) {
|
} else if (a.action === Action.EDIT) {
|
||||||
@ -295,6 +299,8 @@ export default function ControlPanel({
|
|||||||
} else if (a.component === "self") {
|
} else if (a.component === "self") {
|
||||||
updateType(a.tid, a.undo);
|
updateType(a.tid, a.undo);
|
||||||
}
|
}
|
||||||
|
} else if (a.element === ObjectType.ENUM) {
|
||||||
|
updateEnum(a.id, a.undo);
|
||||||
}
|
}
|
||||||
setRedoStack((prev) => [...prev, a]);
|
setRedoStack((prev) => [...prev, a]);
|
||||||
} else if (a.action === Action.PAN) {
|
} else if (a.action === Action.PAN) {
|
||||||
@ -321,6 +327,8 @@ export default function ControlPanel({
|
|||||||
addRelationship(a.data, false);
|
addRelationship(a.data, false);
|
||||||
} else if (a.element === ObjectType.TYPE) {
|
} else if (a.element === ObjectType.TYPE) {
|
||||||
addType(null, false);
|
addType(null, false);
|
||||||
|
} else if (a.element === ObjectType.ENUM) {
|
||||||
|
addEnum(null, false);
|
||||||
}
|
}
|
||||||
setUndoStack((prev) => [...prev, a]);
|
setUndoStack((prev) => [...prev, a]);
|
||||||
} else if (a.action === Action.MOVE) {
|
} else if (a.action === Action.MOVE) {
|
||||||
@ -354,6 +362,8 @@ export default function ControlPanel({
|
|||||||
deleteArea(a.data.id, false);
|
deleteArea(a.data.id, false);
|
||||||
} else if (a.element === ObjectType.TYPE) {
|
} else if (a.element === ObjectType.TYPE) {
|
||||||
deleteType(a.id, false);
|
deleteType(a.id, false);
|
||||||
|
} else if (a.element === ObjectType.ENUM) {
|
||||||
|
deleteEnum(a.id, false);
|
||||||
}
|
}
|
||||||
setUndoStack((prev) => [...prev, a]);
|
setUndoStack((prev) => [...prev, a]);
|
||||||
} else if (a.action === Action.EDIT) {
|
} else if (a.action === Action.EDIT) {
|
||||||
@ -451,6 +461,8 @@ export default function ControlPanel({
|
|||||||
} else if (a.component === "self") {
|
} else if (a.component === "self") {
|
||||||
updateType(a.tid, a.redo);
|
updateType(a.tid, a.redo);
|
||||||
}
|
}
|
||||||
|
} else if (a.element === ObjectType.ENUM) {
|
||||||
|
updateEnum(a.id, a.redo);
|
||||||
}
|
}
|
||||||
setUndoStack((prev) => [...prev, a]);
|
setUndoStack((prev) => [...prev, a]);
|
||||||
} else if (a.action === Action.PAN) {
|
} else if (a.action === Action.PAN) {
|
||||||
@ -982,7 +994,8 @@ export default function ControlPanel({
|
|||||||
notes: notes,
|
notes: notes,
|
||||||
subjectAreas: areas,
|
subjectAreas: areas,
|
||||||
...(databases[database].hasTypes && { types: types }),
|
...(databases[database].hasTypes && { types: types }),
|
||||||
...(databases[database].hasEnums && { enums: enums }), },
|
...(databases[database].hasEnums && { enums: enums }),
|
||||||
|
},
|
||||||
null,
|
null,
|
||||||
2,
|
2,
|
||||||
);
|
);
|
||||||
|
@ -12,16 +12,13 @@ export default function EnumDetails({ data, i }) {
|
|||||||
const [editField, setEditField] = useState({});
|
const [editField, setEditField] = useState({});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<>
|
||||||
<div
|
<div className="flex justify-center items-center gap-2">
|
||||||
className="flex justify-center items-center gap-2"
|
|
||||||
id={`scroll_enum_${data.id}`}
|
|
||||||
>
|
|
||||||
<div className="font-semibold">{t("Name")}: </div>
|
<div className="font-semibold">{t("Name")}: </div>
|
||||||
<Input
|
<Input
|
||||||
value={data.name}
|
value={data.name}
|
||||||
placeholder={t("name")}
|
placeholder={t("name")}
|
||||||
onChange={(value) => updateEnum(data.id, { name: value })}
|
onChange={(value) => updateEnum(i, { name: value })}
|
||||||
onFocus={(e) => setEditField({ name: e.target.value })}
|
onFocus={(e) => setEditField({ name: e.target.value })}
|
||||||
onBlur={(e) => {
|
onBlur={(e) => {
|
||||||
if (e.target.value === editField.name) return;
|
if (e.target.value === editField.name) return;
|
||||||
@ -30,7 +27,7 @@ export default function EnumDetails({ data, i }) {
|
|||||||
{
|
{
|
||||||
action: Action.EDIT,
|
action: Action.EDIT,
|
||||||
element: ObjectType.ENUM,
|
element: ObjectType.ENUM,
|
||||||
aid: i,
|
id: i,
|
||||||
undo: editField,
|
undo: editField,
|
||||||
redo: { name: e.target.value },
|
redo: { name: e.target.value },
|
||||||
message: t("edit_enum", {
|
message: t("edit_enum", {
|
||||||
@ -58,9 +55,8 @@ export default function EnumDetails({ data, i }) {
|
|||||||
...prev,
|
...prev,
|
||||||
{
|
{
|
||||||
action: Action.EDIT,
|
action: Action.EDIT,
|
||||||
element: ObjectType.TABLE,
|
element: ObjectType.ENUM,
|
||||||
component: "field",
|
id: i,
|
||||||
eid: i,
|
|
||||||
undo: editField,
|
undo: editField,
|
||||||
redo: { values: data.values },
|
redo: { values: data.values },
|
||||||
message: t("edit_enum", {
|
message: t("edit_enum", {
|
||||||
@ -80,6 +76,6 @@ export default function EnumDetails({ data, i }) {
|
|||||||
>
|
>
|
||||||
{t("delete")}
|
{t("delete")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -19,10 +19,11 @@ export default function EnumsTab() {
|
|||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Collapse>
|
<Collapse accordion>
|
||||||
{enums.map((e, i) => (
|
{enums.map((e, i) => (
|
||||||
<Collapse.Panel
|
<Collapse.Panel
|
||||||
key={e.name + i}
|
key={`enum_${i}`}
|
||||||
|
id={`scroll_enum_${i}`}
|
||||||
header={
|
header={
|
||||||
<div className="overflow-hidden text-ellipsis whitespace-nowrap">
|
<div className="overflow-hidden text-ellipsis whitespace-nowrap">
|
||||||
{e.name}
|
{e.name}
|
||||||
|
@ -57,7 +57,7 @@ export default function EnumsContextProvider({ children }) {
|
|||||||
]);
|
]);
|
||||||
setRedoStack([]);
|
setRedoStack([]);
|
||||||
}
|
}
|
||||||
setEnums((prev) => prev.filter((e, i) => i !== id));
|
setEnums((prev) => prev.filter((_, i) => i !== id));
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateEnum = (id, values) => {
|
const updateEnum = (id, values) => {
|
||||||
|
@ -218,7 +218,7 @@ const en = {
|
|||||||
"Generic diagrams can be exported to any SQL flavor but support few data types.",
|
"Generic diagrams can be exported to any SQL flavor but support few data types.",
|
||||||
enums: "Enums",
|
enums: "Enums",
|
||||||
add_enum: "Add enum",
|
add_enum: "Add enum",
|
||||||
edit_enum: "Edit enum",
|
edit_enum: "{{extra}} Edit enum {{enumName}}",
|
||||||
delete_enum: "Delete enum",
|
delete_enum: "Delete enum",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user