Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/components/Block.test.tsx → __tests__/Block.test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { fireEvent, render } from "@testing-library/react";
import Block from "@/app/components/Block";
import { IfcBlock } from "@/app/types";
import type { IfcBlock } from "@/app/types";

let tableBody: HTMLTableSectionElement;
beforeEach(() => {
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import { tBlockMapping } from "@/app/types";
import { checkIfAllBlocksInGroupAreHidden } from "./GroupUtils";
import { checkIfAllBlocksInGroupAreHidden } from "@/app/components/GroupUtils";
import type { tBlockMapping } from "@/app/types";

test("group with all hidden blocks returns true", () => {
let blocks: tBlockMapping = new Map();
const blocks: tBlockMapping = new Map();
blocks.set("testing", { pvaddress: "", visible: false });
const result = checkIfAllBlocksInGroupAreHidden(blocks);
expect(result).toBe(true);
});

test("group with all visible blocks returns false", () => {
let blocks: tBlockMapping = new Map();
const blocks: tBlockMapping = new Map();
blocks.set("testing", { pvaddress: "testing", visible: true });
const result = checkIfAllBlocksInGroupAreHidden(blocks);
expect(result).toBe(false);
});

test("group with mixed visible blocks returns false", () => {
let blocks: tBlockMapping = new Map();
const blocks: tBlockMapping = new Map();
blocks.set("block1", { pvaddress: "block1", visible: false });
blocks.set("block2", { pvaddress: "block2", visible: true });
const result = checkIfAllBlocksInGroupAreHidden(blocks);
Expand Down
8 changes: 4 additions & 4 deletions app/components/Groups.test.tsx → __tests__/Groups.test.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { render } from "@testing-library/react";
import Groups from "@/app/components/Groups";
import { tBlockMapping, tGroups } from "@/app/types";
import type { tBlockMapping, tGroups } from "@/app/types";

it("renders groups correctly with hidden and non hidden groups", () => {
let groups: tGroups = new Map();
let blocksForGroup1: tBlockMapping = new Map();
const groups: tGroups = new Map();
const blocksForGroup1: tBlockMapping = new Map();
blocksForGroup1.set("A:SHOWN:BLOCK", {
pvaddress: "A:SHOWN:BLOCK",
human_readable_name: "aShownBlock",
Expand All @@ -19,7 +19,7 @@ it("renders groups correctly with hidden and non hidden groups", () => {
});
groups.set("group1", blocksForGroup1);

let blocksForGroup2: tBlockMapping = new Map();
const blocksForGroup2: tBlockMapping = new Map();
blocksForGroup2.set("A:HIDDEN:BLOCK", {
pvaddress: "A:HIDDEN:BLOCK",
human_readable_name: "aHiddenBlock",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
toPrecision,
yesToBoolean,
} from "@/app/components/Instrument";
import {
import type {
ConfigOutput,
IfcBlock,
IfcPVWSMessage,
Expand All @@ -22,8 +22,8 @@ import {
test("findPVInGroups returns a block when it finds one", () => {
const blockName = "blockName";
const prefix = "IN:INSTRUMENT";
let groups: tGroups = new Map();
let group1Blocks: tBlockMapping = new Map();
const groups: tGroups = new Map();
const group1Blocks: tBlockMapping = new Map();
group1Blocks.set(blockName, {
human_readable_name: blockName,
pvaddress: "some:underlying:pv:name",
Expand Down Expand Up @@ -132,7 +132,7 @@ test("storePrecision adds precision to a block if it is the first update", () =>
pv: "",
precision: precision,
};
let blockWithoutPrecision: IfcBlock = { pvaddress: "" };
const blockWithoutPrecision: IfcBlock = { pvaddress: "" };
storePrecision(message, blockWithoutPrecision);
expect(blockWithoutPrecision.precision).toEqual(precision);
});
Expand All @@ -142,16 +142,16 @@ test("getAllBlockPVs returns flat list of blocks, their RC and SPRBV pvs", () =>
const block1Name = prefix + CSSB + "blockName";
const block2Name = prefix + CSSB + "block2Name";

let inst = new Instrument(prefix);
const inst = new Instrument(prefix);

let group1Blocks: tBlockMapping = new Map();
const group1Blocks: tBlockMapping = new Map();
group1Blocks.set(block1Name, {
human_readable_name: block1Name,
pvaddress: "some:underlying:pv:name",
});
inst.groups.set("aGroup", group1Blocks);

let group2Blocks: tBlockMapping = new Map();
const group2Blocks: tBlockMapping = new Map();
group2Blocks.set(block2Name, {
human_readable_name: block2Name,
pvaddress: "someother:underlying:pv:name",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { render } from "@testing-library/react";
import InstrumentWallCard from "@/app/components/InstrumentWallCard";
import { instListEntryWithRunstatePVandValue } from "@/app/types";
import type { instListEntryWithRunstatePVandValue } from "@/app/types";

it("renders instrumentwallcard unchanged", () => {
const instrument: instListEntryWithRunstatePVandValue = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createInstrumentGroups } from "@/app/components/InstrumentsDisplay";
import { instList } from "@/app/types";
import type { instList } from "@/app/types";

test("createInstrumentGroups adds two instruments from different target stations to the same science group", () => {
const instrument1Name = "INST1";
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
getPrefix,
getPvValue,
} from "@/app/components/PVutils";
import { IfcPVWSMessage, instListEntry } from "@/app/types";
import type { IfcPVWSMessage, instListEntry } from "@/app/types";

// Test of ExponentialOnThresholdFormat ported from ibex_gui Java code
test("GIVEN value 0.1 which is above lower threshold WHEN formatting with precision 3 THEN no exponential notation used", () => {
Expand Down
File renamed without changes.
File renamed without changes.
12 changes: 6 additions & 6 deletions app/components/TopBar.test.ts → __tests__/TopBar.test.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { render } from "@testing-library/react";
import { Instrument } from "@/app/components/Instrument";
import { exportedForTesting, getRunstate } from "@/app/components/TopBar";
import { tBlockMapping } from "@/app/types";
import type { tBlockMapping } from "@/app/types";

test("GetRunstate returns the runstate when it exists and is of string type", () => {
const prefix = "TESTING:";

const expected = "SETUP";
let blocks: tBlockMapping = new Map();
const blocks: tBlockMapping = new Map();
blocks.set(prefix + "DAE:RUNSTATE_STR", {
pvaddress: prefix + "DAE:RUNSTATE_STR",
value: expected,
Expand All @@ -23,7 +23,7 @@ test("GetRunstate returns unknown when no runstate PV in array", () => {
it("renders topbar unchanged", () => {
const prefix = "TESTING:";

let instrument = new Instrument(prefix);
const instrument = new Instrument(prefix);
const instName = "Instrument";
const { container } = render(
exportedForTesting({
Expand All @@ -39,7 +39,7 @@ it("renders topbar unchanged", () => {
it("draws instName expectedly", () => {
const prefix = "TESTING:";

let instrument = new Instrument(prefix);
const instrument = new Instrument(prefix);
const instName = "Instrument";
const { container } = render(
exportedForTesting({
Expand All @@ -56,8 +56,8 @@ it("draws instName expectedly", () => {

it("draws configName expectedly", () => {
const prefix = "TESTING:";
let instrument = new Instrument(prefix);
let configNamePV = instrument.runInfoPVs.get(
const instrument = new Instrument(prefix);
const configNamePV = instrument.runInfoPVs.get(
prefix + "CS:BLOCKSERVER:CURR_CONFIG_NAME",
);
const expectedConfigName = "Aconfig";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ exports[`renders topbar unchanged 1`] = `
<a
class="underline"
href="https://shadow.nd.rl.ac.uk/grafana/d/wMlwwaHMk/block-history?viewPanel=2&orgId=1&var-block=undefined&var-inst=INSTRUMENT"
rel="noopener"
target="_blank"
/>
</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ exports[`renders groups correctly with hidden and non hidden groups 1`] = `
<a
class="underline"
href="https://shadow.nd.rl.ac.uk/grafana/d/wMlwwaHMk/block-history?viewPanel=2&orgId=1&var-block=aShownBlock&var-inst=TESTING"
rel="noopener"
target="_blank"
>
aShownBlock
Expand Down Expand Up @@ -110,6 +111,7 @@ exports[`renders groups correctly with hidden and non hidden groups 1`] = `
<a
class="underline"
href="https://shadow.nd.rl.ac.uk/grafana/d/wMlwwaHMk/block-history?viewPanel=2&orgId=1&var-block=aDifferentShownBlock&var-inst=TESTING"
rel="noopener"
target="_blank"
>
aDifferentShownBlock
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ exports[`renders main page unchanged 1`] = `
<a
class="inline-flex p-2 text-blue-500 capitalize transition-colors duration-200 transform bg-blue-100 rounded-full dark:bg-blue-500 dark:text-white hover:underline hover:bg-blue-400 dark:hover:bg-blue-400"
href="https://stfc365.sharepoint.com/sites/isis-hub/SitePages/Instrument-Quick-Links.aspx"
rel="noopener"
target="_blank"
>
<svg
Expand Down Expand Up @@ -160,6 +161,7 @@ exports[`renders main page unchanged 1`] = `
<a
class="inline-flex p-2 text-blue-500 capitalize transition-colors duration-200 transform bg-blue-100 rounded-full dark:bg-blue-500 dark:text-white hover:underline hover:bg-blue-400 dark:hover:bg-blue-400"
href="https://shadow.nd.rl.ac.uk/journals/"
rel="noopener"
target="_blank"
>
<svg
Expand Down Expand Up @@ -212,6 +214,7 @@ exports[`renders main page unchanged 1`] = `
<a
class="inline-flex p-2 text-blue-500 capitalize transition-colors duration-200 transform bg-blue-100 rounded-full dark:bg-blue-500 dark:text-white hover:underline hover:bg-blue-400 dark:hover:bg-blue-400"
href="https://www.isis.stfc.ac.uk/beam-status/"
rel="noopener"
target="_blank"
>
<svg
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {
dehex_and_decompress,
instListFromBytes,
} from "./dehex_and_decompress";
} from "@/app/components/dehex_and_decompress";

const instListHexed =
"Nzg5Y2I1OTg2ZjRmZGIzMDEwYzZiZjRhOTVkNzIwMGRiNjY5YTNlZjRjZTJhNGQ2ZTIzOGQ4MGUyYjQzYTg0MjUwMDYxMjFiODhjMjM0NjlkYTc3YzdjZWZmNWUyZmFkMjNjY2NiM2ViZjJhZjdjNDM5ZGY5ZDdkZmUyZmY4N2RmOTZiMTk0YzI3MDE5MTQ5YTE4MmJkNDk3MGZiYjA3YWNlNmEzMThiZTZhZGZlZjgyNzdmNWFkZWRjZmRiNTNhY2JhNmE1M2ViNWUwNmVhNWFlNmU5N2Q3MmZmN2NiNmJjMzllOWY1ZTk2NDZmY2Y5ZjRmMGYyYjgzMmJmY2YyZmNjYWZkNWYyZWFhZTY2ZmZmNzI2NWRkMDcwMjY0NTg2ODZlZDExMTBiODI2MmVhMTAzNWU4ODRjMDUzZDA3Mzc5N2Y3YWI3NTBiMzMxNjMzMjQ3ZTIzODNlMDU2N2VmYjRiYjM5YzQ5ZjQ5ZDFiYjBmMWNhMTZiYzM5YWUzYzEzMjkzOTVlYzhhZjFmYjBlMGViMTQzYTI4ZTkxNzhhNzgyODk3NzQ3ZGQ5NTU5MWU3NDJlYWVkMGIxZjg1MjYxYzYyYTRkNTgxODU1MmY3MTgzZjI1OTIwYmVjMzM3NDAwMzhhODgwNTNlMjI5YjIyYmVmNDgxYTYzYmJhZDUyZTE1ZTRiNjNhN2E4NzQxZTMyNGQzNGRiOTlmNDExZTUwMjViZmE1YTg2MmI2ZjY0YTc4NWRmMWE5MzcxYTI5MTk4OGQwYzYyNWFkOWVkOWRiMzg0NjU5NDRhOTYyNWRiZGZkOWQ2ODI5ODIyMGUzYTAwM2M1NGMwMmRlNTFjMmFjZDBmMjEzODEyYmU5MTQxNzAyYjdiNGEzNTI2MTk1NjYyMWIxOWFlYmM5MWRkOGFhYjQ4NTU0ZWMzZGRiMTE3OGFlYTIyMWY3MGQwNDFjNGM3NDIxZDFlMzlhZWJmOGI5OTMyNTdlNjgzNzYyMDA2ODYyYWZjYzlkMTkwNzM1ZWNlNjQxZTBkNWE1YTg3YjAxOTk1ZjA2M2U0NjZjODk0NzBhNTQ5OWE4YTQ0OTI3Yzc2YjZkYmQ0ODA5ZDAxMjM0ZTI5MzNjYTQzNmUzYTBlOWViOTNkMDI5Y2Q0YzRiZjk5NTNhYThhNTM4NjE1Y2QxZTAxNjY2YWUyNmYzMzU1MTkzODk4Yjk4MzM5M2JiYTkwZWU0ZGM2YWQwZWE3MzI2NTE5NTY1YjViMDA2YjZiMDlmYzc2MzVjOWJlNTFiY2M0ZjcwOGYwNTExMzZmNDU1ZTUxN2NhYTY5NzUxMGJmZDQzZDRlMzU5NDczYjI0ZmIwMTQ2OTAxNGM5MTEyNzhiNDYwMWE1MjQ0NTI2Y2RmZjYwODVjODY4YTM4ZTU0M2M0OTQ5MDExOTUzNGRhZWUyM2ExNThiYmFkNTUxMGRmYTg2MzYzOGZkZTIzMjRjN2Q2YTQ5MWUxZmUzMGIyZGZkZDIxZDRjMDFjZDAwMWUwYTEwMjFlNjc4MThjYTI3MzQ4MmRjM2ZlNmY2NGZmNzU1Y2NkYjFiZTU2YWIzMDI5ZTdlZmQwZDViNDUwMjFiNjNmNWIxZDk4Mjg3NTdmZGYyMDE1MjdkODkxYTc1MmUxNzk0NzljNzg5YTQwNTM4YThkZmViNTBhYTM1MmM3YzFkZjM1ZjFiOTk5MDhkMDhkMjdiMTEzYmU5NWZkYzYwZmNkMjZjMjY2YmI1NmRmMzg2YjFiZGRhZDFlNGIxYWE3MzRkNDgyNTMyZDc3MjViZTg4MzU3ZTAyZWIxMWI4MDEyYWUyYjMzNzE0MTIzYmY2MzYzMjhjNmY2NGE3NmYzMTYyMWQzMmM2YTVjMDZhNDAwNzgwOGIwYTc4NmQ0ZDExZDU1YzIwZjMxMmU5NDBkZjg0YTZkMzhhYzUwNzVlNDc4NTAyOWQxMzBhNzQ0ODI4N2M1ZGI4YjE0YzUzZWNkYWE1ZDUzN2ZhODBkMTdkNjc4MTM5Mjc5ODdmZTM0NzhiMWE2YzllMmMwY2YwZWRjMzk2Y2U0M2I0MjNiNTYwNzM1MjMyYzA1MzVkZTY4NWMyM2U0NTIzNmZkYzg3MjhiNzBmZTE5MDA1ZGY5OTlhMjE5MTFiMTk0NGI2YjJmZjU2NmM5ZjNhNzhmMjVlODc4ODlmODUzYTBhZGZlMWU0OWQ1MzIyNTMyYzMxMWIxZGU2YTVkNWRmZTFmMDZkMWYzYmI4Mzg4MDYyOTYxNjlmMWQ4ZjM1ZTNlZTI1NThjY2Y2ZWQ2NTM0MjcwOTc2M2YwMTMwNzI3YmJmMWYxZTM4MTY1MTg3MmMxNjcxNWM4ZTVjYzg1MGRkMTEzODU1NTdjNDc3MjVlMWMyOGUyMmQ4NjY2ZTAxZGNjZTI1ZjBkOWRjNDMzNjcwYjFkYzIzYjA5YzU1YzRhMzBiNzY0Y2U3NDljMTM0NTVlODc1ZjMzYTg1YmRhNmE0YzRmMTQ2NmRkMGNlYzUyYmNhNGYxMTE5AA==";
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion app/_app.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// import "@/styles/globals.css";
import "./globals.css";
import { AppProps } from "next/app";
import type { AppProps } from "next/app";

export default function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />;
Expand Down
2 changes: 1 addition & 1 deletion app/commonVars.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IfcPVWSRequest, PVWSRequestType } from "@/app/types";
import { type IfcPVWSRequest, PVWSRequestType } from "@/app/types";

export const instListPV = "CS:INSTLIST";
export const socketURL =
Expand Down
4 changes: 3 additions & 1 deletion app/components/Block.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use client";
import { useState } from "react";
import { IfcBlock } from "@/app/types";
import type { IfcBlock } from "@/app/types";

const grafana_stub =
"https://shadow.nd.rl.ac.uk/grafana/d/wMlwwaHMk/block-history?viewPanel=2&orgId=1&var-block=";
Expand Down Expand Up @@ -55,6 +55,7 @@ export default function Block({
instName.toUpperCase().replace("-", "_")
}
target="_blank"
rel="noopener"
>
{pv.human_readable_name}
</a>
Expand Down Expand Up @@ -92,6 +93,7 @@ export default function Block({
href="https://github.com/ISISComputingGroup/ibex_user_manual/wiki/Blocks#alarms"
className="text-red-400"
target="_blank"
rel="noopener"
>
Alarm: {pv.severity}
</a>
Expand Down
2 changes: 1 addition & 1 deletion app/components/CheckToggle.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Dispatch, memo, SetStateAction, useCallback } from "react";
import { type Dispatch, memo, type SetStateAction, useCallback } from "react";

const CheckToggle = memo(function CheckToggle({
checked,
Expand Down
1 change: 1 addition & 0 deletions app/components/GithubActionsScheduledJobs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ function GithubActionsJob({
"flex flex-row h-10 w-full rounded-lg bg-gray-800 border-2 border-black hover:border-white"
}
target={"_blank"}
rel="noopener"
>
<h2 className={"text-lg text-center w-2/5 mx-5"}>{repo}</h2>
<div className={"float-right w-3/5"}>
Expand Down
2 changes: 1 addition & 1 deletion app/components/Group.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { memo } from "react";
import { tBlockMapping } from "@/app/types";
import type { tBlockMapping } from "@/app/types";
import Block from "./Block";
import { checkIfAllBlocksInGroupAreHidden } from "./GroupUtils";

Expand Down
2 changes: 1 addition & 1 deletion app/components/GroupUtils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { tBlockMapping } from "@/app/types";
import type { tBlockMapping } from "@/app/types";

export function checkIfAllBlocksInGroupAreHidden(
blocks: tBlockMapping,
Expand Down
2 changes: 1 addition & 1 deletion app/components/Groups.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { tGroups } from "@/app/types";
import type { tGroups } from "@/app/types";
import Group from "./Group";

export default function Groups({
Expand Down
8 changes: 4 additions & 4 deletions app/components/Instrument.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ExponentialOnThresholdFormat } from "@/app/components/PVutils";
import {
import type {
ConfigOutput,
ConfigOutputBlock,
IfcBlock,
Expand Down Expand Up @@ -176,7 +176,7 @@ export class Instrument {
}

clone(): Instrument {
let cloned = new Instrument(this.prefix);
const cloned = new Instrument(this.prefix);
cloned.groups = structuredClone(this.groups);
cloned.runInfoPVs = structuredClone(this.runInfoPVs);
cloned.dashboard = structuredClone(this.dashboard);
Expand Down Expand Up @@ -241,10 +241,10 @@ export function getGroupsWithBlocksFromConfigOutput(
configOutput: ConfigOutput,
): tGroups {
const configOutputGroups = configOutput.groups;
let newGroups: tGroups = new Map();
const newGroups: tGroups = new Map();
for (const configOutputGroup of configOutputGroups) {
const groupName = configOutputGroup.name;
let blocks: tBlockMapping = new Map();
const blocks: tBlockMapping = new Map();
for (const configOutputBlock of configOutputGroup.blocks) {
const newBlock = configOutput.blocks.find(
(b: ConfigOutputBlock) => b.name === configOutputBlock,
Expand Down
14 changes: 9 additions & 5 deletions app/components/InstrumentData.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use client";
import { RefObject, useEffect, useRef, useState } from "react";
import { type RefObject, useEffect, useRef, useState } from "react";
import useWebSocket from "react-use-websocket";
import {
instListPV,
Expand Down Expand Up @@ -27,7 +27,11 @@ import {
} from "@/app/components/Instrument";
import { getPrefix, getPvValue } from "@/app/components/PVutils";
import TopBar from "@/app/components/TopBar";
import { IfcPVWSMessage, IfcPVWSRequest, PVWSRequestType } from "@/app/types";
import {
type IfcPVWSMessage,
type IfcPVWSRequest,
PVWSRequestType,
} from "@/app/types";

export function InstrumentData({ instrumentName }: { instrumentName: string }) {
const [showHiddenBlocks, setShowHiddenBlocks] = useState(false);
Expand All @@ -46,7 +50,7 @@ export function InstrumentData({ instrumentName }: { instrumentName: string }) {
}
}, [instName]);

let messageQueue: RefObject<Array<IfcPVWSMessage>> = useRef([]);
const messageQueue: RefObject<Array<IfcPVWSMessage>> = useRef([]);

const {
sendJsonMessage,
Expand Down Expand Up @@ -88,7 +92,7 @@ export function InstrumentData({ instrumentName }: { instrumentName: string }) {
// config hasnt actually changed so do nothing
return;
}
let newInstrument = currentInstrument.clone();
const newInstrument = currentInstrument.clone();
newInstrument.groups = getGroupsWithBlocksFromConfigOutput(
newInstrument.prefix,
JSON.parse(dehex_and_decompress(atob(updatedPVbytes))),
Expand Down Expand Up @@ -130,7 +134,7 @@ export function InstrumentData({ instrumentName }: { instrumentName: string }) {
);

// Clone the instrument object here to avoid mutating the state without calling setState()
let newInstrument = currentInstrument.clone();
const newInstrument = currentInstrument.clone();

while (true) {
const updatedPV = messageQueue.current.shift();
Expand Down
2 changes: 1 addition & 1 deletion app/components/InstrumentWallCard.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Link from "next/link";
import { instListEntryWithRunstatePVandValue } from "@/app/types";
import type { instListEntryWithRunstatePVandValue } from "@/app/types";
import {
getForegroundColour,
getStatusColour,
Expand Down
Loading