Farmbot-Web-App/frontend/devices/connectivity/index.tsx

70 lines
2.3 KiB
TypeScript
Raw Normal View History

import * as React from "react";
2017-09-30 22:06:29 -06:00
import { Widget, WidgetHeader, WidgetBody, Row, Col } from "../../ui/index";
2017-09-26 13:05:01 -06:00
import { ConnectivityRow, StatusRowProps } from "./connectivity_row";
import { RetryBtn } from "./retry_btn";
2018-08-01 18:20:50 -06:00
import { SpecialStatus, InformationalSettings } from "farmbot";
2017-09-30 22:06:29 -06:00
import { ConnectivityDiagram } from "./diagram";
2017-12-14 13:17:33 -07:00
import { ToolTips } from "../../constants";
2018-07-20 14:23:31 -06:00
import {
ChipTemperatureDisplay, WiFiStrengthDisplay
} from "../components/fbos_settings/fbos_details";
2019-04-02 13:59:37 -06:00
import { t } from "../../i18next_wrapper";
interface Props {
2017-09-26 13:05:01 -06:00
onRefresh(): void;
rowData: StatusRowProps[];
children?: React.ReactChild;
status: SpecialStatus;
2018-07-20 14:23:31 -06:00
fbosInfo: InformationalSettings;
}
2017-09-30 22:06:29 -06:00
interface ConnectivityState {
hoveredConnection: string | undefined;
}
export class ConnectivityPanel extends React.Component<Props, ConnectivityState> {
state: ConnectivityState = { hoveredConnection: undefined };
hover = (name: string) =>
() => this.setState({ hoveredConnection: name });
render() {
2017-09-26 11:07:52 -06:00
const { rowData } = this.props;
2018-07-20 14:23:31 -06:00
const { soc_temp, wifi_level } = this.props.fbosInfo;
2017-09-30 22:06:29 -06:00
return <Widget className="connectivity-widget">
<WidgetHeader
title={t("Connectivity")}
helpText={ToolTips.CONNECTIVITY}>
2017-09-26 13:05:01 -06:00
<RetryBtn
status={this.props.status}
onClick={this.props.onRefresh}
flags={rowData.map(x => !!x.connectionStatus)} />
</WidgetHeader>
<WidgetBody>
2017-09-30 22:06:29 -06:00
<Row>
<Col md={12} lg={4}>
<ConnectivityDiagram
rowData={rowData}
hover={this.hover}
hoveredConnection={this.state.hoveredConnection} />
2018-07-20 14:23:31 -06:00
<div className="fbos-info">
<label>{t("Raspberry Pi Info")}</label>
<ChipTemperatureDisplay temperature={soc_temp} />
<WiFiStrengthDisplay wifiStrength={wifi_level} />
</div>
2017-09-30 22:06:29 -06:00
</Col>
<Col md={12} lg={8}>
2018-08-20 16:38:12 -06:00
<ConnectivityRow from={t("from")} to={t("to")} header={true} />
2017-09-30 22:06:29 -06:00
{rowData
.map((x, y) => <ConnectivityRow {...x} key={y}
hover={this.hover}
hoveredConnection={this.state.hoveredConnection} />)}
<hr style={{ marginLeft: "3rem" }} />
{this.props.children}
</Col>
</Row>
</WidgetBody>
</Widget>;
}
}