diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index a17ed84..5191cbf 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,2 @@ -open_collective: drawdb \ No newline at end of file +open_collective: drawdb +buy_me_a_coffee: drawdb \ No newline at end of file diff --git a/src/components/EditorCanvas/Canvas.jsx b/src/components/EditorCanvas/Canvas.jsx index d16b392..7587f12 100644 --- a/src/components/EditorCanvas/Canvas.jsx +++ b/src/components/EditorCanvas/Canvas.jsx @@ -23,6 +23,7 @@ import { } from "../../hooks"; import { useTranslation } from "react-i18next"; import { useEventListener } from "usehooks-ts"; +import { areFieldsCompatible } from "../../utils/utils"; export default function Canvas() { const { t } = useTranslation(); @@ -34,7 +35,8 @@ export default function Canvas() { pointer, } = canvasContextValue; - const { tables, updateTable, relationships, addRelationship } = useDiagram(); + const { tables, updateTable, relationships, addRelationship, database } = + useDiagram(); const { areas, updateArea } = useAreas(); const { notes, updateNote } = useNotes(); const { layout } = useLayout(); @@ -399,8 +401,11 @@ export default function Canvas() { if (hoveredTable.tableId < 0) return; if (hoveredTable.field < 0) return; if ( - tables[linkingLine.startTableId].fields[linkingLine.startFieldId].type !== - tables[hoveredTable.tableId].fields[hoveredTable.field].type + !areFieldsCompatible( + database, + tables[linkingLine.startTableId].fields[linkingLine.startFieldId], + tables[hoveredTable.tableId].fields[hoveredTable.field], + ) ) { Toast.info(t("cannot_connect")); return; diff --git a/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx b/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx index f8d99c0..f844513 100644 --- a/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx +++ b/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx @@ -299,6 +299,44 @@ export default function FieldDetails({ data, tid, index }) { /> )} + {databases[database].hasUnsignedTypes && + dbToTypes[database][data.type].signed && ( +
+
{t("Unsigned")}
+ { + setUndoStack((prev) => [ + ...prev, + { + action: Action.EDIT, + element: ObjectType.TABLE, + component: "field", + tid: tid, + fid: index, + undo: { + [checkedValues.target.value]: + !checkedValues.target.checked, + }, + redo: { + [checkedValues.target.value]: + checkedValues.target.checked, + }, + message: t("edit_table", { + tableName: tables[tid].name, + extra: "[field]", + }), + }, + ]); + setRedoStack([]); + updateField(tid, index, { + unsigned: checkedValues.target.checked, + }); + }} + /> +
+ )}
{t("comment")}