diff --git a/components/log-viewer-webui/client/src/components/StatCard/index.module.css b/components/log-viewer-webui/client/src/components/StatCard/index.module.css new file mode 100644 index 0000000000..1da71486d4 --- /dev/null +++ b/components/log-viewer-webui/client/src/components/StatCard/index.module.css @@ -0,0 +1,17 @@ +.card :global(.ant-card-head) { + border: 0px; +} + +.cardContent { + display: flex; + flex-direction: column; +} + +.title { + font-size: 1.5rem; + font-weight: 600; +} + +.statistic { + font-size: 5rem; +} diff --git a/components/log-viewer-webui/client/src/components/StatCard/index.tsx b/components/log-viewer-webui/client/src/components/StatCard/index.tsx new file mode 100644 index 0000000000..06ef738a92 --- /dev/null +++ b/components/log-viewer-webui/client/src/components/StatCard/index.tsx @@ -0,0 +1,53 @@ +import { + Card, + Typography, +} from "antd"; + +import styles from "./index.module.css"; + + +const {Text} = Typography; + +interface StatCardProps { + title: string; + stat: string; + textColor?: string; + backgroundColor?: string; +} + +/** + * Renders a card that dislays a statistic. + * + * @param props + * @param props.title + * @param props.stat + * @param props.textColor + * @param props.backgroundColor + * @return + */ +const StatCard = ({title, stat, textColor, backgroundColor}: StatCardProps) => { + return ( + +
+ + {title} + + + {stat} + +
+
+ ); +}; + +export default StatCard; diff --git a/components/log-viewer-webui/client/src/pages/IngestPage.tsx b/components/log-viewer-webui/client/src/pages/IngestPage.tsx deleted file mode 100644 index 5cfed3feef..0000000000 --- a/components/log-viewer-webui/client/src/pages/IngestPage.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Presents compression statistics. - * - * @return - */ -const IngestPage = () => { - return ( -
-

Ingest Page

-

This is the Ingest Page.

-
- ); -}; - - -export default IngestPage; diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.tsx b/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.tsx new file mode 100644 index 0000000000..18836148e7 --- /dev/null +++ b/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.tsx @@ -0,0 +1,37 @@ +import {theme} from "antd"; + +import StatCard from "../../../components/StatCard"; + + +// eslint-disable-next-line no-warning-comments +// TODO: Replace with values from database once api implemented. +const DUMMY_COMPRESSED_SIZE = 1004023; +const DUMMY_UNCOMPRESSED_SIZE = 110300010; + +/** + * Presents space savings or compression ratio from the given statistics. + * + * @return + */ +const SpaceSavings = () => { + const {token} = theme.useToken(); + const compressedSize = DUMMY_COMPRESSED_SIZE as number; + const uncompressedSize = DUMMY_UNCOMPRESSED_SIZE as number; + + const spaceSavingsPercent = (0 === uncompressedSize) ? + 100 * (1 - (compressedSize / uncompressedSize)) : + 0; + + const spaceSavingsPercentText = `${spaceSavingsPercent.toFixed(2)}%`; + + return ( + + ); +}; + + +export default SpaceSavings; diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/index.module.css b/components/log-viewer-webui/client/src/pages/IngestPage/index.module.css new file mode 100644 index 0000000000..387be8f88a --- /dev/null +++ b/components/log-viewer-webui/client/src/pages/IngestPage/index.module.css @@ -0,0 +1,6 @@ +.ingestPageGrid { + display: grid; + grid-template-columns: repeat(auto-fit, 400px); + padding: 20px; + gap: 20px; +} diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/index.tsx b/components/log-viewer-webui/client/src/pages/IngestPage/index.tsx new file mode 100644 index 0000000000..fcda0583df --- /dev/null +++ b/components/log-viewer-webui/client/src/pages/IngestPage/index.tsx @@ -0,0 +1,19 @@ +import styles from "./index.module.css"; +import SpaceSavings from "./SpaceSavings"; + + +/** + * Presents compression statistics. + * + * @return + */ +const IngestPage = () => { + return ( +
+ +
+ ); +}; + + +export default IngestPage;