Merge branch 'dev' of https://git.jetbrains.space/nalpari/q-cast-iii/qcast-front into dev
This commit is contained in:
commit
5a47b60bb3
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import { useEffect } from 'react'
|
import { useEffect } from 'react'
|
||||||
import { useRecoilState, useRecoilValue } from 'recoil'
|
import { useRecoilState, useRecoilValue } from 'recoil'
|
||||||
import { appMessageStore, globalLocaleState } from '@/store/localeAtom'
|
import { appMessageStore, globalLocaleStore } from '@/store/localeAtom'
|
||||||
import { LocaleProvider } from './LocaleProvider'
|
import { LocaleProvider } from './LocaleProvider'
|
||||||
import { useCurrentLocale } from '@/locales/client'
|
import { useCurrentLocale } from '@/locales/client'
|
||||||
import ServerError from './error'
|
import ServerError from './error'
|
||||||
@ -14,21 +14,21 @@ import JA from '@/locales/ja.json'
|
|||||||
|
|
||||||
export default function LocaleLayout({ children }) {
|
export default function LocaleLayout({ children }) {
|
||||||
const locale = useCurrentLocale()
|
const locale = useCurrentLocale()
|
||||||
const globalLocale = useRecoilValue(globalLocaleState)
|
const globalLocale = useRecoilValue(globalLocaleStore)
|
||||||
const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore)
|
const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log(globalLocale)
|
console.log(globalLocale)
|
||||||
console.log(sessionStorage.getItem('hi'))
|
console.log(sessionStorage.getItem('hi'))
|
||||||
console.log(Object.keys(appMessageState).length)
|
console.log(Object.keys(appMessageState).length)
|
||||||
if (Object.keys(appMessageState).length === 0) {
|
// if (Object.keys(appMessageState).length === 0) {
|
||||||
if (globalLocale === 'ko') {
|
if (globalLocale === 'ko') {
|
||||||
setAppMessageState(KO)
|
setAppMessageState(KO)
|
||||||
} else {
|
} else {
|
||||||
setAppMessageState(JA)
|
setAppMessageState(JA)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, [])
|
// }
|
||||||
|
}, [globalLocale])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -9,8 +9,7 @@ import { useAxios } from '@/hooks/useAxios'
|
|||||||
import { get, post } from '@/lib/Axios'
|
import { get, post } from '@/lib/Axios'
|
||||||
|
|
||||||
export default function InitSettingsModal(props) {
|
export default function InitSettingsModal(props) {
|
||||||
const [objectNo, setObjectNo] = useState('test123240909002') // 후에 삭제 필요
|
const [objectNo, setObjectNo] = useState('test123240909003') // 후에 삭제 필요
|
||||||
const [lastRoofSeq, setLastRoofSeq] = useState(0) // 마지막 roofSeq를 추적
|
|
||||||
const [open, setOpen] = useRecoilState(modalState)
|
const [open, setOpen] = useRecoilState(modalState)
|
||||||
const [canvasSetting, setCanvasSetting] = useRecoilState(canvasSettingState)
|
const [canvasSetting, setCanvasSetting] = useRecoilState(canvasSettingState)
|
||||||
const [roofMaterials, setRoofMaterials] = useState([])
|
const [roofMaterials, setRoofMaterials] = useState([])
|
||||||
@ -18,7 +17,7 @@ export default function InitSettingsModal(props) {
|
|||||||
roofDrawingSet: '1',
|
roofDrawingSet: '1',
|
||||||
roofSizeSet: '1',
|
roofSizeSet: '1',
|
||||||
roofAngleSet: 'slope',
|
roofAngleSet: 'slope',
|
||||||
roofs: [],
|
roofs: [{ roofSeq: '1', roofType: '3', roofWidth: '200', roofHeight: '200', roofGap: '0', roofLayout: 'parallel' }],
|
||||||
})
|
})
|
||||||
|
|
||||||
const modelProps = {
|
const modelProps = {
|
||||||
@ -49,7 +48,8 @@ export default function InitSettingsModal(props) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const roofsArray = res.some((item) => !item.roofSeq)
|
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) => ({
|
: res.map((item) => ({
|
||||||
roofSeq: String(item.roofSeq),
|
roofSeq: String(item.roofSeq),
|
||||||
roofType: String(item.roofType),
|
roofType: String(item.roofType),
|
||||||
@ -69,14 +69,6 @@ export default function InitSettingsModal(props) {
|
|||||||
|
|
||||||
// 데이터 설정
|
// 데이터 설정
|
||||||
setBasicSettings({ ...patternData })
|
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)) {
|
if (!(Object.keys(canvasSetting).length === 0 && canvasSetting.constructor === Object)) {
|
||||||
@ -90,41 +82,8 @@ export default function InitSettingsModal(props) {
|
|||||||
setBasicSettings(newBasicSetting)
|
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) => {
|
const handleRoofSettings = (id, event) => {
|
||||||
console.log(id)
|
|
||||||
|
|
||||||
// 기본 세팅에서 roofs 배열을 복사
|
// 기본 세팅에서 roofs 배열을 복사
|
||||||
const updatedRoofs = [...basicSetting.roofs]
|
const updatedRoofs = [...basicSetting.roofs]
|
||||||
|
|
||||||
@ -144,13 +103,6 @@ export default function InitSettingsModal(props) {
|
|||||||
roofs: updatedRoofs,
|
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()
|
//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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="container mx-auto mt-10 p-6 bg-white shadow-lg rounded-lg">
|
<div className="container mx-auto mt-10 p-6 bg-white shadow-lg rounded-lg">
|
||||||
@ -236,15 +177,7 @@ export default function InitSettingsModal(props) {
|
|||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<RadioGroup label="지붕재 추가(단위 : mm)" />
|
||||||
<div className="flex space-x-4">지붕재 추가(단위 : mm)</div>
|
|
||||||
<div className="flex items-center mb-4">
|
|
||||||
<button className="px-3 py-1 bg-blue-500 text-white rounded mr-3" onClick={addRoofSetting}>
|
|
||||||
Add
|
|
||||||
</button>
|
|
||||||
<span className="text-sm text-gray-500">※ 지붕재는 최대 4종까지 선택할 수 있습니다.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* Roofs Array Rendering */}
|
{/* Roofs Array Rendering */}
|
||||||
{basicSetting.roofs &&
|
{basicSetting.roofs &&
|
||||||
basicSetting.roofs.map((roof, index) => {
|
basicSetting.roofs.map((roof, index) => {
|
||||||
@ -257,7 +190,7 @@ export default function InitSettingsModal(props) {
|
|||||||
name="roofType"
|
name="roofType"
|
||||||
onChange={(e) => handleRoofSettings(roof.roofSeq, e)}
|
onChange={(e) => handleRoofSettings(roof.roofSeq, e)}
|
||||||
items={roofMaterials}
|
items={roofMaterials}
|
||||||
defaultSelectedKeys={roof.roofType ? roof.roofType : ''}
|
defaultSelectedKeys={roof.roofType ? [roof.roofType] : []}
|
||||||
selectedKeys={roof.roofType}
|
selectedKeys={roof.roofType}
|
||||||
value={roof.roofType}
|
value={roof.roofType}
|
||||||
>
|
>
|
||||||
@ -309,16 +242,6 @@ export default function InitSettingsModal(props) {
|
|||||||
<Radio value="cascade">계단식</Radio>
|
<Radio value="cascade">계단식</Radio>
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex space-x-4">
|
|
||||||
<Button
|
|
||||||
size="sm"
|
|
||||||
onClick={() => {
|
|
||||||
onRemove(roof.roofSeq)
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
삭제
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
|
|||||||
@ -5,18 +5,33 @@ import { setSession } from '@/lib/authActions'
|
|||||||
import { redirect } from 'next/navigation'
|
import { redirect } from 'next/navigation'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
|
|
||||||
import { Button } from '@nextui-org/react'
|
import { Button, Switch } from '@nextui-org/react'
|
||||||
import { useRecoilState } from 'recoil'
|
import { useRecoilState } from 'recoil'
|
||||||
|
import { globalLocaleStore } from '@/store/localeAtom'
|
||||||
import { modalContent, modalState } from '@/store/modalAtom'
|
import { modalContent, modalState } from '@/store/modalAtom'
|
||||||
|
import { useState } from 'react'
|
||||||
|
|
||||||
export default function Login(props) {
|
export default function Login(props) {
|
||||||
const { currentLocale } = props
|
const { currentLocale } = props
|
||||||
const { getMessage } = useMessage()
|
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
|
// login process
|
||||||
const loginProcess = async (formData) => {
|
const loginProcess = async (formData) => {
|
||||||
const param = {
|
const param = {
|
||||||
langCd: currentLocale,
|
// langCd: currentLocale
|
||||||
|
langCd: globalLocaleState,
|
||||||
lastEditUser: formData.get('id'),
|
lastEditUser: formData.get('id'),
|
||||||
loginId: formData.get('id'),
|
loginId: formData.get('id'),
|
||||||
pwd: formData.get('password'),
|
pwd: formData.get('password'),
|
||||||
@ -174,6 +189,12 @@ export default function Login(props) {
|
|||||||
{getMessage('login.init_password.btn')}
|
{getMessage('login.init_password.btn')}
|
||||||
</Button>
|
</Button>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div className="flex align-center mt-2">
|
||||||
|
<Switch isSelected={isSelected} onValueChange={handleSelected}>
|
||||||
|
{isSelected ? 'Current Locale: KO' : 'Current Locale: JA'}
|
||||||
|
</Switch>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -95,7 +95,7 @@
|
|||||||
"site.sub_name": "태양광 발전 시스템 도면관리 사이트",
|
"site.sub_name": "태양광 발전 시스템 도면관리 사이트",
|
||||||
|
|
||||||
"login": "로그인",
|
"login": "로그인",
|
||||||
"login.init_password.btn": "비밀번호 초기화",
|
"login.init_password.btn": "비밀번호 초기화 ja",
|
||||||
"login.init_password.title": "비밀번호 초기화",
|
"login.init_password.title": "비밀번호 초기화",
|
||||||
"login.init_password.sub_title": "비밀번호를 초기화할 아이디와 이메일 주소를 입력해 주세요.",
|
"login.init_password.sub_title": "비밀번호를 초기화할 아이디와 이메일 주소를 입력해 주세요.",
|
||||||
"login.init_password.complete_message": "비밀번호가 초기화 되었습니다. 초기화된 비밀번호는 아이디와 같습니다.",
|
"login.init_password.complete_message": "비밀번호가 초기화 되었습니다. 초기화된 비밀번호는 아이디와 같습니다.",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { atom } from 'recoil'
|
import { atom } from 'recoil'
|
||||||
|
|
||||||
export const globalLocaleState = atom({
|
export const globalLocaleStore = atom({
|
||||||
key: 'globalLocaleState',
|
key: 'globalLocaleState',
|
||||||
default: 'ko',
|
default: 'ko',
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user