artnet-usbdmx-converter/src/controlscreen.ts

51 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-10-08 18:44:10 +02:00
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
*/
2023-10-08 18:44:10 +02:00
export default async function renderControlScreen() {
clear({fullClear: true});
console.log(
chalk.cyan(
figlet.textSync("ArtNet => USBDMX", {horizontalLayout: "full"})
)
);
let interfaceDisplayName;
2023-10-08 18:44:10 +02:00
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:"
2023-10-08 18:44:10 +02:00
),
`${modeToString(defaultConvertHandler.dmxInterface?.currentMode ?? 0)}`)
console.log("=================")
const incomingDataSparkline = Sparkline(defaultConvertHandler.incomingDataHistory, "req/sec");
const sentDataSparkline = Sparkline(defaultConvertHandler.sentDataHistory, "req/sec");
process.stdout.write("Incoming Data ")
2023-10-08 18:44:10 +02:00
process.stdout.write(incomingDataSparkline);
process.stdout.write("\nOutgoing Data ")
2023-10-08 18:44:10 +02:00
process.stdout.write(sentDataSparkline);
console.log("\n");
console.log(chalk.yellow(
"Close the window or click Ctrl+C to terminate the program"
2023-10-08 18:44:10 +02:00
))
}