From d92493b4e869719098b9e988cec02e982ebab759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:54:08 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=ED=8D=BC=EB=B8=94=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ContextRoofAllocationSetting.jsx | 325 +++++++++--------- 1 file changed, 169 insertions(+), 156 deletions(-) diff --git a/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx b/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx index 5bfad3e4..88188887 100644 --- a/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx +++ b/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx @@ -45,175 +45,188 @@ export default function ContextRoofAllocationSetting(props) { return (
-
-

{getMessage('plan.menu.estimate.roof.alloc')}

- -
-
-
{getMessage('modal.roof.alloc.info')}
-
- {getMessage('modal.roof.alloc.select.roof.material')} -
- { - // const selected = roofMaterials.find((roofMaterial) => roofMaterial.roofMatlCd === e.id) - setCurrentRoofMaterial(e) - }} - showKey={'roofMatlNm'} - sourceKey={'roofMatlCd'} - targetKey={'roofMatlCd'} - /> + {currentRoofList && ( + <> +
+

{getMessage('plan.menu.estimate.roof.alloc')}

+
- -
-
- {currentRoofList.length > 0 && - currentRoofList.map((roof, index) => { - return ( -
-
- - -
-
-
-
-
- handleChangeRoofMaterial(e, index)} - /> -
- {index === 0 && {getMessage('modal.roof.alloc.default.roof.material')}} - {index !== 0 && } +
+
{getMessage('modal.roof.alloc.info')}
+
+ {getMessage('modal.roof.alloc.select.roof.material')} +
+ { + // const selected = roofMaterials.find((roofMaterial) => roofMaterial.roofMatlCd === e.id) + setCurrentRoofMaterial(e) + }} + showKey={'roofMatlNm'} + sourceKey={'roofMatlCd'} + targetKey={'roofMatlCd'} + /> +
+ +
+
+
+ {currentRoofList.map((roof, index) => { + return ( +
+
+ +
-
-
-
- {getMessage('slope')} -
- { - handleChangeInput(e, currentAngleType === 'slope' ? 'pitch' : 'angle', index) - }} - defaultValue={currentAngleType === 'slope' ? roof.pitch : roof.angle} - /> -
- {pitchText} -
-
- {(roof.widAuth || roof.lenAuth) && ( -
- {roof.widAuth && ( +
+
- W -
- +
+ handleChangeRoofMaterial(e, index)} + />
+ {index === 0 && {getMessage('modal.roof.alloc.default.roof.material')}} + {index !== 0 && ( + + + + )}
- )} - {roof.lenAuth && ( +
+
- L -
- + {getMessage('slope')} +
+ { + handleChangeInput(e, currentAngleType === 'slope' ? 'pitch' : 'angle', index) + }} + defaultValue={currentAngleType === 'slope' ? roof.pitch : roof.angle} + />
+ {pitchText}
- )} -
- )} - {(roof.raftAuth || roof.roofPchAuth) && ( -
- {roof.raftAuth && ( -
-
- {getMessage('modal.placement.initial.setting.rafter')} - {raftCodes.length > 0 && ( -
- +
+ {(roof.widAuth || roof.lenAuth) && ( + <> + {roof.widAuth && ( +
+
+ W +
+ +
- )} -
-
- )} - {roof.roofPchAuth && ( -
-
- {getMessage('hajebichi')} -
-
-
-
+ )} + {roof.lenAuth && ( +
+
+ L +
+ +
+
+
+ )} + )} -
- )} -
-
- - + {(roof.raftAuth || roof.roofPchAuth) && ( + <> + {roof.raftAuth && ( +
+
+ {getMessage('modal.placement.initial.setting.rafter')} + {raftCodes.length > 0 && ( +
+ +
+ )} +
+
+ )} + {roof.roofPchAuth && ( +
+
+ {getMessage('hajebichi')} +
+ +
+
+
+ )} + + )} +
+
+ + +
+
-
-
- ) - })} -
-
- -
-
+ ) + })} +
+
+
+ +
+
+ + )}
From 14d6c91f37343c501dfa40253d2b77061f454b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:55:12 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=A7=91=EA=B3=84=ED=91=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95,=20W=EB=8B=A8=EC=9C=84=20->=20kW?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasFrame.jsx | 1 - .../circuitTrestle/CircuitTrestleSetting.jsx | 18 ++- .../step/type/PassivityCircuitAllocation.jsx | 133 ++---------------- src/hooks/module/useModule.js | 93 +++++++++++- src/hooks/module/useModuleBasicSetting.js | 6 +- src/store/circuitTrestleAtom.js | 5 +- 6 files changed, 125 insertions(+), 131 deletions(-) diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx index 31698b1a..85315a23 100644 --- a/src/components/floor-plan/CanvasFrame.jsx +++ b/src/components/floor-plan/CanvasFrame.jsx @@ -28,7 +28,6 @@ export default function CanvasFrame() { const { currentCanvasPlan } = usePlan() const totalDisplay = useRecoilValue(totalDisplaySelector) // 집계표 표시 여부 const { setIsGlobalLoading } = useContext(QcastContext) - const [moduleStatistics, setModuleStatistics] = useRecoilState(moduleStatisticsState) const reset = useResetRecoilState(moduleStatisticsState) const loadCanvas = () => { if (canvas) { diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index adeb0300..2c5927fe 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -273,22 +273,28 @@ export default function CircuitTrestleSetting({ id }) { id: uuidv4(), } }) - const PcsVoltageChkParams = { + const pcsVoltageChkParams = { ...getOptYn(), useModuleItemList: getUseModuleItemList(), roofSurfaceList: getRoofSurfaceList(), pcsItemList: getPcsItemList(), } setSelectedModels(selectedModels) - getPcsVoltageChk(PcsVoltageChkParams).then((res) => {}) + getPcsVoltageChk(pcsVoltageChkParams).then((res) => { + setAllocationType(ALLOCATION_TYPE.PASSIVITY) + }) } else { swalFire({ - title: '파워컨디셔너를 추가해 주세요.', + title: res.result.resultMsg, type: 'alert', + confirmFn: () => { + return + }, }) + return } }) - } else if (pcsCheck.max) { + } else { const moduleStdQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleStdQty) }, 0) @@ -306,9 +312,9 @@ export default function CircuitTrestleSetting({ id }) { }) return } - } - setAllocationType(ALLOCATION_TYPE.PASSIVITY) + setAllocationType(ALLOCATION_TYPE.PASSIVITY) + } } // StepUp에서 선택된 값들을 처리하는 함수 수정 diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 7cbca2da..aa151d9c 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -1,6 +1,7 @@ import { GlobalDataContext } from '@/app/GlobalDataProvider' import { POLYGON_TYPE } from '@/common/common' import { useMasterController } from '@/hooks/common/useMasterController' +import { useModule } from '@/hooks/module/useModule' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { canvasState } from '@/store/canvasAtom' @@ -11,37 +12,29 @@ import { useRecoilState, useRecoilValue } from 'recoil' export default function PassivityCircuitAllocation(props) { const { - tabNum, - setTabNum, selectedModels, setSelectedModels, getOptYn: getApiProps, getUseModuleItemList: getSelectedModuleList, getSelectModelList: getSelectModelList, - getRoofSurfaceList, - getModelList, } = props const { swalFire } = useSwal() const { getMessage } = useMessage() const canvas = useRecoilValue(canvasState) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const selectedModules = useRecoilValue(selectedModuleState) - const [moduleStatistics, setModuleStatistics] = useRecoilState(moduleStatisticsState) - // const [totalWpout, setTotalWpout] = useState(0) const [selectedPcs, setSelectedPcs] = useState(selectedModels[0]) - // const { header, rows: row } = moduleStatistics - const [header, setHeader] = useState(moduleStatistics.header) - const [rows, setRows] = useState(moduleStatistics.rows) - const [footer, setFooter] = useState(['합계']) + const { header, rows, footer } = useRecoilValue(moduleStatisticsState) const [circuitNumber, setCircuitNumber] = useState(1) const [targetModules, setTargetModules] = useState([]) + const { setModuleStatisticsData } = useModule() const { getPcsManualConfChk } = useMasterController() useEffect(() => { console.log('header, rows', header, rows) console.log('selectedModels', selectedModels) // setSurfaceInfo() - setTableData() + setModuleStatisticsData() if (!managementState) { setManagementState(managementStateLoaded) } @@ -158,7 +151,14 @@ export default function PassivityCircuitAllocation(props) { } const handleCircuitNumberFix = () => { - let uniqueCircuitNumbers = null + let uniqueCircuitNumbers = [ + ...new Set( + canvas + .getObjects() + .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuitNumber) + .map((obj) => obj.circuitNumber), + ), + ] if (!circuitNumber || circuitNumber === 0) { swalFire({ text: '회로번호를 1 이상입력해주세요.', @@ -174,15 +174,6 @@ export default function PassivityCircuitAllocation(props) { }) return } else if (selectedModels.length > 1) { - uniqueCircuitNumbers = [ - ...new Set( - canvas - .getObjects() - .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuitNumber) - .map((obj) => obj.circuitNumber), - ), - ] - let result = false uniqueCircuitNumbers.forEach((number) => { if ( @@ -335,7 +326,7 @@ export default function PassivityCircuitAllocation(props) { setTargetModules([]) setCircuitNumber(+circuitNumber + 1) - setTableData() + setModuleStatisticsData() }) } @@ -347,100 +338,6 @@ export default function PassivityCircuitAllocation(props) { } } - const setTableData = () => { - const tempHeader = [ - { name: getMessage('simulator.table.sub1'), prop: 'name' }, - { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, - ...selectedModules.itemList.map((module) => { - return { - name: module.itemNm, - prop: module.itemId, - } - }), - { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, - ] - - const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) - const surfaceIds = surfaces.map((surface) => surface.parentId) - const surfaceObjects = {} - const rows = surfaces.map((surface) => { - const moduleObject = {} - surfaceObjects[surface.id] = { - roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, - circuit: '-', - amount: 0, - wpOut: 0, - circuits: {}, - } - - surface.modules.forEach((module) => { - if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) { - // 지붕면에 모듈 존재 여부 - surfaceObjects[surface.id][module.moduleInfo.itemId] = 0 // 모듈 초기화 - } - - surfaceObjects[surface.id][module.moduleInfo.itemId]++ - surfaceObjects[surface.id].wpOut += +module.moduleInfo.wpOut - if (module.circuit) { - if (!surfaceObjects[surface.id].circuits[module.circuitNumber]) { - surfaceObjects[surface.id].circuits[module.circuitNumber] = { - circuit: module.circuitNumber, - wpOut: 0, - circuits: { wpOut: 0 }, - } - - if (!surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]) { - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId] = 0 - } - } - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]++ - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut += +module.moduleInfo.wpOut - surfaceObjects[surface.id].wpOut -= +module.moduleInfo.wpOut - surfaceObjects[surface.id][module.moduleInfo.itemId]-- - } - }) - }) - console.log('rows', rows) - console.log('surfaceObjects', surfaceObjects) - let tempRows = [] - Object.keys(surfaceObjects).forEach((key) => { - let tempRow = { - name: surfaceObjects[key].roofSurface, - circuit: surfaceObjects[key].circuit, - wpOut: surfaceObjects[key].wpOut, - } - selectedModules.itemList.forEach((module) => { - tempRow[module.itemId] = surfaceObjects[key][module.itemId] - }) - tempRows.push(tempRow) - - Object.keys(surfaceObjects[key].circuits).forEach((circuit) => { - let row = { - name: surfaceObjects[key].roofSurface, - circuit: surfaceObjects[key].circuits[circuit].circuit, - wpOut: surfaceObjects[key].circuits[circuit].circuits.wpOut, - } - selectedModules.itemList.forEach((module) => { - row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId] - }) - tempRows.push(row) - }) - }) - const tempFooter = { - name: '총합', - circuit: '-', - wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0), - } - selectedModules.itemList.forEach((module) => { - tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0) - }) - - setHeader(tempHeader) - setRows(tempRows.filter((row) => row.wpOut !== 0)) - setFooter(tempFooter) - setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter }) - } - const initSelectedPcsCircuitNumber = () => { swalFire({ title: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.init.info'), @@ -516,9 +413,7 @@ export default function PassivityCircuitAllocation(props) { {header.map((header, i) => ( - {typeof footer[header.prop] === 'number' - ? footer[header.prop].toLocaleString('ko-KR', { maximumFractionDigits: 4 }) - : footer[header.prop]} + {footer[header.prop]} ))} diff --git a/src/hooks/module/useModule.js b/src/hooks/module/useModule.js index de64c404..80aa17d7 100644 --- a/src/hooks/module/useModule.js +++ b/src/hooks/module/useModule.js @@ -1,12 +1,14 @@ import { BATCH_TYPE, POLYGON_TYPE } from '@/common/common' import { canvasState } from '@/store/canvasAtom' import { isOverlap, polygonToTurfPolygon, rectToPolygon } from '@/util/canvas-util' -import { useRecoilValue } from 'recoil' +import { useRecoilValue, useSetRecoilState } from 'recoil' import { v4 as uuidv4 } from 'uuid' import * as turf from '@turf/turf' import { useSwal } from '../useSwal' import { useModuleBasicSetting } from './useModuleBasicSetting' import { useMessage } from '../useMessage' +import { selectedModuleState } from '@/store/selectedModuleOptions' +import { moduleStatisticsState } from '@/store/circuitTrestleAtom' export const MODULE_REMOVE_TYPE = { LEFT: 'left', @@ -35,6 +37,8 @@ export function useModule() { const { swalFire } = useSwal() const { getMessage } = useMessage() const { checkModuleDisjointObjects } = useModuleBasicSetting() + const selectedModules = useRecoilValue(selectedModuleState) + const setModuleStatistics = useSetRecoilState(moduleStatisticsState) const moduleMove = (length, direction) => { const selectedObj = canvas.getActiveObjects() //선택된 객체들을 가져옴 @@ -929,6 +933,92 @@ export function useModule() { .filter((obj) => [BATCH_TYPE.OPENING, BATCH_TYPE.TRIANGLE_DORMER, BATCH_TYPE.PENTAGON_DORMER, BATCH_TYPE.SHADOW].includes(obj.name)) } + const setModuleStatisticsData = () => { + const tempHeader = [ + { name: getMessage('simulator.table.sub1'), prop: 'name' }, + { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, + ...selectedModules.itemList.map((module) => { + return { + name: module.itemNm, + prop: module.itemId, + } + }), + { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, + ] + const surfaceObjects = {} + const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) + const rows = surfaces.map((surface) => { + surfaceObjects[surface.id] = { + roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, + circuit: '-', + amount: 0, + wpOut: 0, + circuits: {}, + } + + surface.modules.forEach((module) => { + if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) { + // 지붕면에 모듈 존재 여부 + surfaceObjects[surface.id][module.moduleInfo.itemId] = 0 // 모듈 초기화 + } + + surfaceObjects[surface.id][module.moduleInfo.itemId]++ + surfaceObjects[surface.id].wpOut += +module.moduleInfo.wpOut + if (module.circuit) { + if (!surfaceObjects[surface.id].circuits[module.circuitNumber]) { + surfaceObjects[surface.id].circuits[module.circuitNumber] = { + circuit: module.circuitNumber, + wpOut: 0, + circuits: { wpOut: 0 }, + } + + if (!surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]) { + surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId] = 0 + } + } + surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]++ + surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut += +module.moduleInfo.wpOut + surfaceObjects[surface.id].wpOut -= +module.moduleInfo.wpOut + surfaceObjects[surface.id][module.moduleInfo.itemId]-- + } + }) + }) + let tempRows = [] + Object.keys(surfaceObjects).forEach((key) => { + let tempRow = { + name: surfaceObjects[key].roofSurface, + circuit: surfaceObjects[key].circuit, + wpOut: parseInt((surfaceObjects[key].wpOut / 1000).toFixed(3)), + } + selectedModules.itemList.forEach((module) => { + tempRow[module.itemId] = surfaceObjects[key][module.itemId] + }) + tempRows.push(tempRow) + + Object.keys(surfaceObjects[key].circuits).forEach((circuit) => { + let row = { + name: surfaceObjects[key].roofSurface, + circuit: surfaceObjects[key].circuits[circuit].circuit, + wpOut: parseInt((surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000).toFixed(3)), + } + selectedModules.itemList.forEach((module) => { + row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId] + }) + tempRows.push(row) + }) + }) + + const tempFooter = { + name: getMessage('modal.panel.batch.statistic.total'), + circuit: '-', + wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0), + } + selectedModules.itemList.forEach((module) => { + tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0) + }) + setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter }) + } + return { moduleMove, moduleMultiMove, @@ -942,5 +1032,6 @@ export function useModule() { muduleRowInsert, modulesRemove, alignModule, + setModuleStatisticsData, } } diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index 20575fd7..9665955e 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -2452,7 +2452,7 @@ export function useModuleBasicSetting(tabNum) { ...surface, name: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, // 지붕면 // powerGeneration: wpOut.toLocaleString('ko-KR', { maximumFractionDigits: 4 }), - wpOut: wpOut, + wpOut: (wpOut / 1000).toFixed(3), } }) @@ -2465,7 +2465,7 @@ export function useModuleBasicSetting(tabNum) { }), { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, ] - let footer = ['합계'] + let footer = [getMessage('modal.panel.batch.statistic.total')] let footerData = {} rows.forEach((row) => { Object.keys(moduleInfo).map((key) => { @@ -2476,7 +2476,7 @@ export function useModuleBasicSetting(tabNum) { Object.keys(footerData).forEach((key) => { footer.push(footerData[key]) }) - footer.push(totalWpout) + footer.push((totalWpout / 1000).toFixed(3)) console.log({ header: header, rows, footer: footer }) setModuleStatistics({ header: header, rows, footer: footer }) } diff --git a/src/store/circuitTrestleAtom.js b/src/store/circuitTrestleAtom.js index ea54835a..d1477e13 100644 --- a/src/store/circuitTrestleAtom.js +++ b/src/store/circuitTrestleAtom.js @@ -40,7 +40,10 @@ export const moduleStatisticsState = atom({ { name: `발전량(kW)`, prop: 'amount' }, ], rows: [], - footer: ['합계', '0'], + footer: [ + { name: '-', prop: 'name' }, + { name: 0, prop: 'amount' }, + ], }, dangerouslyAllowMutability: true, }) From 870a39d74d1edaac0e913d8d6bda7871ca211537 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 5 Feb 2025 09:58:05 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=93=83test:=20=EA=B2=AC=EC=A0=81?= =?UTF-8?q?=EC=84=9C=20=EC=9D=B4=EB=8F=99=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Playground.jsx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx index b2e64edc..8a365646 100644 --- a/src/components/Playground.jsx +++ b/src/components/Playground.jsx @@ -28,6 +28,8 @@ import useSWRMutation from 'swr/mutation' import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' import { moduleSelectionDataPlanListState } from '@/store/selectedModuleOptions' +import { useRouter } from 'next/navigation' +import { QcastContext } from '@/app/QcastProvider' export default function Playground() { const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState) @@ -56,6 +58,13 @@ export default function Playground() { const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) + const router = useRouter() + const { setIsGlobalLoading } = useContext(QcastContext) + + useEffect(() => { + setIsGlobalLoading(false) + }, []) + useEffect(() => { console.log('textInput:', textInput) }, [textInput]) @@ -891,6 +900,19 @@ export default function Playground() { Test Data insert
+
+ +
) From 10f77a4acdea7df168ecfb5672a72caf5c492594 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Wed, 5 Feb 2025 10:08:26 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EB=B3=B5=EC=8B=9C=EB=8F=84=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EC=9D=B4=20=EC=95=84=EB=8B=8C=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=EB=8A=94=20=EA=B0=81=EB=8F=84=20=EA=B3=84=EC=82=B0=20=ED=95=84?= =?UTF-8?q?=EC=9A=94=20x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/module/useTrestle.js | 14 +++++++++++++- src/util/canvas-util.js | 5 ----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/hooks/module/useTrestle.js b/src/hooks/module/useTrestle.js index 9c580971..fffe27c9 100644 --- a/src/hooks/module/useTrestle.js +++ b/src/hooks/module/useTrestle.js @@ -2,9 +2,10 @@ import { useRecoilValue } from 'recoil' import { canvasState, currentAngleTypeSelector } from '@/store/canvasAtom' import { POLYGON_TYPE } from '@/common/common' import { moduleSelectionDataState } from '@/store/selectedModuleOptions' -import { getDegreeByChon, getTrestleLength } from '@/util/canvas-util' +import { getDegreeByChon } from '@/util/canvas-util' import { v4 as uuidv4 } from 'uuid' import { useMasterController } from '@/hooks/common/useMasterController' +import { basicSettingState } from '@/store/settingAtom' // 회로 및 가대설정 export const useTrestle = () => { @@ -12,6 +13,7 @@ export const useTrestle = () => { const moduleSelectionData = useRecoilValue(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터 const { getQuotationItem } = useMasterController() const currentAngleType = useRecoilValue(currentAngleTypeSelector) + const roofSizeSet = useRecoilValue(basicSettingState).roofSizeSet const apply = () => { try { @@ -1787,6 +1789,16 @@ export const useTrestle = () => { return groups } + // 각도에 따른 길이 반환 + function getTrestleLength(length, degree) { + if (roofSizeSet !== 1) { + // 복시도 입력이 아닌경우 그냥 길이 return + return length + } + const radians = (degree * Math.PI) / 180 + return length * Math.cos(radians) + } + // 견적서 아이템 조회 api parameter 생성 const getTrestleParams = (surface) => { const result = calculateForApi(surface) diff --git a/src/util/canvas-util.js b/src/util/canvas-util.js index 2204eaec..a0442d9f 100644 --- a/src/util/canvas-util.js +++ b/src/util/canvas-util.js @@ -1031,8 +1031,3 @@ export function calculateVisibleModuleHeight(sourceWidth, sourceHeight, angle, d height: Number(visibleHeight.toFixed(1)), // 소수점 두 자리로 고정 } } - -export function getTrestleLength(length, degree) { - const radians = (degree * Math.PI) / 180 - return length * Math.cos(radians) -}