From 432604ed55e0b478ea8b948e2edcc2f36256c185 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Tue, 4 Mar 2025 11:28:02 +0900 Subject: [PATCH 1/6] =?UTF-8?q?raft=20=EC=84=A4=EC=A0=95=20=EB=88=84?= =?UTF-8?q?=EB=9D=BD=20=EC=8B=9C=20=EA=B8=B0=EB=B3=B8=EA=B0=92=20=EC=84=B8?= =?UTF-8?q?=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/roofcover/useRoofAllocationSetting.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js index 93f51514..9d0a850a 100644 --- a/src/hooks/roofcover/useRoofAllocationSetting.js +++ b/src/hooks/roofcover/useRoofAllocationSetting.js @@ -289,7 +289,7 @@ export function useRoofAllocationSetting(id) { const handleSaveContext = () => { basicSettingSave() const newRoofList = currentRoofList.map((roof, idx) => { - return { ...roof, index: idx } + return { ...roof, index: idx, raft: roof.raft ? roof.raft : roof.raftBaseCd } }) setBasicSetting((prev) => { return { @@ -379,7 +379,7 @@ export function useRoofAllocationSetting(id) { /** 데이터 설정 */ const newRoofList = currentRoofList.map((roof, idx) => { - return { ...roof, index: idx, ...basicInfo } + return { ...roof, index: idx, ...basicInfo, raft: roof.raft ? roof.raft : roof.raftBaseCd } }) setBasicSetting((prev) => { From ff7eb367625609998404ccc0e8cd036911f0f57d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:29:06 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=EB=B9=A0=EC=A7=84=20=EB=8B=A4=EA=B5=AD?= =?UTF-8?q?=EC=96=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modal/object/type/PentagonDormer.jsx | 2 +- .../modal/object/type/TriangleDormer.jsx | 2 +- src/hooks/useContextMenu.js | 17 +++++------------ src/locales/ja.json | 8 ++++---- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/components/floor-plan/modal/object/type/PentagonDormer.jsx b/src/components/floor-plan/modal/object/type/PentagonDormer.jsx index 87a92835..9d82485c 100644 --- a/src/components/floor-plan/modal/object/type/PentagonDormer.jsx +++ b/src/components/floor-plan/modal/object/type/PentagonDormer.jsx @@ -73,7 +73,7 @@ const PentagonDormer = forwardRef((props, refs) => {
-
{getMessage('slope')}
+
{getMessage('modal.object.setting.offset.slope')}
diff --git a/src/components/floor-plan/modal/object/type/TriangleDormer.jsx b/src/components/floor-plan/modal/object/type/TriangleDormer.jsx index 62fd729d..65fed20b 100644 --- a/src/components/floor-plan/modal/object/type/TriangleDormer.jsx +++ b/src/components/floor-plan/modal/object/type/TriangleDormer.jsx @@ -48,7 +48,7 @@ const TriangleDormer = forwardRef((props, refs) => {
-
{getMessage('slope')}
+
{getMessage('modal.object.setting.offset.slope')}
diff --git a/src/hooks/useContextMenu.js b/src/hooks/useContextMenu.js index f1cb43e4..731d7476 100644 --- a/src/hooks/useContextMenu.js +++ b/src/hooks/useContextMenu.js @@ -42,6 +42,7 @@ import { useAdsorptionPoint } from './useAdsorptionPoint' import { useRoofFn } from '@/hooks/common/useRoofFn' import { MODULE_ALIGN_TYPE, useModule } from './module/useModule' import PlacementSurfaceLineProperty from '@/components/floor-plan/modal/placementShape/PlacementSurfaceLineProperty' +import { selectedMenuState } from '@/store/menuAtom' export function useContextMenu() { const canvas = useRecoilValue(canvasState) @@ -71,10 +72,11 @@ export function useContextMenu() { const { swalFire } = useSwal() const { alignModule, modulesRemove, moduleRoofRemove } = useModule() const { removeRoofMaterial, removeAllRoofMaterial, moveRoofMaterial, removeOuterLines } = useRoofFn() + const selectedMenu = useRecoilValue(selectedMenuState) const currentMenuSetting = () => { - switch (currentMenu) { - case MENU.PLAN_DRAWING: + switch (selectedMenu) { + case 'placement': setContextMenu([ [ { @@ -115,16 +117,7 @@ export function useContextMenu() { ], ]) break - case MENU.ROOF_COVERING.EXTERIOR_WALL_LINE: - case MENU.ROOF_COVERING.ROOF_SHAPE_SETTINGS: - case MENU.ROOF_COVERING.ROOF_SHAPE_PASSIVITY_SETTINGS: - case MENU.ROOF_COVERING.ROOF_SHAPE_EDITING: - case MENU.ROOF_COVERING.HELP_LINE_DRAWING: - case MENU.ROOF_COVERING.EAVES_KERAVA_EDIT: - case MENU.ROOF_COVERING.MOVEMENT_SHAPE_UPDOWN: - case MENU.ROOF_COVERING.OUTLINE_EDIT_OFFSET: - case MENU.ROOF_COVERING.ROOF_SHAPE_ALLOC: - case MENU.ROOF_COVERING.DEFAULT: + case 'outline': setContextMenu([ [ { diff --git a/src/locales/ja.json b/src/locales/ja.json index 52ebfeba..ecaab098 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -294,9 +294,9 @@ "modal.object.setting.size.setting": "サイズ設定", "modal.object.setting.agreement.depth": "棟の長さ・深さ", "modal.object.setting.offset.depth": "出幅(深さ)", - "modal.object.setting.size.width": "", + "modal.object.setting.size.width": "幅", "modal.object.setting.offset.width": "出幅(幅)", - "modal.object.setting.offset.slope": "", + "modal.object.setting.offset.slope": "勾配", "modal.object.setting.direction.select": "方向の選択", "modal.placement.surface.setting.info": "ⓘ①の長さ入力後、対角線長を入力すると②の長さを自動計算します。", "modal.placement.surface.setting.diagonal.length": "斜めの長さ", @@ -1015,8 +1015,8 @@ "module.place.select.one.module": "モジュールは1つだけ選択してください。", "batch.canvas.delete.all": "配置面の内容をすべて削除しますか?", "module.not.found": "インストールモジュールを選択してください。", - "module.circuit.minimun.error": "", - "module.already.exist.error": "", + "module.circuit.minimun.error": "회로번호는 1 이상입력해주세요.(JA)", + "module.already.exist.error": "회로번호가 같은 다른 파워 컨디셔너 모듈이 있습니다. 다른 회로번호를 설정하십시오.(JA)", "construction.length.difference": "屋根面工法をすべて選択してください。", "menu.validation.canvas.roof": "パネルを配置するには、屋根面を入力する必要があります。", "batch.object.outside.roof": "オブジェクトは屋根に設置する必要があります。", From fad86d45853c7ddc4f4ccd64fbae9014e8e9c029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Tue, 4 Mar 2025 13:14:03 +0900 Subject: [PATCH 3/6] =?UTF-8?q?currentObject=EB=B3=84=20context=EB=A9=94?= =?UTF-8?q?=EB=89=B4=EC=97=90=20=EC=84=A0=ED=83=9D=20menu=20=EB=B6=84?= =?UTF-8?q?=EA=B8=B0=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useContextMenu.js | 463 ++++++++++++++++++------------------ 1 file changed, 237 insertions(+), 226 deletions(-) diff --git a/src/hooks/useContextMenu.js b/src/hooks/useContextMenu.js index 731d7476..97e9cf6c 100644 --- a/src/hooks/useContextMenu.js +++ b/src/hooks/useContextMenu.js @@ -118,145 +118,8 @@ export function useContextMenu() { ]) break case 'outline': - setContextMenu([ - [ - { - id: 'roofMaterialPlacement', - name: getMessage('contextmenu.roof.material.placement'), - component: , - }, - - { - id: 'roofMaterialRemoveAll', - name: getMessage('contextmenu.roof.material.remove.all'), - fn: () => removeAllRoofMaterial(), - }, - { - id: 'selectMove', - name: getMessage('contextmenu.select.move'), - fn: (currentMousePos) => { - moveRoofMaterial(currentMousePos) - }, - }, - { - id: 'wallLineRemove', - name: getMessage('contextmenu.wallline.remove'), - fn: (currentMousePos) => { - removeOuterLines(currentMousePos) - }, - }, - ], - [ - { - id: 'sizeEdit', - name: getMessage('contextmenu.size.edit'), - component: , - }, - { - id: 'auxiliaryMove', - name: `${getMessage('contextmenu.auxiliary.move')}(M)`, - shortcut: ['m', 'M'], - component: , - }, - { - id: 'auxiliaryCopy', - name: `${getMessage('contextmenu.auxiliary.copy')}(C)`, - shortcut: ['c', 'C'], - component: , - }, - { - id: 'auxiliaryRemove', - shortcut: ['d', 'D'], - name: `${getMessage('contextmenu.auxiliary.remove')}(D)`, - fn: () => { - if (!currentObject) return - const roof = canvas.getObjects().filter((obj) => obj.id === currentObject.attributes.roofId)[0] - if (!roof) { - // 아직 innerLines로 세팅이 안되어있는 line인 경우 제거 - canvas.remove(currentObject) - canvas.discardActiveObject() - return - } - const innerLines = roof.innerLines?.filter((line) => currentObject.id !== line.id) - roof.innerLines = [...innerLines] - canvas.remove(currentObject) - canvas.discardActiveObject() - }, - }, - { - id: 'auxiliaryVerticalBisector', - name: getMessage('contextmenu.auxiliary.vertical.bisector'), - fn: () => { - if (!currentObject) return - const slope = (currentObject.y2 - currentObject.y1) / (currentObject.x2 - currentObject.x1) - const length = currentObject.length - - let startX, startY, endX, endY - if (slope === 0) { - startX = endX = (currentObject.x1 + currentObject.x2) / 2 - startY = currentObject.y2 - length / 2 - endY = currentObject.y2 + length / 2 - } else if (slope === Infinity) { - startX = currentObject.x1 - length / 2 - startY = endY = (currentObject.y1 + currentObject.y2) / 2 - endX = currentObject.x1 + length / 2 - } else { - const bisectorSlope = -1 / slope - const dx = length / 2 / Math.sqrt(1 + bisectorSlope * bisectorSlope) - const dy = bisectorSlope * dx - - startX = (currentObject.x1 + currentObject.x2) / 2 + dx - startY = (currentObject.y1 + currentObject.y2) / 2 + dy - endX = (currentObject.x1 + currentObject.x2) / 2 - dx - endY = (currentObject.y1 + currentObject.y2) / 2 - dy - } - - const line = addLine([startX, startY, endX, endY], { - stroke: 'red', - strokeWidth: 1, - selectable: true, - name: 'auxiliaryLine', - attributes: { ...currentObject.attributes }, - }) - - if (!currentObject.attributes.roofId) { - return - } - - canvas - .getObjects() - .filter((obj) => obj.id === currentObject.attributes.roofId)[0] - .innerLines.push(line) - }, - }, - { - id: 'auxiliaryRemoveAll', - name: getMessage('contextmenu.auxiliary.remove.all'), - fn: () => { - if (!currentObject) { - swalFire({ text: getMessage('roof.is.not.selected') }) - return - } - const innerLines = canvas.getObjects().filter((obj) => obj.id === currentObject.attributes.roofId)[0]?.innerLines - if (innerLines) { - innerLines.forEach((line) => { - canvas.remove(line) - }) - innerLines.length = 0 - } - - // 확정되지 않은 보조선 - const notFixedAuxiliaryLines = canvas.getObjects().filter((obj) => obj.name === 'auxiliaryLine' && !obj.isAuxiliaryFixed) - - notFixedAuxiliaryLines.forEach((line) => { - canvas.remove(line) - }) - - canvas.renderAll() - }, - }, - ], - ]) + if (['roof', 'auxiliaryLine'].includes(currentObject?.name)) { + } break default: setContextMenu([]) @@ -305,96 +168,244 @@ export function useContextMenu() { switch (currentObject.name) { case 'triangleDormer': case 'pentagonDormer': - setContextMenu([ - [ - { - id: 'sizeEdit', - name: getMessage('contextmenu.size.edit'), - component: , - }, - { - id: 'dormerRemove', - shortcut: ['d', 'D'], - name: `${getMessage('contextmenu.remove')}(D)`, - fn: () => deleteObject(), - }, - { - id: 'dormerMove', - shortcut: ['m', 'M'], - name: `${getMessage('contextmenu.move')}(M)`, - fn: () => moveObjectBatch(), - }, - { - id: 'dormerCopy', - shortcut: ['c', 'C'], - name: `${getMessage('contextmenu.copy')}(C)`, - fn: () => copyObject(), - }, - { - id: 'roofMaterialEdit', - name: getMessage('contextmenu.roof.material.edit'), - component: , - }, - { - id: 'dormerOffset', - name: getMessage('contextmenu.dormer.offset'), - component: , - }, - ], - ]) + if (selectedMenu === 'surface') { + setContextMenu([ + [ + { + id: 'sizeEdit', + name: getMessage('contextmenu.size.edit'), + component: , + }, + { + id: 'dormerRemove', + shortcut: ['d', 'D'], + name: `${getMessage('contextmenu.remove')}(D)`, + fn: () => deleteObject(), + }, + { + id: 'dormerMove', + shortcut: ['m', 'M'], + name: `${getMessage('contextmenu.move')}(M)`, + fn: () => moveObjectBatch(), + }, + { + id: 'dormerCopy', + shortcut: ['c', 'C'], + name: `${getMessage('contextmenu.copy')}(C)`, + fn: () => copyObject(), + }, + { + id: 'roofMaterialEdit', + name: getMessage('contextmenu.roof.material.edit'), + component: , + }, + { + id: 'dormerOffset', + name: getMessage('contextmenu.dormer.offset'), + component: , + }, + ], + ]) + } break case 'roof': - setContextMenu([ - [ - { - id: 'sizeEdit', - name: getMessage('contextmenu.size.edit'), - component: , - }, - { - id: 'roofMaterialRemove', - shortcut: ['d', 'D'], - name: `${getMessage('contextmenu.remove')}(D)`, - fn: () => deleteObject(), - }, - { - id: 'roofMaterialMove', - shortcut: ['m', 'M'], - name: `${getMessage('contextmenu.move')}(M)`, - fn: () => moveSurfaceShapeBatch(), - }, - { - id: 'roofMaterialCopy', - shortcut: ['c', 'C'], - name: `${getMessage('contextmenu.copy')}(C)`, - fn: () => copyObject(), - }, - ], - [ - { - id: 'roofMaterialEdit', - name: getMessage('contextmenu.roof.material.edit'), - component: , - }, - { - id: 'linePropertyEdit', - name: getMessage('contextmenu.line.property.edit'), - fn: () => { - if (+canvasSetting.roofSizeSet === 3) { - swalFire({ text: getMessage('contextmenu.line.property.edit.roof.size.3') }) - } else { - addPopup(popupId, 1, ) - } + case 'auxiliaryLine': + case 'hip': + case 'ridge': + if (selectedMenu === 'surface') { + setContextMenu([ + [ + { + id: 'sizeEdit', + name: getMessage('contextmenu.size.edit'), + component: , }, - // component: , - }, - { - id: 'flowDirectionEdit', - name: getMessage('contextmenu.flow.direction.edit'), - component: , - }, - ], - ]) + { + id: 'roofMaterialRemove', + shortcut: ['d', 'D'], + name: `${getMessage('contextmenu.remove')}(D)`, + fn: () => deleteObject(), + }, + { + id: 'roofMaterialMove', + shortcut: ['m', 'M'], + name: `${getMessage('contextmenu.move')}(M)`, + fn: () => moveSurfaceShapeBatch(), + }, + { + id: 'roofMaterialCopy', + shortcut: ['c', 'C'], + name: `${getMessage('contextmenu.copy')}(C)`, + fn: () => copyObject(), + }, + ], + [ + { + id: 'roofMaterialEdit', + name: getMessage('contextmenu.roof.material.edit'), + component: , + }, + { + id: 'linePropertyEdit', + name: getMessage('contextmenu.line.property.edit'), + fn: () => { + if (+canvasSetting.roofSizeSet === 3) { + swalFire({ text: getMessage('contextmenu.line.property.edit.roof.size.3') }) + } else { + addPopup(popupId, 1, ) + } + }, + // component: , + }, + { + id: 'flowDirectionEdit', + name: getMessage('contextmenu.flow.direction.edit'), + component: , + }, + ], + ]) + } else if (selectedMenu === 'outline') { + setContextMenu([ + [ + { + id: 'roofMaterialPlacement', + name: getMessage('contextmenu.roof.material.placement'), + component: , + }, + + { + id: 'roofMaterialRemoveAll', + name: getMessage('contextmenu.roof.material.remove.all'), + fn: () => removeAllRoofMaterial(), + }, + { + id: 'selectMove', + name: getMessage('contextmenu.select.move'), + fn: (currentMousePos) => { + moveRoofMaterial(currentMousePos) + }, + }, + { + id: 'wallLineRemove', + name: getMessage('contextmenu.wallline.remove'), + fn: (currentMousePos) => { + removeOuterLines(currentMousePos) + }, + }, + ], + [ + { + id: 'sizeEdit', + name: getMessage('contextmenu.size.edit'), + component: , + }, + { + id: 'auxiliaryMove', + name: `${getMessage('contextmenu.auxiliary.move')}(M)`, + shortcut: ['m', 'M'], + component: , + }, + { + id: 'auxiliaryCopy', + name: `${getMessage('contextmenu.auxiliary.copy')}(C)`, + shortcut: ['c', 'C'], + component: , + }, + { + id: 'auxiliaryRemove', + shortcut: ['d', 'D'], + name: `${getMessage('contextmenu.auxiliary.remove')}(D)`, + fn: () => { + if (!currentObject) return + const roof = canvas.getObjects().filter((obj) => obj.id === currentObject.attributes.roofId)[0] + if (!roof) { + // 아직 innerLines로 세팅이 안되어있는 line인 경우 제거 + canvas.remove(currentObject) + canvas.discardActiveObject() + return + } + const innerLines = roof.innerLines?.filter((line) => currentObject.id !== line.id) + roof.innerLines = [...innerLines] + canvas.remove(currentObject) + canvas.discardActiveObject() + }, + }, + { + id: 'auxiliaryVerticalBisector', + name: getMessage('contextmenu.auxiliary.vertical.bisector'), + fn: () => { + if (!currentObject) return + const slope = (currentObject.y2 - currentObject.y1) / (currentObject.x2 - currentObject.x1) + const length = currentObject.length + + let startX, startY, endX, endY + if (slope === 0) { + startX = endX = (currentObject.x1 + currentObject.x2) / 2 + startY = currentObject.y2 - length / 2 + endY = currentObject.y2 + length / 2 + } else if (slope === Infinity) { + startX = currentObject.x1 - length / 2 + startY = endY = (currentObject.y1 + currentObject.y2) / 2 + endX = currentObject.x1 + length / 2 + } else { + const bisectorSlope = -1 / slope + const dx = length / 2 / Math.sqrt(1 + bisectorSlope * bisectorSlope) + const dy = bisectorSlope * dx + + startX = (currentObject.x1 + currentObject.x2) / 2 + dx + startY = (currentObject.y1 + currentObject.y2) / 2 + dy + endX = (currentObject.x1 + currentObject.x2) / 2 - dx + endY = (currentObject.y1 + currentObject.y2) / 2 - dy + } + + const line = addLine([startX, startY, endX, endY], { + stroke: 'red', + strokeWidth: 1, + selectable: true, + name: 'auxiliaryLine', + attributes: { ...currentObject.attributes }, + }) + + if (!currentObject.attributes.roofId) { + return + } + + canvas + .getObjects() + .filter((obj) => obj.id === currentObject.attributes.roofId)[0] + .innerLines.push(line) + }, + }, + { + id: 'auxiliaryRemoveAll', + name: getMessage('contextmenu.auxiliary.remove.all'), + fn: () => { + if (!currentObject) { + swalFire({ text: getMessage('roof.is.not.selected') }) + return + } + const innerLines = canvas.getObjects().filter((obj) => obj.id === currentObject.attributes.roofId)[0]?.innerLines + if (innerLines) { + innerLines.forEach((line) => { + canvas.remove(line) + }) + innerLines.length = 0 + } + + // 확정되지 않은 보조선 + const notFixedAuxiliaryLines = canvas.getObjects().filter((obj) => obj.name === 'auxiliaryLine' && !obj.isAuxiliaryFixed) + + notFixedAuxiliaryLines.forEach((line) => { + canvas.remove(line) + }) + + canvas.renderAll() + }, + }, + ], + ]) + } + break case 'opening': setContextMenu([ From 93d4db89d5a95f841fb031f0ba6e8bc905a04ad5 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Tue, 4 Mar 2025 13:15:51 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=EB=B2=88=EC=97=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/roofcover/useRoofAllocationSetting.js | 2 +- src/locales/ja.json | 3 ++- src/locales/ko.json | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/hooks/roofcover/useRoofAllocationSetting.js b/src/hooks/roofcover/useRoofAllocationSetting.js index 9d0a850a..671d4c7e 100644 --- a/src/hooks/roofcover/useRoofAllocationSetting.js +++ b/src/hooks/roofcover/useRoofAllocationSetting.js @@ -239,7 +239,7 @@ export function useRoofAllocationSetting(id) { */ const onAddRoofMaterial = () => { if (currentRoofList.length >= 4) { - swalFire({ type: 'alert', icon: 'error', text: getMessage('지붕재는 4개까지 선택 가능합니다.') }) + swalFire({ type: 'alert', icon: 'error', text: getMessage('roof.exceed.count') }) return } setCurrentRoofList([ diff --git a/src/locales/ja.json b/src/locales/ja.json index ecaab098..76f16b36 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1028,5 +1028,6 @@ "not.allocation.exist.module": "回路を割り当てていないモジュールがあります。", "roof.is.not.selected": "屋根の選択をお願いします。", "length.direction.is.required": "長さと方向を入力します。", - "canvas.infomation.text": "数字は [半角] 入力のみ可能です。" + "canvas.infomation.text": "数字は [半角] 入力のみ可能です。", + "roof.exceed.count": "屋根材は4つまで選択可能です。" } diff --git a/src/locales/ko.json b/src/locales/ko.json index eb853d83..0a1119d0 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1028,5 +1028,6 @@ "not.allocation.exist.module": "회로를 할당하지 않은 모듈이 있습니다.", "roof.is.not.selected": "지붕을 선택해주세요.", "length.direction.is.required": "길이와 방향을 입력하세요.", - "canvas.infomation.text": "숫자는 [반각] 입력만 가능합니다." + "canvas.infomation.text": "숫자는 [반각] 입력만 가능합니다.", + "roof.exceed.count": "지붕재는 4개까지 선택 가능합니다." } From bdd3322d8c338a1a829c4379aca5f7057d3ea187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Tue, 4 Mar 2025 14:06:15 +0900 Subject: [PATCH 5/6] =?UTF-8?q?module=20row=20remove=20=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/module/useModule.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hooks/module/useModule.js b/src/hooks/module/useModule.js index 49fef2be..0896fe04 100644 --- a/src/hooks/module/useModule.js +++ b/src/hooks/module/useModule.js @@ -536,7 +536,6 @@ export function useModule() { const moduleRowRemove = (type) => { const activeModule = canvas.getObjects().filter((obj) => canvas.getActiveObjects()[0].id === obj.id)[0] - c const rowModules = getRowModules(activeModule) const otherModules = getOtherModules(rowModules) const objects = getObjects() From aef7cafc1bf2908fd679fa7f11820e73bf556109 Mon Sep 17 00:00:00 2001 From: basssy Date: Tue, 4 Mar 2025 14:38:24 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=EB=AC=BC=EA=B1=B4=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=95=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=BB=A4?= =?UTF-8?q?=EC=84=9C=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/pagination/QPagination.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/common/pagination/QPagination.jsx b/src/components/common/pagination/QPagination.jsx index c6cab52d..8c6032b7 100644 --- a/src/components/common/pagination/QPagination.jsx +++ b/src/components/common/pagination/QPagination.jsx @@ -12,10 +12,12 @@ export default function QPagination(props) { return (
  1. - +
  2. {pageRange.map((page) => (
  3. - +
  4. ))}
  5. - +
)