class CategorySelect extends View { constructor(element) { super(element); this.options = { }; OnTime.cardManager.addEventListener("categoryadded", this.onCategoryAdded.bind(this), true); OnTime.cardManager.addEventListener("categorychanged", this.onCategoryChanged.bind(this), true); OnTime.cardManager.addEventListener("categoryremoved", this.onCategoryRemoved.bind(this), true); } setOptionInformation(option, category) { option.value = category.category_key; option.innerText = (category.icon ? category.icon + " " : "") + category.name; } onCategoryAdded(event) { var option = document.createElement("OPTION"); this.setOptionInformation(option, event.category); this.element.appendChild(option); this.options[event.category.category_key] = option; } onCategoryChanged(event) { if (!(event.category.category_key in this.options)) { console.error("Trying to modify a category in a category select that was never added."); return; } var option = this.options[event.category.category_key]; this.setOptionInformation(option, event.category); } onCategoryRemoved(event) { if (!(event.category.category_key in this.options)) { console.error("Trying to remove a category from a category select that was never added."); return; } var option = this.options[event.category.category_key]; this.element.removeChild(option); delete this.options[event.category.category_key]; } } UIKit.registerViewType(CategorySelect);