parent
fda47a31eb
commit
c962738e79
|
|
@ -308,5 +308,13 @@
|
||||||
|
|
||||||
.viewerDiv{height: calc(100vh - 180px); overflow-y: auto;}
|
.viewerDiv{height: calc(100vh - 180px); overflow-y: auto;}
|
||||||
.openDoc{background-color: bisque;}
|
.openDoc{background-color: bisque;}
|
||||||
.docLink{background-color: aquamarine}
|
.docLink{
|
||||||
|
color: black;
|
||||||
|
background-color: palegreen
|
||||||
|
}
|
||||||
.docLink:hover{cursor: pointer}
|
.docLink:hover{cursor: pointer}
|
||||||
|
.docPart{
|
||||||
|
color: forestgreen;
|
||||||
|
}
|
||||||
|
.docPart:hover{cursor: pointer}
|
||||||
|
.errorText{color:red; font-size: x-small; vertical-align: bottom; padding-right: 10px;}
|
||||||
|
|
@ -30,8 +30,6 @@ export const SbTitle = styled.div`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const VwDiv = styled.div`
|
export const VwDiv = styled.div`
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding-left: ${props => (props.depth * 10)}px;
|
padding-left: ${props => (props.depth * 10)}px;
|
||||||
color: ${props => (props.isTitle?'darkcyan':'black')};
|
color: ${props => (props.isTitle?'darkcyan':'black')};
|
||||||
padding-top: ${props => (props.isTitle?'10':'')}px;
|
padding-top: ${props => (props.isTitle?'10':'')}px;
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,8 @@ function CodeViewer(props) {
|
||||||
// 문서 전문 구성
|
// 문서 전문 구성
|
||||||
let detailTag = [];
|
let detailTag = [];
|
||||||
if(resp.result.document.length>0){
|
if(resp.result.document.length>0){
|
||||||
const reg = /([A-Z]{3,5}(\s[0-9]{2}){3,4})/g
|
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 // /(\((?:표|그림|부록)?\s*([A-Z]\.)?\d+(\.\d+)*(\s?\(\d\))?(-\d+)?(?:\s*[A-Z])?\))/g
|
||||||
resp.result.document.forEach(function (item, index){
|
resp.result.document.forEach(function (item, index){
|
||||||
const isTitle = item.full_content.includes(item.group_title);
|
const isTitle = item.full_content.includes(item.group_title);
|
||||||
if(isTitle){
|
if(isTitle){
|
||||||
|
|
@ -98,16 +99,36 @@ function CodeViewer(props) {
|
||||||
</VwDiv>
|
</VwDiv>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if(reg.test(item.full_content)){
|
if(docLinkReg.test(item.full_content)){
|
||||||
const docCodeAry = item.full_content.match(reg);
|
const docCodeAry = item.full_content.match(docLinkReg);
|
||||||
const docCodeLink = [];
|
const docCodeMap = new Map();
|
||||||
for(let i=0; i<docCodeAry.length; i++) {
|
|
||||||
docCodeLink.push('<a class="docLink" href="/standardCode/viewer/' + docCode + '" target="_blank">' + docCode + '</a>')
|
|
||||||
}
|
|
||||||
for(let i=0; i<docCodeAry.length; i++) {
|
for(let i=0; i<docCodeAry.length; i++) {
|
||||||
const docCode = docCodeAry[i];
|
const docCode = docCodeAry[i];
|
||||||
item.full_content = item.full_content.replaceAll(docCode, docCodeLink[i]);
|
docCodeMap.set(docCode, '<a class="docLink" href="/standardCode/viewer/' + docCode + '" target="_blank">' + docCode + '</a>')
|
||||||
}
|
}
|
||||||
|
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<docPartAry.length; i++) {
|
||||||
|
const docPart = docPartAry[i];
|
||||||
|
docPartMap.set(docPart, docPart +
|
||||||
|
'<key class="docPart">'+
|
||||||
|
'<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>');
|
||||||
|
}
|
||||||
|
docPartMap.forEach((docPartLink, docPart)=>{
|
||||||
|
item.full_content = item.full_content.replaceAll(docPart, docPartLink);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(item.full_content.includes("<table")){
|
||||||
|
item.full_content = item.full_content.replace('<table ', '<table class="table table-bordered "')
|
||||||
|
}
|
||||||
|
if(item.error_cd !== null){
|
||||||
|
item.full_content += "<div class='errorText'>"+item.error_cd+"</div>";
|
||||||
}
|
}
|
||||||
detailTag.push(
|
detailTag.push(
|
||||||
<VwDiv depth={item.cont_level} isTitle={isTitle} id={item.cont_type_cd} dangerouslySetInnerHTML={ {__html: item.full_content} }></VwDiv>
|
<VwDiv depth={item.cont_level} isTitle={isTitle} id={item.cont_type_cd} dangerouslySetInnerHTML={ {__html: item.full_content} }></VwDiv>
|
||||||
|
|
@ -145,10 +166,10 @@ function CodeViewer(props) {
|
||||||
<Col xs={3} className="border-end viewerDiv">
|
<Col xs={3} className="border-end viewerDiv">
|
||||||
{codeTree}
|
{codeTree}
|
||||||
</Col>
|
</Col>
|
||||||
<Col xs={3} className="border-end viewerDiv">
|
<Col xs={2} className="border-end viewerDiv">
|
||||||
{docSummary}
|
{docSummary}
|
||||||
</Col>
|
</Col>
|
||||||
<Col xs={6} className="viewerDiv">
|
<Col xs={7} className="viewerDiv">
|
||||||
{docDetail}
|
{docDetail}
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
|
@ -156,8 +177,8 @@ function CodeViewer(props) {
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeViewer.defaultProps = {
|
CodeViewer.defaultProps = {
|
||||||
docCode: 'KDS 21 45 00',
|
docCode: 'KDS 24 14 30',
|
||||||
docName: '가설교량 및 노면복공 설계기준'
|
docName: '강교 설계기준(허용응력설계법)'
|
||||||
}
|
}
|
||||||
|
|
||||||
export default CodeViewer;
|
export default CodeViewer;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue