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;
  }
}