diff --git a/js/cards/disk2.ts b/js/cards/disk2.ts index 81398cf..be81b4e 100644 --- a/js/cards/disk2.ts +++ b/js/cards/disk2.ts @@ -145,10 +145,10 @@ const PHASE_DELTA = [ [1, -2, -1, 0] ] as const; -const DRIVE_NUMBERS = [1, 2] as const; -type DriveNumber = MemberOf; +export const DRIVE_NUMBERS = [1, 2] as const; +export type DriveNumber = MemberOf; -interface Callbacks { +export interface Callbacks { driveLight: (drive: DriveNumber, on: boolean) => void; dirty: (drive: DriveNumber, dirty: boolean) => void; label: (drive: DriveNumber, name: string) => void; diff --git a/js/ui/drive_lights.js b/js/ui/drive_lights.js deleted file mode 100644 index ae0ce0f..0000000 --- a/js/ui/drive_lights.js +++ /dev/null @@ -1,20 +0,0 @@ -export default function DriveLights() -{ - return { - driveLight: function(drive, on) { - var disk = document.querySelector('#disk' + drive); - disk.style.backgroundImage = - on ? 'url(css/red-on-16.png)' : - 'url(css/red-off-16.png)'; - }, - dirty: function() { - // document.querySelector('#disksave' + drive).disabled = !dirty; - }, - label: function(drive, label) { - if (label) { - document.querySelector('#disk-label' + drive).innerText = label; - } - return document.querySelector('#disk-label' + drive).innerText; - } - }; -} diff --git a/js/ui/drive_lights.ts b/js/ui/drive_lights.ts new file mode 100644 index 0000000..424fd0f --- /dev/null +++ b/js/ui/drive_lights.ts @@ -0,0 +1,24 @@ +import { Callbacks, DriveNumber } from '../cards/disk2'; + +export default class DriveLights implements Callbacks { + public driveLight(drive: DriveNumber, on: boolean) { + const disk = + document.querySelector('#disk' + drive)! as HTMLElement; + disk.style.backgroundImage = + on ? 'url(css/red-on-16.png)' : + 'url(css/red-off-16.png)'; + } + + public dirty() { + // document.querySelector('#disksave' + drive).disabled = !dirty; + } + + public label(drive: DriveNumber, label: string) { + const labelElement = + document.querySelector('#disk-label' + drive)! as HTMLElement; + if (label) { + labelElement.innerText = label; + } + return labelElement.innerText; + } +}