merge from ecomp a88f0072 - Modern UI

Issue-ID: VID-378
Change-Id: Ibcb23dd27f550cf32ce2fe0239f0f496ae014ff6
Signed-off-by: Ittay Stern <ittay.stern@att.com>
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts
new file mode 100644
index 0000000..cf385d7
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts
@@ -0,0 +1,122 @@
+import {Component, ViewChild} from '@angular/core';
+import {Subject} from 'rxjs/Subject';
+import {ModalDirective} from 'ngx-bootstrap'
+import {ModelInformationItem} from '../model-information/model-information.component';
+import {ServiceModel} from '../../models/serviceModel';
+import {ServiceInfoService} from '../../server/serviceInfo/serviceInfo.service';
+import {ServiceInfoModel} from '../../server/serviceInfo/serviceInfo.model';
+import {AuditStatus} from '../../server/serviceInfo/AuditStatus.model';
+import {IframeService} from "../../utils/iframe.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../store/reducers";
+import {AuditInfoModalComponentService} from "./auditInfoModal.component.service";
+
+@Component({
+  selector: 'audit-info-modal',
+  templateUrl: './auditInfoModal.component.html',
+  styleUrls: ['./auditInfoModal.component.scss']
+})
+export class AuditInfoModalComponent {
+  static openModal: Subject<ServiceInfoModel> = new Subject<ServiceInfoModel>();
+  static openInstanceAuditInfoModal: Subject<{instanceId , type, model, instance, isInstanceFailed?, trackById?}> = new Subject<{instanceId , type, model, instance, isInstanceFailed, trackById}>();
+  @ViewChild('auditInfoModal') public auditInfoModal: ModalDirective;
+  title: string = 'Service Instantiation Information';
+  modelInfoItems: ModelInformationItem[] = [];
+  serviceModel: ServiceModel;
+  serviceModelName: string;
+  vidInfoData: AuditStatus[] = [];
+  msoInfoData: AuditStatus[] = [];
+  isAlaCarte: boolean;
+  parentElementClassName = 'content';
+  isLoading = true;
+  model: any;
+  instanceId: string;
+  isALaCarteFlagOn: boolean;
+  type : string = "Service";
+  showVidStatus : boolean = true;
+  auditInfoModalComponentService : AuditInfoModalComponentService;
+  constructor(private _serviceInfoService: ServiceInfoService, private _iframeService : IframeService,
+              private _auditInfoModalComponentService : AuditInfoModalComponentService,
+              private store: NgRedux<AppState>) {
+    this.auditInfoModalComponentService = this._auditInfoModalComponentService;
+    AuditInfoModalComponent.openModal.subscribe((jobData: ServiceInfoModel) => {
+      this.isALaCarteFlagOn = this.store.getState().global.flags['FLAG_A_LA_CARTE_AUDIT_INFO'];
+      this.initializeProperties();
+      this.showVidStatus = true;
+      if (jobData) {
+        this.isAlaCarte = jobData.aLaCarte;
+        this.openAuditInfoModal(jobData);
+        _iframeService.addClassOpenModal(this.parentElementClassName);
+        this.serviceModelName = jobData.serviceModelName ? jobData.serviceModelName : '';
+        this.auditInfoModal.show();
+      } else {
+        _iframeService.removeClassCloseModal(this.parentElementClassName);
+        this.auditInfoModal.hide();
+      }
+    });
+
+    AuditInfoModalComponent.openInstanceAuditInfoModal.subscribe(({instanceId  , type ,  model, instance, isInstanceFailed, trackById}) => {
+      this.showVidStatus = false;
+      this.initializeProperties();
+      this.setModalTitles(type);
+      this.serviceModelName = AuditInfoModalComponentService.getInstanceModelName(model);
+
+      if (isInstanceFailed) {
+        this._serviceInfoService.getAuditStatusForRetry(trackById).subscribe((res: AuditStatus) => {
+          this.msoInfoData = [res];
+        });
+      }else{
+        this._serviceInfoService.getInstanceAuditStatus(instanceId, type).subscribe((res : AuditStatus[]) =>{
+          this.msoInfoData = res;
+       });
+      }
+      this.modelInfoItems = this.auditInfoModalComponentService.getModelInfo(model, instance, instanceId);
+      _iframeService.addClassOpenModal(this.parentElementClassName);
+      this.auditInfoModal.show();
+    });
+  }
+
+
+  setModalTitles(type : string) : void{
+    this.type = AuditInfoModalComponentService.setModalTitlesType(type) ;
+    this.title = AuditInfoModalComponentService.setModalTitle(type);
+  }
+
+  initializeProperties() : void {
+    this.modelInfoItems = null;
+    this.vidInfoData = [];
+    this.msoInfoData = [];
+    this.isLoading = true;
+  }
+
+  openAuditInfoModal(jobData: ServiceInfoModel): void {
+    this.modelInfoItems = AuditInfoModalComponentService.createModelInformationItemsJob(jobData);
+    this.initAuditInfoData(jobData);
+    this.auditInfoModal.onHide.subscribe(()=>{
+      this._iframeService.removeClassCloseModal(this.parentElementClassName);
+      this.initializeProperties();
+    });
+    this.auditInfoModal.show();
+  }
+
+  initAuditInfoData(jobData: ServiceInfoModel) {
+    this._serviceInfoService.getJobAuditStatus(jobData)
+      .subscribe((res: AuditStatus[][]) => {
+        this.vidInfoData = res[0];
+        this.msoInfoData = res[1];
+        this.isLoading = false;
+      });
+  }
+
+  onCancelClick() {
+    this._iframeService.removeClassCloseModal(this.parentElementClassName);
+    this.initializeProperties();
+    this.auditInfoModal.hide();
+  }
+
+
+  onNavigate(){
+    window.open("https://wiki.onap.org/display/DW/SO+Building+blocks", "_blank");
+  }
+}
+