import * as React from "react"; import { Popover, Position } from "@blueprintjs/core"; import { FIRMWARE_CHOICES_DDI } from "../firmware_hardware_support"; import { flashFirmware } from "../../actions"; import { t } from "../../../i18next_wrapper"; import { BotState } from "../../interfaces"; import { FirmwareAlerts } from "../../../messages/alerts"; import { TimeSettings } from "../../../interfaces"; import { trim } from "../../../util"; import { Alert } from "farmbot"; import { isFwHardwareValue, boardType } from "../firmware_hardware_support"; export interface FirmwareHardwareStatusIconProps { firmwareHardware: string | undefined; status: boolean; } export const FirmwareHardwareStatusIcon = (props: FirmwareHardwareStatusIconProps) => { const okNoStatus = props.status ? "ok" : "no"; const status = props.firmwareHardware ? okNoStatus : "unknown"; const okNoStatusText = props.status ? t("ok") : t("error"); const statusText = props.firmwareHardware ? okNoStatusText : t("unknown"); const okNoIcon = props.status ? "fa-check-circle" : "fa-times-circle"; const icon = props.firmwareHardware ? okNoIcon : "fa-question-circle"; return ; }; export const lookup = (value: string | undefined) => value && Object.keys(FIRMWARE_CHOICES_DDI).includes(value) ? FIRMWARE_CHOICES_DDI[value].label : undefined; export interface FirmwareHardwareStatusDetailsProps { botOnline: boolean; alerts: Alert[]; apiFirmwareValue: string | undefined; botFirmwareValue: string | undefined; mcuFirmwareValue: string | undefined; timeSettings: TimeSettings; dispatch: Function; } export interface FlashFirmwareBtnProps { apiFirmwareValue: string | undefined; botOnline: boolean; } export const FlashFirmwareBtn = (props: FlashFirmwareBtnProps) => { const { apiFirmwareValue } = props; return ; }; export interface FirmwareActionsProps { apiFirmwareValue: string | undefined; botOnline: boolean; } export const FirmwareActions = (props: FirmwareActionsProps) => { const { apiFirmwareValue } = props; return

{trim(`${t("Flash the")} ${lookup(apiFirmwareValue) || ""} ${t("firmware to your device")}:`)}

; }; export const FirmwareHardwareStatusDetails = (props: FirmwareHardwareStatusDetailsProps) => { return

{lookup(props.apiFirmwareValue) || t("unknown")}

{lookup(props.botFirmwareValue) || t("unknown")}

{lookup(props.mcuFirmwareValue) || t("unknown")}

; }; export interface FirmwareHardwareStatusProps { apiFirmwareValue: string | undefined; alerts: Alert[]; bot: BotState; botOnline: boolean; timeSettings: TimeSettings; dispatch: Function; } export const FirmwareHardwareStatus = (props: FirmwareHardwareStatusProps) => { const { firmware_version } = props.bot.hardware.informational_settings; const { firmware_hardware } = props.bot.hardware.configuration; const status = props.apiFirmwareValue == firmware_hardware && props.apiFirmwareValue == boardType(firmware_version); return ; };