Farmbot-Web-App/frontend/devices/components/hardware_settings.tsx

102 lines
3.9 KiB
TypeScript
Raw Normal View History

2017-06-29 12:54:02 -06:00
import * as React from "react";
2019-04-02 13:59:37 -06:00
import { MCUFactoryReset, bulkToggleControlPanel } from "../actions";
import { Widget, WidgetHeader, WidgetBody, SaveBtn } from "../../ui/index";
2017-06-29 12:54:02 -06:00
import { HardwareSettingsProps } from "../interfaces";
2018-03-09 02:34:24 -07:00
import { MustBeOnline, isBotUp } from "../must_be_online";
2017-06-29 12:54:02 -06:00
import { ToolTips } from "../../constants";
import { DangerZone } from "./hardware_settings/danger_zone";
2017-12-16 18:21:13 -07:00
import { PinGuard } from "./hardware_settings/pin_guard";
2017-06-29 12:54:02 -06:00
import { EncodersAndEndStops } from "./hardware_settings/encoders_and_endstops";
import { Motors } from "./hardware_settings/motors";
import { SpacePanelHeader } from "./hardware_settings/space_panel_header";
2017-07-26 09:51:31 -06:00
import {
HomingAndCalibration
} from "./hardware_settings/homing_and_calibration";
import { SpecialStatus } from "farmbot";
2018-03-08 21:03:02 -07:00
import { Popover, Position } from "@blueprintjs/core";
2018-07-18 20:53:32 -06:00
import { FwParamExportMenu } from "./hardware_settings/export_menu";
2019-04-02 13:59:37 -06:00
import { t } from "../../i18next_wrapper";
2017-06-29 12:54:02 -06:00
export class HardwareSettings extends
React.Component<HardwareSettingsProps, {}> {
render() {
2018-03-09 02:34:24 -07:00
const {
2019-01-28 17:04:42 -07:00
bot, dispatch, sourceFwConfig, controlPanelState, firmwareConfig
2018-03-09 02:34:24 -07:00
} = this.props;
const { informational_settings } = this.props.bot.hardware;
const firmwareVersion = informational_settings.firmware_version;
const { sync_status } = informational_settings;
const botDisconnected = !(isBotUp(sync_status) &&
this.props.botToMqttStatus === "up");
return <Widget className="hardware-widget">
2018-02-27 10:49:37 -07:00
<WidgetHeader title={t("Hardware")} helpText={ToolTips.HW_SETTINGS}>
<MustBeOnline
hideBanner={true}
syncStatus={sync_status}
networkState={this.props.botToMqttStatus}
lockOpen={process.env.NODE_ENV !== "production"}>
<SaveBtn
status={bot.isUpdating ? SpecialStatus.SAVING : SpecialStatus.SAVED}
dirtyText={" "}
2018-03-04 11:07:50 -07:00
savingText={t("Updating...")}
savedText={t("saved")}
hidden={false} />
</MustBeOnline>
</WidgetHeader>
<WidgetBody>
<button
className={"fb-button gray no-float"}
onClick={() => dispatch(bulkToggleControlPanel(true))}>
2018-02-27 10:49:37 -07:00
{t("Expand All")}
2018-03-08 21:03:02 -07:00
</button>
<button
className={"fb-button gray no-float"}
onClick={() => dispatch(bulkToggleControlPanel(false))}>
2018-02-27 10:49:37 -07:00
{t("Collapse All")}
2018-03-08 21:03:02 -07:00
</button>
2018-03-09 02:34:24 -07:00
{firmwareConfig &&
2018-03-08 21:03:02 -07:00
<Popover position={Position.BOTTOM_RIGHT}>
<i className="fa fa-download" />
2018-03-09 02:34:24 -07:00
<FwParamExportMenu firmwareConfig={firmwareConfig} />
2018-03-08 21:03:02 -07:00
</Popover>}
<MustBeOnline
networkState={this.props.botToMqttStatus}
syncStatus={sync_status}
lockOpen={process.env.NODE_ENV !== "production" || !!firmwareConfig}>
<div className="label-headings">
<SpacePanelHeader />
</div>
<HomingAndCalibration
dispatch={dispatch}
2018-03-09 02:34:24 -07:00
bot={bot}
sourceFwConfig={sourceFwConfig}
firmwareConfig={firmwareConfig}
botDisconnected={botDisconnected} />
<Motors
dispatch={dispatch}
2018-03-09 02:34:24 -07:00
firmwareVersion={firmwareVersion}
controlPanelState={controlPanelState}
2018-03-10 01:45:42 -07:00
sourceFwConfig={sourceFwConfig}
isValidFwConfig={!!firmwareConfig} />
<EncodersAndEndStops
dispatch={dispatch}
shouldDisplay={this.props.shouldDisplay}
2018-03-09 02:34:24 -07:00
controlPanelState={controlPanelState}
sourceFwConfig={sourceFwConfig} />
<PinGuard
dispatch={dispatch}
2018-03-09 02:34:24 -07:00
controlPanelState={controlPanelState}
sourceFwConfig={sourceFwConfig} />
<DangerZone
dispatch={dispatch}
2018-03-09 02:34:24 -07:00
controlPanelState={controlPanelState}
onReset={MCUFactoryReset}
botDisconnected={botDisconnected} />
</MustBeOnline>
</WidgetBody>
</Widget>;
2017-06-29 12:54:02 -06:00
}
}