diff --git a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/ContextModal/index.jsx b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/ContextModal/index.jsx new file mode 100644 index 0000000..62dbb4b --- /dev/null +++ b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/ContextModal/index.jsx @@ -0,0 +1,49 @@ +import { Modal, Skeleton } from 'antd' +import React, { useEffect, useState } from 'react' +import { getLogContextApi } from 'src/api/logs' +import QueryList from '../QueryList' + +const ContextModal = ({ modalVisible, closeModal, logParams }) => { + const [context, setContext] = useState([]) + const [loading, setLoading] = useState(false) + const getLogContext = () => { + setLoading(true) + getLogContextApi(logParams) + .then((res) => { + const back = res?.back ?? [] + const front = res?.front ?? [] + setContext(back.concat(front)) + }) + .catch(() => { + setContext([]) + }) + .finally(() => { + setLoading(false) + }) + } + useEffect(() => { + if (modalVisible && logParams) getLogContext() + }, [modalVisible, logParams]) + return ( + ( + <> + + + )} + > + + + + + ) +} +export default ContextModal diff --git a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/component/LogTagDropdown.jsx b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/component/LogTagDropdown.jsx index 6784a13..0665580 100644 --- a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/component/LogTagDropdown.jsx +++ b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/component/LogTagDropdown.jsx @@ -40,7 +40,12 @@ const LogTagDropDown = ({ objKey, value, children }) => { ] return ( <> - + triggerNode.parentNode} + > {children} diff --git a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/index.jsx b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/index.jsx index fb01b98..5598ac5 100644 --- a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/index.jsx +++ b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/LogItem/index.jsx @@ -9,7 +9,7 @@ import { convertTime } from 'src/utils/time' // 自配类规则日志默认展开不可收起,tag+铺平(仅content) // 接入类数据库规则默认收起可展开,收起展示所有tag,展开展示所有(content + tag) const LogItem = (props) => { - const { log, foldingChecked } = props + const { log, foldingChecked, openContextModal } = props const { tableInfo } = useLogsContext() // 是否折叠日志,true 为是,false 为否 const [isFold, setIsFold] = useState(true) @@ -21,17 +21,29 @@ const LogItem = (props) => {
{/* icon 和 时间 */}
-
- {tableInfo.timeField && ( +
+
+ {tableInfo.timeField && ( + + )} + {convertTime(log?.timestamp, 'yyyy-mm-dd hh:mm:ss.SSS')} +
+ {openContextModal && !tableInfo.timeField && ( + variant="filled" + size="small" + onClick={() => openContextModal(log)} + className="text-xs" + > + 查看上下文 + )} - {convertTime(log?.timestamp, 'yyyy-mm-dd hh:mm:ss')}
{/* 具体日志 */} diff --git a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/index.jsx b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/index.jsx index 845d01f..e0e9a8b 100644 --- a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/index.jsx +++ b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/QueryList/index.jsx @@ -1,21 +1,17 @@ -import React, { useEffect, useState } from 'react' -import { AiFillCaretDown, AiFillCaretRight } from 'react-icons/ai' -import { useLogsContext } from 'src/contexts/LogsContext' +import React from 'react' import LogItem from './LogItem' import { Empty, List } from 'antd' -const QueryList = () => { - const { logs } = useLogsContext() +const QueryList = ({ logs, openContextModal = null }) => { return (
{logs?.length > 0 ? ( ( - + )} /> diff --git a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/index.jsx b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/index.jsx index 4c62bb9..0d5334c 100644 --- a/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/index.jsx +++ b/frontend/src/views/logs/component/FullLogs/component/LogQueryResult/index.jsx @@ -1,11 +1,28 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' import QueryList from './QueryList' import { Pagination } from 'antd' import { useLogsContext } from 'src/contexts/LogsContext' import Histogram from './Histogram' +import ContextModal from './ContextModal' const LogQueryResult = () => { - const { pagination, updateLogsPagination } = useLogsContext() + const { pagination, updateLogsPagination, logs, tableInfo, query } = useLogsContext() + + const [modalVisible, setModalVisible] = useState(false) + const [contextLogParams, setContextLogParams] = useState(null) + const openContextModal = (logInfo) => { + setModalVisible(true) + setContextLogParams({ + dataBase: tableInfo.dataBase, + tableName: tableInfo.tableName, + tags: logInfo.tags, + timestamp: logInfo.timestamp, + }) + } + const closeContextModal = () => { + setModalVisible(false) + setContextLogParams(null) + } const changePagination = (page, pageSize) => { updateLogsPagination({ pageSize: pageSize, @@ -13,10 +30,13 @@ const LogQueryResult = () => { total: pagination.total, }) } + useEffect(() => { + if (modalVisible) closeContextModal() + }, [query]) return (
- + { onChange={changePagination} showTotal={(total) => `日志总条数: ${total} `} /> +
) } diff --git a/frontend/src/views/logs/component/FullLogs/component/Sider/DataSourceTree/index.jsx b/frontend/src/views/logs/component/FullLogs/component/Sider/DataSourceTree/index.jsx index a4c7389..1e54648 100644 --- a/frontend/src/views/logs/component/FullLogs/component/Sider/DataSourceTree/index.jsx +++ b/frontend/src/views/logs/component/FullLogs/component/Sider/DataSourceTree/index.jsx @@ -108,7 +108,7 @@ const DataSourceTree = () => { }, [instances]) const onSelect = (selectedKeys, { selected, selectedNodes }) => { - if (selected && selectedNodes[0]?.tableName) { + if (selected && selectedNodes?.[0]?.tableName) { updateTableInfo({ dataBase: selectedNodes[0].dataBase, tableName: selectedNodes[0].tableName,