- .getPolicyInstancesByType(this.policyTypeSchema.id)
- .subscribe((policies) => {
- if (policies.policy_ids.length != 0) {
- policies.policy_ids.forEach((policyId) => {
- this.policySvc
- .getPolicyInstance(policyId)
- .subscribe((policyInstance) => {
- this.policySvc
- .getPolicyStatus(policyId)
- .subscribe((policyStatus) => {
- policyInstance.lastModified = policyStatus.last_modified;
- });
- this.policyInstances.push(policyInstance);
- });
- this.policyInstanceSubject.next(this.policyInstances);
- });
- }
+ .getPolicyInstancesByType(this.policyTypeSchema.id)
+ .pipe(
+ map((data) => {
+ if (data.policy_ids.length > this.slice) {
+ this.truncated = true;
+ data.policy_ids = data.policy_ids.slice(0, this.slice);
+ }
+ return data;
+ }),
+ mergeMap((policyIds) =>
+ forkJoin(
+ policyIds.policy_ids.map((id) => {
+ return forkJoin([
+ this.policySvc.getPolicyInstance(id),
+ this.policySvc.getPolicyStatus(id),
+ ]);
+ })
+ )
+ ),
+ finalize(() => this.loadingSubject$.next(false))
+ )
+ .subscribe((res) => {
+ this.policyInstances = res.map((policy) => {
+ let policyInstance = <PolicyInstance>{};
+ policyInstance = policy[0];
+ policyInstance.lastModified = policy[1].last_modified;
+ return policyInstance;
+ });
+ this.policyInstanceSubject.next(this.policyInstances);