import React, { useState, useEffect, useCallback } from 'react'; import { useLocation } from 'react-router-dom'; import SbItem from './SbItem' import {SbContainer, VwDiv, VwPtag} from './Sb.style' import Row from 'react-bootstrap/Row'; import Col from 'react-bootstrap/Col'; import * as EgovNet from 'api/egovFetch'; function CodeViewer(props) { const [docCode, setDocCode] = useState(props.docCode); const [docName, setDocName] = useState(props.docName); const [codeTree, setCodeTree] = useState(); const [docSummary, setDocSummary] = useState(); const [docDetail, setDocDetail] = useState(); console.group("viewer"); console.log("[Start] viewer ------------------------------"); console.log("viewer [props] : ", props); const location = useLocation(); console.log("viewer [location] : ", location); console.log("viewer [docCode] : ", docCode); const updateDocCode = useCallback((docCode, docName)=>{ setDocCode(docCode); setDocName(docName); getCodeDetailInfo(docCode); }) const getCodeTree = useCallback(()=>{ EgovNet.requestFetch( '/standardCode/getCodeTree.do', { method: "POST", headers: { 'Content-type': 'application/json' }, body: JSON.stringify({}) }, (resp) => { const menuData = resp.result.codeTree; // 코드 목록 트리 구성 // https://garve32.tistory.com/52 참고 const nest = (menuData, parent_seq = null, link = 'parent_seq') => menuData.filter(item => item[link] === parent_seq) .map(item => ({ ...item, childrens: nest(menuData, item.seq) })); const tree = nest(menuData); let treeTag = []; if(tree.length>0){ treeTag.push( {tree.map((subItem) => )} ) }else{ treeTag.push(
검색된 결과가 없습니다.
); // 코드 목록 초기값 } setCodeTree(treeTag); }, function (resp) { console.log("err response : ", resp); } ); }) const getCodeDetailInfo = useCallback((docCode) => { console.groupCollapsed("EgovMain.getCodeDetailInfo()"); EgovNet.requestFetch( '/standardCode/getCodeDetailInfo.do', { method: "POST", headers: { 'Content-type': 'application/json' }, body: JSON.stringify({ docCode: docCode }) }, (resp) => { // 목차 구성 let summaryTag = []; // 문서 전문 구성 let detailTag = []; if(resp.result.document.length>0){ resp.result.document.forEach(function (item, index){ const isTitle = item.full_content.includes(item.group_title); if(isTitle){ summaryTag.push( { document.location.hash="#"+item.cont_type_cd; }}> {item.group_title} ) } detailTag.push( ) }) }else{ summaryTag.push(
  • 검색된 결과가 없습니다.
  • ); } setDocSummary(summaryTag); setDocDetail(detailTag); }, function (resp) { console.log("err response : ", resp); } ); console.groupEnd("EgovMain.getCodeDetailInfo()"); },[]); useEffect(() => { getCodeDetailInfo(); }, []); useEffect(() => { getCodeTree(); }, []); console.log("------------------------------viewer [End]"); console.groupEnd("viewer"); return ( {docCode} {docName} {codeTree} {docSummary} {docDetail} ); } export default CodeViewer;