import { Input, Component, OnChanges, SimpleChanges } from 'ng-metadata/core'; /** * A component that allows the user to select the location of the Context in their source code repository. */ @Component({ selector: 'context-path-select', templateUrl: '/static/js/directives/ui/context-path-select/context-path-select.component.html' }) export class ContextPathSelectComponent implements OnChanges { // 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 ngOnChanges(changes: SimpleChanges): 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; } }