문단 내용 보기 기능 추가.
parent
a146c34e4d
commit
fab5847f95
|
|
@ -10,7 +10,7 @@ import java.util.List;
|
||||||
|
|
||||||
public interface TnDocumentContentRepository extends JpaRepository<TnDocumentContent, Integer> {
|
public interface TnDocumentContentRepository extends JpaRepository<TnDocumentContent, Integer> {
|
||||||
|
|
||||||
@Query(value = "select * from get_recent_full_context_by_content(:docCode, :contentPoint)", nativeQuery = true)
|
@Query(value = "select * from get_recent_full_context_by_content(:docCode, :docPart)", nativeQuery = true)
|
||||||
public List<StandardCodeContentInterface> getRecentFullContextByContent(String docCode, String contentPoint);
|
public List<StandardCodeContentInterface> getRecentFullContextByContent(String docCode, String docPart);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,6 @@ public class StandardCodeService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<StandardCodeContentInterface> selectStandardCodeDocument(StandardCodeVO param) {
|
public List<StandardCodeContentInterface> selectStandardCodeDocument(StandardCodeVO param) {
|
||||||
return tnDocumentContentRepository.getRecentFullContextByContent(param.getDocCode(), param.getContentPoint());
|
return tnDocumentContentRepository.getRecentFullContextByContent(param.getDocCode(), param.getDocPart());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,5 @@ import lombok.Setter;
|
||||||
@Setter
|
@Setter
|
||||||
public class StandardCodeVO {
|
public class StandardCodeVO {
|
||||||
private String docCode;
|
private String docCode;
|
||||||
private String contentPoint;
|
private String docPart;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,50 @@
|
||||||
import { React, useState } from "react";
|
import {React, useCallback, useEffect, useState} from "react";
|
||||||
import Modal from "react-bootstrap/Modal";
|
import Modal from "react-bootstrap/Modal";
|
||||||
import Button from "react-bootstrap/Button";
|
|
||||||
import * as EgovNet from "../../api/egovFetch";
|
import * as EgovNet from "../../api/egovFetch";
|
||||||
|
import {VwDiv} from "./Sb.style";
|
||||||
|
|
||||||
const BookmarkModal = ({state, docCode, docPart}) => {
|
const BookmarkModal = ({docCode, docPart}) => {
|
||||||
const [show, setShow] = useState(state);
|
|
||||||
const [modalTitle, setModalTitle] = useState();
|
const [modalTitle, setModalTitle] = useState();
|
||||||
const [modalBody, setModalBody] = useState();
|
const [modalBody, setModalBody] = useState();
|
||||||
const handleClose = () => setShow(false);
|
|
||||||
const handleShow = () => setShow(true);
|
const getModalContent = useCallback(() => {
|
||||||
/*EgovNet.requestFetch(
|
EgovNet.requestFetch(
|
||||||
"",
|
'/standardCode/getCodeDetailInfo.do',
|
||||||
"",
|
{
|
||||||
(resp) => {
|
method: "POST",
|
||||||
setModalTitle();
|
headers: {
|
||||||
setModalBody();
|
'Content-type': 'application/json'
|
||||||
},
|
},
|
||||||
(resp) => {
|
body: JSON.stringify({
|
||||||
console.log("err response : ", resp);
|
docCode: docCode,
|
||||||
}
|
docPart: docPart
|
||||||
);*/
|
})
|
||||||
|
},
|
||||||
|
(resp) => {
|
||||||
|
setModalTitle(docCode + " " + docPart);
|
||||||
|
let bodyTag = []
|
||||||
|
if(resp.result.document.length>0){
|
||||||
|
resp.result.document.forEach(function (item, index){
|
||||||
|
const isTitle = item.full_content.includes(item.group_title);
|
||||||
|
bodyTag.push(
|
||||||
|
<VwDiv depth={item.cont_level} isTitle={isTitle} id={item.cont_type_cd} dangerouslySetInnerHTML={ {__html: item.full_content} }></VwDiv>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
setModalBody(bodyTag);
|
||||||
|
},
|
||||||
|
(resp) => {
|
||||||
|
console.log("err response : ", resp);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getModalContent();
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal show={show} onHide={handleClose} size="xl" backdrop="static" keyboard={false}>
|
<>
|
||||||
<Modal.Header closeButton>
|
<Modal.Header closeButton>
|
||||||
<Modal.Title>
|
<Modal.Title>
|
||||||
{modalTitle}
|
{modalTitle}
|
||||||
|
|
@ -30,12 +53,7 @@ const BookmarkModal = ({state, docCode, docPart}) => {
|
||||||
<Modal.Body>
|
<Modal.Body>
|
||||||
{modalBody}
|
{modalBody}
|
||||||
</Modal.Body>
|
</Modal.Body>
|
||||||
<Modal.Footer>
|
</>
|
||||||
<Button variant="secondary" onClick={handleClose}>
|
|
||||||
Close
|
|
||||||
</Button>
|
|
||||||
</Modal.Footer>
|
|
||||||
</Modal>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
export default BookmarkModal
|
export default BookmarkModal
|
||||||
|
|
@ -5,6 +5,7 @@ import BookmarkModal from './BookmarkModal';
|
||||||
import {SbContainer, VwDiv, VwPtag} from './Sb.style'
|
import {SbContainer, VwDiv, VwPtag} from './Sb.style'
|
||||||
import Row from 'react-bootstrap/Row';
|
import Row from 'react-bootstrap/Row';
|
||||||
import Col from 'react-bootstrap/Col';
|
import Col from 'react-bootstrap/Col';
|
||||||
|
import Modal from 'react-bootstrap/Modal';
|
||||||
import * as EgovNet from 'api/egovFetch';
|
import * as EgovNet from 'api/egovFetch';
|
||||||
|
|
||||||
function CodeViewer(props) {
|
function CodeViewer(props) {
|
||||||
|
|
@ -15,9 +16,12 @@ function CodeViewer(props) {
|
||||||
const [docSummary, setDocSummary] = useState();
|
const [docSummary, setDocSummary] = useState();
|
||||||
const [docDetail, setDocDetail] = useState();
|
const [docDetail, setDocDetail] = useState();
|
||||||
|
|
||||||
|
const [show, setShow] = useState(false);
|
||||||
const [bookMarkModal, setBookMarkModal] = useState();
|
const [bookMarkModal, setBookMarkModal] = useState();
|
||||||
|
|
||||||
|
const handleClose = () => setShow(false);
|
||||||
|
const handleShow = () => setShow(true);
|
||||||
|
|
||||||
console.group("viewer");
|
console.group("viewer");
|
||||||
console.log("[Start] viewer ------------------------------");
|
console.log("[Start] viewer ------------------------------");
|
||||||
console.log("viewer [props] : ", props);
|
console.log("viewer [props] : ", props);
|
||||||
|
|
@ -118,8 +122,9 @@ function CodeViewer(props) {
|
||||||
const docPartMap = new Map();
|
const docPartMap = new Map();
|
||||||
for(let i=0; i<docPartAry.length; i++) {
|
for(let i=0; i<docPartAry.length; i++) {
|
||||||
const docPart = docPartAry[i];
|
const docPart = docPartAry[i];
|
||||||
|
const docCode = item.full_content.substring(item.full_content.indexOf(docPart)-30).match(docLinkReg)[0];
|
||||||
docPartMap.set(docPart, docPart +
|
docPartMap.set(docPart, docPart +
|
||||||
'<key class="bookmark" data-doccode="'+docCode+'" data-docpart="'+docPart+'">'+
|
'<key class="bookmark" data-doccode="'+docCode+'" data-docpart="'+docPart.replace('(', '').replace(')', '')+'">'+
|
||||||
'<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5V4z"></path><path d="M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1H4.268z"></path></svg>'+
|
'<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M2 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L7 13.101l-4.223 2.815A.5.5 0 0 1 2 15.5V4z"></path><path d="M4.268 1A2 2 0 0 1 6 0h6a2 2 0 0 1 2 2v11.5a.5.5 0 0 1-.777.416L13 13.768V2a1 1 0 0 0-1-1H4.268z"></path></svg>'+
|
||||||
'</key>');
|
'</key>');
|
||||||
}
|
}
|
||||||
|
|
@ -158,8 +163,10 @@ function CodeViewer(props) {
|
||||||
}else{
|
}else{
|
||||||
const bookmarkList = el.getElementsByClassName("bookmark")
|
const bookmarkList = el.getElementsByClassName("bookmark")
|
||||||
for(let bookmark of bookmarkList){
|
for(let bookmark of bookmarkList){
|
||||||
bookmark.onclick = () => {
|
bookmark.onclick = (e) => {
|
||||||
setBookMarkModal(<BookmarkModal state="true"/>)/*docCode={} docPart={}*/
|
handleShow();
|
||||||
|
const params = e.currentTarget.dataset
|
||||||
|
setBookMarkModal(<BookmarkModal docCode={params.doccode} docPart={params.docpart}/>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -191,7 +198,9 @@ function CodeViewer(props) {
|
||||||
{docDetail}
|
{docDetail}
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
{bookMarkModal}
|
<Modal show={show} onHide={handleClose} size="xl" backdrop="static" keyboard={false}>
|
||||||
|
{bookMarkModal}
|
||||||
|
</Modal>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue