diff --git a/src/components/InitSettingsModal.jsx b/src/components/InitSettingsModal.jsx
index 1deb81a7..5a6aad64 100644
--- a/src/components/InitSettingsModal.jsx
+++ b/src/components/InitSettingsModal.jsx
@@ -9,7 +9,8 @@ import { useAxios } from '@/hooks/useAxios'
import { get, post } from '@/lib/Axios'
export default function InitSettingsModal(props) {
- const [objectNo, setObjectNo] = useState('test123240909001') // 후에 삭제 필요
+ const [objectNo, setObjectNo] = useState('test123240909002') // 후에 삭제 필요
+ const [lastRoofSeq, setLastRoofSeq] = useState(0) // 마지막 roofSeq를 추적
const [open, setOpen] = useRecoilState(modalState)
const [canvasSetting, setCanvasSetting] = useRecoilState(canvasSettingState)
const [roofMaterials, setRoofMaterials] = useState([])
@@ -36,7 +37,7 @@ export default function InitSettingsModal(props) {
})
get({ url: `/api/canvas-management/canvas-basic-settings/by-object/${objectNo}` }).then((res) => {
- if (!res) return
+ if (res.length == 0) return
// 'roofs' 배열을 생성하여 각 항목을 추가
const roofsRow = res.map((item) => {
@@ -47,16 +48,16 @@ export default function InitSettingsModal(props) {
}
})
- const roofsArray = res.map((item) => {
- return {
- roofSeq: String(item.roofSeq),
- roofType: String(item.roofType),
- roofWidth: String(item.roofWidth),
- roofHeight: String(item.roofHeight),
- roofGap: String(item.roofGap),
- roofLayout: item.roofLayout,
- }
- })
+ const roofsArray = res.some((item) => !item.roofSeq)
+ ? null //지붕재 추가 정보가 없다면 roofsArray를 null 처리하여 지붕재 추가 정보가 보이지 않게 한다.
+ : res.map((item) => ({
+ roofSeq: String(item.roofSeq),
+ roofType: String(item.roofType),
+ roofWidth: String(item.roofWidth),
+ roofHeight: String(item.roofHeight),
+ roofGap: String(item.roofGap),
+ roofLayout: item.roofLayout,
+ }))
// 나머지 데이터와 함께 'roofs' 배열을 patternData에 넣음
const patternData = {
@@ -68,6 +69,14 @@ 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)) {
@@ -83,14 +92,20 @@ export default function InitSettingsModal(props) {
//배열 추가 함수
const addRoofSetting = () => {
- if (basicSetting.roofs.length === 4) {
+ 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: basicSetting.roofs.length + 1,
+ roofSeq: lastRoofSeq, // 마지막 roofSeq를 1 증가
roofType: '3',
roofWidth: '200',
roofHeight: '200',
@@ -102,15 +117,40 @@ export default function InitSettingsModal(props) {
...prevState,
roofs: [...prevState.roofs, newRoofSettings],
}))
+
+ setLastRoofSeq(newRoofSettings.roofSeq + 1) // roofSeq 값을 업데이트
}
//배열 값 변경 함수
const handleRoofSettings = (id, event) => {
- const roof = basicSetting.roofs.map((roof, i) => (id === roof.roofSeq ? { ...roof, [event.target.name]: event.target.value } : roof))
- setBasicSettings((prevState) => ({
- ...prevState,
- roofs: [...roof],
- }))
+ console.log(id)
+
+ // 기본 세팅에서 roofs 배열을 복사
+ const updatedRoofs = [...basicSetting.roofs]
+
+ // roofSeq가 id와 일치하는 항목의 인덱스 찾기
+ const index = updatedRoofs.findIndex((roof) => roof.roofSeq === id)
+
+ if (index !== -1) {
+ // 해당 인덱스의 항목을 수정
+ updatedRoofs[index] = {
+ ...updatedRoofs[index],
+ [event.target.name]: event.target.value,
+ }
+
+ // 수정된 배열을 상태에 반영
+ setBasicSettings((prevState) => ({
+ ...prevState,
+ 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],
+ // }))
}
//저장
@@ -205,9 +245,82 @@ export default function InitSettingsModal(props) {
※ 지붕재는 최대 4종까지 선택할 수 있습니다.
+ {/* Roofs Array Rendering */}
{basicSetting.roofs &&
basicSetting.roofs.map((roof, index) => {
- return