class RoleSelect extends View { constructor(element) { super(element); this.options = { }; OnTime.userManager.addEventListener("roleadded", this.onRoleAdded.bind(this), true); OnTime.userManager.addEventListener("rolechanged", this.onRoleChanged.bind(this), true); OnTime.userManager.addEventListener("roleremoved", this.onRoleRemoved.bind(this), true); } setOptionInformation(option, role) { option.value = role.role_key; option.innerText = role.name; } onRoleAdded(event) { var option = document.createElement("OPTION"); this.setOptionInformation(option, event.role); this.element.appendChild(option); this.options[event.role.role_key] = option; } onRoleChanged(event) { if (!(event.role.role_key in this.options)) { console.error("Trying to modify a role in a role select that was never added."); return; } var option = this.options[event.role.role_key]; this.setOptionInformation(option, event.role); } onRoleRemoved(event) { if (!(event.role.role_key in this.options)) { console.error("Trying to remove a role from a role select that was never added."); return; } var option = this.options[event.role.role_key]; this.element.removeChild(option); delete this.options[event.role.role_key]; } } UIKit.registerViewType(RoleSelect);