diff --git a/src/components/management/StuffSubHeader.jsx b/src/components/management/StuffSubHeader.jsx
index 1ea2a699..ab838335 100644
--- a/src/components/management/StuffSubHeader.jsx
+++ b/src/components/management/StuffSubHeader.jsx
@@ -1,19 +1,26 @@
'use client'
-import { useEffect } from 'react'
+import { useContext, useEffect } from 'react'
+
import Link from 'next/link'
import Image from 'next/image'
-import { useMessage } from '@/hooks/useMessage'
import { useRouter, useSearchParams } from 'next/navigation'
-import { floorPlanObjectState } from '@/store/floorPlanObjectAtom'
+
import { useSetRecoilState } from 'recoil'
+
+import { QcastContext } from '@/app/QcastProvider'
+import { useMessage } from '@/hooks/useMessage'
+import { floorPlanObjectState } from '@/store/floorPlanObjectAtom'
import { queryStringFormatter } from '@/util/common-utils'
+
export default function StuffSubHeader({ type }) {
const { getMessage } = useMessage()
const router = useRouter()
const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState)
+ const { isGlobalLoading } = useContext(QcastContext)
+
useEffect(() => {
window.scrollTo(0, 0)
}, [])
@@ -35,85 +42,87 @@ export default function StuffSubHeader({ type }) {
}
return (
- <>
-
-
- {type === 'list' && (
- <>
-
-
{getMessage('header.menus.management')}
-
-
- -
-
-
-
-
- -
- {getMessage('header.menus.management')}
-
- -
- {getMessage('header.menus.management.stuffList')}
-
-
- >
- )}
- {type === 'temp' && (
- <>
-
- -
-
- {getMessage('stuff.temp.subTitle')}
-
-
-
-
- -
-
-
-
-
- -
- {getMessage('header.menus.management')}
-
- -
- {getMessage('header.menus.management.newStuff')}
-
-
- >
- )}
- {type === 'detail' && (
- <>
-
-
- -
-
-
-
-
- -
- {getMessage('header.menus.management')}
-
- -
- {getMessage('header.menus.management.detail')}
-
-
- >
- )}
+ !isGlobalLoading && (
+ <>
+
+
+ {type === 'list' && (
+ <>
+
+
{getMessage('header.menus.management')}
+
+
+ -
+
+
+
+
+ -
+ {getMessage('header.menus.management')}
+
+ -
+ {getMessage('header.menus.management.stuffList')}
+
+
+ >
+ )}
+ {type === 'temp' && (
+ <>
+
+ -
+
+ {getMessage('stuff.temp.subTitle')}
+
+
+
+
+ -
+
+
+
+
+ -
+ {getMessage('header.menus.management')}
+
+ -
+ {getMessage('header.menus.management.newStuff')}
+
+
+ >
+ )}
+ {type === 'detail' && (
+ <>
+
+
+ -
+
+
+
+
+ -
+ {getMessage('header.menus.management')}
+
+ -
+ {getMessage('header.menus.management.detail')}
+
+
+ >
+ )}
+
-
- >
+ >
+ )
)
}
diff --git a/src/hooks/common/useRefFiles.js b/src/hooks/common/useRefFiles.js
index 05f60afe..5997b399 100644
--- a/src/hooks/common/useRefFiles.js
+++ b/src/hooks/common/useRefFiles.js
@@ -5,7 +5,7 @@ import { v4 as uuidv4 } from 'uuid'
import { useSwal } from '@/hooks/useSwal'
import { useAxios } from '../useAxios'
import { currentCanvasPlanState } from '@/store/canvasAtom'
-import { convertDwgToPng, writeImageBuffer } from '@/lib/fileAction'
+import { convertDwgToPng, removeImage, writeImageBuffer } from '@/lib/fileAction'
export function useRefFiles() {
const converterUrl = process.env.NEXT_PUBLIC_CONVERTER_API_URL
@@ -19,17 +19,51 @@ export function useRefFiles() {
const { get, promisePut, promisePost } = useAxios()
// const { currentCanvasPlan, setCurrentCanvasPlan } = usePlan()
+ useEffect(() => {
+ console.log('refImage', refImage)
+ }, [refImage])
+
+ useEffect(() => {
+ if (refFileMethod === '1') {
+ // ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
+ setMapPositionAddress('')
+ } else {
+ setRefImage(null)
+ }
+ }, [refFileMethod])
/**
* ํ์ผ ๋ถ๋ฌ์ค๊ธฐ ๋ฒํผ ์ปจํธ๋กค
* @param {*} file
*/
const handleRefFile = (file) => {
- setRefImage(file)
+ console.log('handleRefFile', file)
+ console.log('refImage', refImage)
+ if (file && ['image/png', 'image/jpg', 'image/jpeg', 'image/bmp', 'image/gif'].includes(file.type)) {
+ // setRefImage(file)
+ file.name.split('.').pop() === 'dwg' ? handleUploadConvertRefFile(file) : handleUploadImageRefFile(file)
+ } else {
+ swalFire({
+ text: '์ด๋ฏธ์ง๊ฐ ์๋๋๋ค.',
+ type: 'alert',
+ icon: 'error',
+ })
+ }
+ if (refImage) {
+ swalFire({
+ text: 'ํ์ผ์ ๋ณ๊ฒฝํ์๊ฒ ์ต๋๊น?',
+ type: 'confirm',
+ confirmFn: () => {
+ setRefImage(file)
+ file.name.split('.').pop() === 'dwg' ? handleUploadConvertRefFile(file) : handleUploadImageRefFile(file)
+ },
+ })
+ }
+
/**
* ํ์ผ ํ์ฅ์๊ฐ dwg์ผ ๊ฒฝ์ฐ ๋ณํํ์ฌ ์ด๋ฏธ์ง๋ก ์ ์ฅ
* ํ์ผ ํ์ฅ์๊ฐ ์ด๋ฏธ์ง์ผ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ์ ์ฅ
*/
- file.name.split('.').pop() === 'dwg' ? handleUploadConvertRefFile(file) : handleUploadImageRefFile(file)
+
// handleUploadRefFile(file)
}
@@ -37,15 +71,34 @@ export function useRefFiles() {
* ํ์ผ ์ญ์
*/
const handleFileDelete = () => {
- setRefImage(null)
- setCurrentCanvasPlan((prev) => ({ ...prev, bgFileName: null }))
+ swalFire({
+ text: '์ญ์ ํ์๊ฒ ์ต๋๊น?',
+ type: 'confirm',
+ confirmFn: () => {
+ setRefImage(null)
+ setCurrentCanvasPlan((prev) => ({ ...prev, bgFileName: null }))
+ removeImage(currentCanvasPlan.id).then((res) => {
+ console.log(res)
+ })
+ },
+ })
}
/**
* ์ฃผ์ ์ญ์
*/
const handleAddressDelete = () => {
- setCurrentCanvasPlan((prev) => ({ ...prev, mapPositionAddress: null }))
+ swalFire({
+ text: '์ญ์ ํ์๊ฒ ์ต๋๊น?',
+ type: 'confirm',
+ confirmFn: () => {
+ setMapPositionAddress('')
+ setCurrentCanvasPlan((prev) => ({ ...prev, mapPositionAddress: null }))
+ removeImage(currentCanvasPlan.id).then((res) => {
+ console.log(res)
+ })
+ },
+ })
}
/**
@@ -56,9 +109,10 @@ export function useRefFiles() {
return
}
- const res = await get({ url: `http://localhost:3000/api/html2canvas?q=${queryRef.current.value}&fileNm=${uuidv4()}&zoom=20` })
- console.log('๐ ~ handleMapImageDown ~ res:', res)
- setCurrentCanvasPlan((prev) => ({ ...prev, bgImageName: res.fileNm, mapPositionAddress: queryRef.current.value }))
+ const res = await get({ url: `http://localhost:3000/api/html2canvas?q=${queryRef.current.value}&fileNm=${currentCanvasPlan.id}&zoom=20` })
+ // console.log('๐ ~ handleMapImageDown ~ res:', res)
+ console.log('currentCanvasPlan', currentCanvasPlan)
+ setCurrentCanvasPlan((prev) => ({ ...prev, bgImageName: currentCanvasPlan.id, mapPositionAddress: queryRef.current.value }))
}
/**
@@ -66,9 +120,10 @@ export function useRefFiles() {
* @param {*} file
*/
const handleUploadImageRefFile = async (file) => {
- console.log('๐ ~ handleUploadImageRefFile ~ file:', file)
+ // console.log('๐ ~ handleUploadImageRefFile ~ file:', file)
const formData = new FormData()
formData.append('file', file)
+ formData.append('fileName', currentCanvasPlan.id)
const response = await fetch('http://localhost:3000/api/image-upload', {
method: 'POST',
@@ -76,7 +131,8 @@ export function useRefFiles() {
})
const result = await response.json()
- console.log('๐ ~ handleUploadImageRefFile ~ res:', result)
+ setRefImage(file)
+ // console.log('๐ ~ handleUploadImageRefFile ~ res:', result)
// writeImageBuffer(file)
}
@@ -92,6 +148,7 @@ export function useRefFiles() {
.then((res) => {
convertDwgToPng(res.data.Files[0].FileName, res.data.Files[0].FileData)
swalFire({ text: 'ํ์ผ ๋ณํ ์ฑ๊ณต' })
+ setRefImage(res.data.Files[0].FileData)
})
.catch((err) => {
swalFire({ text: 'ํ์ผ ๋ณํ ์คํจ', icon: 'error' })
@@ -110,7 +167,7 @@ export function useRefFiles() {
* ํ์ฌ ํ๋์ด ๋ณ๊ฒฝ๋๋ฉด ํ๋ ์ํ ์ ์ฅ
*/
useEffect(() => {
- console.log('๐ ~ useRefFiles ~ currentCanvasPlan:', currentCanvasPlan)
+ // console.log('๐ ~ useRefFiles ~ currentCanvasPlan:', currentCanvasPlan)
// const handleCurrentPlan = async () => {
// await promisePut({ url: '/api/canvas-management/canvas-statuses', data: currentCanvasPlan }).then((res) => {
// console.log('๐ ~ awaitpromisePut ~ res:', res)
diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js
index 7fd11bc3..0b3be4d5 100644
--- a/src/hooks/module/useModuleBasicSetting.js
+++ b/src/hooks/module/useModuleBasicSetting.js
@@ -1,5 +1,4 @@
-import { useContext, useEffect, useState } from 'react'
-import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
+import { useRecoilState, useRecoilValue } from 'recoil'
import { canvasState } from '@/store/canvasAtom'
import { rectToPolygon, setSurfaceShapePattern } from '@/util/canvas-util'
import { roofDisplaySelector } from '@/store/settingAtom'
@@ -10,9 +9,7 @@ import { moduleSetupSurfaceState, moduleIsSetupState } from '@/store/canvasAtom'
import { useEvent } from '@/hooks/useEvent'
import { POLYGON_TYPE, BATCH_TYPE } from '@/common/common'
import * as turf from '@turf/turf'
-import { EventContext } from '@/app/floor-plan/EventProvider'
import { v4 as uuidv4 } from 'uuid'
-import { useMainContentsController } from '../main/useMainContentsController'
export function useModuleBasicSetting() {
const canvas = useRecoilValue(canvasState)
diff --git a/src/hooks/option/useCanvasSettingController.js b/src/hooks/option/useCanvasSettingController.js
deleted file mode 100644
index 48db6c08..00000000
--- a/src/hooks/option/useCanvasSettingController.js
+++ /dev/null
@@ -1,127 +0,0 @@
-import { settingModalFirstOptionsState, settingModalSecondOptionsState } from '@/store/settingAtom'
-import { useEffect, useState } from 'react'
-import { useRecoilState } from 'recoil'
-
-export const useCanvasSettingController = () => {
- const [settingModalFirstOptions, setSettingModalFirstOptions] = useRecoilState(settingModalFirstOptionsState)
- const [settingModalSecondOptions, setSettingModalSecondOptions] = useRecoilState(settingModalSecondOptionsState)
- const [objectNo, setObjectNo] = useState('test123240912001') // ์ดํ ์ญ์ ํ์
- const { get } = useAxios()
-
- useEffect(() => {
- fetchSettings()
- }, [objectNo])
-
- useEffect(() => {
- fetchSettings()
- }, [])
-
- useEffect(() => {
- onClickOnlyOne()
- fetchSettings()
- }, [settingModalFirstOptions, settingModalSecondOptions])
-
- const fetchSettings = async () => {
- try {
- const res = await get({ url: `/api/canvas-management/canvas-settings/by-object/${objectNo}` })
- const optionData1 = settingModalFirstOptions.option1.map((item) => ({ ...item, selected: res[item.column] }))
- const optionData2 = settingModalFirstOptions.option2.map((item) => ({ ...item, selected: res[item.column] }))
- const optionData3 = settingModalSecondOptions.option3.map((item) => ({ ...item }))
- const optionData4 = settingModalSecondOptions.option4.map((item) => ({ ...item, selected: res[item.column] }))
- const optionData5 = settingModalFirstOptions.dimensionDisplay.map((item) => ({
- ...item,
- }))
- // ๋ฐ์ดํฐ ์ค์
- setSettingModalFirstOptions({
- option1: optionData1,
- option2: optionData2,
- dimensionDisplay: optionData5,
- })
- setSettingModalSecondOptions({
- option3: optionData3,
- option4: optionData4,
- })
- } catch (error) {
- console.error('Data fetching error:', error)
- }
- }
-
- //
- const onClickOption = async (option) => {
- option.selected = !option.selected
-
- setSettingModalFirstOptions({ option1, option2, dimensionDisplay })
- setSettingModalSecondOptions({ option3, option4 })
-
- try {
- // ์๋ฒ์ ์ ์กํ ๋ฐ์ดํฐ
- const dataToSend = {
- firstOption1: option1.map((item) => ({
- column: item.column,
- selected: item.selected,
- })),
- firstOption2: option2.map((item) => ({
- column: item.column,
- selected: item.selected,
- })),
- firstOption3: dimensionDisplay.map((item) => ({
- column: item.column,
- selected: item.selected,
- })),
- // secondOption1: secondOptions[0].option1.map((item) => ({
- // name: item.id,
- // name: item.name,
- // // ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํญ๋ชฉ ์ถ๊ฐ
- // })),
- secondOption2: option4.map((item) => ({
- column: item.column,
- selected: item.selected,
- })),
- }
-
- const patternData = {
- objectNo,
- //๋์คํ๋ ์ด ์ค์ (๋ค์ค)
- allocDisplay: dataToSend.firstOption1[0].selected,
- outlineDisplay: dataToSend.firstOption1[1].selected,
- gridDisplay: dataToSend.firstOption1[2].selected,
- lineDisplay: dataToSend.firstOption1[3].selected,
- wordDisplay: dataToSend.firstOption1[4].selected,
- circuitNumDisplay: dataToSend.firstOption1[5].selected,
- flowDisplay: dataToSend.firstOption1[6].selected,
- trestleDisplay: dataToSend.firstOption1[7].selected,
- totalDisplay: dataToSend.firstOption1[8].selected,
- //์ฐจ์ ํ์(๋ค๊ฑด)
- corridorDimension: dataToSend.firstOption3[0].selected,
- realDimension: dataToSend.firstOption3[1].selected,
- noneDimension: dataToSend.firstOption3[2].selected,
- //ํ๋ฉด ํ์(๋ค์ค)
- onlyBorder: dataToSend.firstOption2[0].selected,
- lineHatch: dataToSend.firstOption2[1].selected,
- allPainted: dataToSend.firstOption2[2].selected,
- //ํก์ฐฉ๋ฒ์ ์ค์ (๋จ๊ฑด)
- adsorpRangeSmall: dataToSend.secondOption2[0].selected,
- adsorpRangeSmallSemi: dataToSend.secondOption2[1].selected,
- adsorpRangeMedium: dataToSend.secondOption2[2].selected,
- adsorpRangeLarge: dataToSend.secondOption2[3].selected,
- }
-
- // HTTP POST ์์ฒญ ๋ณด๋ด๊ธฐ
- await post({ url: `/api/canvas-management/canvas-settings`, data: patternData }).then((res) => {
- swalFire({ text: getMessage(res.returnMessage) })
- })
- } catch (error) {
- swalFire({ text: getMessage(res.returnMessage), icon: 'error' })
- }
- }
-
- return {
- fetchSettings,
- settingModalFirstOptions,
- setSettingModalFirstOptions,
- settingModalSecondOptions,
- setSettingModalSecondOptions,
- onClickOption,
- ร,
- }
-}
diff --git a/src/hooks/roofcover/useOuterLineWall.js b/src/hooks/roofcover/useOuterLineWall.js
index c668dd60..74bfcbcc 100644
--- a/src/hooks/roofcover/useOuterLineWall.js
+++ b/src/hooks/roofcover/useOuterLineWall.js
@@ -1,4 +1,4 @@
-import { useContext, useEffect, useRef } from 'react'
+import { useEffect, useRef } from 'react'
import { distanceBetweenPoints } from '@/util/canvas-util'
import { useRecoilState, useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil'
import {
@@ -31,7 +31,6 @@ import { fabric } from 'fabric'
import { outlineDisplaySelector } from '@/store/settingAtom'
import { usePopup } from '@/hooks/usePopup'
import PropertiesSetting from '@/components/floor-plan/modal/outerlinesetting/PropertiesSetting'
-import { EventContext } from '@/app/floor-plan/EventProvider'
//์ธ๋ฒฝ์ ๊ทธ๋ฆฌ๊ธฐ
export function useOuterLineWall(id, propertiesId) {
diff --git a/src/hooks/useEvent.js b/src/hooks/useEvent.js
index 16d0896d..55058cf4 100644
--- a/src/hooks/useEvent.js
+++ b/src/hooks/useEvent.js
@@ -1,4 +1,4 @@
-import { useCallback, useEffect, useRef } from 'react'
+import { useRef } from 'react'
import { useRecoilValue, useSetRecoilState } from 'recoil'
import { canvasState, canvasZoomState, currentMenuState, textModeState } from '@/store/canvasAtom'
import { fabric } from 'fabric'
@@ -20,9 +20,15 @@ export function useEvent() {
const textMode = useRecoilValue(textModeState)
- useEffect(() => {
- initEvent()
- }, [currentMenu, canvas, adsorptionPointAddMode, adsorptionPointMode, adsorptionRange, dotLineGridSetting, tempGridMode])
+ // ์ด๋ฒคํธ ์ด๊ธฐํ ์์น ์์ -> useCanvasSetting์์ ์ธํ
๊ฐ ๋ถ๋ฌ์ค๊ณ ๋์ ์ด๊ธฐํ ํจ์ ํธ์ถ
+ // useEffect(() => {
+ // initEvent()
+ // }, [currentMenu, canvas, adsorptionPointAddMode, adsorptionPointMode, adsorptionRange, dotLineGridSetting])
+
+ // ์์ ๊ทธ๋ฆฌ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ ์ด๋ฒคํธ ์ด๊ธฐํ ํธ์ถ ์์น ์์ -> GridOption ์ปดํฌ๋ํธ์์ ์์ ๊ทธ๋ฆฌ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ ์ด๋ฒคํธ ์ด๊ธฐํ ํจ์ ํธ์ถ
+ // useEffect(() => {
+ // initEvent()
+ // }, [tempGridMode])
const initEvent = () => {
if (!canvas) {
diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js
index 6b1336a5..3f3ad1a0 100644
--- a/src/hooks/usePlan.js
+++ b/src/hooks/usePlan.js
@@ -6,6 +6,7 @@ import { useAxios } from '@/hooks/useAxios'
import { useMessage } from '@/hooks/useMessage'
import { useSwal } from '@/hooks/useSwal'
import { SAVE_KEY } from '@/common/common'
+import { readImage } from '@/lib/fileAction'
export function usePlan() {
const [planNum, setPlanNum] = useState(0)
@@ -204,6 +205,7 @@ export function usePlan() {
userId: userId,
imageName: 'image_name', // api ํ์ํญ๋ชฉ์ด์ฌ์ ์์๋ก ๋ฃ์, ์ดํ ์ญ์ ํ์
objectNo: currentCanvasPlan.objectNo,
+ mapPositionAddress: currentCanvasPlan.mapPositionAddress,
canvasStatus: canvasToDbFormat(canvasStatus),
}
await promisePost({ url: '/api/canvas-management/canvas-statuses', data: planData })
@@ -233,6 +235,7 @@ export function usePlan() {
const putCanvasStatus = async (canvasStatus) => {
const planData = {
id: currentCanvasPlan.id,
+ mapPositionAddress: currentCanvasPlan.mapPositionAddress,
canvasStatus: canvasToDbFormat(canvasStatus),
}
await promisePut({ url: '/api/canvas-management/canvas-statuses', data: planData })
@@ -285,6 +288,7 @@ export function usePlan() {
updateCurrentPlan(newCurrentId)
}
}
+
const updateCurrentPlan = (newCurrentId) => {
setPlans((plans) =>
plans.map((plan) => {
@@ -295,8 +299,13 @@ export function usePlan() {
useEffect(() => {
setCurrentCanvasPlan(plans.find((plan) => plan.isCurrent) || null)
setSelectedPlan(plans.find((plan) => plan.isCurrent))
+ // setBgImage()
}, [plans])
+ const setBgImage = () => {
+ readImage(selectedPlan?.id)
+ }
+
/**
* ์๋ก์ด plan ์์ฑ
* ํ์ฌ plan์ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ ๋ณต์ ์ฌ๋ถ๋ฅผ ํ์ธ
diff --git a/src/lib/fileAction.js b/src/lib/fileAction.js
index d09473a8..6f88758a 100644
--- a/src/lib/fileAction.js
+++ b/src/lib/fileAction.js
@@ -4,6 +4,7 @@ import fs from 'fs/promises'
const CAD_FILE_PATH = 'public/cad-images'
const IMAGE_FILE_PATH = 'public/plan-bg-images'
+const FILE_PATH = 'public/plan-images'
/**
* ํ์ผ ๋ณํ & ์ ์ฅ
@@ -39,25 +40,54 @@ const writeImageBase64 = async (title, data) => {
return fs.writeFile(`${IMAGE_FILE_PATH}/${title}.png`, data, 'base64')
}
-/**
- * ์ด๋ฏธ์ง ์ ์ฅ
- * Buffer ํ์์ผ๋ก ์ ์ฅ
- * @param {*} title
- * @param {*} data
- * @returns
- */
-const writeImageBuffer = async (file) => {
- // ํด๋น ๊ฒฝ๋ก์ Directory ๊ฐ ์๋ค๋ฉด ์์ฑ
+// /**
+// * ์ด๋ฏธ์ง ์ ์ฅ
+// * Buffer ํ์์ผ๋ก ์ ์ฅ
+// * @param {*} title
+// * @param {*} data
+// * @returns
+// */
+// const writeImageBuffer = async (file) => {
+// // ํด๋น ๊ฒฝ๋ก์ Directory ๊ฐ ์๋ค๋ฉด ์์ฑ
+// try {
+// await fs.readdir(IMAGE_FILE_PATH)
+// } catch {
+// await fs.mkdir(IMAGE_FILE_PATH)
+// }
+//
+// const arrayBuffer = await fileURLToPath.arrayBuffer()
+// const buffer = new Uint8Array(arrayBuffer)
+//
+// return fs.writeFile(`${IMAGE_FILE_PATH}/${file.fileName}`, buffer)
+// }
+
+const writeImage = async (fileName, file) => {
try {
- await fs.readdir(IMAGE_FILE_PATH)
+ await fs.readdir(FILE_PATH)
} catch {
- await fs.mkdir(IMAGE_FILE_PATH)
+ await fs.mkdir(FILE_PATH)
}
- const arrayBuffer = await fileURLToPath.arrayBuffer()
- const buffer = new Uint8Array(arrayBuffer)
-
- return fs.writeFile(`${IMAGE_FILE_PATH}/${file.fileName}`, buffer)
+ return fs.writeFile(`${FILE_PATH}/${fileName}.png`, file)
}
-export { convertDwgToPng, writeImageBase64, writeImageBuffer }
+const readImage = async (fileName) => {
+ await fs
+ .readFile(`${FILE_PATH}/${fileName}.png`)
+ .then((res) => {
+ console.log('readImage-then', res)
+ })
+ .catch((e) => {
+ console.log('readImage-catch', e)
+ })
+}
+
+const removeImage = async (fileName) => {
+ try {
+ await fs.rm(`${FILE_PATH}/${fileName}.png`)
+ } catch (e) {
+ console.log(e)
+ }
+}
+
+export { convertDwgToPng, writeImageBase64, writeImage, readImage, removeImage }
diff --git a/src/locales/ja.json b/src/locales/ja.json
index 7697cf69..d41ca44a 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -341,6 +341,7 @@
"modal.panel.column.insert.info": "ๆฟๅ
ฅใใๆนๅใ้ธๆใใฆใใ ใใใ",
"modal.panel.column.insert.type.left": "ๅทฆๆฟๅ
ฅ",
"modal.panel.column.insert.type.right": "ๅณๆฟๅ
ฅ",
+ "modal.image.load.size.rotate": "ใตใคใบ่ชฟๆดใจๅ่ปข",
"contextmenu.column.insert": "ๅใฎๆฟๅ
ฅ",
"contextmenu.row.move": "๋จ ์ด๋(JA)",
"contextmenu.row.copy": "๋จ ๋ณต์ฌ(JA)",
@@ -483,9 +484,13 @@
"common.message.writeToConfirm": "ไฝๆ่งฃ้คใๅฎ่กใใพใใ๏ผ",
"common.message.password.init.success": "ใในใฏใผใ [{0}] ใซๅๆๅใใใพใใใ",
"common.message.no.edit.save": "ใใฎๆๆธใฏๅคๆดใงใใพใใใ",
+ "common.load": "ใใกใคใซใฎ่ฟฝๅ ",
"common.input.file": "ใใกใคใซใ่ชญใฟ่พผใ",
"common.input.file.load": "ใใกใคใซใฎ่ฟฝๅ ",
+ "common.input.image.load": "์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ",
+ "common.input.address.load": "ใขใใฌในใ่ชญใฟ่พผใ",
"common.require": "ๅฟ
้ ",
+ "common.finish": "ๅฎไบ",
"common.ok": "็ขบ่ช",
"commons.west": "็ซใค",
"commons.east": "ใใณ",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index 4b12d055..7287c914 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -348,6 +348,7 @@
"modal.panel.column.insert.info": "์ฝ์
ํ ๋ฐฉํฅ์ ์ ํํด์ฃผ์ธ์.",
"modal.panel.column.insert.type.left": "์ผ์ชฝ ์ฝ์
",
"modal.panel.column.insert.type.right": "์ค๋ฅธ์ชฝ ์ฝ์
",
+ "modal.image.load.size.rotate": "ํฌ๊ธฐ ์กฐ์ ๋ฐ ํ์ ",
"contextmenu.row.move": "๋จ ์ด๋",
"contextmenu.row.copy": "๋จ ๋ณต์ฌ",
"contextmenu.row.remove": "๋จ ์ญ์ ",
@@ -492,9 +493,13 @@
"common.message.writeToConfirm": "์์ฑ ํด์ ๋ฅผ ์คํํ์๊ฒ ์ต๋๊น?",
"common.message.password.init.success": "๋น๋ฐ๋ฒํธ [{0}]๋ก ์ด๊ธฐํ ๋์์ต๋๋ค.",
"common.message.no.edit.save": "This document cannot be changed.",
+ "common.load": "๋ถ๋ฌ์ค๊ธฐ",
"common.input.file": "ํ์ผ ๋ถ๋ฌ์ค๊ธฐ",
"common.input.file.load": "๋ถ๋ฌ์ค๊ธฐ",
+ "common.input.image.load": "์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ",
+ "common.input.address.load": "์ฃผ์ ๋ถ๋ฌ์ค๊ธฐ",
"common.require": "ํ์",
+ "common.finish": "์๋ฃ",
"common.ok": "ํ์ธ",
"commons.west": "์",
"commons.east": "๋",
diff --git a/src/styles/_contents.scss b/src/styles/_contents.scss
index e72637e4..8d3b1408 100644
--- a/src/styles/_contents.scss
+++ b/src/styles/_contents.scss
@@ -139,6 +139,7 @@
&.ico02{background-image: url(../../public/static/images/canvas/ico-flx02.svg);}
&.ico03{background-image: url(../../public/static/images/canvas/ico-flx03.svg);}
&.ico04{background-image: url(../../public/static/images/canvas/ico-flx04.svg);}
+ &.ico05{background-image: url(../../public/static/images/canvas/ico-flx05.svg);}
}
.name{
font-size: 12px;
@@ -827,6 +828,47 @@
&:last-child{
margin-bottom: 0;
}
+ .file-item-wrap{
+ display: flex;
+ align-items: center;
+ gap: 30px;
+ .return-wrap{
+ display: flex;
+ align-items: center;
+ }
+ .return{
+ padding: 0;
+ font-size: 13px;
+ color: #B0BCCD;
+ text-decoration: line-through;
+ }
+ .return-btn{
+ flex: none;
+ position: relative;
+ top: 0;
+ left: 0;
+ transform: none;
+ display: flex;
+ align-items: center;
+ height: 24px;
+ padding: 0 9px;
+ margin-left: 10px;
+ background: none;
+ border: 1px solid #B0BCCD;
+ border-radius: 2px;
+ font-size: 12px;
+ color: #B0BCCD;
+ font-weight: 500;
+ .return-ico{
+ display: block;
+ width: 14px;
+ height: 14px;
+ background: url(../../public/static/images/canvas/return-btn.svg)no-repeat center;
+ background-size: contain;
+ margin-right: 5px;
+ }
+ }
+ }
}
}
}
@@ -877,6 +919,16 @@
&.act{
background-color: #F7F9FA;
}
+ .special-note-check-box{
+ display: flex;
+ align-items: center;
+ .check-name{
+ font-size: 13px;
+ color: #45576F;
+ cursor: pointer;
+ line-height: 1.3;
+ }
+ }
}
}