artnet-usbdmx-converter/src/controlscreen.ts

57 lines
2.1 KiB
TypeScript

import {Sparkline} from "clui";
import {defaultConvertHandler} from "./index";
import clear from "clear";
import chalk from "chalk";
import figlet from "figlet";
import modeToString from "./helpers/modeToString";
/**
* Renders the control screen
*/
export default async function renderControlScreen() {
clear({fullClear: true});
console.log(
chalk.cyan(
figlet.textSync("ArtNet => USBDMX", {horizontalLayout: "full"})
)
);
let interfaceDisplayName;
if (defaultConvertHandler.dmxInterface?.product === undefined && defaultConvertHandler.dmxInterface?.manufacturer === undefined) {
interfaceDisplayName = defaultConvertHandler.dmxInterface?.serial;
}
else {
interfaceDisplayName = `${defaultConvertHandler.dmxInterface?.manufacturer + " " ?? ""}${defaultConvertHandler.dmxInterface?.product + " " ?? ""}(${defaultConvertHandler.dmxInterface?.serial})`
}
console.log("=================")
console.log(
chalk.yellowBright(
"Interface:"
),
`${interfaceDisplayName}`);
console.log(
chalk.yellowBright(
"Mode:"
),
`${modeToString(defaultConvertHandler.dmxInterface?.currentMode ?? 0)}`)
console.log("=================")
const artnetInSparkline = Sparkline(defaultConvertHandler.artnetInCountHistory, "req/sec");
const artnetOutSparkline = Sparkline(defaultConvertHandler.artnetOutCountHistory, "req/sec");
const usbdmxInSparkline = Sparkline(defaultConvertHandler.usbdmxInCountHistory, "req/sec");
const usbdmxOutSparkline = Sparkline(defaultConvertHandler.usbdmxOutCountHistory, "req/sec");
process.stdout.write("ArtNet In\t")
process.stdout.write(artnetInSparkline);
process.stdout.write("\nArtNet Out\t")
process.stdout.write(artnetOutSparkline);
process.stdout.write("\nUSBDMX In\t")
process.stdout.write(usbdmxInSparkline);
process.stdout.write("\nUSBDMX Out\t")
process.stdout.write(usbdmxOutSparkline);
console.log("\n");
console.log(chalk.yellow(
"Close the window or press Ctrl+C to terminate the program"
))
}