'use client' import { useRef, useState, useEffect } from 'react' import { useRecoilState } from 'recoil' import { v4 as uuidv4 } from 'uuid' import { FaAnglesUp } from 'react-icons/fa6' import { FaAnglesDown } from 'react-icons/fa6' import { useAxios } from '@/hooks/useAxios' import { useMessage } from '@/hooks/useMessage' import { convertDwgToPng } from '@/lib/cadAction' import { cadFileNameState, googleMapFileNameState, useCadFileState, useGoogleMapFileState } from '@/store/canvasAtom' import { Button } from '@nextui-org/react' import ColorPicker from './common/color-picker/ColorPicker' import { useSwal } from '@/hooks/useSwal' import styles from './playground.module.css' import Image from 'next/image' import QInput from './common/input/Qinput' import QSelect from './common/select/QSelect' import QPagination from './common/pagination/QPagination' export default function Playground() { const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState) const [cadFileName, setCadFileName] = useRecoilState(cadFileNameState) const [useGoogleMapFile, setUseGoogleMapFile] = useRecoilState(useGoogleMapFileState) const [googleMapFileName, setGoogleMapFileName] = useRecoilState(googleMapFileNameState) const fileRef = useRef(null) const queryRef = useRef(null) const [zoom, setZoom] = useState(20) const { get, promiseGet, promisePost } = useAxios() const testVar = process.env.NEXT_PUBLIC_TEST const converterUrl = process.env.NEXT_PUBLIC_CONVERTER_API_URL const { getMessage } = useMessage() const { swalFire } = useSwal() const [color, setColor] = useState('#ff0000') const [textInput, setTextInput] = useState('') const [radioInput, setRadioInput] = useState('') const [checkboxInput, setCheckboxInput] = useState([]) const [selectedValue, setSelectedValue] = useState('') const [users, setUsers] = useState([]) useEffect(() => { console.log('textInput:', textInput) }, [textInput]) useEffect(() => { console.log('radioInput:', radioInput) }, [radioInput]) useEffect(() => { console.log('checkboxInput:', checkboxInput) }, [checkboxInput]) useEffect(() => { console.log('selectedValue:', selectedValue) }, [selectedValue]) const handleUsers = async () => { // const users = await get('/api/user/find-all') const params = { url: '/api/user/find-all', } const users = await get(params) console.log('users', users) } const handleConvert = async () => { console.log('file', fileRef.current.files[0]) const formData = new FormData() formData.append('file', fileRef.current.files[0]) await promisePost({ url: converterUrl, data: formData }) .then((res) => { console.log('response: ', res) convertDwgToPng(res.data.Files[0].FileName, res.data.Files[0].FileData) setUseCadFile(true) setCadFileName(res.data.Files[0].FileName) swalFire({ text: '파일 변환 완료' }) }) .catch((err) => { console.error(err) swalFire({ text: '파일 변환 실패' }) }) } const handleDownImage = async (fileName = '') => { const fileNm = fileName === '' ? uuidv4() : fileName const queryString = queryRef.current.value === '' ? '서울시 서대문구 연세로5다길 22-3 발리빌라 3층' : queryRef.current.value const res = await get({ url: `http://localhost:3000/api/html2canvas?q=${queryString}&fileNm=${fileNm}&zoom=${zoom}` }) console.log('res', res) setGoogleMapFileName(res.fileNm) swalFire({ text: '이미지 저장 완료' }) setUseGoogleMapFile(true) } const handleZoom = async (type) => { if (type === 'up') { setZoom((prevState) => prevState + 1) } else { setZoom((prevState) => prevState - 1) } await handleDownImage() } const data = [ { id: 1, author: 'SWYOO', contents: '버튼 정리(템플릿 적용)', date: '2024.07.16', }, { id: 2, author: 'SWYOO', contents: 'README.md 파일 이미지 경로 수정', date: '2024.07.17', }, { id: 3, author: 'SWYOO', contents: '', date: '', }, ] const handleSwalAlert = () => { swalFire({ text: '알림 테스트입니다.', }) } const paginationProps = { pageNo: 1, pageSize: 10, pagePerBlock: 10, totalCount: 501, handleChangePage: (page) => { console.log('page', page) }, } useEffect(() => { console.log('users:', users) }, [users]) return ( <>
Sass 테스트입니다.
Zoom Controller : {zoom}
} className="mx-2" onClick={() => handleZoom('up')}> } className="mx-2" onClick={() => handleZoom('down')}>