import { Component, Injector, OnInit, Output, EventEmitter, ViewChild } from '@angular/core'; import { AppComponentBase } from '@shared/common/app-component-base'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { ModalDirective } from 'ngx-bootstrap'; import { CachedRequestSettingServiceProxy, GetCachedRequestSettingListItemDto, CachedRequestPriorityTypeDto, CreateOrUpdateCachedRequestSettingInputDto } from '@shared/service-proxies/service-proxies'; @Component({ selector: 'add-mobile-app-request-setting-modal', templateUrl: './add-mobile-app-request-setting-modal.component.html', animations: [appModuleAnimation()] }) export class AddMobileAppRequestSettingModalComponent extends AppComponentBase implements OnInit { @Output() showLoaderEvent = new EventEmitter(); @Output() modalSaveEvent = new EventEmitter(); @ViewChild('modalDirective', { static: false }) modalDirective: ModalDirective; priorityTypes: Array = []; selectedPriorityType: CachedRequestPriorityTypeDto; apiRequestCode: string; constructor( injector: Injector, private _cachedRequestSettingServiceProxy: CachedRequestSettingServiceProxy ) { super(injector); } ngOnInit(): void { } show(record?: GetCachedRequestSettingListItemDto): void { this.getPriorityTypesFromApi(() => { if (record) { this.selectedPriorityType = this.priorityTypes.filter(priorityType => priorityType.name == record.type)[0]; this.apiRequestCode = record.apiRequestCode; } this.modalDirective.show(); }); } close(): void { this.selectedPriorityType = null; this.apiRequestCode = null; this.modalDirective.hide(); } save(): void { this.showLoaderEvent.emit(true); var data = new CreateOrUpdateCachedRequestSettingInputDto(); data.apiRequestCode = this.apiRequestCode; data.type = this.selectedPriorityType.type; this._cachedRequestSettingServiceProxy.createOrUpdateCachedRequestSetting(data) .subscribe(result => { this.showLoaderEvent.emit(false); this.modalSaveEvent.emit(null); this.close(); }); } getPriorityTypesFromApi(onFinish: () => void): void { this.priorityTypes = []; this.showLoaderEvent.emit(true); this._cachedRequestSettingServiceProxy.getCachedRequestPriorityTypes() .subscribe(result => { this.showLoaderEvent.emit(false); if (result.items) { this.priorityTypes = result.items; } onFinish(); }); } selectedPriorityChange($event): void { } }