Merge branch 'dev' of ssh://git.jetbrains.space/nalpari/q-cast-iii/qcast-front into dev

# Conflicts:
#	src/hooks/common/useCanvasPopupStatusController.js
This commit is contained in:
김민식 2025-02-08 17:53:47 +09:00
commit ffcd3e0131
5 changed files with 34 additions and 14 deletions

View File

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

View File

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

View File

@ -319,7 +319,7 @@ export function useRoofAllocationSetting(id) {
} }
const apply = () => { 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) const wallLines = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.WALL)
roofBases.forEach((roofBase) => { roofBases.forEach((roofBase) => {
try { try {

View File

@ -425,7 +425,11 @@ export function useRoofShapeSetting(id) {
const removeTargets = canvas const removeTargets = canvas
.getObjects() .getObjects()
.filter((obj) => (obj.name === 'pitchText' || obj.name === 'lengthText') && outerLines.map((id) => id).includes(obj.parentId)) .filter(
(obj) =>
(obj.name === 'pitchText' || obj.name === 'lengthText') &&
canvas.getObjects().find((parent) => parent.id === obj.parentId)?.name !== POLYGON_TYPE.ROOF,
)
removeTargets.forEach((obj) => { removeTargets.forEach((obj) => {
canvas.remove(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 이동 -> 새로운 링크로 이동 * 현재 plan 이동 -> 새로운 링크로 이동
*/ */
@ -425,5 +433,6 @@ export function usePlan(params = {}) {
handleAddPlan, handleAddPlan,
handleDeletePlan, handleDeletePlan,
loadCanvasPlanData, loadCanvasPlanData,
resetCanvasStatus,
} }
} }