Merge branch 'dev' into dev-yj

This commit is contained in:
yjnoh 2025-02-08 17:55:40 +09:00
commit 5d1487bc50
5 changed files with 41 additions and 18 deletions

View File

@ -34,7 +34,7 @@ export default function CanvasFrame() {
const currentMenu = useRecoilValue(currentMenuState)
const { floorPlanState } = useContext(FloorPlanContext)
const { contextMenu, handleClick } = useContextMenu()
const { plans, currentCanvasPlan } = usePlan()
const { plans, currentCanvasPlan, resetCanvasStatus } = usePlan()
const totalDisplay = useRecoilValue(totalDisplaySelector) //
const { setIsGlobalLoading } = useContext(QcastContext)
const resetModuleStatisticsState = useResetRecoilState(moduleStatisticsState)
@ -45,20 +45,21 @@ export default function CanvasFrame() {
const resetSelectedModelsState = useResetRecoilState(selectedModelsState)
const resetPcsCheckState = useResetRecoilState(pcsCheckState)
const { handleModuleSelectionTotal } = useCanvasPopupStatusController()
const loadCanvas = () => {
if (canvas) {
canvas?.clear() // .
if (currentCanvasPlan) {
const plan = plans.find((plan) => plan.id === currentCanvasPlan.id)
if (plan?.canvasStatus && floorPlanState.objectNo === currentCanvasPlan.objectNo) {
canvas?.loadFromJSON(JSON.parse(plan.canvasStatus), function () {
canvasLoadInit() //config
canvas?.renderAll() // .
})
}
if (!canvas) return
canvas?.clear() // .
if (currentCanvasPlan) {
const plan = plans.find((plan) => plan.id === currentCanvasPlan.id)
if (plan?.canvasStatus && floorPlanState.objectNo === currentCanvasPlan.objectNo) {
canvas?.loadFromJSON(JSON.parse(plan.canvasStatus), function () {
canvasLoadInit() //config
canvas?.renderAll() // .
})
}
gridInit()
}
gridInit()
}
useEffect(() => {
@ -69,6 +70,11 @@ export default function CanvasFrame() {
useEffect(() => {
setIsGlobalLoading(false)
return () => {
canvas?.clear()
resetCanvasStatus()
}
}, [])
const resetRecoilData = () => {

View File

@ -49,10 +49,12 @@ export function useCanvasPopupStatusController(param = 1) {
for (let i = 1; i < 3; i++) {
const result = await getModuleSelection(i)
// setModuleSelectionTotal((prev) => ({ ...prev, [i]: JSON.parse(unescapeString(result.popupStatus)) }))
if (i === 1) {
setCompasDeg(result.popupStatus)
} else if (i === 2) {
setModuleSelectionDataStore(JSON.parse(unescapeString(result.popupStatus)))
if (result) {
if (i === 1) {
setCompasDeg(result.popupStatus)
} else if (i === 2) {
setModuleSelectionDataStore(JSON.parse(unescapeString(result.popupStatus)))
}
}
}
}

View File

@ -319,7 +319,7 @@ export function useRoofAllocationSetting(id) {
}
const apply = () => {
const roofBases = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF)
const roofBases = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.ROOF && !obj.roofMaterial)
const wallLines = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.WALL)
roofBases.forEach((roofBase) => {
try {

View File

@ -423,7 +423,13 @@ export function useRoofShapeSetting(id) {
canvas.remove(obj)
})
const removeTargets = canvas.getObjects().filter((obj) => obj.name === 'pitchText' || obj.name === 'lengthText')
const removeTargets = canvas
.getObjects()
.filter(
(obj) =>
(obj.name === 'pitchText' || obj.name === 'lengthText') &&
canvas.getObjects().find((parent) => parent.id === obj.parentId)?.name !== POLYGON_TYPE.ROOF,
)
removeTargets.forEach((obj) => {
canvas.remove(obj)
})

View File

@ -407,6 +407,14 @@ export function usePlan(params = {}) {
})
}
/**
* plan canvasStatus 초기화
*/
const resetCanvasStatus = () => {
setCurrentCanvasPlan((prev) => ({ ...prev, canvasStatus: null }))
setPlans((plans) => plans.map((plan) => ({ ...plan, canvasStatus: null })))
}
/**
* 현재 plan 이동 -> 새로운 링크로 이동
*/
@ -425,5 +433,6 @@ export function usePlan(params = {}) {
handleAddPlan,
handleDeletePlan,
loadCanvasPlanData,
resetCanvasStatus,
}
}