feat : 調整Note物件大小

This commit is contained in:
Jessie Chen 2024-10-11 18:12:19 +08:00
parent c4073c6d70
commit 259a846f05
2 changed files with 33 additions and 36 deletions

View File

@ -82,14 +82,6 @@ export default function Canvas() {
}); });
const [noteResize, setNoteResize] = useState({ id: -1, dir: "none" }); const [noteResize, setNoteResize] = useState({ id: -1, dir: "none" });
const [initNoteCoords, setInitNoteCoords] = useState({
x: 0,
y: 0,
width: 0,
height: 0,
pointerX: 0,
pointerY: 0,
});
/** /**
* @param {PointerEvent} e * @param {PointerEvent} e
* @param {*} id * @param {*} id
@ -164,6 +156,7 @@ export default function Canvas() {
dragging.element === ObjectType.NONE && dragging.element === ObjectType.NONE &&
areaResize.id === -1 && noteResize.id === -1 areaResize.id === -1 && noteResize.id === -1
) { ) {
//
if (!settings.panning) { if (!settings.panning) {
return; return;
} }
@ -189,6 +182,7 @@ export default function Canvas() {
dragging.id >= 0 && dragging.id >= 0 &&
areaResize.id === -1 areaResize.id === -1
) { ) {
// Area
updateArea(dragging.id, { updateArea(dragging.id, {
x: pointer.spaces.diagram.x + grabOffset.x, x: pointer.spaces.diagram.x + grabOffset.x,
y: pointer.spaces.diagram.y + grabOffset.y, y: pointer.spaces.diagram.y + grabOffset.y,
@ -199,46 +193,56 @@ export default function Canvas() {
dragging.id >= 0 && dragging.id >= 0 &&
noteResize.id === -1 noteResize.id === -1
) { ) {
// Note
updateNote(dragging.id, { updateNote(dragging.id, {
x: pointer.spaces.diagram.x + grabOffset.x, x: pointer.spaces.diagram.x + grabOffset.x,
y: pointer.spaces.diagram.y + grabOffset.y, y: pointer.spaces.diagram.y + grabOffset.y,
}); });
} else if (noteResize.id !== -1) { } else if (noteResize.id !== -1) {
// 調Note
if (noteResize.dir === "none") return; if (noteResize.dir === "none") return;
let newDims = { ...initNoteCoords }; let newDims = { ...initCoords };
delete newDims.pointerX; delete newDims.pointerX;
delete newDims.pointerY; delete newDims.pointerY;
setPanning((old) => ({ ...old, isPanning: false })); setPanning((old) => ({ ...old, isPanning: false }));
switch (noteResize.dir) { switch (noteResize.dir) {
case "br": case "br":
newDims.width = pointer.spaces.diagram.x - initNoteCoords.x; newDims.width = pointer.spaces.diagram.x - initCoords.x;
newDims.height = pointer.spaces.diagram.y - initNoteCoords.y; newDims.height = pointer.spaces.diagram.y - initCoords.y;
break; break;
case "tl": case "tl":
newDims.x = pointer.spaces.diagram.x; newDims.x = pointer.spaces.diagram.x;
newDims.y = pointer.spaces.diagram.y; newDims.y = pointer.spaces.diagram.y;
newDims.width = newDims.width =
initNoteCoords.x + initNoteCoords.width - pointer.spaces.diagram.x; initCoords.x + initCoords.width - pointer.spaces.diagram.x;
newDims.height = newDims.height =
initNoteCoords.y + initNoteCoords.height - pointer.spaces.diagram.y; initCoords.y + initCoords.height - pointer.spaces.diagram.y;
break; break;
case "tr": case "tr":
newDims.y = pointer.spaces.diagram.y; newDims.y = pointer.spaces.diagram.y;
newDims.width = pointer.spaces.diagram.x - initNoteCoords.x; newDims.width = pointer.spaces.diagram.x - initCoords.x;
newDims.height = newDims.height =
initNoteCoords.y + initNoteCoords.height - pointer.spaces.diagram.y; initCoords.y + initCoords.height - pointer.spaces.diagram.y;
break; break;
case "bl": case "bl":
newDims.x = pointer.spaces.diagram.x; newDims.x = pointer.spaces.diagram.x;
newDims.width = newDims.width =
initNoteCoords.x + initNoteCoords.width - pointer.spaces.diagram.x; initCoords.x + initCoords.width - pointer.spaces.diagram.x;
newDims.height = pointer.spaces.diagram.y - initNoteCoords.y; newDims.height = pointer.spaces.diagram.y - initCoords.y;
break; break;
} }
// Note500px50px
if (newDims.width > 500) {
newDims.width = 500;
} else if (newDims.width < 50) {
newDims.width = 50;
}
updateNote(noteResize.id, {... newDims }); updateNote(noteResize.id, {... newDims });
} else if (areaResize.id !== -1) { } else if (areaResize.id !== -1) {
// 調Area
if (areaResize.dir === "none") return; if (areaResize.dir === "none") return;
let newDims = { ...initCoords }; let newDims = { ...initCoords };
delete newDims.pointerX; delete newDims.pointerX;
@ -272,6 +276,7 @@ export default function Canvas() {
break; break;
} }
updateArea(areaResize.id, { ...newDims }); updateArea(areaResize.id, { ...newDims });
} }
}; };
@ -335,10 +340,10 @@ export default function Canvas() {
const didNoteResize = (id) => { const didNoteResize = (id) => {
return !( return !(
notes[id].x === initNoteCoords.x && notes[id].x === initCoords.x &&
notes[id].y === initNoteCoords.y && notes[id].y === initCoords.y &&
notes[id].width === initNoteCoords.width && notes[id].width === initCoords.width &&
notes[id].height === initNoteCoords.height notes[id].height === initCoords.height
); );
}; };
@ -455,10 +460,10 @@ export default function Canvas() {
aid: noteResize.id, aid: noteResize.id,
undo: { undo: {
...notes[noteResize.id], ...notes[noteResize.id],
x: initNoteCoords.x, x: initCoords.x,
y: initNoteCoords.y, y: initCoords.y,
width: initNoteCoords.width, width: initCoords.width,
height: initNoteCoords.height, height: initCoords.height,
}, },
redo: notes[noteResize.id], redo: notes[noteResize.id],
message: t("edit_note", { message: t("edit_note", {
@ -471,14 +476,6 @@ export default function Canvas() {
} }
setAreaResize({ id: -1, dir: "none" }); setAreaResize({ id: -1, dir: "none" });
setNoteResize({ id: -1, dir: "none" }); setNoteResize({ id: -1, dir: "none" });
setInitNoteCoords({
x: 0,
y: 0,
width: 0,
height: 0,
pointerX: 0,
pointerY: 0,
});
setInitCoords({ setInitCoords({
x: 0, x: 0,
y: 0, y: 0,
@ -672,7 +669,7 @@ export default function Canvas() {
handlePointerDownOnElement(e, n.id, ObjectType.NOTE) handlePointerDownOnElement(e, n.id, ObjectType.NOTE)
} }
setResize={setNoteResize} setResize={setNoteResize}
setInitNoteCoords={setInitNoteCoords} setInitCoords={setInitCoords}
/> />
))} ))}
</svg> </svg>

View File

@ -23,7 +23,7 @@ import {
} from "../../hooks"; } from "../../hooks";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
export default function Note({data, onPointerDown, setResize, setInitNoteCoords}) { export default function Note({data, onPointerDown, setResize, setInitCoords}) {
const r = 3; const r = 3;
const fold = 24; const fold = 24;
const [editField, setEditField] = useState({}); const [editField, setEditField] = useState({});
@ -42,7 +42,7 @@ export default function Note({data, onPointerDown, setResize, setInitNoteCoords}
} = useCanvas(); } = useCanvas();
const handleResize = (e, dir) => { const handleResize = (e, dir) => {
setResize({ id: data.id, dir: dir }); setResize({ id: data.id, dir: dir });
setInitNoteCoords({ setInitCoords({
x: data.x, x: data.x,
y: data.y, y: data.y,
width: data.width, width: data.width,