import * as EgovNet from "../../../api/egovFetch"; import React, {useEffect, useState} from "react"; import SbItem from "./SbItem"; import {Col, Row} from "react-bootstrap"; import {VwDiv, VwPtag} from "./Vw.style"; /*최상위 컴포넌트*/ export function Maincontent({docCode}) { const [doccode, setdoccode] = useState(''); const [docname, setdocname] = useState(''); //TODO 맨처음 목차코드 및 목차제목 안나오는 문제 수정 function setdoccodandname(doccode, docname) { setdoccode(doccode); setdocname(docname); } return (
{doccode+' '+docname}
) } /*글 트리 컴포넌트*/ export function CodeTree({docCode, setdoccodandname}) { const [codeTree, setcodeTree] = useState([]); const [doccode, setdoccode] = useState(docCode); let data = []; const getCodeTree = () => { EgovNet.requestFetch( '/standardCode/getCodeTree.do', { method: "POST", headers: { 'Content-type': 'application/json' }, body: JSON.stringify({}) }, (item) => { data = item.result.codeTree; const nest = (menuData, parent_seq = null, link = 'parent_seq') => menuData.filter(item => item[link] === parent_seq) .map(item => ({...item, childrens: nest(menuData, item.seq)})); setcodeTree(nest(data)); }, () => { }) } useEffect(() => { getCodeTree() }, []) return ( {codeTree.map(resp => { return ( ) } )} ) } /*글 내용+목차 분리 컴포넌트*/ //TODO 추가 분리 작업 필요 export function CodeCotentData({docCode}) { const [codeChapter, setcodeChapter] = useState([]); const [codeContent, setcodeContetn] = useState([]); let result =[]; const getCodeDetail = (docCode) => { EgovNet.requestFetch( '/standardCode/getCodeDetailInfo.do', { method: "POST", headers: { 'Content-type': 'application/json' }, body: JSON.stringify({ docCode: docCode }) }, (item) => { result = item.result.document; }, () => { }) } useEffect(() => { getCodeDetail(docCode) setcodeChapter(result.map(item =>{ const isTitle = item.full_content.includes(item.group_title); return( { document.location.hash="#"+item.cont_type_cd; }} dangerouslySetInnerHTML={ {__html: item.group_title} }> ) })) setcodeContetn(result.map(item =>{ const isTitle = item.full_content.includes(item.group_title); const docLinkReg = /([A-Z]{3,5}(\s[0-9]{2}){3,4})/g const docPartReg = /\((?:표|그림|부록)?\s*([A-Z]\.)?(?!\d\))\d+(\.\d+)*(\s?\(\d\))?(-\d+)?(?:\s*[A-Z])?\)/g if(docLinkReg.test(item.full_content)){ const docCodeAry = item.full_content.match(docLinkReg); const docCodeMap = new Map(); for(let i=0; i' + docCode + '') } docCodeMap.forEach((docCodeLink, docCode)=>{ item.full_content = item.full_content.replaceAll(docCode, docCodeLink); }) if(docPartReg.test(item.full_content)){ const docPartAry = item.full_content.match(docPartReg); const docPartMap = new Map(); for(let i=0; i'+ ''+ ''); } docPartMap.forEach((docPartLink, docPart)=>{ item.full_content = item.full_content.replaceAll(docPart, docPartLink); }) } if(item.full_content.includes(""+item.full_content; } item.full_content = item.full_content+"
" return( ) } })) }, [docCode]) return (<> ) } /*글 목차 컴포넌트*/ export function CodeChapter({codeChapter}) { return (<>{codeChapter}) } /*글 내용 컴포넌트*/ export function CodeContent({codeContent}) { return (<>{codeContent}) }