Get state of relay on device page
This commit is contained in:
@ -14,9 +14,12 @@ import { EditDeviceRelaysDialog } from "../../dialogs/EditDeviceRelaysDialog";
|
||||
import { DeviceRouteCard } from "./DeviceRouteCard";
|
||||
import { useConfirm } from "../../hooks/context_providers/ConfirmDialogProvider";
|
||||
import { useLoadingMessage } from "../../hooks/context_providers/LoadingMessageProvider";
|
||||
import { RelayApi } from "../../api/RelayApi";
|
||||
import { RelayApi, RelayStatus } from "../../api/RelayApi";
|
||||
import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider";
|
||||
import { useAlert } from "../../hooks/context_providers/AlertDialogProvider";
|
||||
import { AsyncWidget } from "../../widgets/AsyncWidget";
|
||||
import { TimeWidget } from "../../widgets/TimeWidget";
|
||||
import { BoolText } from "../../widgets/BoolText";
|
||||
|
||||
export function DeviceRelays(p: {
|
||||
device: Device;
|
||||
@ -115,10 +118,35 @@ export function DeviceRelays(p: {
|
||||
</>
|
||||
}
|
||||
>
|
||||
<ListItemText primary={r.name} secondary={"TODO: status"} />
|
||||
<ListItemText
|
||||
primary={r.name}
|
||||
secondary={<RelayEntryStatus relay={r} />}
|
||||
/>
|
||||
</ListItem>
|
||||
))}
|
||||
</DeviceRouteCard>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function RelayEntryStatus(p: { relay: DeviceRelay }): React.ReactElement {
|
||||
const [state, setState] = React.useState<RelayStatus | undefined>();
|
||||
|
||||
const load = async () => {
|
||||
setState(await RelayApi.SingleStatus(p.relay));
|
||||
};
|
||||
|
||||
return (
|
||||
<AsyncWidget
|
||||
loadKey={p.relay.id}
|
||||
load={load}
|
||||
errMsg="Failed to load relay status!"
|
||||
build={() => (
|
||||
<>
|
||||
<BoolText val={state!.on} positive="ON" negative="OFF" /> for{" "}
|
||||
<TimeWidget diff time={state!.for} />
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user