|
- import { Component, ElementRef, ViewChild } from '@angular/core';
- import { HttpClient } from '@angular/common/http';
- import { FormControl } from '@angular/forms';
-
- @Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.scss']
- })
- export class AppComponent {
- title = 'TBConsoleClient';
- logMessages = '';
- commandControl: FormControl = new FormControl('');
- commands: { command: string, line: string }[] = [];
- displayedCommands: { command: string, line: string }[] = [];
- commandHistory: { commands: string[], index: number } = {commands: [], index: 0};
-
- @ViewChild('logMessagesContainer') logMessagesView: ElementRef;
-
- constructor(private http: HttpClient) {
- this.getCommandList();
- this.commandControl.valueChanges.subscribe(commandText => {
- this.displayedCommands = this.commands.filter(cmd => cmd.command.toLowerCase().startsWith(commandText.toLowerCase()));
- })
- }
-
- async sendCommand() {
- try {
- const command = this.commandControl.value;
- this.commandControl.setValue('');
- this.addCommandToHistory(command);
- const res = await this.http.post('http://localhost:8019/command', command, {responseType: 'text'}).toPromise();
- this.logMessages += res + "\n";
- } catch (e) {
- if (e.status == 0)
- this.logMessages += "Failed to contact mod! Make sure it is running and listening.\n";
- else
- this.logMessages += e.message + "\n";
- }
- await this.wait(50);
- this.logMessagesView.nativeElement.scrollTop = this.logMessagesView.nativeElement.scrollHeight;
- }
-
- async getCommandList() {
- const res = await this.http.post('http://localhost:8019/commands', '', {responseType: 'text'}).toPromise();
- this.commands = res.trim().split('\n').map(cmd => ({command: cmd.split(' - ')[0], line: cmd}));
- }
-
- wait(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
-
- previousCommand() {
- const hist = this.commandHistory;
- if (hist.index <= 0) return;
- hist.index--;
- this.commandControl.setValue(hist.commands[hist.index]);
- }
-
- nextCommand() {
- const hist = this.commandHistory;
- if (hist.index >= hist.commands.length - 1) return;
- hist.index++;
- this.commandControl.setValue(hist.commands[hist.index]);
- }
-
- addCommandToHistory(command: string) {
- const hist = this.commandHistory;
- if (hist.commands.length == 0) hist.commands.push('');
- hist.commands[hist.commands.length - 1] = command;
- hist.commands.push(''); //Empty to enter new commands
- if (hist.commands.length > 50) hist.commands.shift();
- hist.index = hist.commands.length - 1;
- }
- }
|