blob: 211f593375793cd94523520a5a9a68108f3152be [file] [log] [blame]
import {Component, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';
import {DialogComponent, DialogService} from "ng2-bootstrap-modal";
import {IframeService} from "../../utils/iframe.service";
import {AaiService} from "../../services/aaiService/aai.service";
import {VnfGroupModel} from "../../models/vnfGroupModel";
import {ElementsTableService} from "./members-table/elements-table.service";
import {Level1Instance} from "../../models/level1Instance";
import {ModalInformation} from "./members-table/element-table-row.model";
import {NgRedux} from "@angular-redux/store";
import {AppState} from "../../store/reducers";
import {FormGroup} from "@angular/forms";
import * as _ from "lodash";
import {clearAllGenericModalhelper} from "../../storeUtil/utils/global/global.actions";
@Component({
selector: 'search-members-modal',
templateUrl: 'search-elements-modal.component.html',
styleUrls: ['search-elements-modal.component.scss']
})
export class SearchElementsModalComponent extends DialogComponent<{ modalInformation: ModalInformation }, boolean> implements OnInit, OnDestroy {
modalInformation: ModalInformation;
parentElementClassName = 'content';
elementsData: Level1Instance[];
vnfGroupModel: VnfGroupModel;
disableSetElements: boolean = true;
disableSearchByNetworkRole: boolean = false;
dynamicFormGroup: FormGroup = null;
constructor(dialogService: DialogService,
private _iframeService: IframeService,
private _aaiService: AaiService,
private _membersTableService: ElementsTableService,
private _store: NgRedux<AppState>) {
super(dialogService);
ElementsTableService.changeFnTableDataTrigger.subscribe((triggerRes) => {
this._membersTableService.resetAll(this.modalInformation.uniqObjectField, this.modalInformation.maxSelectRow);
this.elementsData = triggerRes;
});
ElementsTableService.changeModalInformationDataTrigger.subscribe(({modalInformation, selectedRowsIds}) => {
this.disableSetElements = true;
this.modalInformation = modalInformation;
this.ngOnInit(selectedRowsIds);
})
}
@ViewChild('ElementsTableComponent') membersTable;
ngOnInit(selectedRowsIds?: string[]): void {
const genericModalHelper = this._store.getState().global.genericModalHelper;
if(!_.isNil(genericModalHelper) && !_.isNil(genericModalHelper[`${this.modalInformation.type}_TABLE_DATA`]) && !_.isNil(genericModalHelper[`selected${this.modalInformation.type}`])){
this.elementsData = this._store.getState().global.genericModalHelper[`${this.modalInformation.type}_TABLE_DATA`];
} else {
this.modalInformation.getElements()
.subscribe((result) => {
this.elementsData = result;
});
}
};
closeDialog(): void {
this._iframeService.removeFullScreen();
this._iframeService.removeClassCloseModal(this.parentElementClassName);
this.dialogService.removeDialog(this);
setTimeout(() => {
window.parent.postMessage("closeIframe", "*");
}, 15);
}
selectedMembersAmountChange(selectedMembersAmount: number): void {
this.disableSetElements = selectedMembersAmount == 0;
}
doneAction(): void {
this.modalInformation.topButton.action.call(this, this);
}
searchByCriteriaAction(): void {
this.modalInformation.searchButton.action.call(this, this);
}
backAction(): void {
if (this.modalInformation.backAction) {
this.modalInformation.backAction.call(this, this);
} else {
this.closeDialog();
}
}
}