소스 간소화

This commit is contained in:
changkyu choi 2024-09-02 09:05:26 +09:00
parent 085e1ff51e
commit 27838579fb
2 changed files with 126 additions and 352 deletions

View File

@ -1,7 +1,7 @@
NEXT_PUBLIC_TEST="테스트변수입니다. development" NEXT_PUBLIC_TEST="테스트변수입니다. development"
NEXT_PUBLIC_API_SERVER_PATH="http://1.248.227.176:38080" # NEXT_PUBLIC_API_SERVER_PATH="http://1.248.227.176:38080"
# NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080" NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080"
DATABASE_URL="sqlserver://mssql.devgrr.kr:1433;database=qcast;user=qcast;password=Qwertqaz12345;trustServerCertificate=true" DATABASE_URL="sqlserver://mssql.devgrr.kr:1433;database=qcast;user=qcast;password=Qwertqaz12345;trustServerCertificate=true"

View File

@ -1,420 +1,194 @@
'use client' 'use client'
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
//import { useMutation } from "react-query"; import { Button } from '@nextui-org/react';
import { Button } from '@nextui-org/react' import { get, post } from '@/lib/Axios';
import { get, post } from '@/lib/Axios'
export default function Settings() { export default function Settings() {
const [objectNo, setObjectNo] = useState('test123240829010');
const [objectNo, setObjectNo] = useState('test123240829010'); // object_no const [error, setError] = useState(null);
const [error, setError] = useState(null); //
// //
const [settings, setSettings] = useState({
const [selectedIndices1, setSelectedIndices1] = useState(['N','N','N','N','N','N','N','N','N','N','N']); // 1 display1: Array(11).fill('N'), // 1
const [selectedIndices2, setSelectedIndices2] = useState(['N','N','N']); // 2 display2: Array(3).fill('N'), // 2
const [selectedIndices3, setSelectedIndices3] = useState(0); // (default:) rangeSetting: 0, //
const [selectedIndices4, setSelectedIndices4] = useState([]); // gridSettings: [] //
});
const [gridItems1, setGridItems1] = useState([ const gridItems = {
'할당 표시', display1: [
'도면 표시', '할당 표시', '도면 표시', '그리드 표시', '문자 표시', '흐름방향 표시',
'그리드 표시', '복도치수 표시', '실제치수 표시', '치수 표시 없음', '가대 표시',
'문자 표시', '좌표 표시', '도면전환 표시'
'흐름방향 표시', ],
'복도치수 표시', display2: ['테두리만', '라인해치', 'All Painted'],
'실제치수 표시', rangeSetting: ['극소', '소', '중', '대'],
'치수 표시 없음', gridSettings: ['임의 그리드', '실선 그리드', '점 그리드', '그리드 색 설정', '흡착점 추가']
'가대 표시', };
'좌표 표시',
'도면전환 표시']);
const [gridItems2, setGridItems2] = useState(['테두리만', '라인해치', 'All Painted']);
const [gridItems3, setGridItems3] = useState(['극소', '소', '중', '대']);
const [gridItems4, setGridItems4] = useState(['임의 그리드', '실선 그리드', '점 그리드', '그리드 색 설정', '흡착점 추가']);
// //
// 1 const handleToggle = (type, index) => {
const handleClick1 = (index) => { setSettings((prevSettings) => {
setSelectedIndices1((prevSelectedIndices) => { let updated = [...prevSettings[type]];
if (prevSelectedIndices.includes(index)) {
// , ( ) if (type === 'rangeSetting') {
return prevSelectedIndices.filter((i) => i !== index); return { ...prevSettings, [type]: index };
} else {
// ,
return [...prevSelectedIndices, index];
} }
updated[index] = updated[index] === 'N' ? 'Y' : 'N';
return { ...prevSettings, [type]: updated };
}); });
}; };
// 2 // Canvas Setting
const handleClick2 = (index) => { const handleSelect = async () => {
setSelectedIndices2((prevSelectedIndices) => { try {
if (prevSelectedIndices.includes(index)) { const res = await get({ url: `/api/canvas-management/canvas-settings/by-object/${objectNo}` });
// , ( )
return prevSelectedIndices.filter((i) => i !== index); //
} else { if (!res || res.length === 0) {
// ,
return [...prevSelectedIndices, index]; console.warn('조회 결과가 없습니다.');
//
setSettings({
display1: Array(11).fill('N'), // 1
display2: Array(3).fill('N'), // 2
rangeSetting: 0, //
gridSettings: [] //
});
alert('조회된 데이터가 없습니다. 기본 설정이 적용됩니다.');
return; //
} }
});
const data = res.map((item) => ({
display1: [
item.assignDisplay, item.drawDisplay, item.gridDisplay, item.charDisplay, item.flowDisplay,
item.hallwayDimenDisplay, item.actualDimenDisplay, item.noDimenDisplay, item.trestleDisplay,
item.coordiDisplay, item.drawConverDisplay
],
display2: [item.onlyBorder, item.lineHatch, item.allPainted],
rangeSetting: Number(item.adsorpRangeSetting)
}));
setSettings({
display1: data[0].display1,
display2: data[0].display2,
rangeSetting: data[0].rangeSetting,
gridSettings: [] //
});
} catch (error) {
console.error('Data fetching error:', error);
}
}; };
// // Canvas Setting
const handleClick3 = (index) => {
setSelectedIndices3(index);
};
//
const handleClick4 = (index) => {
setSelectedIndices4((prevSelectedIndices) => {
if (prevSelectedIndices.includes(index)) {
// , ( )
return prevSelectedIndices.filter((i) => i !== index);
} else {
// ,
return [...prevSelectedIndices, index];
}
});
};
// post
// const postMutation = useMutation(
// (formData) =>
// axios.post("http://", formData, {
// headers: {
// "Content-Type": "multipart/form-data",
// },
// }),
// {
// onSuccess: () => {
// alert(" .");
// setShowModal(false);
// },
// onError: (error) => {
// //
// console.error("Error:", error);
// },
// },
// );
const handleSubmit = async (e) => { const handleSubmit = async (e) => {
e.preventDefault(); e.preventDefault();
if (objectNo) { if (!objectNo) {
handleSelect(objectNo);
} else {
alert('object_no를 입력하세요.'); alert('object_no를 입력하세요.');
return; return;
} }
let tempCnt1 = [0,1,2,3,4,5,6,7,8,9,10]
let display1 = ['N','N','N','N','N','N','N','N','N','N','N']
// 1 data
for (let i = 0; i < tempCnt1.length; i++) {
for (let j = 0; j < selectedIndices1.length; j++) {
if (i == selectedIndices1[j]) {
display1[i] = "Y"
}
}
}
let tempCnt2 = [0,1,2]
let display2 = ['N','N','N']
// 2 data
for (let i = 0; i < tempCnt2.length; i++) {
for (let j = 0; j < selectedIndices2.length; j++) {
if (i == selectedIndices2[j]) {
display2[i] = "Y"
}
}
}
//
let rangeSetting = selectedIndices3
// << objectNo .
//let objectNo = 'test123240829010'
//
const patternData = { const patternData = {
objectNo : objectNo, objectNo,
assignDisplay : display1[0], assignDisplay: settings.display1[0],
drawDisplay : display1[1], drawDisplay: settings.display1[1],
gridDisplay : display1[2], gridDisplay: settings.display1[2],
charDisplay : display1[3], charDisplay: settings.display1[3],
flowDisplay : display1[4], flowDisplay: settings.display1[4],
hallwayDimenDisplay : display1[5], hallwayDimenDisplay: settings.display1[5],
actualDimenDisplay : display1[6], actualDimenDisplay: settings.display1[6],
noDimenDisplay : display1[7], noDimenDisplay: settings.display1[7],
trestleDisplay : display1[8], trestleDisplay: settings.display1[8],
coordiDisplay : display1[9], coordiDisplay: settings.display1[9],
drawConverDisplay : display1[10], drawConverDisplay: settings.display1[10],
onlyBorder : display2[0], onlyBorder: settings.display2[0],
lineHatch : display2[1], lineHatch: settings.display2[1],
allPainted : display2[2], allPainted: settings.display2[2],
adsorpRangeSetting : rangeSetting, adsorpRangeSetting: settings.rangeSetting
} };
//console.log("patternData : ", patternData)
// Canvas Setting await post({ url: `/api/canvas-management/canvas-settings`, data: patternData });
await post({ url: `/api/canvas-management/canvas-settings`, data : patternData })
// //
handleSelect(); handleSelect();
}; };
// Canvas Setting //
const handleSelect = async () => {
//console.log("handleSelect objectNo : ", objectNo)
//
handleClick1(0)
handleClick2(0)
handleClick3(0)
handleClick4(0)
try {
get({ url: `/api/canvas-management/canvas-settings/by-object/${objectNo}` }).then((res) => {
const arrangeData = res.map((item) => {
//console.log("item : ", item)
return {
objectNo : item.objectNo,
assignDisplay : item.assignDisplay,
drawDisplay : item.drawDisplay,
gridDisplay : item.gridDisplay,
charDisplay : item.charDisplay,
flowDisplay : item.flowDisplay,
hallwayDimenDisplay : item.hallwayDimenDisplay,
actualDimenDisplay : item.actualDimenDisplay,
noDimenDisplay : item.noDimenDisplay,
trestleDisplay : item.trestleDisplay,
coordiDisplay : item.coordiDisplay,
drawConverDisplay : item.drawConverDisplay,
onlyBorder : item.onlyBorder,
lineHatch : item.lineHatch,
allPainted : item.allPainted,
adsorpRangeSetting : item.adsorpRangeSetting,
}
})
//
//setArrangeData(arrangeData);
let assignDisplay = ""
let drawDisplay = ""
let gridDisplay = ""
let charDisplay = ""
let flowDisplay = ""
let hallwayDimenDisplay = ""
let actualDimenDisplay = ""
let noDimenDisplay = ""
let trestleDisplay = ""
let coordiDisplay = ""
let drawConverDisplay = ""
let display1 = []
{arrangeData.map((gridYn1) => (
assignDisplay = gridYn1.assignDisplay,
drawDisplay = gridYn1.drawDisplay,
gridDisplay = gridYn1.gridDisplay,
charDisplay = gridYn1.charDisplay,
flowDisplay = gridYn1.flowDisplay,
hallwayDimenDisplay = gridYn1.hallwayDimenDisplay,
actualDimenDisplay = gridYn1.actualDimenDisplay,
noDimenDisplay = gridYn1.noDimenDisplay,
trestleDisplay = gridYn1.trestleDisplay,
coordiDisplay = gridYn1.coordiDisplay,
drawConverDisplay = gridYn1.drawConverDisplay
))}
display1 = [assignDisplay, drawDisplay, gridDisplay, charDisplay, flowDisplay, hallwayDimenDisplay,
actualDimenDisplay, noDimenDisplay, trestleDisplay, coordiDisplay, drawConverDisplay]
//console.log("display1 : ", display1)
//console.log("gridItems1 : ", gridItems1)
//
//
selectedIndices1.splice(0,11)
// 1 data
for (let i = 0; i < 11; i++) {
display1.forEach((data, i) => {
if ('Y' == data) {
selectedIndices1[i] = i
}
})
}
setSelectedIndices1(selectedIndices1)
let onlyBorder = ""
let lineHatch = ""
let allPainted = ""
let display2 = []
{arrangeData.map((gridYn2) => (
onlyBorder = gridYn2.onlyBorder,
lineHatch = gridYn2.lineHatch,
allPainted = gridYn2.allPainted
))}
display2 = [onlyBorder, lineHatch, allPainted]
//console.log("display2 : ", display2)
//console.log("gridItems2 : ", gridItems2)
//
//
selectedIndices2.splice(0,3)
// 2 data
for (let i = 0; i < 3; i++) {
display2.forEach((data, i) => {
if ('Y' == data) {
selectedIndices2[i] = i
}
})
}
setSelectedIndices2(selectedIndices2)
let adsorpRangeSetting = 0
{arrangeData.map((gridItems3) => (
adsorpRangeSetting = gridItems3.adsorpRangeSetting
))}
// data
setSelectedIndices3(Number(adsorpRangeSetting))
})
} catch (error) {
console.error('Data fetching error:', error);
} finally {
}
};
// Canvas Setting
useEffect(() => { useEffect(() => {
//console.log("useEffect objectNo : ", objectNo)
if (objectNo) { if (objectNo) {
handleSelect(objectNo); handleSelect(objectNo);
} else { } else {
alert('object_no를 입력하세요.'); alert('object_no를 입력하세요.');
} }
}, []);
}, [])
// Canvas Setting
const handleSelectButton = () => {
//console.log("handleSelectButton objectNo : ", objectNo)
if (objectNo) {
handleSelect(objectNo);
} else {
alert('object_no를 입력하세요.');
}
};
//
const handleInputChange = (event) => {
setObjectNo(event.target.value);
};
return ( return (
<> <>
<div className="container mx-auto p-4 m-4 border"> <div className="container mx-auto p-4 m-4 border">
<div align="right"> <div align="right">
<input type="text" placeholder="Object No 입력" value={objectNo} onChange={handleInputChange}/> <input type="text" placeholder="Object No 입력" value={objectNo} onChange={(e) => setObjectNo(e.target.value)} />
<Button onClick={handleSelectButton}>조회</Button> <Button onClick={handleSelect}>조회</Button>
<Button onClick={handleSubmit}>저장</Button> <Button onClick={handleSubmit}>저장</Button>
</div> </div>
<div className="container mx-auto p-4 m-4 border"> <div className="container mx-auto p-4 m-4 border">
<h1>[디스플레이 설정]</h1> <h1>[디스플레이 설정]</h1>
<h1>* 도면에 표시할 항목을 클릭하면 적용 됩니다.</h1> <h1>* 도면에 표시할 항목을 클릭하면 적용 됩니다.</h1>
<div className="grid-container2"> <div className="grid-container2">
{gridItems1.map((item1, index) => ( {gridItems.display1.map((item, index) => (
<div <div
key={index} key={index}
className={`grid-item ${ className={`grid-item ${settings.display1[index] === 'Y' ? 'selected' : 'unselected'}`}
selectedIndices1.includes(index) ? 'selected' : 'unselected' onClick={() => handleToggle('display1', index)}
}`}
onClick={() => handleClick1(index)}
> >
{selectedIndices1.includes(index) ? 'Y' : 'N'} {item1} {settings.display1[index]} {item}
</div> </div>
))} ))}
</div> </div>
<br/> <br />
<h1>* 화면 표시</h1> <h1>* 화면 표시</h1>
<div className="grid-container3"> <div className="grid-container3">
{gridItems2.map((item2, index) => ( {gridItems.display2.map((item, index) => (
<div <div
key={index} key={index}
className={`grid-item ${ className={`grid-item ${settings.display2[index] === 'Y' ? 'selected' : 'unselected'}`}
selectedIndices2.includes(index) ? 'selected' : 'unselected' onClick={() => handleToggle('display2', index)}
}`}
onClick={() => handleClick2(index)}
> >
{selectedIndices2.includes(index) ? 'Y' : 'N'} {item2} {settings.display2[index]} {item}
</div> </div>
))} ))}
</div> </div>
<h1>[글꼴/도면크기 설정]</h1> <h1>[글꼴/도면크기 설정]</h1>
<h1>* 글꼴 크기 변경</h1>
<div className="grid-container2">
<div className="grid-item">문자 글꼴 변경</div>
<div className="grid-item">흐름방향 글꼴 변경</div>
<div className="grid-item">치수 글꼴 변경</div>
<div className="grid-item">회로번호 글꼴 변경</div>
</div>
<h1>* 흡착 범위 설정</h1> <h1>* 흡착 범위 설정</h1>
<div className="grid-container4"> <div className="grid-container4">
{gridItems3.map((item3, index) => ( {gridItems.rangeSetting.map((item, index) => (
<div <div
key={index} key={index}
className={`grid-item ${selectedIndices3 === index ? 'selected' : 'unselected'}`} className={`grid-item ${settings.rangeSetting === index ? 'selected' : 'unselected'}`}
onClick={() => handleClick3(index)} onClick={() => handleToggle('rangeSetting', index)}
> >
{selectedIndices3 === index ? 'Y' : 'N'} {item3} {settings.rangeSetting === index ? 'Y' : 'N'} {item}
</div>
))}
</div>
<div className="grid-container3">
<div className="grid-item">치수선 설정</div>
<div className="grid-item">도면 크기 설정</div>
<div className="grid-item">흡착점 ON</div>
</div>
<h1>[그리드 설정]</h1>
<div className="grid-container2 border">
{gridItems4.map((item4, index) => (
<div
key={index}
className={`grid-item ${
selectedIndices4.includes(index) ? 'selected' : 'unselected'
}`}
onClick={() => handleClick4(index)}
>
{selectedIndices4.includes(index) ? 'Y' : 'N'} {item4}
</div> </div>
))} ))}
</div> </div>
<h1>[그리드 설정]</h1>
<div className="grid-container2 border">
{gridItems.gridSettings.map((item, index) => (
<div
key={index}
className={`grid-item ${settings.gridSettings.includes(index) ? 'selected' : 'unselected'}`}
onClick={() => handleToggle('gridSettings', index)}
>
{settings.gridSettings.includes(index) ? 'Y' : 'N'} {item}
</div>
))}
</div>
</div> </div>
</div> </div>
</> </>
) );
} }