47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
|
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;
|
||
|
}
|
||
|
}
|