From 3997bd114bf7bbee79d24672b1000caefa287aff Mon Sep 17 00:00:00 2001 From: "CTFang@WireLab" <ctfang.cs12@nycu.edu.tw> Date: Mon, 13 May 2024 06:28:11 +0000 Subject: [PATCH] fix: add back last update time --- frontend/src/Dashboard.tsx | 23 ++++++++++++------- frontend/src/pages/Charging/ChargingTable.tsx | 18 ++++++++++++++- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/frontend/src/Dashboard.tsx b/frontend/src/Dashboard.tsx index 4e7461a..19788ed 100644 --- a/frontend/src/Dashboard.tsx +++ b/frontend/src/Dashboard.tsx @@ -85,7 +85,7 @@ function Dashboard(props: DashboardProps) { const { user, setUser } = useContext(LoginContext); const navigation = useNavigate(); - const [time, setTime] = useState(Date.now()); + const [time, setTime] = useState<Date>(new Date()); const [refreshInterval, setRefreshInterval] = useState(0); const [refreshString, setRefreshString] = useState("manual"); @@ -93,20 +93,19 @@ function Dashboard(props: DashboardProps) { // update the time value every x ms, which triggers refresh (see below) useEffect(() => { if (refreshInterval === 0) { - console.log("refreshInterval is 0") + console.log("refreshInterval is 0"); return; } - const interval = setInterval(() => setTime(Date.now()), refreshInterval); + const interval = setInterval(() => setTime(new Date()), refreshInterval); return () => { - console.log("clear refreshInterval") + console.log("clear refreshInterval"); clearInterval(interval); }; }, [refreshInterval]); // refresh every time the 'time' value changes useEffect(() => { - console.log("reload page at", time); - //setChildKey(prev => prev + 1); + console.log("reload page at", time.toISOString()); props.refreshAction(); }, [time]); @@ -189,9 +188,17 @@ function Dashboard(props: DashboardProps) { borderColor: "white", }} /> - <SimpleListMenu title={`Refresh: ${refreshString}`} options={refreshStrings} handleMenuItemClick={handleRefreshClick} /> + <SimpleListMenu + title={`Refresh: ${refreshString}`} + options={refreshStrings} + handleMenuItemClick={handleRefreshClick} + /> </Box> - <SimpleListMenu title={user?.username} options={["Change Password", "Logout"]} handleMenuItemClick={handleUserNameClick} /> + <SimpleListMenu + title={user?.username} + options={["Change Password", "Logout"]} + handleMenuItemClick={handleUserNameClick} + /> </Toolbar> </AppBar> <Drawer variant="permanent" open={open}> diff --git a/frontend/src/pages/Charging/ChargingTable.tsx b/frontend/src/pages/Charging/ChargingTable.tsx index 91e7854..c98f48b 100644 --- a/frontend/src/pages/Charging/ChargingTable.tsx +++ b/frontend/src/pages/Charging/ChargingTable.tsx @@ -10,6 +10,7 @@ import { Button, Grid } from "@mui/material"; export default function ChargingTable() { const [expand, setExpand] = useState(true); const [refresh, setRefresh] = useState<boolean>(false); + const [updateTime, setUpdateTime] = useState<Date>(new Date()); const [onlineChargingData, setOnlineChargingData] = useState<ChargingData[]>([]); const [offlineChargingData, setOfflineChargingData] = useState<ChargingData[]>([]); @@ -44,10 +45,10 @@ export default function ChargingTable() { }; const onRefresh = () => { - console.log("refreshing charging data"); fetchChargingData("Online", setOnlineChargingData); fetchChargingData("Offline", setOfflineChargingData); fetchChargingRecord(); + setUpdateTime(new Date()); }; useEffect(() => { @@ -71,6 +72,21 @@ export default function ChargingTable() { {expand ? "Fold" : "Expand"} </Button> </Grid> + <Grid item> + <Button + color="secondary" + variant="contained" + onClick={() => onRefresh()} + sx={{ m: 2, backgroundColor: "blue", "&:hover": { backgroundColor: "blue" } }} + > + Refresh + </Button> + </Grid> + <Grid item> + <Button color="success" variant="contained" sx={{ m: 2 }} disabled> + Last update: {updateTime.toISOString().slice(0, 19).replace("T", " ")} + </Button> + </Grid> </Grid> <br /> <ChargingList -- GitLab