Farmbot-Web-App/frontend/controls/move/move.tsx

67 lines
2.7 KiB
TypeScript

import * as React from "react";
import { Widget, WidgetBody, WidgetHeader } from "../../ui";
import { MustBeOnline } from "../../devices/must_be_online";
import { validBotLocationData } from "../../util";
import { toggleWebAppBool } from "../../config_storage/actions";
import { ToolTips } from "../../constants";
import { BooleanSetting } from "../../session_keys";
import { MoveProps } from "./interfaces";
import { MoveWidgetSettingsMenu } from "./settings_menu";
import { JogControlsGroup } from "./jog_controls_group";
import { BotPositionRows } from "./bot_position_rows";
import { MotorPositionPlot } from "./motor_position_plot";
import { Popover, Position } from "@blueprintjs/core";
import { BooleanConfigKey } from "farmbot/dist/resources/configs/web_app";
import { t } from "../../i18next_wrapper";
import { getStatus } from "../../connectivity/reducer_support";
export class Move extends React.Component<MoveProps, {}> {
toggle = (key: BooleanConfigKey) => (): void =>
this.props.dispatch(toggleWebAppBool(key));
getValue = (key: BooleanConfigKey): boolean =>
!!this.props.getWebAppConfigVal(BooleanSetting[key]);
render() {
const { bot } = this.props;
const { location_data, informational_settings } = bot.hardware;
const locationData = validBotLocationData(location_data);
return <Widget className="move-widget">
<WidgetHeader
title={t("Move")}
helpText={ToolTips.MOVE}>
<Popover position={Position.BOTTOM_RIGHT}>
<i className="fa fa-gear" />
<MoveWidgetSettingsMenu
toggle={this.toggle}
getValue={this.getValue}
firmwareHardware={this.props.firmwareHardware} />
</Popover>
</WidgetHeader>
<WidgetBody>
<MustBeOnline
lockOpen={process.env.NODE_ENV !== "production"}
networkState={getStatus(bot.connectivity.uptime["bot.mqtt"])}
syncStatus={informational_settings.sync_status}>
<JogControlsGroup
dispatch={this.props.dispatch}
stepSize={bot.stepSize}
botPosition={locationData.position}
getValue={this.getValue}
arduinoBusy={this.props.arduinoBusy}
env={this.props.env}
firmwareSettings={this.props.firmwareSettings} />
<BotPositionRows
locationData={locationData}
getValue={this.getValue}
arduinoBusy={this.props.arduinoBusy}
firmwareHardware={this.props.firmwareHardware} />
</MustBeOnline>
{this.props.getWebAppConfigVal(BooleanSetting.show_motor_plot) &&
<MotorPositionPlot locationData={locationData} />}
</WidgetBody>
</Widget>;
}
}