diff --git a/src/client/package.json b/src/client/package.json index 1c4b210..844e36f 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -10,6 +10,7 @@ "@emotion/styled": "^11.8.1", "@mui/icons-material": "^5.6.2", "@mui/material": "^5.6.2", + "@mui/x-data-grid": "^5.12.3", "@types/react": "^18.0.5", "@types/react-dom": "^18.0.1", "react": "^18.0.0", diff --git a/src/client/page/tags.tsx b/src/client/page/tags.tsx index 5d7954e..11f6255 100644 --- a/src/client/page/tags.tsx +++ b/src/client/page/tags.tsx @@ -1,11 +1,71 @@ -import React from 'react'; -import {Typography} from '@mui/material'; - +import React, { useEffect, useState } from 'react'; +import {Typography, Box, Paper} from '@mui/material'; +import {LoadingCircle} from "../component/loading"; import { Headline, CommonMenuList } from '../component/mod'; +import {DataGrid, GridColDef} from "@mui/x-data-grid" + +type TagCount = { + tag_name: string; + occurs: number; +}; + +const tagTableColumn: GridColDef[] = [ +{ + field:"tag_name", + headerName:"Tag Name", + width: 200, +}, +{ + field:"occurs", + headerName:"Occurs", + width:100, + type:"number" +} +] + +function TagTable(){ + const [data,setData] = useState(); + const [error, setErrorMsg] = useState(undefined); + const isLoading = data === undefined; + + useEffect(()=>{ + loadData(); + },[]); + + if(isLoading){ + return ; + } + if(error !== undefined){ + return {error} + } + return + + t.tag_name} > + + + + async function loadData(){ + try{ + const res = await fetch("/api/tags?withCount=true"); + const data = await res.json(); + setData(data); + } + catch(e){ + setData([]); + if(e instanceof Error){ + setErrorMsg(e.message); + } + else{ + console.log(e); + setErrorMsg(""); + } + } + } +} export const TagsPage = ()=>{ const menu = CommonMenuList(); return - Tags + }; \ No newline at end of file diff --git a/src/model/tag.ts b/src/model/tag.ts index caa6943..61881d5 100644 --- a/src/model/tag.ts +++ b/src/model/tag.ts @@ -4,7 +4,7 @@ export interface Tag{ } export interface TagCount{ - tagname: string; + tag_name: string; occurs: number; }