import React, { useState, Fragment, useMemo } from 'react';
import Button from '../../components/common/button/Button';
import Loading from '../../components/common/Loading';
import {
Title,
SelectInput,
TableStyle,
TableWrapper,
TableActionButton,
TableDetailRow,
TableDetailContainer,
TableDetailFlex,
TableDetailColumn,
DetailTableInfo,
} from '../../styles/Components';
import { modalTypes } from '../../assets/data';
import { useTranslation } from 'react-i18next';
import {
FormLabel,
FormRowGroup, MessageWrapper,
} from '../../styles/ModuleComponents';
import { authType } from '../../assets/data';
import { useModal, withAuth } from '../../utils/hook';
import { DynamicModal, TopButton } from '../../components/common';
import { opInitDataType, opSuccessType } from '../../assets/data/options';
import { InitData } from '../../apis/Data';
import DataInitSearchBar, { useDataInitSearch } from '../../components/ServiceManage/searchBar/DataInitSearchBar';
const DataInitView = () => {
const { t } = useTranslation();
const token = sessionStorage.getItem('token');
const [loading, setLoading] = useState(false); // 로딩 창
const {
modalState,
handleModalView,
handleModalClose
} = useModal({
cancel: 'hidden',
registConfirm: 'hidden',
registComplete: 'hidden'
});
const [alertMsg, setAlertMsg] = useState('');
const [resultData, setResultData] = useState(initData); //데이터 정보
const [expandedRows, setExpandedRows] = useState({});
const {
searchParams,
loading: dataLoading,
data: dataList,
handleSearch,
handleReset,
updateSearchParams
} = useDataInitSearch(token, 500, setAlertMsg);
const toggleRowExpand = (index) => {
setExpandedRows(prev => ({
...prev,
[index]: !prev[index]
}));
};
const tableHeaders = useMemo(() => {
return [
{ id: 'logTime', label: '일시', width: '100px' },
{ id: 'key', label: '키', width: '150px' },
{ id: 'dataType', label: '초기화대상', width: '80px' },
{ id: 'tranId', label: '트랜잭션ID', width: '150px' },
{ id: 'success', label: '성공여부', width: '60px' },
{ id: 'message', label: '작업메시지', width: '300px' },
{ id: 'details', label: '상세정보', width: '100px' },
// { id: 'recovery', label: '복구', width: '100px' }
];
}, []);
const renderDetailData = (data) => {
if (!data || typeof data !== 'object') return <>>;
return (
{Object.entries(data).map(([key, value]) => (
정보
))}
{key}
{typeof value === 'object' && value !== null
? JSON.stringify(value)
: String(value)
}