diff --git a/package.json b/package.json
index c11ef8dc..bbd8c881 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
"next": "14.2.3",
"next-international": "^1.2.4",
"react": "^18",
+ "react-colorful": "^5.6.1",
"react-datepicker": "^7.3.0",
"react-dom": "^18",
"react-responsive-modal": "^6.4.2",
@@ -35,6 +36,7 @@
"postcss": "^8",
"prettier": "^3.3.3",
"prisma": "^5.18.0",
+ "react-color-palette": "^7.2.2",
"sass": "^1.77.8",
"tailwindcss": "^3.4.1"
}
diff --git a/public/drawTemplates/153302.svg b/public/drawTemplates/153302.svg
new file mode 100644
index 00000000..3b1c97b0
--- /dev/null
+++ b/public/drawTemplates/153302.svg
@@ -0,0 +1,23 @@
+
+
+
diff --git a/public/drawTemplates/shape21.svg b/public/drawTemplates/shape21.svg
new file mode 100644
index 00000000..a2d901e7
--- /dev/null
+++ b/public/drawTemplates/shape21.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/src/components/SettingsModal.jsx b/src/components/GridSettingsModal.jsx
similarity index 87%
rename from src/components/SettingsModal.jsx
rename to src/components/GridSettingsModal.jsx
index dc7dc5ba..35bb1793 100644
--- a/src/components/SettingsModal.jsx
+++ b/src/components/GridSettingsModal.jsx
@@ -4,8 +4,10 @@ import { useRecoilState, useRecoilValue } from 'recoil'
import { modalContent, modalState } from '@/store/modalAtom'
import { guideLineState, horiGuideLinesState, vertGuideLinesState } from '@/store/canvasAtom'
import { fabric } from 'fabric'
+import { ColorPicker, useColor } from 'react-color-palette'
+import 'react-color-palette/css'
-export default function SettingsModal(props) {
+export default function GridSettingsModal(props) {
const { canvasProps } = props
const [isCustomGridSetting, setIsCustomGridSetting] = useState(true)
const [gridCheckedValue, setGridCheckValue] = useState([])
@@ -21,6 +23,15 @@ export default function SettingsModal(props) {
const gridSettingArray = []
+ const [guideColor, setGuideColor] = useColor('rgb(200, 15, 15)')
+ const [colorPickerShow, setColorPickerShow] = useState(false)
+
+ const boxStyle = {
+ width: '50px',
+ height: '30px',
+ border: '1px solid black',
+ backgroundColor: guideColor.hex,
+ }
useEffect(() => {
moduleLength.current.value = 90
customModuleHoriLength.current.value = 90
@@ -56,7 +67,7 @@ export default function SettingsModal(props) {
const horizontalLine = new fabric.Line(
[0, i * moduleVertLength - moduleVertLength / 2, canvasProps.width, i * moduleVertLength - moduleVertLength / 2],
{
- stroke: 'gray',
+ stroke: guideColor.hex,
strokeWidth: 1,
selectable: true,
lockMovementX: true,
@@ -65,6 +76,8 @@ export default function SettingsModal(props) {
lockScalingX: true,
lockScalingY: true,
name: 'guideLine',
+ strokeDashArray: [5, 2],
+ opacity: 0.3,
direction: 'horizontal',
},
)
@@ -76,7 +89,7 @@ export default function SettingsModal(props) {
const verticalLine = new fabric.Line(
[i * moduleHoriLength - moduleHoriLength / 2, 0, i * moduleHoriLength - moduleHoriLength / 2, canvasProps.height],
{
- stroke: 'gray',
+ stroke: guideColor.hex,
strokeWidth: 1,
selectable: true,
lockMovementX: true,
@@ -85,6 +98,8 @@ export default function SettingsModal(props) {
lockScalingX: true,
lockScalingY: true,
name: 'guideLine',
+ strokeDashArray: [5, 2],
+ opacity: 0.3,
direction: 'vertical',
},
)
@@ -118,7 +133,9 @@ export default function SettingsModal(props) {
if (gridCheckedValue.includes('dot')) {
const circle = new fabric.Circle({
radius: 2,
- fill: 'red',
+ fill: 'white',
+ stroke: guideColor.hex,
+ strokeWidth: 0.7,
originX: 'center',
originY: 'center',
selectable: false,
@@ -216,10 +233,18 @@ export default function SettingsModal(props) {
임의간격
-
-
- 종횡연동
-
+
+ 가이드컬러
setColorPickerShow(!colorPickerShow)}>
+
+ {colorPickerShow && (
+
+ )}
+
+
+
+ 종횡연동
+
+
@@ -229,6 +254,7 @@ export default function SettingsModal(props) {
mm
+
{getMessage('hi')}
+
+
React ColorPicker
+
+
>
)
diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx
index 3904926d..5d864c47 100644
--- a/src/components/Roof2.jsx
+++ b/src/components/Roof2.jsx
@@ -26,13 +26,15 @@ import { QPolygon } from '@/components/fabric/QPolygon'
import ThumbnailList from './ui/ThumbnailLIst'
import QContextMenu from './common/context-menu/QContextMenu'
import { modalContent, modalState } from '@/store/modalAtom'
-import SettingsModal from './SettingsModal'
import { useAxios } from '@/hooks/useAxios'
import QPolygonContextMenu from '@/components/common/context-menu/QPolygonContextMenu'
import QLineContextMenu from '@/components/common/context-menu/QLineContextMenu'
import QEmptyContextMenu from '@/components/common/context-menu/QEmptyContextMenu'
import { degreesToRadians, radiansToDegrees } from '@turf/turf'
+import InitSettingsModal from './InitSettingsModal'
+import GridSettingsModal from './GridSettingsModal'
+
export default function Roof2(props) {
const { name, userId, email, isLoggedIn } = props
const { canvas, handleRedo, handleUndo, setCanvasBackgroundWithDots, saveImage, addCanvas } = useCanvas('canvas')
@@ -105,6 +107,8 @@ export default function Roof2(props) {
useEffect(() => {
get({ url: `/api/canvas-management/canvas-statuses/by-object/test123240822001` }).then((res) => {
+ console.log(res)
+
const arrangeData = res.map((item) => {
console.log(item.canvasStatus.replace(/##/g, '"').replace(/\\/g, ''))
const test = item.canvasStatus.replace(/##/g, '"').replace(/\\/g, '')
@@ -1822,7 +1826,24 @@ export default function Roof2(props) {
{
- setContent()
+ svgLoad()
+ }}
+ >
+ svg로딩
+
+ {
+ setContent()
+ setOpen(true)
+ }}
+ >
+ 배치면 초기설정
+
+ {
+ setContent()
setOpen(true)
}}
>
diff --git a/src/components/common/color-picker/ColorPicker.jsx b/src/components/common/color-picker/ColorPicker.jsx
new file mode 100644
index 00000000..7e774259
--- /dev/null
+++ b/src/components/common/color-picker/ColorPicker.jsx
@@ -0,0 +1,11 @@
+import { HexColorPicker } from 'react-colorful'
+
+export default function ColorPicker(props) {
+ const { color, setColor } = props
+
+ return (
+ <>
+
+ >
+ )
+}
diff --git a/src/components/ui/ThumbnailLIst.jsx b/src/components/ui/ThumbnailLIst.jsx
index b50f506f..1d67dbe8 100644
--- a/src/components/ui/ThumbnailLIst.jsx
+++ b/src/components/ui/ThumbnailLIst.jsx
@@ -19,7 +19,7 @@ function ThumbnailList(props) {
{thumbnails.length > 0 &&
thumbnails.map((thumbnail, index) => (
-
+