1
0
Fork 0
Nibriboard/Nibriboard/ClientFiles/Interface.js

82 lines
2.0 KiB
JavaScript

"use strict";
window.EventEmitter = require("event-emitter-es6");
class Interface extends EventEmitter
{
constructor(inSidebar)
{
super();
this.sidebar = inSidebar;
this.currentToolElement = this.sidebar.querySelector(".tools .tool-selector[]")
this.currentTool = "brush";
}
setupToolSelectors()
{
var toolSelectors = this.sidebar.querySelectorAll(".tools .tool-selector");
for(let i = 0; i < toolSelectors.length; i++)
{
toolSelectors[i].addEventListener("mouseup", this.handleSelectTool.bind(this));
toolSelectors[i].addEventListener("touchend", this.handleSelectTool.bind(this));
}
}
/**
* Handles tool changes requested by the user.
*/
handleSelectTool(event)
{
delete this.currentToolElement.dataset.selected;
this.currentToolElement = event.target;
this.currentToolElement.dataset.selected = "yes";
this.currentTool = this.currentToolElement.dataset.toolName;
this.emit("toolchange", { newTool: this.currentTool });
}
/**
* Sets the displayed connection status.
* @param {bool} newStatus The new connection status to display. true = connected - false = disconnected.
*/
setConnectedStatus(newStatus)
{
if(newStatus)
this.sidebar.querySelector(".connection-indicator").dataset.connected = "yes";
else
delete this.sidebar.querySelector(".connection-indicator").dataset.connected;
}
/**
* Fetches our colour from the ui.
*/
get OurColour()
{
return this.sidebar.querySelector(".name").style.borderTopColor;
}
/**
* Sets the colour displayed just above the name
* @param {HTMLColour} newColour The new colour to display jsut above the
* name in the sidebar.
*/
set OurColour(newColour)
{
this.sidebar.querySelector(".name").style.borderTopColor = newColour;
}
/**
* Updates the username displayed.
* @param {string} newName The new name to display inthe sidebar.
*/
updateDisplayedName(newName)
{
this.sidebar.querySelector(".name").innerHTML = newName;
}
}
export default Interface;