diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/shared/directives/iops.directive.ts')
-rw-r--r-- | src/pybind/mgr/dashboard/frontend/src/app/shared/directives/iops.directive.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/iops.directive.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/iops.directive.ts new file mode 100644 index 000000000..4faf69164 --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/iops.directive.ts @@ -0,0 +1,31 @@ +import { Directive, EventEmitter, HostListener, Input, OnInit } from '@angular/core'; +import { NgControl } from '@angular/forms'; + +import { FormatterService } from '../services/formatter.service'; + +@Directive({ + selector: '[cdIops]' +}) +export class IopsDirective implements OnInit { + @Input() + ngDataReady: EventEmitter<any>; + + constructor(private formatter: FormatterService, private ngControl: NgControl) {} + + setValue(value: string): void { + const iops = this.formatter.toIops(value); + this.ngControl.control.setValue(`${iops} IOPS`); + } + + ngOnInit(): void { + this.setValue(this.ngControl.value); + if (this.ngDataReady) { + this.ngDataReady.subscribe(() => this.setValue(this.ngControl.value)); + } + } + + @HostListener('blur', ['$event.target.value']) + onUpdate(value: string) { + this.setValue(value); + } +} |