From dd5cc804b348fff89407ba916cb3bd8bdea94b74 Mon Sep 17 00:00:00 2001 From: changkyu choi Date: Wed, 11 Sep 2024 13:26:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=ED=99=94=EB=A9=B4=EC=84=A4=EA=B3=84=EC=84=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/InitSettingsModal.jsx | 89 ++-------------------------- 1 file changed, 6 insertions(+), 83 deletions(-) diff --git a/src/components/InitSettingsModal.jsx b/src/components/InitSettingsModal.jsx index 5a6aad64..58f0163f 100644 --- a/src/components/InitSettingsModal.jsx +++ b/src/components/InitSettingsModal.jsx @@ -9,8 +9,7 @@ import { useAxios } from '@/hooks/useAxios' import { get, post } from '@/lib/Axios' export default function InitSettingsModal(props) { - const [objectNo, setObjectNo] = useState('test123240909002') // 후에 삭제 필요 - const [lastRoofSeq, setLastRoofSeq] = useState(0) // 마지막 roofSeq를 추적 + const [objectNo, setObjectNo] = useState('test123240909003') // 후에 삭제 필요 const [open, setOpen] = useRecoilState(modalState) const [canvasSetting, setCanvasSetting] = useRecoilState(canvasSettingState) const [roofMaterials, setRoofMaterials] = useState([]) @@ -18,7 +17,7 @@ export default function InitSettingsModal(props) { roofDrawingSet: '1', roofSizeSet: '1', roofAngleSet: 'slope', - roofs: [], + roofs: [{ roofSeq: '1', roofType: '3', roofWidth: '200', roofHeight: '200', roofGap: '0', roofLayout: 'parallel' }], }) const modelProps = { @@ -49,7 +48,8 @@ export default function InitSettingsModal(props) { }) const roofsArray = res.some((item) => !item.roofSeq) - ? null //지붕재 추가 정보가 없다면 roofsArray를 null 처리하여 지붕재 추가 정보가 보이지 않게 한다. + ? //최초 지붕재 추가 정보의 경우 roofsArray를 초기화 설정 + [{ roofSeq: '1', roofType: '3', roofWidth: '200', roofHeight: '200', roofGap: '0', roofLayout: 'parallel' }] : res.map((item) => ({ roofSeq: String(item.roofSeq), roofType: String(item.roofType), @@ -69,14 +69,6 @@ export default function InitSettingsModal(props) { // 데이터 설정 setBasicSettings({ ...patternData }) - - // 초기 roofSeq 값을 업데이트 - if (roofsArray == null) { - //roofs(지붕재추가) 값이 없으면 lastRoofSeq는 1 설정 - setLastRoofSeq(1) - } else { - setLastRoofSeq(roofsArray.length + 1) - } }) if (!(Object.keys(canvasSetting).length === 0 && canvasSetting.constructor === Object)) { @@ -90,41 +82,8 @@ export default function InitSettingsModal(props) { setBasicSettings(newBasicSetting) } - //배열 추가 함수 - const addRoofSetting = () => { - if (basicSetting.roofs != null && basicSetting.roofs.length === 4) { - alert('지붕재는 최대 4종까지 선택할 수 있습니다.') - return - } - - //roofs가 null인 경우 배열 생성 - if (basicSetting.roofs == null) { - basicSetting.roofs = [] - } - - //기본값 - const newRoofSettings = { - //roofSeq: basicSetting.roofs.length + 1, - roofSeq: lastRoofSeq, // 마지막 roofSeq를 1 증가 - roofType: '3', - roofWidth: '200', - roofHeight: '200', - roofGap: '0', - roofLayout: 'parallel', - } - - setBasicSettings((prevState) => ({ - ...prevState, - roofs: [...prevState.roofs, newRoofSettings], - })) - - setLastRoofSeq(newRoofSettings.roofSeq + 1) // roofSeq 값을 업데이트 - } - //배열 값 변경 함수 const handleRoofSettings = (id, event) => { - console.log(id) - // 기본 세팅에서 roofs 배열을 복사 const updatedRoofs = [...basicSetting.roofs] @@ -144,13 +103,6 @@ export default function InitSettingsModal(props) { roofs: updatedRoofs, })) } - - // const roof = basicSetting.roofs.map((roof, i) => (id === roof.roofSeq ? { ...roof, [event.target.name]: event.target.value } : roof)) - - // setBasicSettings((prevState) => ({ - // ...prevState, - // roofs: [...roof], - // })) } //저장 @@ -176,17 +128,6 @@ export default function InitSettingsModal(props) { //await handleSelect() } - // 삭제버튼 클릭시 해당 요소 id를 targetId로 전달받음 - const onRemove = async (targetId) => { - console.log(targetId) - - setBasicSettings((prevState) => ({ - ...prevState, - roofs: prevState.roofs.filter((roof) => roof.roofSeq !== targetId), - })) - // setBasicSettings({ ...newRoofSettings }) // 삭제한 데이터 배열을 setData()에 상태를 변화시킴 - } - return ( <>
@@ -236,15 +177,7 @@ export default function InitSettingsModal(props) {
- -
지붕재 추가(단위 : mm)
-
- - ※ 지붕재는 최대 4종까지 선택할 수 있습니다. -
- + {/* Roofs Array Rendering */} {basicSetting.roofs && basicSetting.roofs.map((roof, index) => { @@ -257,7 +190,7 @@ export default function InitSettingsModal(props) { name="roofType" onChange={(e) => handleRoofSettings(roof.roofSeq, e)} items={roofMaterials} - defaultSelectedKeys={roof.roofType ? roof.roofType : ''} + defaultSelectedKeys={roof.roofType ? [roof.roofType] : []} selectedKeys={roof.roofType} value={roof.roofType} > @@ -309,16 +242,6 @@ export default function InitSettingsModal(props) { 계단식 -
- -
) })} From 377fd87716dfabd7fb477959962b4b03367b57a2 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 11 Sep 2024 14:30:06 +0900 Subject: [PATCH 2/2] Refactor current locale change --- src/app/[locale]/layout.js | 18 +++++++++--------- src/components/auth/Login.jsx | 25 +++++++++++++++++++++++-- src/locales/ja.json | 2 +- src/store/localeAtom.js | 2 +- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/app/[locale]/layout.js b/src/app/[locale]/layout.js index 28847d66..018f1ef5 100644 --- a/src/app/[locale]/layout.js +++ b/src/app/[locale]/layout.js @@ -2,7 +2,7 @@ import { useEffect } from 'react' import { useRecoilState, useRecoilValue } from 'recoil' -import { appMessageStore, globalLocaleState } from '@/store/localeAtom' +import { appMessageStore, globalLocaleStore } from '@/store/localeAtom' import { LocaleProvider } from './LocaleProvider' import { useCurrentLocale } from '@/locales/client' import ServerError from './error' @@ -14,21 +14,21 @@ import JA from '@/locales/ja.json' export default function LocaleLayout({ children }) { const locale = useCurrentLocale() - const globalLocale = useRecoilValue(globalLocaleState) + const globalLocale = useRecoilValue(globalLocaleStore) const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore) useEffect(() => { console.log(globalLocale) console.log(sessionStorage.getItem('hi')) console.log(Object.keys(appMessageState).length) - if (Object.keys(appMessageState).length === 0) { - if (globalLocale === 'ko') { - setAppMessageState(KO) - } else { - setAppMessageState(JA) - } + // if (Object.keys(appMessageState).length === 0) { + if (globalLocale === 'ko') { + setAppMessageState(KO) + } else { + setAppMessageState(JA) } - }, []) + // } + }, [globalLocale]) return ( <> diff --git a/src/components/auth/Login.jsx b/src/components/auth/Login.jsx index 5772ab79..a5553051 100644 --- a/src/components/auth/Login.jsx +++ b/src/components/auth/Login.jsx @@ -5,18 +5,33 @@ import { setSession } from '@/lib/authActions' import { redirect } from 'next/navigation' import { useMessage } from '@/hooks/useMessage' -import { Button } from '@nextui-org/react' +import { Button, Switch } from '@nextui-org/react' import { useRecoilState } from 'recoil' +import { globalLocaleStore } from '@/store/localeAtom' import { modalContent, modalState } from '@/store/modalAtom' +import { useState } from 'react' export default function Login(props) { const { currentLocale } = props const { getMessage } = useMessage() + const [globalLocaleState, setGlbalLocaleState] = useRecoilState(globalLocaleStore) + const [isSelected, setIsSelected] = useState(globalLocaleState === 'ko' ? true : false) + + const handleSelected = () => { + if (isSelected) { + setGlbalLocaleState('ja') + } else { + setGlbalLocaleState('ko') + } + + setIsSelected(!isSelected) + } // login process const loginProcess = async (formData) => { const param = { - langCd: currentLocale, + // langCd: currentLocale + langCd: globalLocaleState, lastEditUser: formData.get('id'), loginId: formData.get('id'), pwd: formData.get('password'), @@ -174,6 +189,12 @@ export default function Login(props) { {getMessage('login.init_password.btn')}

+ +
+ + {isSelected ? 'Current Locale: KO' : 'Current Locale: JA'} + +
diff --git a/src/locales/ja.json b/src/locales/ja.json index acc6bcbb..ecc55327 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -95,7 +95,7 @@ "site.sub_name": "태양광 발전 시스템 도면관리 사이트", "login": "로그인", - "login.init_password.btn": "비밀번호 초기화", + "login.init_password.btn": "비밀번호 초기화 ja", "login.init_password.title": "비밀번호 초기화", "login.init_password.sub_title": "비밀번호를 초기화할 아이디와 이메일 주소를 입력해 주세요.", "login.init_password.complete_message": "비밀번호가 초기화 되었습니다. 초기화된 비밀번호는 아이디와 같습니다.", diff --git a/src/store/localeAtom.js b/src/store/localeAtom.js index 8070d6ac..0f20fa87 100644 --- a/src/store/localeAtom.js +++ b/src/store/localeAtom.js @@ -1,6 +1,6 @@ import { atom } from 'recoil' -export const globalLocaleState = atom({ +export const globalLocaleStore = atom({ key: 'globalLocaleState', default: 'ko', })