frontend-tutorial-framework/src/app/console/console.component.ts

47 lines
1.3 KiB
TypeScript

import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { WebSocketService, Intent } from '../services/websocket.service';
import { WebSocketMessage } from '../message-types/websocket-message';
import { ConsoleReadMessage, ConsoleWriteMessage } from '../message-types/console-messages';
@Component({
selector: 'app-console',
templateUrl: './console.component.html',
styleUrls: ['./console.component.scss']
})
export class ConsoleComponent implements OnInit {
console_content = '';
@Output() contentChanged = new EventEmitter<string>();
command_handlers = {
'console.read': this.readHandler.bind(this),
'console.write': this.writeHandler.bind(this),
};
constructor(private webSocketService: WebSocketService) {}
ngOnInit() {
this.webSocketService.connect();
this.webSocketService.observeKey<WebSocketMessage>('console').subscribe(
message => this.command_handlers[message.key](message)
);
}
readHandler(message: ConsoleReadMessage) {
this.webSocketService.send({
'key': 'console.read',
'content': this.console_content,
'intent': Intent.EVENT
});
}
writeHandler(message: ConsoleWriteMessage) {
this.setContent(message.content);
this.contentChanged.next(message.content);
}
setContent(content: string) {
this.console_content = content;
}
}