namespace ns_control
{
/**
* ugly hack to prevent multiple listener addition
*/
function register_listener
(
dom_element: HTMLElement,
eventname: string,
handler: (event)=>void
): void
{
const classname: string = `has_listener_for_${eventname}`;
if (! dom_element.classList.contains(classname))
{
dom_element.addEventListener(eventname, handler);
dom_element.classList.add(classname);
}
else
{
// do nothing
}
}
/**
* sets up the control
*/
export function setup
(
conf: type_conf,
model: type_model
): void
{
// connect
{
register_listener
(
document.querySelector<HTMLFormElement>("#connect > form"),
"submit",
(e) =>
{
e.preventDefault();
const nickname: string = document.querySelector<HTMLInputElement>("#nickname").value;
const channel_names: Array<string> = document.querySelector<HTMLInputElement>("#channel").value.split(",");
ns_model.connect(conf, model, nickname, channel_names);
}
);
}
// disconnect