From 1a51062aa13e581debd8d86d487a05c01149e482 Mon Sep 17 00:00:00 2001 From: GyDi Date: Wed, 22 Dec 2021 02:08:44 +0800 Subject: [PATCH] feat: supprt log ui --- src/components/log-item.tsx | 21 ++++++++++++++ src/pages/log.tsx | 58 +++++++++++++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 src/components/log-item.tsx diff --git a/src/components/log-item.tsx b/src/components/log-item.tsx new file mode 100644 index 0000000..89e6629 --- /dev/null +++ b/src/components/log-item.tsx @@ -0,0 +1,21 @@ +import { styled, Box } from "@mui/material"; + +const LogItem = styled(Box)(({ theme }) => ({ + padding: "8px 0", + margin: "0 12px", + lineHeight: 1.35, + borderBottom: `1px solid ${theme.palette.divider}`, + "& .time": {}, + "& .type": { + display: "inline-block", + width: 50, + margin: "0 4px", + textAlign: "center", + borderRadius: 2, + textTransform: "uppercase", + fontWeight: "600", + }, + "& .data": {}, +})); + +export default LogItem; diff --git a/src/pages/log.tsx b/src/pages/log.tsx index cf4cd6a..cf26566 100644 --- a/src/pages/log.tsx +++ b/src/pages/log.tsx @@ -1,21 +1,69 @@ -import { useEffect } from "react"; -import { Box, Typography } from "@mui/material"; +import dayjs from "dayjs"; +import { useEffect, useRef, useState } from "react"; +import { Box, Button, Paper, Typography } from "@mui/material"; +import { Virtuoso } from "react-virtuoso"; +import LogItem from "../components/log-item"; import services from "../services"; +let logCache: any[] = []; + const LogPage = () => { + const [logData, setLogData] = useState(logCache); + useEffect(() => { - const sourcePromise = services.getLogs(console.log); + const sourcePromise = services.getLogs((t) => { + const time = dayjs().format("MM-DD HH:mm:ss"); + const item = { ...t, time }; + setLogData((l) => (logCache = [...l, item])); + }); return () => { - sourcePromise.then((src) => src.cancel()); + sourcePromise.then((src) => src.cancel("cancel")); }; }, []); return ( - + Logs + + + + + { + return ( + + {logItem.time} + {logItem.type} + {logItem.payload} + + ); + }} + followOutput={"smooth"} + /> + ); };