import {HtmlUtils} from "./HtmlUtils"; import {Connection, GlobalMessageInterface} from "../Connection"; export const CLASS_CONSOLE_MESSAGE = 'main-console'; export const INPUT_CONSOLE_MESSAGE = 'input-send-text'; export const UPLOAD_CONSOLE_MESSAGE = 'input-upload-music'; export const BUTTON_CONSOLE_SEND = 'button-send'; export const INPUT_TYPE_CONSOLE = 'input-type'; export const AUDIO_TYPE = 'audio'; export const MESSAGE_TYPE = 'message'; export class ConsoleGlobalMessageManager { private Connection: Connection; private divMainConsole: HTMLDivElement; private buttonMainConsole: HTMLDivElement; private activeConsole: boolean = false; constructor(Connection: Connection) { this.Connection = Connection; this.buttonMainConsole = document.createElement('div'); this.divMainConsole = document.createElement('div'); this.initialise(); } initialise() { const buttonText = document.createElement('span'); buttonText.innerText = 'Console'; this.buttonMainConsole.appendChild(buttonText); this.buttonMainConsole.addEventListener('click', () => { if(this.activeConsole){ this.disabled(); }else{ this.active(); } }); this.divMainConsole.className = CLASS_CONSOLE_MESSAGE; this.divMainConsole.appendChild(this.buttonMainConsole); this.createTextMessagePart(); const mainSectionDiv = HtmlUtils.getElementByIdOrFail('main-container'); mainSectionDiv.appendChild(this.divMainConsole); } createTextMessagePart(){ const input = document.createElement('textarea'); this.divMainConsole.appendChild(input); input.id = INPUT_CONSOLE_MESSAGE; const buttonSend = document.createElement('button'); buttonSend.innerText = 'Envoyer'; buttonSend.addEventListener('click', (event: MouseEvent) => { this.sendMessage(); this.disabled(); }); this.divMainConsole.appendChild(buttonSend); const typeConsole = document.createElement('input'); typeConsole.id = INPUT_TYPE_CONSOLE; typeConsole.value = MESSAGE_TYPE; typeConsole.type = 'hidden'; this.divMainConsole.appendChild(typeConsole); } sendMessage(){ const inputText = HtmlUtils.getElementByIdOrFail(INPUT_CONSOLE_MESSAGE); const inputType = HtmlUtils.getElementByIdOrFail(INPUT_TYPE_CONSOLE); if(AUDIO_TYPE !== inputType.value && MESSAGE_TYPE !== inputType.value){ throw "Error event type"; } let GlobalMessage : GlobalMessageInterface = { id: 1, message: inputText.value, type: inputType.value }; inputText.value = ''; this.Connection.emitGlobalMessage(GlobalMessage); } active(){ this.activeConsole = true; this.divMainConsole.style.top = '0'; } disabled(){ this.activeConsole = false; this.divMainConsole.style.top = '-80%'; } }