From 14083d157f42fb6744fed460e0e91fb0dcd2a8bd Mon Sep 17 00:00:00 2001 From: HanishKVC Date: Tue, 21 May 2024 19:56:21 +0530 Subject: [PATCH] SimpleChat:MCUI: Support for new chat sessions Also a general create button helper. --- .../server/public_simplechat/simplechat.js | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/examples/server/public_simplechat/simplechat.js b/examples/server/public_simplechat/simplechat.js index 6aa57d482..5a3fe0943 100644 --- a/examples/server/public_simplechat/simplechat.js +++ b/examples/server/public_simplechat/simplechat.js @@ -180,6 +180,29 @@ function el_children_config_class(elBase, idSelected, classSelected, classUnSele } } +/** + * Create button and set it up. + * @param {string} id + * @param {(this: HTMLButtonElement, ev: MouseEvent) => any} callback + * @param {string | undefined} name + * @param {string | undefined} innerText + */ +function el_create_button(id, callback, name=undefined, innerText=undefined) { + if (!name) { + name = id; + } + if (!innerText) { + innerText = id; + } + let btn = document.createElement("button"); + btn.id = id; + btn.name = name; + btn.innerText = innerText; + btn.addEventListener("click", callback); + return btn; +} + + class MultiChatUI { constructor() { @@ -360,14 +383,7 @@ class MultiChatUI { elDiv.replaceChildren(); let chatIds = Object.keys(this.simpleChats); for(let cid of chatIds) { - let btn = document.createElement("button"); - btn.id = cid; - btn.name = cid; - btn.innerText = cid; - if (cid == this.curChatId) { - btn.className = "session-selected"; - } - btn.addEventListener("click", (ev)=>{ + let btn = el_create_button(cid, (ev)=>{ let target = /** @type{HTMLButtonElement} */(ev.target); console.debug(`DBUG:MCUI:SessionClick:${target.id}`); if (this.elInUser.disabled) { @@ -378,8 +394,17 @@ class MultiChatUI { this.handle_session_switch(target.id); el_children_config_class(elDiv, target.id, "session-selected", ""); }); + if (cid == this.curChatId) { + btn.className = "session-selected"; + } elDiv.appendChild(btn); } + let btnNew = el_create_button("NeW cHaT", (ev)=> { + let chatId = `Chat${chatIds.length}`; + let chatName = prompt("SimpleChat:MCUI:\nEnter id for new chat session", chatId); + this.new_chat_session(chatId, true); + }); + elDiv.appendChild(btnNew); } /**