/// import { debugSettings } from "./debugsettings"; class TabBarItem { public name: string; public caption: string; public cssClass: string; public selected: KnockoutObservable; public disabled: KnockoutObservable; public notice: KnockoutObservable; public action: () => void; public handler() { if (this.action != null) { this.action.call(this); } } } export class TabBar { public items: KnockoutObservableArray; public visible: KnockoutObservable; constructor() { this.items = ko.observableArray([]); this.visible = ko.observable(true); } public addItem(name: string, caption: string, cssClass: string, action: () => void) { const item = new TabBarItem(); item.name = name; item.caption = caption; item.cssClass = cssClass; item.action = action; item.selected = ko.observable(false); item.disabled = ko.observable(false); item.notice = ko.observable(false); this.items.push(item); } public isSelected(name: string): boolean { let result = false; this.items().forEach(function (item) { if (item.name === name) { result = item.selected(); } }); return result; } public select(name: string, enable: boolean): void { this.log("Tabbar item '" + name + "' " + (enable ? "selected" : "deselected")); this.items.valueWillMutate(); this.items().forEach(function (item) { if (item.name === name) { item.selected(enable); } }); this.items.valueHasMutated(); } public enable(name: string, enable: boolean): void { this.log("Tabbar item '" + name + "' " + (enable ? "enabled" : "disabled")); this.items.valueWillMutate(); this.items().forEach(function (item) { if (item.name === name) { item.disabled(!enable); } }); this.items.valueHasMutated(); } public notice(name: string, enable: boolean): void { this.log("Notice for tabbar item '" + name + "' " + (enable ? "set" : "unset")); this.items.valueWillMutate(); this.items().forEach(function (item) { if (item.name === name) { item.notice(enable); } }); this.items.valueHasMutated(); } private log(message: string, ...params: any[]) { if (debugSettings.application.debugTabbar) { const traceFunction = console.trace as (message: string, ...args) => void; traceFunction.bind(console, message, params)(); } } }