Display live and cached consumption on dashboard
This commit is contained in:
		@@ -0,0 +1,37 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import { EnergyApi } from "../../api/EnergyApi";
 | 
			
		||||
import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider";
 | 
			
		||||
import StatCard from "../../widgets/StatCard";
 | 
			
		||||
 | 
			
		||||
export function CurrConsumptionWidget(): React.ReactElement {
 | 
			
		||||
  const snackbar = useSnackbar();
 | 
			
		||||
 | 
			
		||||
  const [val, setVal] = React.useState<undefined | number>();
 | 
			
		||||
 | 
			
		||||
  const refresh = async () => {
 | 
			
		||||
    try {
 | 
			
		||||
      const s = await EnergyApi.CurrConsumption();
 | 
			
		||||
      setVal(s);
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      console.error(e);
 | 
			
		||||
      snackbar("Failed to refresh current consumption!");
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  React.useEffect(() => {
 | 
			
		||||
    refresh();
 | 
			
		||||
    const i = setInterval(() => refresh(), 3000);
 | 
			
		||||
 | 
			
		||||
    return () => clearInterval(i);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <StatCard
 | 
			
		||||
      title="Current consumption"
 | 
			
		||||
      data={[]}
 | 
			
		||||
      interval="Current data"
 | 
			
		||||
      trend="neutral"
 | 
			
		||||
      value={val?.toString() ?? "Loading"}
 | 
			
		||||
    />
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user