From 32e2eed73b22e550c44aa835cd198a5128bbf262 Mon Sep 17 00:00:00 2001 From: minsik Date: Tue, 8 Oct 2024 10:53:38 +0900 Subject: [PATCH 1/2] =?UTF-8?q?-=20=EC=98=A4=EB=B8=8C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EB=B0=B0=EC=B9=98=20=EB=AA=A8=EB=8B=AC=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/CanvasMenu.jsx | 2 + src/components/floor-plan/FloorPlan.jsx | 4 + src/components/floor-plan/MenuDepth01.jsx | 2 + .../floor-plan/modal/object/ObjectSetting.jsx | 49 ++++++++++ .../modal/object/type/OpenSpace.jsx | 53 +++++++++++ .../modal/object/type/PentagonDormer.jsx | 92 +++++++++++++++++++ .../floor-plan/modal/object/type/Shadow.jsx | 49 ++++++++++ .../modal/object/type/TriangleDormer.jsx | 81 ++++++++++++++++ .../modal/wallLineOffset/type/Offset.jsx | 38 ++++---- src/locales/ja.json | 20 +++- src/locales/ko.json | 18 +++- 11 files changed, 385 insertions(+), 23 deletions(-) create mode 100644 src/components/floor-plan/modal/object/ObjectSetting.jsx create mode 100644 src/components/floor-plan/modal/object/type/OpenSpace.jsx create mode 100644 src/components/floor-plan/modal/object/type/PentagonDormer.jsx create mode 100644 src/components/floor-plan/modal/object/type/Shadow.jsx create mode 100644 src/components/floor-plan/modal/object/type/TriangleDormer.jsx diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index 350434f0..485b536e 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -39,6 +39,7 @@ export default function CanvasMenu(props) { setShowSlopeSettingModal, setShowPlaceShapeDrawingModal, setShowRoofShapeSettingModal, + setShowObjectSettingModal, setShowRoofShapePassivitySettingModal, setShowAuxiliaryModal, setShowEavesGableEditModal, @@ -94,6 +95,7 @@ export default function CanvasMenu(props) { setShowSlopeSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, + setShowObjectSettingModal, type, } diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx index 544def8c..2b18f861 100644 --- a/src/components/floor-plan/FloorPlan.jsx +++ b/src/components/floor-plan/FloorPlan.jsx @@ -21,6 +21,7 @@ import RoofShapePassivitySetting from '@/components/floor-plan/modal/roofShape/R import AuxiliaryDrawing from '@/components/floor-plan/modal/auxiliary/AuxiliaryDrawing' import EavesGableEdit from '@/components/floor-plan/modal/eavesGable/EavesGableEdit' import WallLineOffsetSetting from '@/components/floor-plan/modal/wallLineOffset/WallLineOffsetSetting' +import ObjectSetting from '@/components/floor-plan/modal/object/ObjectSetting' export default function FloorPlan() { const [showCanvasSettingModal, setShowCanvasSettingModal] = useState(false) @@ -32,6 +33,7 @@ export default function FloorPlan() { const [showAuxiliaryModal, setShowAuxiliaryModal] = useState(false) const [showSlopeSettingModal, setShowSlopeSettingModal] = useState(false) const [showPlaceShapeDrawingModal, setShowPlaceShapeDrawingModal] = useState(false) + const [showObjectSettingModal, setShowObjectSettingModal] = useState(false) const [showEavesGableEditModal, setShowEavesGableEditModal] = useState(false) const [showWallLineOffsetSettingModal, setShowWallLineOffsetSettingModal] = useState(false) const globalLocaleState = useRecoilValue(globalLocaleStore) @@ -64,6 +66,7 @@ export default function FloorPlan() { setShowSlopeSettingModal, setShowPlaceShapeDrawingModal, setShowRoofShapeSettingModal, + setShowObjectSettingModal, setShowRoofShapePassivitySettingModal, setShowAuxiliaryModal, setShowEavesGableEditModal, @@ -137,6 +140,7 @@ export default function FloorPlan() { {showEavesGableEditModal && } {/**/} {showWallLineOffsetSettingModal && } + {showObjectSettingModal && } diff --git a/src/components/floor-plan/MenuDepth01.jsx b/src/components/floor-plan/MenuDepth01.jsx index e5c88e9b..64ba320d 100644 --- a/src/components/floor-plan/MenuDepth01.jsx +++ b/src/components/floor-plan/MenuDepth01.jsx @@ -18,6 +18,7 @@ export default function MenuDepth01(props) { setShowSlopeSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, + setShowObjectSettingModal, } = props const { getMessage } = useMessage() const [activeMenu, setActiveMenu] = useState() @@ -41,6 +42,7 @@ export default function MenuDepth01(props) { if (type === 'surface') { setShowSlopeSettingModal(id === 0) setShowPlaceShapeDrawingModal(id === 1) + setShowObjectSettingModal(id === 3) } } diff --git a/src/components/floor-plan/modal/object/ObjectSetting.jsx b/src/components/floor-plan/modal/object/ObjectSetting.jsx new file mode 100644 index 00000000..c1405e1d --- /dev/null +++ b/src/components/floor-plan/modal/object/ObjectSetting.jsx @@ -0,0 +1,49 @@ +import { useMessage } from '@/hooks/useMessage' +import WithDraggable from '@/components/common/draggable/WithDraggable' +import { useState } from 'react' +import OpenSpace from '@/components/floor-plan/modal/object/type/OpenSpace' +import Shadow from '@/components/floor-plan/modal/object/type/Shadow' +import TriangleDormer from '@/components/floor-plan/modal/object/type/TriangleDormer' +import PentagonDormer from '@/components/floor-plan/modal/object/type/PentagonDormer' + +export default function ObjectSetting({ setShowObjectSettingModal }) { + const { getMessage } = useMessage() + const [buttonAct, setButtonAct] = useState(1) + const buttonMenu = [ + { id: 1, name: getMessage('modal.object.setting.type.open.space.placement') }, + { id: 2, name: getMessage('modal.object.setting.type.shadow.placement') }, + { id: 3, name: getMessage('modal.object.setting.type.triangle.dormer') }, + { id: 4, name: getMessage('modal.object.setting.type.pentagon.dormer') }, + ] + return ( + +
+
+

{getMessage('plan.menu.placement.surface.object')}

+ +
+
+
+ {buttonMenu.map((item) => ( + + ))} +
+
+
{getMessage('setting')}
+ {buttonAct === 1 && } + {buttonAct === 2 && } + {buttonAct === 3 && } + {buttonAct === 4 && } +
+
+ +
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/object/type/OpenSpace.jsx b/src/components/floor-plan/modal/object/type/OpenSpace.jsx new file mode 100644 index 00000000..1c79dc09 --- /dev/null +++ b/src/components/floor-plan/modal/object/type/OpenSpace.jsx @@ -0,0 +1,53 @@ +import { useMessage } from '@/hooks/useMessage' + +export default function OpenSpace() { + const { getMessage } = useMessage() + return ( +
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
{getMessage('modal.object.setting.width')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('modal.object.setting.height')}
+
+
+
+ +
+ mm +
+
+
+
+
+
+
+ + +
+
+ ) +} diff --git a/src/components/floor-plan/modal/object/type/PentagonDormer.jsx b/src/components/floor-plan/modal/object/type/PentagonDormer.jsx new file mode 100644 index 00000000..e2aeea15 --- /dev/null +++ b/src/components/floor-plan/modal/object/type/PentagonDormer.jsx @@ -0,0 +1,92 @@ +import Image from 'next/image' +import { useMessage } from '@/hooks/useMessage' + +export default function PentagonDormer() { + const { getMessage } = useMessage() + return ( + <> +
+
{getMessage('modal.object.setting.size.setting')}
+
+
+ react +
+
+
+
+
{getMessage('modal.object.setting.agreement.depth')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('modal.object.setting.offset.depth')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('width')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('modal.object.setting.offset.depth')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('slope')}
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
方向の選択
+
+
+ {getMessage('commons.north')} + {getMessage('commons.east')} + {getMessage('commons.south')} + {getMessage('commons.west')} + + + + +
+
+
+ + ) +} diff --git a/src/components/floor-plan/modal/object/type/Shadow.jsx b/src/components/floor-plan/modal/object/type/Shadow.jsx new file mode 100644 index 00000000..bef52631 --- /dev/null +++ b/src/components/floor-plan/modal/object/type/Shadow.jsx @@ -0,0 +1,49 @@ +import { useMessage } from '@/hooks/useMessage' + +export default function Shadow() { + const { getMessage } = useMessage() + return ( +
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
{getMessage('modal.object.setting.width')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('modal.object.setting.height')}
+
+
+
+ +
+ mm +
+
+
+
+
+
+
+ ) +} diff --git a/src/components/floor-plan/modal/object/type/TriangleDormer.jsx b/src/components/floor-plan/modal/object/type/TriangleDormer.jsx new file mode 100644 index 00000000..8cfa55e4 --- /dev/null +++ b/src/components/floor-plan/modal/object/type/TriangleDormer.jsx @@ -0,0 +1,81 @@ +import Image from 'next/image' +import { useMessage } from '@/hooks/useMessage' + +export default function TriangleDormer() { + const { getMessage } = useMessage() + return ( + <> +
+
{getMessage('modal.object.setting.size.setting')}
+
+
+ react +
+
+
+
+
{getMessage('modal.object.setting.agreement.depth')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('modal.object.setting.offset.depth')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('width')}
+
+
+
+ +
+ mm +
+
+
+
+
{getMessage('slope')}
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
方向の選択
+
+
+ {getMessage('commons.north')} + {getMessage('commons.east')} + {getMessage('commons.south')} + {getMessage('commons.west')} + + + + +
+
+
+ + ) +} diff --git a/src/components/floor-plan/modal/wallLineOffset/type/Offset.jsx b/src/components/floor-plan/modal/wallLineOffset/type/Offset.jsx index e700b794..cc77dfa8 100644 --- a/src/components/floor-plan/modal/wallLineOffset/type/Offset.jsx +++ b/src/components/floor-plan/modal/wallLineOffset/type/Offset.jsx @@ -7,29 +7,27 @@ export default function Offset({ setShowSlopeSettingModal }) {
{getMessage('modal.wallline.offset.setting.offset.info')}
-
-
-
-
{getMessage('length')}
-
-
-
- -
- mm +
+
+
{getMessage('length')}
+
+
+
+
+ mm
-
-
{getMessage('modal.cover.outline.arrow')}
-
-
-
- - - - -
+
+
+
{getMessage('modal.cover.outline.arrow')}
+
+
+
+ + + +
diff --git a/src/locales/ja.json b/src/locales/ja.json index 5250a0fa..479c52b2 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -154,6 +154,20 @@ "modal.wallline.offset.setting.wallline.edit.position": "支店", "modal.wallline.offset.setting.offset": "オフセット", "modal.wallline.offset.setting.offset.info": "オフセットしたい外壁を選択してください。", + "modal.object.setting.type.open.space.placement": "開口部の配置", + "modal.object.setting.type.shadow.placement": "影の配置", + "modal.object.setting.type.triangle.dormer": "三角形ドーマー", + "modal.object.setting.type.pentagon.dormer": "五角形ドーマー", + "modal.object.setting.free.input": "フリー入力", + "modal.object.setting.size.input": "寸法入力", + "modal.object.setting.width": "横長", + "modal.object.setting.height": "縦長", + "modal.object.setting.area.cross": "エリア交差", + "modal.object.setting.size.setting": "サイズ設定", + "modal.object.setting.agreement.depth": "同意の深さ", + "modal.object.setting.offset.depth": "出幅 (深さ)", + "modal.object.setting.offset.width": "出幅 (幅)", + "modal.object.setting.direction.select": "方向の選択", "setting": "設定", "common.message.no.data": "No data", "common.message.no.dataDown": "ダウンロードするデータがありません", @@ -245,7 +259,7 @@ "common.require": "필수", "commons.west": "立つ", "commons.east": "ドン", - "commons.south": "M", + "commons.south": "立つ", "commons.north": "北", "site.name": "Q.CAST III", "site.sub_name": "태양광 발전 시스템 도면관리 사이트", @@ -312,6 +326,7 @@ "eaves.offset": "軒の", "gable.offset": "ケラバ出幅", "offset": "出幅", + "width": "幅", "size": "寸", "size.angle": "寸(度)", "eaves": "軒", @@ -335,5 +350,6 @@ "jerkinhead.slope": "半折先傾斜", "shed.width": "片流幅", "windage": "漂流", - "windage.width": "漂流の出幅" + "windage.width": "漂流の出幅", + "write": "作成" } diff --git a/src/locales/ko.json b/src/locales/ko.json index d29df3d0..0599fb74 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -160,6 +160,20 @@ "modal.wallline.offset.setting.wallline.edit.position": "지점", "modal.wallline.offset.setting.offset": "오프셋", "modal.wallline.offset.setting.offset.info": "오프셋 하고 싶은 외벽선을 선택하세요.", + "modal.object.setting.type.open.space.placement": "개구 배치", + "modal.object.setting.type.shadow.placement": "그림자 배치", + "modal.object.setting.type.triangle.dormer": "삼각형 도머", + "modal.object.setting.type.pentagon.dormer": "오각형 도머", + "modal.object.setting.free.input": "프리입력", + "modal.object.setting.size.input": "치수입력", + "modal.object.setting.width": "가로길이", + "modal.object.setting.height": "세로길이", + "modal.object.setting.area.cross": "영역교차", + "modal.object.setting.size.setting": "사이즈설정", + "modal.object.setting.agreement.depth": "동의길이 깊이", + "modal.object.setting.offset.depth": "출폭(깊이)", + "modal.object.setting.offset.width": "출폭(폭)", + "modal.object.setting.direction.select": "방향 선택", "setting": "설정", "common.message.no.data": "No data", "common.message.no.dataDown": "No data to download", @@ -318,6 +332,7 @@ "eaves.offset": "처마 출폭", "gable.offset": "케라바 출폭", "offset": "출폭", + "width": "폭", "size": "치수", "size.angle": "寸(度)", "eaves": "처마", @@ -341,5 +356,6 @@ "jerkinhead.slope": "반절처 경사", "shed.width": "한쪽흐름 폭", "windage": "편류", - "windage.width": "편류의 출폭" + "windage.width": "편류의 출폭", + "write": "작성" } From e13b993371256ac019584f50a2dfa959ceb8c2ec Mon Sep 17 00:00:00 2001 From: basssy Date: Tue, 8 Oct 2024 14:03:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=9B=84=20?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20or=20=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=ED=8C=9D=EC=97=85=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=ED=8C=9D=EC=97=85=20props=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.js | 2 +- src/components/auth/NewLogin.jsx | 4 ++++ src/components/common/modal/QModal.jsx | 13 +++++++++++-- src/components/header/Header.jsx | 2 +- src/store/modalAtom.js | 9 +++++++++ 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/app/page.js b/src/app/page.js index 25cd8640..767679b0 100644 --- a/src/app/page.js +++ b/src/app/page.js @@ -3,9 +3,9 @@ import { getSession } from '@/lib/authActions' export default async function Home() { const session = await getSession() - const mainPageProps = { isLoggedIn: session?.isLoggedIn, + pwdInitYn: session?.pwdInitYn, } return ( diff --git a/src/components/auth/NewLogin.jsx b/src/components/auth/NewLogin.jsx index cf56378e..5b5bc83a 100644 --- a/src/components/auth/NewLogin.jsx +++ b/src/components/auth/NewLogin.jsx @@ -19,6 +19,10 @@ export default function NewLogin() { const passwordRef = useRef(null) const router = useRouter() + useEffect(() => { + setOpen(false) + }, []) + useEffect(() => { if (passwordVisible) { passwordRef.current.type = 'text' diff --git a/src/components/common/modal/QModal.jsx b/src/components/common/modal/QModal.jsx index 1cf01915..cf98698b 100644 --- a/src/components/common/modal/QModal.jsx +++ b/src/components/common/modal/QModal.jsx @@ -4,16 +4,25 @@ import { useRecoilState, useRecoilValue } from 'recoil' import { Modal } from 'react-responsive-modal' -import { modalContent, modalState } from '@/store/modalAtom' +import { modalContent, modalState, modalProps } from '@/store/modalAtom' import 'react-responsive-modal/styles.css' export default function QModal() { const [open, setOpen] = useRecoilState(modalState) const children = useRecoilValue(modalContent) + const props = useRecoilValue(modalProps) + const { closeOnOverlayClick = true, closeOnEsc = true, showCloseIcon = true } = props return ( - setOpen(false)} center> + setOpen(false)} + center + closeOnOverlayClick={closeOnOverlayClick} + closeOnEsc={closeOnEsc} + showCloseIcon={showCloseIcon} + > {children} ) diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx index 04fd56c6..65da6051 100644 --- a/src/components/header/Header.jsx +++ b/src/components/header/Header.jsx @@ -124,7 +124,7 @@ export default function Header(props) { } return ( - !(pathName.includes('login') || pathName.includes('join')) && ( + !(pathName.includes('login') || pathName.includes('join') || sessionState.pwdInitYn === 'N') && (
diff --git a/src/store/modalAtom.js b/src/store/modalAtom.js index a9a708ac..301b5b81 100644 --- a/src/store/modalAtom.js +++ b/src/store/modalAtom.js @@ -13,3 +13,12 @@ export const modalContent = atom({ ), }) + +export const modalProps = atom({ + key: 'modalProps', + default: { + closeOnOverlayClick: true, + closeOnEsc: true, + showCloseIcon: true, + }, +})