import { Input, Component } from 'angular-ts-decorators'; /** * A component that allows the user to select the location of the Context in their source code repository. */ @Component({ selector: 'contextPathSelect', templateUrl: '/static/js/directives/ui/context-path-select/context-path-select.component.html' }) export class ContextPathSelectComponent implements ng.IComponentController { // FIXME: Use one-way data binding @Input('=') public currentContext: string; @Input('=') public isValidContext: boolean; @Input('=') public contexts: string[]; private isUnknownContext: boolean = true; private selectedContext: string | null = null; public $onChanges(changes: ng.IOnChangesObject): void { this.isValidContext = this.checkContext(this.currentContext, this.contexts); } public setContext(context: string): void { this.currentContext = context; this.selectedContext = null; this.isValidContext = this.checkContext(context, this.contexts); } public setSelectedContext(context: string): void { this.currentContext = context; this.selectedContext = context; this.isValidContext = this.checkContext(context, this.contexts); } private checkContext(context: string = '', contexts: string[] = []): boolean { this.isUnknownContext = false; var isValidContext: boolean = false; if (context.length > 0 && context[0] === '/') { isValidContext = true; this.isUnknownContext = true; } return isValidContext; } }