import React from "react"; import { observer } from "mobx-react"; import classNames from "classnames"; import { compareVersions } from "eez-studio-shared/util"; import { Loader } from "eez-studio-ui/loader"; import { Module } from "instrument/bb3/objects/Module"; import { openLink } from "instrument/bb3/helpers"; import { MODULE_FIRMWARE_RELEASES_PAGE } from "instrument/bb3/conf"; const OtherReleases = observer( ({ module, latestFirmwareVersion }: { module: Module; latestFirmwareVersion: string; }) => { if (!module.allReleases) { return null; } const bb3Instrument = module.bb3Instrument; const firmwareVersion = module.firmwareVersion; const otherReleases = module.allReleases .slice() .sort((a, b) => compareVersions(b.version, a.version)) .filter( release => release.version != latestFirmwareVersion && release.version != firmwareVersion ); if (otherReleases.length == 0) { return null; } return (

{otherReleases.map(release => ( ))}
Version
{release.version}
); } ); const ReleaseInfo = observer( ({ module, latestFirmwareVersion }: { module: Module; latestFirmwareVersion: string | undefined; }) => { const bb3Instrument = module.bb3Instrument; const firmwareVersion = module.firmwareVersion; if (bb3Instrument.refreshInProgress) { return ; } if (!latestFirmwareVersion) { return (
Could not get info about the latest firmware version!
); } if (compareVersions(latestFirmwareVersion, firmwareVersion) > 0) { return ( <>
New release! A new firmware version{" "} {latestFirmwareVersion} is available ( openLink( MODULE_FIRMWARE_RELEASES_PAGE( module.moduleType ) + "/tag/" + latestFirmwareVersion ) } > release notes ).
); } return ( <>
This is the latest firmware version!
); } ); export const ModuleItem = observer(({ module }: { module: Module }) => { const latestFirmwareVersion = module.allReleases.reduce( (latestFirmwareVersion, release) => !latestFirmwareVersion || compareVersions(release.version, latestFirmwareVersion) > 0 ? release.version : latestFirmwareVersion, undefined ); let updateInfo = null; if (module.bb3Instrument.appStore.instrument?.isConnected) { if (module.busy) { updateInfo = ; } else { updateInfo = module.moduleType.toLowerCase() != "dcp405" ? ( ) : null; } } return ( {module.slotIndex} {typeof module.moduleType == "string" ? module.moduleType : JSON.stringify(module.moduleType)} {typeof module.moduleRevision == "string" ? module.moduleRevision : JSON.stringify(module.moduleRevision)} {typeof module.firmwareVersion == "string" ? module.firmwareVersion : JSON.stringify(module.firmwareVersion)} {updateInfo} ); });