From ea24d07fca7bc4432f8c382dcb0d3b651a4fc0f2 Mon Sep 17 00:00:00 2001 From: Pop John Date: Wed, 3 Jul 2024 09:57:30 +0300 Subject: [PATCH] improve terminal message order --- backend/src/router/scriptsRouter.js | 4 +-- .../models/constants/sidenav.constants.ts | 11 ++++--- .../ms-terminal/ms-terminal.component.ts | 33 +++++++++++++------ 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/backend/src/router/scriptsRouter.js b/backend/src/router/scriptsRouter.js index 08930621..35cc23e6 100644 --- a/backend/src/router/scriptsRouter.js +++ b/backend/src/router/scriptsRouter.js @@ -110,10 +110,10 @@ function executePythonScript(path, algorithm, args = '', type) { let cmd; if (type === ALGORITHM_TYPES.MULTIFLOW) { - cmd = `source "${process.env.CONDA_SH_PATH}" && cd "${process.env.MACHINE_LEARNING_CORE_PATH}/multiflow" && conda activate modelsmith && python3 -u ${algorithm} ${args}`; + cmd = `source "${process.env.CONDA_SH_PATH}" && cd "${process.env.MACHINE_LEARNING_CORE_PATH}/multiflow" && conda activate modelsmith && python3 ${algorithm} ${args}`; pythonCmd = `python3 ${algorithm} ${args}`; } else { - cmd = `source "${process.env.CONDA_SH_PATH}" && conda activate modelsmith && python3 -u "${scriptPath}${algorithm}" ${args}`; + cmd = `source "${process.env.CONDA_SH_PATH}" && conda activate modelsmith && python3 "${scriptPath}${algorithm}" ${args}`; pythonCmd = `python3 "${scriptPath}${algorithm}" ${args}`; } diff --git a/frontend/src/app/modules/core/models/constants/sidenav.constants.ts b/frontend/src/app/modules/core/models/constants/sidenav.constants.ts index 8d47df86..fd957bbc 100644 --- a/frontend/src/app/modules/core/models/constants/sidenav.constants.ts +++ b/frontend/src/app/modules/core/models/constants/sidenav.constants.ts @@ -53,17 +53,18 @@ const expert: SidenavItem[] = [ icon: 'icon-Lightning', key: PageKey.AWQ }, + { + route: 'multi-modal', + label: 'Multi-modal', + icon: 'icon-Environmental' + }, { route: RoutesList.MODEL_SPECIALIZATION.ROOT, label: 'Model Specialization', icon: 'icon-MapTrifold', key: PageKey.MODEL_SPECIALIZATION }, - { - route: 'multi-modal', - label: 'Multi-modal', - icon: 'icon-Environmental' - }, + { route: RoutesList.ALGORITHM_COMPARISON.ROOT, label: 'Algorithm Comparison', diff --git a/frontend/src/app/modules/shared/standalone/ms-terminal/ms-terminal.component.ts b/frontend/src/app/modules/shared/standalone/ms-terminal/ms-terminal.component.ts index 77d044a8..92fb1fdd 100644 --- a/frontend/src/app/modules/shared/standalone/ms-terminal/ms-terminal.component.ts +++ b/frontend/src/app/modules/shared/standalone/ms-terminal/ms-terminal.component.ts @@ -76,9 +76,7 @@ export class MsTerminalComponent implements OnInit, AfterViewInit, OnDestroy { const formattedMessage = this.formatMessageByType(message); if (this.displayWebSocketMessages) { - formattedMessage.split('\n').forEach((line) => { - this.terminal.writeln(line); - }); + this.writeToTerminal(formattedMessage); } else { this.messagesBuffer.push(message); } @@ -97,20 +95,23 @@ export class MsTerminalComponent implements OnInit, AfterViewInit, OnDestroy { this.fitTerminalToContainer(); } + private writeToTerminal(message: string): void { + const lines = message.split('\n'); + lines.forEach((line) => { + this.terminal.writeln(line); + }); + } + private loadLatestMessages() { this.terminalFacadeService.messages$.pipe(skip(1), take(1)).subscribe((messages: TerminalMessage[]) => { messages.forEach((messageObj: TerminalMessage) => { const formattedMessage = this.formatMessageByType(messageObj); - formattedMessage.split('\n').forEach((line) => { - this.terminal.writeln(line); - }); + this.writeToTerminal(formattedMessage); }); this.messagesBuffer.forEach((bufferedMessageObj: TerminalMessage) => { const formattedMessage = this.formatMessageByType(bufferedMessageObj); - formattedMessage.split('\n').forEach((line) => { - this.terminal.writeln(line); - }); + this.writeToTerminal(formattedMessage); }); this.messagesBuffer = []; this.displayWebSocketMessages = true; @@ -118,6 +119,11 @@ export class MsTerminalComponent implements OnInit, AfterViewInit, OnDestroy { this.terminalFacadeService.dispatch(TerminalActions.getLatestMessages()); } + private logMessageWithControlChars(message: string): void { + const visibleMessage = message.replace(/\n/g, '\\n').replace(/\r/g, '\\r'); + console.log(visibleMessage); + } + private formatMessageByType(message: TerminalMessage): string { let colorCode = ''; switch (message.type) { @@ -136,7 +142,14 @@ export class MsTerminalComponent implements OnInit, AfterViewInit, OnDestroy { break; } - return `${colorCode}${message.data}\x1b[0m`; + this.logMessageWithControlChars(message.data); + + let formattedData = message.data; + if (formattedData.endsWith('\n')) { + formattedData = formattedData.slice(0, -1); + } + + return `${colorCode}${formattedData}\x1b[0m`; } private initializeTerminal(): void {