@iapps/ng-dhis2-ui 1.1.79 → 1.1.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3565,6 +3565,57 @@ class LineListService {
3565
3565
  // );
3566
3566
  // }
3567
3567
  //tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc&trackedEntities=uid1,uid2,uid3
3568
+ getTrackedEntityInstances(programId, orgUnit, page, pageSize, filters = [], startDate, endDate, ouMode, filterRootOrgUnit, useOuModeWithOlderDHIS2Instance, filtersFromEvents = []) {
3569
+ const filterParams = buildFilters(filters);
3570
+ const filterParamsFromEvents = buildFiltersFromEvents(filtersFromEvents);
3571
+ const dateFilter = [
3572
+ startDate ? `enrollmentEnrolledAfter=${startDate}` : '',
3573
+ endDate ? `enrollmentEnrolledBefore=${endDate}` : '',
3574
+ ]
3575
+ .filter(Boolean)
3576
+ .join('&');
3577
+ const ouModeIdentifier = ouMode && useOuModeWithOlderDHIS2Instance
3578
+ ? `&ouMode=${ouMode}`
3579
+ : `&orgUnitMode=${ouMode}`;
3580
+ return this.httpClient
3581
+ .get(`tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`)
3582
+ .pipe(switchMap((response) => {
3583
+ if (filterRootOrgUnit) {
3584
+ response.trackedEntities = response.trackedEntities.filter((tei) => tei.orgUnit !== orgUnit);
3585
+ }
3586
+ // **Step 1:** Extract unique orgUnits from enrollments
3587
+ const uniqueOrgUnitIds = new Set();
3588
+ if (response && response.trackedEntities) {
3589
+ response.trackedEntities.forEach((tei) => {
3590
+ tei.enrollments?.forEach((enrollment) => {
3591
+ if (enrollment.program === programId) {
3592
+ uniqueOrgUnitIds.add(enrollment.orgUnit);
3593
+ }
3594
+ });
3595
+ });
3596
+ }
3597
+ else {
3598
+ if (response && response.instances) {
3599
+ response?.instances?.forEach((tei) => {
3600
+ tei.enrollments?.forEach((enrollment) => {
3601
+ if (enrollment.program === programId) {
3602
+ uniqueOrgUnitIds.add(enrollment?.orgUnit);
3603
+ }
3604
+ });
3605
+ });
3606
+ }
3607
+ }
3608
+ // If no unique orgUnits found, return immediately
3609
+ if (uniqueOrgUnitIds.size === 0) {
3610
+ return of({ ...response, orgUnitsMap: new Map() });
3611
+ }
3612
+ // **Step 2:** Fetch orgUnit names in a single request
3613
+ return this.fetchOrgUnits(Array.from(uniqueOrgUnitIds)).pipe(map$1((orgUnitsMap) => ({
3614
+ ...response,
3615
+ orgUnitsMap, // Attach orgUnitId → orgUnitName map
3616
+ })));
3617
+ }));
3618
+ }
3568
3619
  // private getTrackedEntityInstances(
3569
3620
  // programId: string,
3570
3621
  // orgUnit: string,
@@ -3590,131 +3641,84 @@ class LineListService {
3590
3641
  // ouMode && useOuModeWithOlderDHIS2Instance
3591
3642
  // ? `&ouMode=${ouMode}`
3592
3643
  // : `&orgUnitMode=${ouMode}`;
3593
- // return this.httpClient
3594
- // .get(
3595
- // `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`
3596
- // )
3597
- // .pipe(
3598
- // switchMap((response: any) => {
3599
- // if (filterRootOrgUnit) {
3600
- // response.trackedEntities = response.trackedEntities.filter(
3601
- // (tei: any) => tei.orgUnit !== orgUnit
3602
- // );
3603
- // }
3604
- // // **Step 1:** Extract unique orgUnits from enrollments
3605
- // const uniqueOrgUnitIds = new Set<string>();
3606
- // if (response && response.trackedEntities) {
3607
- // response.trackedEntities.forEach((tei: any) => {
3608
- // tei.enrollments?.forEach((enrollment: any) => {
3609
- // if (enrollment.program === programId) {
3610
- // uniqueOrgUnitIds.add(enrollment.orgUnit);
3611
- // }
3612
- // });
3644
+ // let baseUrl='';
3645
+ // if(filtersFromEvents.length === 0) {
3646
+ // baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`;
3647
+ // } else {
3648
+ // baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&${filterParams}${dateFilter}&order=createdAt:desc&paging=false`;
3649
+ // }
3650
+ // return this.httpClient.get(baseUrl).pipe(
3651
+ // switchMap((response: any) => {
3652
+ // if (filterRootOrgUnit) {
3653
+ // response.trackedEntities = response.trackedEntities.filter(
3654
+ // (tei: any) => tei.orgUnit !== orgUnit
3655
+ // );
3656
+ // }
3657
+ // const uniqueOrgUnitIds = new Set<string>();
3658
+ // if (response && response.trackedEntities) {
3659
+ // response.trackedEntities.forEach((tei: any) => {
3660
+ // tei.enrollments?.forEach((enrollment: any) => {
3661
+ // if (enrollment.program === programId) {
3662
+ // uniqueOrgUnitIds.add(enrollment.orgUnit);
3663
+ // }
3613
3664
  // });
3614
- // } else {
3615
- // if (response && response.instances) {
3616
- // response?.instances?.forEach((tei: any) => {
3617
- // tei.enrollments?.forEach((enrollment: any) => {
3618
- // if (enrollment.program === programId) {
3619
- // uniqueOrgUnitIds.add(enrollment?.orgUnit);
3620
- // }
3621
- // });
3622
- // });
3623
- // }
3624
- // }
3625
- // // If no unique orgUnits found, return immediately
3665
+ // });
3666
+ // } else {
3667
+ // response?.instances?.forEach((tei: any) => {
3668
+ // tei.enrollments?.forEach((enrollment: any) => {
3669
+ // if (enrollment.program === programId) {
3670
+ // uniqueOrgUnitIds.add(enrollment.orgUnit);
3671
+ // }
3672
+ // });
3673
+ // });
3674
+ // }
3675
+ // if (filtersFromEvents.length === 0) {
3626
3676
  // if (uniqueOrgUnitIds.size === 0) {
3627
3677
  // return of({ ...response, orgUnitsMap: new Map<string, string>() });
3628
3678
  // }
3629
- // // **Step 2:** Fetch orgUnit names in a single request
3630
3679
  // return this.fetchOrgUnits(Array.from(uniqueOrgUnitIds)).pipe(
3631
3680
  // map((orgUnitsMap: Map<string, string>) => ({
3632
3681
  // ...response,
3633
- // orgUnitsMap, // Attach orgUnitId → orgUnitName map
3682
+ // orgUnitsMap,
3634
3683
  // }))
3635
3684
  // );
3636
- // })
3637
- // );
3685
+ // }
3686
+ // // NEW LOGIC STARTS HERE if filtersFromEvents is present
3687
+ // const filteredTrackedEntities = getFilteredTrackedEntites(
3688
+ // response.trackedEntities,
3689
+ // filtersFromEvents
3690
+ // );
3691
+ // const trackedEntityIds = filteredTrackedEntities
3692
+ // .map((tei: any) => tei.trackedEntity)
3693
+ // .join(',');
3694
+ // if (!trackedEntityIds) {
3695
+ // return of({
3696
+ // trackedEntities: [],
3697
+ // orgUnitsMap: new Map<string, string>(),
3698
+ // });
3699
+ // }
3700
+ // const refetchUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc&trackedEntities=${trackedEntityIds}`;
3701
+ // return this.httpClient.get(refetchUrl).pipe(
3702
+ // switchMap((filteredResponse: any) => {
3703
+ // const orgUnitIds = new Set<string>();
3704
+ // filteredResponse.trackedEntities?.forEach((tei: any) => {
3705
+ // tei.enrollments?.forEach((enrollment: any) => {
3706
+ // if (enrollment.program === programId) {
3707
+ // orgUnitIds.add(enrollment.orgUnit);
3708
+ // }
3709
+ // });
3710
+ // });
3711
+ // return this.fetchOrgUnits(Array.from(orgUnitIds)).pipe(
3712
+ // map((orgUnitsMap: Map<string, string>) => ({
3713
+ // ...filteredResponse,
3714
+ // orgUnitsMap,
3715
+ // }))
3716
+ // );
3717
+ // })
3718
+ // );
3719
+ // })
3720
+ // );
3638
3721
  // }
3639
- getTrackedEntityInstances(programId, orgUnit, page, pageSize, filters = [], startDate, endDate, ouMode, filterRootOrgUnit, useOuModeWithOlderDHIS2Instance, filtersFromEvents = []) {
3640
- const filterParams = buildFilters(filters);
3641
- const filterParamsFromEvents = buildFiltersFromEvents(filtersFromEvents);
3642
- const dateFilter = [
3643
- startDate ? `enrollmentEnrolledAfter=${startDate}` : '',
3644
- endDate ? `enrollmentEnrolledBefore=${endDate}` : '',
3645
- ]
3646
- .filter(Boolean)
3647
- .join('&');
3648
- const ouModeIdentifier = ouMode && useOuModeWithOlderDHIS2Instance
3649
- ? `&ouMode=${ouMode}`
3650
- : `&orgUnitMode=${ouMode}`;
3651
- let baseUrl = '';
3652
- if (filtersFromEvents.length === 0) {
3653
- baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`;
3654
- }
3655
- else {
3656
- baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&${filterParams}${dateFilter}&order=createdAt:desc&paging=false`;
3657
- }
3658
- return this.httpClient.get(baseUrl).pipe(switchMap((response) => {
3659
- if (filterRootOrgUnit) {
3660
- response.trackedEntities = response.trackedEntities.filter((tei) => tei.orgUnit !== orgUnit);
3661
- }
3662
- const uniqueOrgUnitIds = new Set();
3663
- if (response && response.trackedEntities) {
3664
- response.trackedEntities.forEach((tei) => {
3665
- tei.enrollments?.forEach((enrollment) => {
3666
- if (enrollment.program === programId) {
3667
- uniqueOrgUnitIds.add(enrollment.orgUnit);
3668
- }
3669
- });
3670
- });
3671
- }
3672
- else {
3673
- response?.instances?.forEach((tei) => {
3674
- tei.enrollments?.forEach((enrollment) => {
3675
- if (enrollment.program === programId) {
3676
- uniqueOrgUnitIds.add(enrollment.orgUnit);
3677
- }
3678
- });
3679
- });
3680
- }
3681
- if (filtersFromEvents.length === 0) {
3682
- if (uniqueOrgUnitIds.size === 0) {
3683
- return of({ ...response, orgUnitsMap: new Map() });
3684
- }
3685
- return this.fetchOrgUnits(Array.from(uniqueOrgUnitIds)).pipe(map$1((orgUnitsMap) => ({
3686
- ...response,
3687
- orgUnitsMap,
3688
- })));
3689
- }
3690
- // NEW LOGIC STARTS HERE if filtersFromEvents is present
3691
- const filteredTrackedEntities = getFilteredTrackedEntites(response.trackedEntities, filtersFromEvents);
3692
- const trackedEntityIds = filteredTrackedEntities
3693
- .map((tei) => tei.trackedEntity)
3694
- .join(',');
3695
- if (!trackedEntityIds) {
3696
- return of({
3697
- trackedEntities: [],
3698
- orgUnitsMap: new Map(),
3699
- });
3700
- }
3701
- const refetchUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc&trackedEntities=${trackedEntityIds}`;
3702
- return this.httpClient.get(refetchUrl).pipe(switchMap((filteredResponse) => {
3703
- const orgUnitIds = new Set();
3704
- filteredResponse.trackedEntities?.forEach((tei) => {
3705
- tei.enrollments?.forEach((enrollment) => {
3706
- if (enrollment.program === programId) {
3707
- orgUnitIds.add(enrollment.orgUnit);
3708
- }
3709
- });
3710
- });
3711
- return this.fetchOrgUnits(Array.from(orgUnitIds)).pipe(map$1((orgUnitsMap) => ({
3712
- ...filteredResponse,
3713
- orgUnitsMap,
3714
- })));
3715
- }));
3716
- }));
3717
- }
3718
3722
  /**
3719
3723
  * Fetch orgUnit names for given orgUnit IDs
3720
3724
  */
@@ -4005,9 +4009,9 @@ const getTrackedEntityData = (response, programId, pager, isOptionSetNameVisible
4005
4009
  : null,
4006
4010
  sortOrder: attr.sortOrder,
4007
4011
  }));
4008
- // if (filters) {
4009
- // teis = getFilteredTrackedEntites(teis, filters);
4010
- // }
4012
+ if (filters) {
4013
+ teis = getFilteredTrackedEntites(teis, filters);
4014
+ }
4011
4015
  const allAttributes = new Set();
4012
4016
  teis.forEach((tei) => {
4013
4017
  const matchingEnrollment = tei.enrollments.find((enrollment) => enrollment.program === programId);