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 (
Other versions{" "}
chevron_right
| Version |
|
{otherReleases.map(release => (
| {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 (
<>
>
);
}
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} |
);
});