import { Input, Component } from 'angular-ts-decorators'; @Component({ selector: 'dockerfilePathSelect', template: `
Path entered for folder containing Dockerfile is invalid: Must start with a '/'.
`, }) export class DockerfilePathSelectComponent implements ng.IComponentController { // FIXME: Use one-way data binding @Input('=') public currentPath: string; @Input('=') public isValidPath: boolean; @Input('=') public paths: string[]; @Input('=') public supportsFullListing: boolean; private isUnknownPath: boolean = true; private selectedPath: string | null = null; public $onChanges(changes: ng.IOnChangesObject): void { this.isValidPath = this.checkPath(this.currentPath, this.paths, this.supportsFullListing); } public setPath(path: string): void { this.currentPath = path; this.selectedPath = null; this.isValidPath = this.checkPath(path, this.paths, this.supportsFullListing); } public setSelectedPath(path: string): void { this.currentPath = path; this.selectedPath = path; this.isValidPath = this.checkPath(path, this.paths, this.supportsFullListing); } private checkPath(path: string = '', paths: string[] = [], supportsFullListing: boolean): boolean { this.isUnknownPath = false; var isValidPath: boolean = false; if (path.length > 0 && path[0] === '/') { isValidPath = true; this.isUnknownPath = supportsFullListing && paths.indexOf(path) < 0; } return isValidPath; } }