|
|
|
@ -6,7 +6,8 @@ import {
|
|
|
|
|
} from "@fortawesome/free-brands-svg-icons";
|
|
|
|
|
import { faPaperPlane } from "@fortawesome/free-solid-svg-icons";
|
|
|
|
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
|
|
|
import React, { FunctionComponent } from "react";
|
|
|
|
|
import moment from "moment";
|
|
|
|
|
import React, { FunctionComponent, useEffect, useState } from "react";
|
|
|
|
|
import { Col, Container, Row } from "react-bootstrap";
|
|
|
|
|
import { Helmet } from "react-helmet";
|
|
|
|
|
import { useSystemHealth, useSystemStatus } from "../../@redux/hooks";
|
|
|
|
@ -69,6 +70,25 @@ const SystemStatusView: FunctionComponent<Props> = () => {
|
|
|
|
|
const health = useSystemHealth();
|
|
|
|
|
const status = useSystemStatus();
|
|
|
|
|
|
|
|
|
|
const [uptime, setState] = useState<string>();
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const interval = setInterval(() => {
|
|
|
|
|
if (status) {
|
|
|
|
|
let duration = moment.duration(
|
|
|
|
|
moment().utc().unix() - status.start_time,
|
|
|
|
|
"seconds"
|
|
|
|
|
),
|
|
|
|
|
days = duration.days(),
|
|
|
|
|
hours = duration.hours().toString().padStart(2, "0"),
|
|
|
|
|
minutes = duration.minutes().toString().padStart(2, "0"),
|
|
|
|
|
seconds = duration.seconds().toString().padStart(2, "0");
|
|
|
|
|
setState(days + "d " + hours + ":" + minutes + ":" + seconds);
|
|
|
|
|
}
|
|
|
|
|
}, 1000);
|
|
|
|
|
return () => clearInterval(interval);
|
|
|
|
|
}, [status]);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Container className="p-5">
|
|
|
|
|
<Helmet>
|
|
|
|
@ -106,6 +126,9 @@ const SystemStatusView: FunctionComponent<Props> = () => {
|
|
|
|
|
<CRow title="Bazarr Config Directory">
|
|
|
|
|
<span>{status?.bazarr_config_directory}</span>
|
|
|
|
|
</CRow>
|
|
|
|
|
<CRow title="Uptime">
|
|
|
|
|
<span>{uptime}</span>
|
|
|
|
|
</CRow>
|
|
|
|
|
</InfoContainer>
|
|
|
|
|
</Row>
|
|
|
|
|
<Row>
|
|
|
|
|