From 358f77313bce33b679ec5113e37a6f865f023b93 Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 30 Oct 2024 11:11:40 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=9A=A8chore:=20Sync=20Sass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/_contents.scss | 119 ++++++++++++++++++++++++++++++++++-- src/styles/_layout.scss | 20 +++++- src/styles/_main.scss | 3 +- src/styles/_modal.scss | 1 + src/styles/_reset.scss | 5 ++ src/styles/publishpage.scss | 2 +- 6 files changed, 142 insertions(+), 8 deletions(-) diff --git a/src/styles/_contents.scss b/src/styles/_contents.scss index 8e29b78a..97f69dbe 100644 --- a/src/styles/_contents.scss +++ b/src/styles/_contents.scss @@ -23,7 +23,7 @@ left: 0; display: block; width: 100%; - height: 46.8px; + min-width: 1280px; padding-bottom: 0; background-color: #383838; transition: padding .17s ease-in-out; @@ -34,6 +34,7 @@ align-items: center; padding: 0 40px 0 20px; background-color: #2C2C2C; + height: 46.8px; z-index: 999; .canvas-menu-list{ display: flex; @@ -55,11 +56,11 @@ transition: all .17s ease-in-out; .menu-icon{ display: block; - width: 16px; - height: 16px; + width: 14px; + height: 14px; background-repeat: no-repeat; background-position: center; - background-size: cover; + background-size: contain; margin-right: 10px; &.con00{background-image: url(/static/images/canvas/menu_icon00.svg);} &.con01{background-image: url(/static/images/canvas/menu_icon01.svg);} @@ -85,6 +86,7 @@ .select-box{ width: 124px; margin-right: 5px; + height: 30px; > div{ width: 100%; } @@ -329,6 +331,7 @@ background-color: #1C1C1C; border-top: 1px solid #000; width: 100%; + min-width: 1280px; transition: all .17s ease-in-out; z-index: 99; &.active{ @@ -444,6 +447,7 @@ top: 46px; left: 0; width: 100%; + min-width: 1280px; height: 46px; border-bottom: 1px solid #000; background: #2C2C2C; @@ -1304,4 +1308,109 @@ background: url(../../public/static/images/sub/product-del.svg)no-repeat center; background-size: 15px 15px; } -} \ No newline at end of file +} + +@media screen and (max-width: 1800px) { + .canvas-menu-wrap{ + .canvas-menu-inner{ + .canvas-menu-list{ + .canvas-menu-item button{ + .menu-icon{ + margin-right: 5px; + } + } + .canvas-menu-item{ + button{ + padding: 15px 15px; + font-size: 11px; + } + } + } + } + .canvas-depth2-wrap{ + .canvas-depth2-inner{ + .canvas-depth2-list{ + .canvas-depth2-item{ + button{ + font-size: 11px; + } + } + } + } + } + } +} + +@media screen and (max-width: 1600px) { + .canvas-menu-wrap{ + .canvas-menu-inner{ + .canvas-menu-list{ + .canvas-menu-item button{ + .menu-icon{ + display: none; + } + } + } + } + } + .canvas-content{ + .canvas-frame{ + height: calc(100vh - 129.5px); + } + &.active{ + .canvas-frame{ + height: calc(100vh - 179.5px); + } + } + } +} + +@media screen and (max-width: 1500px) { + .canvas-menu-wrap{ + .canvas-menu-inner{ + .canvas-menu-list{ + .canvas-menu-item{ + button{ + padding: 15px 10px; + font-size: 10px; + } + } + } + .canvas-side-btn-wrap{ + .btn-from{ + gap: 3px; + } + .vertical-horizontal{ + margin: 0 3px; + min-width: 150px; + } + .select-box{ + width: 100px; + margin-right: 3px; + } + .size-control{ + width: 90px; + margin: 0 3px; + } + } + } + } + .sub-header{ + .sub-header-inner{ + .sub-header-title{ + font-size: 15px; + } + .sub-header-title-wrap{ + .title-item{ + a{ + .icon{ + width: 20px; + height: 20px; + } + } + } + } + } + } + +} diff --git a/src/styles/_layout.scss b/src/styles/_layout.scss index 7f3834df..fc8870a2 100644 --- a/src/styles/_layout.scss +++ b/src/styles/_layout.scss @@ -29,7 +29,7 @@ header{ top: 0; left: 0; width: 100%; - min-width: 1600px; + min-width: 1280px; height: 46px; background-color: #1C1C1C; border-bottom: 1px solid #000; @@ -230,4 +230,22 @@ footer{ text-align: center; } } +} + +@media screen and (max-width: 1500px) { + header{ + .header-inner{ + .header-right{ + nav{ + .nav-list{ + .nav-item{ + button{ + font-size: 13px; + } + } + } + } + } + } + } } \ No newline at end of file diff --git a/src/styles/_main.scss b/src/styles/_main.scss index ea1535b1..75632a27 100644 --- a/src/styles/_main.scss +++ b/src/styles/_main.scss @@ -595,8 +595,9 @@ overflow-x: hidden; .center-page-inner{ width: 100%; - max-width: 1720px; + max-width: 1760px; margin: 0 auto; + padding: 10px 20px; .center-page-tit{ font-size: 18px; font-weight: 600; diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss index 361aa957..51f55fb0 100644 --- a/src/styles/_modal.scss +++ b/src/styles/_modal.scss @@ -488,6 +488,7 @@ $alert-color: #101010; color: #101010; background-color: #fff; border-radius: 2px; + cursor: pointer; transition: all .15s ease-in-out; .img-edit{ width: 16px; diff --git a/src/styles/_reset.scss b/src/styles/_reset.scss index 4225db2e..b7778926 100644 --- a/src/styles/_reset.scss +++ b/src/styles/_reset.scss @@ -346,6 +346,11 @@ button{ font-size: 13px; color: #fff; height: 100%; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; } .select-item-wrap{ position: absolute; diff --git a/src/styles/publishpage.scss b/src/styles/publishpage.scss index 941b29de..9ea724ac 100644 --- a/src/styles/publishpage.scss +++ b/src/styles/publishpage.scss @@ -4,7 +4,7 @@ ul, li {padding: 0; margin: 0; list-style: none; } body, td { line-height: normal;font-style: normal; font-variant: normal; font-size: 12px; color: #6b6b6b; } table { margin-bottom: 150px; border-collapse: collapse; border-spacing: 0; } #g_header h1 { height: 60px; line-height: 60px; padding-left: 28px; margin-top: 0; color: #fff; background: #424242;font-size: 24px; font-family:'Pretendard', 돋움, Sans-Serif;} -#g_body { padding: 0 30px; } +#g_body { padding: 0 30px 1px; } .guide_table { width: 100%;border-top:1px solid #424242;table-layout: auto;} .guide_table thead th { background: #f1f1f1; text-align: center; padding:20px 3px;border:1px solid #dadada;border-top:1px solid #424242;font-size:15px;font-weight: 600; font-family:'Pretendard', 돋움, Sans-Serif;} .guide_table tbody td { padding:12px 3px; vertical-align: middle; border: solid 1px #dadada;text-align:left;font-size:13px; font-family:'Pretendard', 돋움, Sans-Serif;} From 47ec0180e9bc57fdc64bb34c3ddd9e384ef29415 Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 30 Oct 2024 11:12:47 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=EB=8B=A4=EA=B5=AD=EC=96=B4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/ja.json | 5 +++++ src/locales/ko.json | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/locales/ja.json b/src/locales/ja.json index a75b6967..15d927d1 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -284,6 +284,7 @@ "delete": "삭제(JA)", "delete.all": "전체 삭제(JA)", "refresh": "새로고침(JA)", + "margin": "間隔", "contextmenu.roof.material.placement": "지붕재 배치(JA)", "contextmenu.roof.material.edit": "지붕재 변경(JA)", "contextmenu.roof.material.remove": "지붕재 삭제(JA)", @@ -307,6 +308,10 @@ "contextmenu.row.copy": "단 복사(JA)", "contextmenu.row.remove": "단 삭제(JA)", "contextmenu.row.insert": "단 삽입(JA)", + "modal.move.setting": "移動設定", + "modal.move.setting.info": "間隔を設定し、移動方向を選択します。", + "modal.copy.setting": "コピー設定", + "modal.copy.setting.info": "間隔を設定し、コピー方向を選択します。", "modal.line.property.edit.info": "属性を変更する辺を選択してください。", "modal.line.property.edit.selected": "選択した値", "contextmenu.flow.direction.edit": "흐름 방향 변경(JA)", diff --git a/src/locales/ko.json b/src/locales/ko.json index 19dedd58..5fd49921 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -289,6 +289,7 @@ "delete": "삭제", "delete.all": "전체 삭제", "refresh": "새로고침", + "margin": "간격", "contextmenu.roof.material.placement": "지붕재 배치", "contextmenu.roof.material.edit": "지붕재 변경", "contextmenu.roof.material.remove": "지붕재 삭제", @@ -312,6 +313,10 @@ "contextmenu.row.copy": "단 복사", "contextmenu.row.remove": "단 삭제", "contextmenu.row.insert": "단 삽입", + "modal.move.setting": "이동 설정", + "modal.move.setting.info": "간격을 설정하고 이동 방향을 선택하십시오.", + "modal.copy.setting": "복사 설정", + "modal.copy.setting.info": "간격을 설정하고 복사 방향을 선택하십시오.", "modal.line.property.edit.info": "속성을 변경할 변을 선택해주세요.", "modal.line.property.edit.selected": "선택한 값", "contextmenu.flow.direction.edit": "흐름 방향 변경", From f9580fc8c20fecb519ff80ecc51608c7f3d90aae Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 30 Oct 2024 17:25:29 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=BB=A8=ED=85=8D?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EB=A9=94=EB=89=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modal/module/CircuitNumberEdit.jsx | 48 +++++++ .../floor-plan/modal/module/PanelEdit.jsx | 78 ++++++++++++ .../modal/module/column/ColumnInsert.jsx | 95 ++++++++++++++ .../modal/module/column/ColumnRemove.jsx | 118 ++++++++++++++++++ .../floor-plan/modal/module/row/RowInsert.jsx | 95 ++++++++++++++ .../floor-plan/modal/module/row/RowRemove.jsx | 118 ++++++++++++++++++ src/hooks/useContextMenu.js | 115 ++++++++++++++++- src/locales/ja.json | 57 ++++++++- src/locales/ko.json | 49 ++++++++ 9 files changed, 768 insertions(+), 5 deletions(-) create mode 100644 src/components/floor-plan/modal/module/CircuitNumberEdit.jsx create mode 100644 src/components/floor-plan/modal/module/PanelEdit.jsx create mode 100644 src/components/floor-plan/modal/module/column/ColumnInsert.jsx create mode 100644 src/components/floor-plan/modal/module/column/ColumnRemove.jsx create mode 100644 src/components/floor-plan/modal/module/row/RowInsert.jsx create mode 100644 src/components/floor-plan/modal/module/row/RowRemove.jsx diff --git a/src/components/floor-plan/modal/module/CircuitNumberEdit.jsx b/src/components/floor-plan/modal/module/CircuitNumberEdit.jsx new file mode 100644 index 00000000..d565e1a1 --- /dev/null +++ b/src/components/floor-plan/modal/module/CircuitNumberEdit.jsx @@ -0,0 +1,48 @@ +import WithDraggable from '@/components/common/draggable/withDraggable' +import { useRecoilValue } from 'recoil' +import { contextPopupPositionState } from '@/store/popupAtom' +import { usePopup } from '@/hooks/usePopup' +import { useMessage } from '@/hooks/useMessage' + +export default function CircuitNumberEdit(props) { + const contextPopupPosition = useRecoilValue(contextPopupPositionState) + const { id, pos = contextPopupPosition, apply } = props + const { closePopup } = usePopup() + const { getMessage } = useMessage() + const handleApply = () => { + if (apply) apply() + closePopup(id) + } + return ( + +
+
+

{getMessage('modal.module.circuit.number.edit')}

+ +
+
+
{getMessage('modal.module.circuit.number.edit.info')}
+
+
+
+ + {getMessage('modal.module.circuit.number')} + +
+ +
+
+
+
+
+ +
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/module/PanelEdit.jsx b/src/components/floor-plan/modal/module/PanelEdit.jsx new file mode 100644 index 00000000..1f40b703 --- /dev/null +++ b/src/components/floor-plan/modal/module/PanelEdit.jsx @@ -0,0 +1,78 @@ +import WithDraggable from '@/components/common/draggable/WithDraggable' +import { useRecoilValue } from 'recoil' +import { contextPopupPositionState } from '@/store/popupAtom' +import { usePopup } from '@/hooks/usePopup' +import { useMessage } from '@/hooks/useMessage' +import { useState } from 'react' + +export default function PanelEdit(props) { + const contextPopupPosition = useRecoilValue(contextPopupPositionState) + const { id, pos = contextPopupPosition, type = 'move', apply } = props + const { closePopup } = usePopup() + const [length, setLength] = useState(0) + const [direction, setDirection] = useState('') + const { getMessage } = useMessage() + + const handleApply = () => { + apply() + closePopup(id) + } + + return ( + +
+
+

{getMessage(type === 'move' ? 'modal.move.setting' : 'modal.copy.setting')}

+ +
+
+
{getMessage(type === 'move' ? 'modal.move.setting.info' : 'modal.copy.setting.info')}
+
+
+
+ {getMessage('margin')} +
+ setLength(e.target.value)} /> +
+ mm +
+
+ + + + +
+
+
+
+ +
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/module/column/ColumnInsert.jsx b/src/components/floor-plan/modal/module/column/ColumnInsert.jsx new file mode 100644 index 00000000..c2f24095 --- /dev/null +++ b/src/components/floor-plan/modal/module/column/ColumnInsert.jsx @@ -0,0 +1,95 @@ +import WithDraggable from '@/components/common/draggable/WithDraggable' +import { useRecoilValue } from 'recoil' +import { contextPopupPositionState } from '@/store/popupAtom' +import { usePopup } from '@/hooks/usePopup' +import { useMessage } from '@/hooks/useMessage' +import { useState } from 'react' +import Image from 'next/image' + +export default function ColumnInsert(props) { + const contextPopupPosition = useRecoilValue(contextPopupPositionState) + const { id, pos = contextPopupPosition, apply } = props + const { closePopup } = usePopup() + const [selectedType, setSelectedType] = useState(1) + const { getMessage } = useMessage() + const handleApply = () => { + if (apply) apply() + closePopup(id) + } + + const HandleRadioChange = (e) => { + setSelectedType(Number(e.target.value)) + } + + return ( + +
+
+

{getMessage('modal.panel.column.insert')}

+ +
+
+
+
{getMessage('modal.panel.column.insert.info')}
+
+
+
+ + +
+
+ + +
+
+
+ {selectedType === 1 && ( + react + )} + {selectedType === 2 && ( + react + )} +
+
+
+
+
{getMessage('legend')}
+
+
+
+
+ + {getMessage('modal.panel.select.column')} +
+
+ + {getMessage('modal.panel.insert.column')} +
+
+
+
+
+
+ +
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/module/column/ColumnRemove.jsx b/src/components/floor-plan/modal/module/column/ColumnRemove.jsx new file mode 100644 index 00000000..b4baf0d7 --- /dev/null +++ b/src/components/floor-plan/modal/module/column/ColumnRemove.jsx @@ -0,0 +1,118 @@ +import WithDraggable from '@/components/common/draggable/WithDraggable' +import { useRecoilValue } from 'recoil' +import { contextPopupPositionState } from '@/store/popupAtom' +import { usePopup } from '@/hooks/usePopup' +import { useMessage } from '@/hooks/useMessage' +import { useState } from 'react' +import Image from 'next/image' + +export default function ColumnRemove(props) { + const contextPopupPosition = useRecoilValue(contextPopupPositionState) + const { id, pos = contextPopupPosition, apply } = props + const { closePopup } = usePopup() + const [selectedType, setSelectedType] = useState(1) + const { getMessage } = useMessage() + const types = [ + { name: getMessage('modal.panel.column.remove.type.left'), value: 1 }, + { name: getMessage('modal.panel.column.remove.type.right'), value: 2 }, + { name: getMessage('modal.panel.column.remove.type.side'), value: 3 }, + { name: getMessage('modal.panel.column.remove.type.none'), value: 4 }, + ] + const handleApply = () => { + if (apply) apply() + closePopup(id) + } + + return ( + +
+
+

{getMessage('modal.panel.column.remove')}

+ +
+
+
+
{getMessage('modal.panel.column.remove.info')}
+
+
+ {types.map((type, index) => { + return ( +
+ setSelectedType(Number(e.target.value))} + value={type.value} + checked={selectedType === type.value} + /> + +
+ ) + })} +
+
+ {selectedType === 1 && ( + react + )} + {selectedType === 2 && ( + react + )} + {selectedType === 3 && ( + react + )} + {selectedType === 4 && ( + react + )} +
+
+
+
+
{getMessage('legend')}
+
+
+
+
+ + {getMessage('modal.panel.select.column')} +
+
+
+
+
+
+ +
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/module/row/RowInsert.jsx b/src/components/floor-plan/modal/module/row/RowInsert.jsx new file mode 100644 index 00000000..e6e99c0c --- /dev/null +++ b/src/components/floor-plan/modal/module/row/RowInsert.jsx @@ -0,0 +1,95 @@ +import WithDraggable from '@/components/common/draggable/withDraggable' +import Image from 'next/image' +import { useState } from 'react' +import { useRecoilValue } from 'recoil' +import { contextPopupPositionState } from '@/store/popupAtom' +import { usePopup } from '@/hooks/usePopup' +import { useMessage } from '@/hooks/useMessage' + +export default function RowInsert(props) { + const contextPopupPosition = useRecoilValue(contextPopupPositionState) + const { id, pos = contextPopupPosition, apply } = props + const { closePopup } = usePopup() + const [selectedType, setSelectedType] = useState(1) + const { getMessage } = useMessage() + const handleApply = () => { + if (apply) apply() + closePopup(id) + } + + const HandleRadioChange = (e) => { + setSelectedType(Number(e.target.value)) + } + + return ( + +
+
+

{getMessage('modal.row.insert')}

+ +
+
+
+
{getMessage('modal.row.insert.info')}
+
+
+
+ + +
+
+ + +
+
+
+ {selectedType === 1 && ( + react + )} + {selectedType === 2 && ( + react + )} +
+
+
+
+
{getMessage('legend')}
+
+
+
+
+ + {getMessage('modal.panel.select.row')} +
+
+ + {getMessage('modal.panel.insert.row')} +
+
+
+
+
+
+ +
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/module/row/RowRemove.jsx b/src/components/floor-plan/modal/module/row/RowRemove.jsx new file mode 100644 index 00000000..6b93b41c --- /dev/null +++ b/src/components/floor-plan/modal/module/row/RowRemove.jsx @@ -0,0 +1,118 @@ +import WithDraggable from '@/components/common/draggable/withDraggable' +import Image from 'next/image' +import { useState } from 'react' +import { useRecoilValue } from 'recoil' +import { contextPopupPositionState } from '@/store/popupAtom' +import { usePopup } from '@/hooks/usePopup' +import { useMessage } from '@/hooks/useMessage' + +export default function RowRemove(props) { + const contextPopupPosition = useRecoilValue(contextPopupPositionState) + const { id, pos = contextPopupPosition, apply } = props + const { closePopup } = usePopup() + const [selectedType, setSelectedType] = useState(1) + const { getMessage } = useMessage() + const types = [ + { name: getMessage('modal.row.remove.type.up'), value: 1 }, + { name: getMessage('modal.row.remove.type.down'), value: 2 }, + { name: getMessage('modal.row.remove.type.side'), value: 3 }, + { name: getMessage('modal.row.remove.type.none'), value: 4 }, + ] + const handleApply = () => { + if (apply) apply() + closePopup(id) + } + + return ( + +
+
+

{getMessage('modal.row.remove')}

+ +
+
+
+
{getMessage('modal.row.remove.info')}
+
+
+ {types.map((type, index) => { + return ( +
+ setSelectedType(Number(e.target.value))} + value={type.value} + checked={selectedType === type.value} + /> + +
+ ) + })} +
+
+ {selectedType === 1 && ( + react + )} + {selectedType === 2 && ( + react + )} + {selectedType === 3 && ( + react + )} + {selectedType === 4 && ( + react + )} +
+
+
+
+
{getMessage('legend')}
+
+
+
+
+ + {getMessage('modal.panel.select.row')} +
+
+
+
+
+
+ +
+
+
+
+ ) +} diff --git a/src/hooks/useContextMenu.js b/src/hooks/useContextMenu.js index 293a0ceb..7791be41 100644 --- a/src/hooks/useContextMenu.js +++ b/src/hooks/useContextMenu.js @@ -16,7 +16,6 @@ import SizeSetting from '@/components/floor-plan/modal/object/SizeSetting' import RoofMaterialSetting from '@/components/floor-plan/modal/object/RoofMaterialSetting' import DormerOffset from '@/components/floor-plan/modal/object/DormerOffset' import FontSetting from '@/components/common/font/FontSetting' -import DimensionLineSetting from '@/components/floor-plan/modal/dimensionLine/DimensionLineSetting' import RoofAllocationSetting from '@/components/floor-plan/modal/roofAllocation/RoofAllocationSetting' import LinePropertySetting from '@/components/floor-plan/modal/lineProperty/LinePropertySetting' import FlowDirectionSetting from '@/components/floor-plan/modal/flowDirection/FlowDirectionSetting' @@ -24,6 +23,13 @@ import { useMessage } from '@/hooks/useMessage' import { useCanvasEvent } from '@/hooks/useCanvasEvent' import { contextMenuState } from '@/store/contextMenu' import ImageSizeSetting from '@/components/floor-plan/modal/image/ImageSizeSetting' +import PanelEdit from '@/components/floor-plan/modal/module/PanelEdit' +import DimensionLineSetting from '@/components/floor-plan/modal/dimensionLine/DimensionLineSetting' +import ColumnRemove from '@/components/floor-plan/modal/module/column/ColumnRemove' +import ColumnInsert from '@/components/floor-plan/modal/module/column/ColumnInsert' +import RowRemove from '@/components/floor-plan/modal/module/row/RowRemove' +import RowInsert from '@/components/floor-plan/modal/module/row/RowInsert' +import CircuitNumberEdit from '@/components/floor-plan/modal/module/CircuitNumberEdit' export function useContextMenu() { const currentMenu = useRecoilValue(currentMenuState) // 현재 메뉴 @@ -36,6 +42,8 @@ export function useContextMenu() { const [popupId, setPopupId] = useState(uuidv4()) const [gridColor, setGridColor] = useRecoilState(gridColorState) const [qContextMenu, setQContextMenu] = useRecoilState(contextMenuState) + const [cell, setCell] = useState(null) + const [column, setColumn] = useState(null) const { handleZoomClear } = useCanvasEvent() const currentMenuSetting = () => { switch (currentMenu) { @@ -241,6 +249,7 @@ export function useContextMenu() { useEffect(() => { if (currentObject?.name) { + console.log(currentObject?.name) switch (currentObject.name) { case 'triangleDormer': case 'pentagonDormer': @@ -475,6 +484,110 @@ export function useContextMenu() { ], ]) break + case 'panel': + setContextMenu([ + [ + { + id: 'remove', + name: getMessage('contextmenu.remove'), + }, + { + id: 'move', + name: getMessage('contextmenu.move'), + component: , + }, + { + id: 'copy', + name: getMessage('contextmenu.copy'), + component: , + }, + ], + [ + { + id: 'columnMove', + name: getMessage('contextmenu.column.move'), + component: , + }, + { + id: 'columnCopy', + name: getMessage('contextmenu.column.copy'), + component: , + }, + { + id: 'columnRemove', + name: getMessage('contextmenu.column.remove'), + component: , + }, + { + id: 'columnInsert', + name: getMessage('contextmenu.column.insert'), + component: , + }, + ], + [ + { + id: 'rowMove', + name: getMessage('contextmenu.row.move'), + component: , + }, + { + id: 'rowCopy', + name: getMessage('contextmenu.row.copy'), + component: , + }, + { + id: 'rowRemove', + name: getMessage('contextmenu.row.remove'), + component: , + }, + { + id: 'rowInsert', + name: getMessage('contextmenu.row.insert'), + component: , + }, + ], + ]) + break + case 'module': + case 'dimensionLineText': + setContextMenu([ + [ + { + id: 'moduleVerticalCenterAlign', + name: getMessage('contextmenu.module.vertical.align'), + }, + { + id: 'moduleHorizonCenterAlign', + name: getMessage('contextmenu.module.horizon.align'), + }, + { + id: 'moduleLeftAlign', + name: getMessage('contextmenu.module.left.align'), + }, + { + id: 'moduleRightAlign', + name: getMessage('contextmenu.module.right.align'), + }, + { + id: 'moduleUpAlign', + name: getMessage('contextmenu.module.up.align'), + }, + { + id: 'moduleDownAlign', + name: getMessage('contextmenu.module.down.align'), + }, + { + id: 'moduleRemove', + name: getMessage('contextmenu.module.remove'), + }, + { + id: 'moduleCircuitNumberEdit', + name: getMessage('contextmenu.module.circuit.number.edit'), + component: , + }, + ], + ]) + break default: currentMenuSetting() } diff --git a/src/locales/ja.json b/src/locales/ja.json index 019aaed4..4740d5a0 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -303,11 +303,35 @@ "contextmenu.column.move": "열 이동(JA)", "contextmenu.column.copy": "열 복사(JA)", "contextmenu.column.remove": "コピー設定", - "contextmenu.column.insert": "열 삽입(JA)", + "modal.panel.column.remove": "コピー設定", + "modal.panel.column.remove.info": "削除列をどのようにしますか?", + "modal.panel.column.remove.type.left": "左に減らす", + "modal.panel.column.remove.type.right": "右に減らす", + "modal.panel.column.remove.type.side": "両側に減る", + "modal.panel.column.remove.type.none": "減らさない", + "modal.panel.select.column": "選択列", + "modal.panel.select.row": "選択段", + "modal.panel.insert.column": "挿入列", + "modal.panel.insert.row": "挿入段", + "modal.panel.column.insert": "列の挿入", + "modal.panel.column.insert.info": "挿入する方向を選択してください。", + "modal.panel.column.insert.type.left": "左挿入", + "modal.panel.column.insert.type.right": "右挿入", + "contextmenu.column.insert": "列の挿入", "contextmenu.row.move": "단 이동(JA)", "contextmenu.row.copy": "단 복사(JA)", - "contextmenu.row.remove": "단 삭제(JA)", - "contextmenu.row.insert": "단 삽입(JA)", + "contextmenu.row.remove": "ただし削除", + "modal.row.remove": "ただし削除", + "modal.row.remove.info": "削除列をどのようにしますか?", + "modal.row.remove.type.up": "上向きに減らす", + "modal.row.remove.type.down": "下向きに減らす", + "modal.row.remove.type.side": "両側に減らす", + "modal.row.remove.type.none": "減らさない", + "contextmenu.row.insert": "段挿入", + "modal.row.insert": "段挿入", + "modal.row.insert.info": "挿入する方向を選択してください。", + "modal.row.insert.type.up": "上部挿入", + "modal.row.insert.type.down": "下の挿入", "modal.move.setting": "移動設定", "modal.move.setting.info": "間隔を設定し、移動方向を選択します。", "modal.copy.setting": "コピー設定", @@ -318,13 +342,36 @@ "contextmenu.font.setting": "폰트 설정(JA)", "contextmenu.grid.color.edit": "그리드 색 변경(JA)", "contextmenu.dimension.auxiliary.line.edit": "치수 보조선 변경(JA)", - "contextmenu.display.edit": "표시 변경(JA)", + "contextmenu.display.edit": "表示の変更", + "modal.display.edit.info": "寸法線に表示する数値を入力してください", + "modal.display.edit.before.length": "既存の長さ", + "modal.display.edit.after.length": "変更の長さ", + "modal.display.edit.corner.valley": "コーナー・ゴールの場合", + "modal.display.edit.input.slope": "경사를 傾斜を着せてください。", + "modal.display.edit.input.slope.info": "傾き設定されている場合、入力した数値に傾き計算をした数値が表示されます。", + "modal.distance": "距離測定", + "modal.distance.dual.point": "2点間距離", + "modal.distance.horizon": "水平距離", + "modal.distance.vertical": "垂直距離", "contextmenu.opening.offset": "개구 오프셋(JA)", "contextmenu.remove": "삭제(JA)", "contextmenu.remove.all": "전체 삭제(JA)", "contextmenu.move": "이동(JA)", "contextmenu.copy": "복사(JA)", "contextmenu.edit": "편집(JA)", + "contextmenu.module.vertical.align": "모듈 세로 가운데 정렬(JA)", + "contextmenu.module.horizon.align": "모듈 가로 가운데 정렬(JA)", + "contextmenu.module.left.align": "모듈 왼쪽 정렬(JA)", + "contextmenu.module.right.align": "모듈 오른쪽 정렬(JA)", + "contextmenu.module.up.align": "모듈 위쪽 정렬(JA)", + "contextmenu.module.down.align": "모듈 아래쪽 정렬(JA)", + "contextmenu.module.remove": "모듈 일괄 삭제(JA)", + "contextmenu.module.move": "모듈 일괄 이동(JA)", + "contextmenu.module.copy": "모듈 일괄 복사(JA)", + "contextmenu.module.circuit.number.edit": "モジュール一括回路番号の変更", + "modal.module.circuit.number.edit": "モジュール一括回路番号の変更", + "modal.module.circuit.number.edit.info": "回路番号を入力してください。", + "modal.module.circuit.number": "回路番号", "common.message.no.data": "No data", "common.message.no.dataDown": "ダウンロードするデータがありません", "common.message.noData": "表示するデータがありません", @@ -415,6 +462,7 @@ "common.input.file": "ファイルを読み込む", "common.input.file.load": "ファイルの追加", "common.require": "必須", + "common.ok": "確認", "commons.west": "立つ", "commons.east": "ドン", "commons.south": "南", @@ -690,6 +738,7 @@ "shed": "片側の流れ", "apply": "適用", "module": "モジュール", + "legend": "凡例", "has.sleeve": "袖あり", "has.not.sleeve": "袖なし", "jerkinhead.width": "半折先幅", diff --git a/src/locales/ko.json b/src/locales/ko.json index 128d51e1..05f4bcf3 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -308,11 +308,35 @@ "contextmenu.column.move": "열 이동", "contextmenu.column.copy": "열 복사", "contextmenu.column.remove": "열 삭제", + "modal.panel.column.remove": "열 삭제", + "modal.panel.column.remove.info": "삭제열을 어떻게 하시겠습니까?", + "modal.panel.column.remove.type.left": "왼쪽으로 줄이다", + "modal.panel.column.remove.type.right": "오른쪽으로 줄이다", + "modal.panel.column.remove.type.side": "양쪽으로 줄이다", + "modal.panel.column.remove.type.none": "줄이지 않는다", + "modal.panel.select.column": "선택 열", + "modal.panel.select.row": "선택 단", + "modal.panel.insert.column": "삽입 열", + "modal.panel.insert.row": "삽입 단", "contextmenu.column.insert": "열 삽입", + "modal.panel.column.insert": "열 삽입", + "modal.panel.column.insert.info": "삽입할 방향을 선택해주세요.", + "modal.panel.column.insert.type.left": "왼쪽 삽입", + "modal.panel.column.insert.type.right": "오른쪽 삽입", "contextmenu.row.move": "단 이동", "contextmenu.row.copy": "단 복사", "contextmenu.row.remove": "단 삭제", + "modal.row.remove": "단 삭제", + "modal.row.remove.info": "삭제 단을 어떻게 하시겠습니까?", + "modal.row.remove.type.up": "위족으로 줄이다", + "modal.row.remove.type.down": "아래쪽으로 줄이다", + "modal.row.remove.type.side": "양쪽으로 줄이다", + "modal.row.remove.type.none": "줄이지 않는다", "contextmenu.row.insert": "단 삽입", + "modal.row.insert": "단 삽입", + "modal.row.insert.info": "삽입할 방향을 선택해주세요.", + "modal.row.insert.type.up": "위쪽 삽입", + "modal.row.insert.type.down": "아래쪽 삽입", "modal.move.setting": "이동 설정", "modal.move.setting.info": "간격을 설정하고 이동 방향을 선택하십시오.", "modal.copy.setting": "복사 설정", @@ -324,12 +348,35 @@ "contextmenu.grid.color.edit": "그리드 색 변경", "contextmenu.dimension.auxiliary.line.edit": "치수 보조선 변경", "contextmenu.display.edit": "표시 변경", + "modal.display.edit.info": "치수선에 표시할 수치를 입력해 주세요.", + "modal.display.edit.before.length": "기존 길이", + "modal.display.edit.after.length": "변경 길이", + "modal.display.edit.corner.valley": "구석・골의 경우", + "modal.display.edit.input.slope": "경사를 입력해주세요.", + "modal.display.edit.input.slope.info": "경사 설정되어 있는 경우 입력한 수치에 경사 계산을 한 수치가 표시됩니다.", + "modal.distance": "거리 측정", + "modal.distance.dual.point": "두 점간 거리", + "modal.distance.horizon": "수평 거리", + "modal.distance.vertical": "수직 거리", "contextmenu.opening.offset": "개구 오프셋", "contextmenu.remove": "삭제", "contextmenu.remove.all": "전체 삭제", "contextmenu.move": "이동", "contextmenu.copy": "복사", "contextmenu.edit": "편집", + "contextmenu.module.vertical.align": "모듈 세로 가운데 정렬", + "contextmenu.module.horizon.align": "모듈 가로 가운데 정렬", + "contextmenu.module.left.align": "모듈 왼쪽 정렬", + "contextmenu.module.right.align": "모듈 오른쪽 정렬", + "contextmenu.module.up.align": "모듈 위쪽 정렬", + "contextmenu.module.down.align": "모듈 아래쪽 정렬", + "contextmenu.module.remove": "모듈 일괄 삭제", + "contextmenu.module.move": "모듈 일괄 이동", + "contextmenu.module.copy": "모듈 일괄 복사", + "contextmenu.module.circuit.number.edit": "모듈 일괄 회로 번호 변경", + "modal.module.circuit.number.edit": "모듈 일괄 회로 번호 변경", + "modal.module.circuit.number.edit.info": "회로 번호를 입력해주세요.", + "modal.module.circuit.number": "회로 번호", "common.message.no.data": "No data", "common.message.no.dataDown": "No data to download", "common.message.noData": "No data to display", @@ -420,6 +467,7 @@ "common.input.file": "파일 불러오기", "common.input.file.load": "불러오기", "common.require": "필수", + "common.ok": "확인", "commons.west": "서", "commons.east": "동", "commons.south": "남", @@ -695,6 +743,7 @@ "shed": "한쪽흐름", "apply": "적용", "module": "모듈", + "legend": "범례", "has.sleeve": "소매 있음", "has.not.sleeve": "소매 없음", "jerkinhead.width": "반절처 폭", From 33112c1563a9d7d2244a122cd3db734dbb52fac9 Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 30 Oct 2024 17:25:51 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=EB=8B=A4=EA=B5=AD=EC=96=B4=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dimensionLine/DimensionLineSetting.jsx | 20 +++++++++---------- .../floor-plan/modal/distance/Distance.jsx | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/floor-plan/modal/dimensionLine/DimensionLineSetting.jsx b/src/components/floor-plan/modal/dimensionLine/DimensionLineSetting.jsx index d24d8d43..a09911b3 100644 --- a/src/components/floor-plan/modal/dimensionLine/DimensionLineSetting.jsx +++ b/src/components/floor-plan/modal/dimensionLine/DimensionLineSetting.jsx @@ -17,24 +17,24 @@ export default function DimensionLineSetting(props) {
-

表示の変更

+

{getMessage('contextmenu.display.edit')}

-
寸法線に表示する数値を入力してください
+
{getMessage('modal.display.edit.info')}
- 既存の長さ + {getMessage('modal.display.edit.before.length')}
- 変更の長さ + {getMessage('modal.display.edit.after.length')}
@@ -42,32 +42,32 @@ export default function DimensionLineSetting(props) {
- +
-
傾斜を着せてください。
+
{getMessage('modal.display.edit.input.slope')}
- 傾斜 + {getMessage('slope')}
{pitchText}
- 傾斜 + {getMessage('slope')}
{pitchText}
-
傾き設定されている場合、入力した数値に傾き計算をした数値が表示されます。
+
{getMessage('modal.display.edit.input.slope.info')}
- +
diff --git a/src/components/floor-plan/modal/distance/Distance.jsx b/src/components/floor-plan/modal/distance/Distance.jsx index 06a7a483..b66a1a0e 100644 --- a/src/components/floor-plan/modal/distance/Distance.jsx +++ b/src/components/floor-plan/modal/distance/Distance.jsx @@ -14,7 +14,7 @@ export default function Distance(props) {
-

距離測定

+

{getMessage('modal.distance')}

@@ -23,7 +23,7 @@ export default function Distance(props) {
-
2点間距離
+
{getMessage('modal.distance.dual.point')}
@@ -34,7 +34,7 @@ export default function Distance(props) {
-
水平距離
+
{getMessage('modal.distance.horizon')}
@@ -45,7 +45,7 @@ export default function Distance(props) {
-
垂直距離
+
{getMessage('modal.distance.vertical')}
@@ -58,7 +58,7 @@ export default function Distance(props) {
- +
From 35030dc45df8a616955e63cadb46ee71e33c0175 Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 30 Oct 2024 17:26:04 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=EA=B0=81=EB=8F=84=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../floor-plan/modal/roofShape/type/option/Shed.jsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx b/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx index 40ccdbef..c4e19a94 100644 --- a/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx +++ b/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx @@ -1,10 +1,20 @@ import { useMessage } from '@/hooks/useMessage' import { onlyNumberInputChange } from '@/util/input-utils' +import { useRecoilState } from 'recoil' +import { pitchTextSelector } from '@/store/canvasAtom' export default function Shed({ shedWidth, setShedWidth }) { const { getMessage } = useMessage() + const pitchText = useRecoilState(pitchTextSelector) return ( <> +
+ {getMessage('slope')} +
+ +
+ {pitchText} +
{getMessage('shed.width')}
From d760d1d654458608058d784bf0e30b15771d9e29 Mon Sep 17 00:00:00 2001 From: minsik Date: Wed, 30 Oct 2024 17:26:15 +0900 Subject: [PATCH 6/6] =?UTF-8?q?class=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/modal/object/SizeSetting.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/floor-plan/modal/object/SizeSetting.jsx b/src/components/floor-plan/modal/object/SizeSetting.jsx index bdb25821..fd172aee 100644 --- a/src/components/floor-plan/modal/object/SizeSetting.jsx +++ b/src/components/floor-plan/modal/object/SizeSetting.jsx @@ -16,7 +16,7 @@ export default function SizeSetting(props) { return ( -
+

{getMessage('modal.size.setting')}