기준코드 뷰어 작업중.
parent
bb200ffbca
commit
52170e85ee
|
|
@ -20,6 +20,7 @@ export const SbSub = styled.div`
|
||||||
export const SbTitle = styled.div`
|
export const SbTitle = styled.div`
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
background-color: ${props => props.isOpen ? 'bisque' : ''};
|
||||||
padding-left: ${props => 30+(props.depth * 10)}px;
|
padding-left: ${props => 30+(props.depth * 10)}px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,22 @@ import {SbTitle, SbSub} from './Sb.style'
|
||||||
import { FcFolder, FcOpenedFolder, FcFile } from 'react-icons/fc'
|
import { FcFolder, FcOpenedFolder, FcFile } from 'react-icons/fc'
|
||||||
import { AiOutlinePlusSquare, AiOutlineMinusSquare } from 'react-icons/ai'
|
import { AiOutlinePlusSquare, AiOutlineMinusSquare } from 'react-icons/ai'
|
||||||
|
|
||||||
const SbItem = ({item, updateDocCode}) => {
|
const SbItem = ({item, openDocCode, updateDocCode}) => {
|
||||||
|
const find = (array, openDocCode) => {
|
||||||
const [collapsed, setCollapsed] = useState(false);
|
var result;
|
||||||
|
array.some(o => result = o.doc_code === openDocCode ? o : find(o.childrens || [], openDocCode));
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
const collapsedFlag = find(item.childrens, openDocCode) !== undefined;
|
||||||
|
// openDocCode === item.doc_code+' '+item.doc_code_name
|
||||||
|
const [collapsed, setCollapsed] = useState(collapsedFlag);
|
||||||
|
const [isOpenDoc, setIsOpenDoc] = useState(item.doc_code === openDocCode);
|
||||||
function toggleCollapse() {
|
function toggleCollapse() {
|
||||||
setCollapsed(prevValue => !prevValue);
|
setCollapsed(prevValue => !prevValue);
|
||||||
}
|
}
|
||||||
|
function changeOpenDoc(){
|
||||||
|
setIsOpenDoc(prevValue => !prevValue)
|
||||||
|
}
|
||||||
|
|
||||||
if(item.childrens.length > 0){
|
if(item.childrens.length > 0){
|
||||||
const icon1 = collapsed?<AiOutlinePlusSquare />:<AiOutlineMinusSquare />;
|
const icon1 = collapsed?<AiOutlinePlusSquare />:<AiOutlineMinusSquare />;
|
||||||
|
|
@ -18,7 +28,7 @@ const SbItem = ({item, updateDocCode}) => {
|
||||||
<SbTitle depth={item.doc_level} onClick={toggleCollapse}>{icon1}{icon2} {(item.doc_level === 1?'':item.doc_code)+' '+item.doc_code_name}</SbTitle>
|
<SbTitle depth={item.doc_level} onClick={toggleCollapse}>{icon1}{icon2} {(item.doc_level === 1?'':item.doc_code)+' '+item.doc_code_name}</SbTitle>
|
||||||
<SbSub isOpen={collapsed}>
|
<SbSub isOpen={collapsed}>
|
||||||
{item.childrens.map((child) => (
|
{item.childrens.map((child) => (
|
||||||
<SbItem item={child} updateDocCode={updateDocCode} />
|
<SbItem item={child} openDocCode={openDocCode} updateDocCode={updateDocCode} />
|
||||||
))}
|
))}
|
||||||
</SbSub>
|
</SbSub>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -26,8 +36,9 @@ const SbItem = ({item, updateDocCode}) => {
|
||||||
}else{
|
}else{
|
||||||
const icon = <FcFile />;
|
const icon = <FcFile />;
|
||||||
return (
|
return (
|
||||||
<SbTitle depth={item.doc_level}>
|
<SbTitle depth={item.doc_level} isOpen={isOpenDoc}>
|
||||||
<a onClick={()=>{
|
<a onClick={()=>{
|
||||||
|
changeOpenDoc()
|
||||||
updateDocCode(item.doc_code, item.doc_code_name)
|
updateDocCode(item.doc_code, item.doc_code_name)
|
||||||
}}>{icon} {(item.doc_level === 1?'':item.doc_code)+' '+item.doc_code_name}</a>
|
}}>{icon} {(item.doc_level === 1?'':item.doc_code)+' '+item.doc_code_name}</a>
|
||||||
</SbTitle>
|
</SbTitle>
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ function CodeViewer(props) {
|
||||||
treeTag.push(
|
treeTag.push(
|
||||||
<SbContainer>
|
<SbContainer>
|
||||||
{tree.map((subItem) =>
|
{tree.map((subItem) =>
|
||||||
<SbItem item={subItem} updateDocCode={updateDocCode} />
|
<SbItem item={subItem} openDocCode={docCode} updateDocCode={updateDocCode} />
|
||||||
)}
|
)}
|
||||||
</SbContainer>
|
</SbContainer>
|
||||||
)
|
)
|
||||||
|
|
@ -115,7 +115,7 @@ function CodeViewer(props) {
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getCodeDetailInfo();
|
getCodeDetailInfo(docCode);
|
||||||
}, []);
|
}, []);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getCodeTree();
|
getCodeTree();
|
||||||
|
|
@ -144,5 +144,9 @@ function CodeViewer(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CodeViewer.defaultProps = {
|
||||||
|
docCode: 'KDS 21 45 00',
|
||||||
|
docName: '가설교량 및 노면복공 설계기준'
|
||||||
|
}
|
||||||
|
|
||||||
export default CodeViewer;
|
export default CodeViewer;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue