From 30f6fe87cdbb8fb62a254a3e42c1b7c0c3dccb55 Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Thu, 18 Apr 2024 15:26:56 +0530 Subject: [PATCH] #1375 - include full hierarchy above the lowest level. --- .../action/customDashboard/CustomDashboardActions.js | 12 ++++++------ .../src/action/individual/IndividualSearchActions.js | 2 +- .../src/action/mydashboard/FiltersActions.js | 2 +- .../src/service/BaseAddressLevelService.js | 12 ++++++------ .../src/service/reports/DashboardFilterService.js | 10 +++++----- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/openchs-android/src/action/customDashboard/CustomDashboardActions.js b/packages/openchs-android/src/action/customDashboard/CustomDashboardActions.js index af15731cd..1935ba1fe 100644 --- a/packages/openchs-android/src/action/customDashboard/CustomDashboardActions.js +++ b/packages/openchs-android/src/action/customDashboard/CustomDashboardActions.js @@ -118,8 +118,8 @@ class CustomDashboardActions { reportCardSectionMappings.forEach(rcm => { const start = new Date(); const countQueryResponse = context.get(ReportCardService).getReportCardCount(rcm.card, newState.ruleInput.ruleInputArray); - if(rcm.card.nested) { - if(countQueryResponse && countQueryResponse.length === rcm.card.countOfCards) { + if (rcm.card.nested) { + if (countQueryResponse && countQueryResponse.length === rcm.card.countOfCards) { _.forEach(countQueryResponse, (reportCard, index) => { const itemKey = rcm.card.getCardId(index); newState.cardToCountResultMap[itemKey] = { @@ -127,7 +127,7 @@ class CustomDashboardActions { itemKey }; }); - } else if(countQueryResponse && countQueryResponse.length !== rcm.card.countOfCards) { + } else if (countQueryResponse && countQueryResponse.length !== rcm.card.countOfCards) { Array(rcm.card.countOfCards).fill(rcm.card).forEach((reportCard, index) => { const itemKey = reportCard.getCardId(index); newState.cardToCountResultMap[itemKey] = { @@ -152,9 +152,9 @@ class CustomDashboardActions { const reportCardSectionMappings = state.reportCardSectionMappings; newState.countUpdateTime = new Date(); //Update this to ensure reportCard count change is reflected reportCardSectionMappings.forEach(rcm => { - const keysOfReportCard= _.keys(newState.cardToCountResultMap).filter((itemKey) => itemKey.startsWith(rcm.card.uuid)); + const keysOfReportCard = _.keys(newState.cardToCountResultMap).filter((itemKey) => itemKey.startsWith(rcm.card.uuid)); _.forEach(keysOfReportCard, (itemKey) => { - newState.cardToCountResultMap[itemKey]= null; + newState.cardToCountResultMap[itemKey] = null; }); }); return newState; @@ -169,7 +169,7 @@ class CustomDashboardActions { static setCustomDashboardFilters(state, action, context) { const newState = {...state}; newState.customDashboardFilters = action.filterApplied ? action.customDashboardFilters - : CustomDashboardActions.getDefaultCustomDashboardFilters(); + : CustomDashboardActions.getDefaultCustomDashboardFilters(); return newState; } } diff --git a/packages/openchs-android/src/action/individual/IndividualSearchActions.js b/packages/openchs-android/src/action/individual/IndividualSearchActions.js index 20d04dc03..451d16d78 100644 --- a/packages/openchs-android/src/action/individual/IndividualSearchActions.js +++ b/packages/openchs-android/src/action/individual/IndividualSearchActions.js @@ -115,7 +115,7 @@ export class IndividualSearchActions { const addressLevelState = action.values; const lowestSelectedAddressLevels = addressLevelState.lowestSelectedAddresses; const lowestAddressLevels = lowestSelectedAddressLevels - .reduce((acc, parent) => acc.concat(addressLevelService.getChildrenOfNode(parent, false)), []); + .reduce((acc, parent) => acc.concat(addressLevelService.getDescendantsOfNode(parent, false)), []); newState.searchCriteria.toggleLowestAddresses(lowestAddressLevels); newState.addressLevelState = addressLevelState; return newState; diff --git a/packages/openchs-android/src/action/mydashboard/FiltersActions.js b/packages/openchs-android/src/action/mydashboard/FiltersActions.js index a74e91af2..5c8dc7f86 100644 --- a/packages/openchs-android/src/action/mydashboard/FiltersActions.js +++ b/packages/openchs-android/src/action/mydashboard/FiltersActions.js @@ -66,7 +66,7 @@ class FiltersActions { const addressLevelService = beans.get(AddressLevelService); const lowestSelectedAddressLevels = action.addressLevelState.lowestSelectedAddresses; const lowestAddressLevels = lowestSelectedAddressLevels - .reduce((acc, parent) => acc.concat(addressLevelService.getChildrenOfNode(parent, false)), []); + .reduce((acc, parent) => acc.concat(addressLevelService.getDescendantsOfNode(parent, false)), []); newState.locationSearchCriteria.toggleLowestAddresses(lowestAddressLevels); return newState; } diff --git a/packages/openchs-android/src/service/BaseAddressLevelService.js b/packages/openchs-android/src/service/BaseAddressLevelService.js index f54dfcf86..b4feff298 100644 --- a/packages/openchs-android/src/service/BaseAddressLevelService.js +++ b/packages/openchs-android/src/service/BaseAddressLevelService.js @@ -91,19 +91,19 @@ class BaseAddressLevelService extends BaseService { return child.level === this.minLevel(); } - getChildrenOfNode( node, leavesOnly = true) { - if (this.isLeaf(node)) { + getDescendantsOfNode(node, excludeSelf = true) { + if (this.isLeaf(node)) { //in this case excludeSelf is not respected return [node]; } const children = this.getChildrenParent(node.uuid); if (_.isEmpty(children)) { - return leavesOnly ? [] : [node]; + return excludeSelf ? [] : [node]; } else if (this.isLeaf(_.first(children))) { - return leavesOnly ? children : [node].concat(children); + return excludeSelf ? children : [node].concat(children); } - return leavesOnly ? _.flatten(children.map(c => this.getChildrenOfNode(c, leavesOnly))) - : [node].concat(_.flatten(children.map(c => this.getChildrenOfNode(c, leavesOnly)))); + return excludeSelf ? _.flatten(children.map(c => this.getDescendantsOfNode(c, excludeSelf))) + : [node].concat(_.flatten(children.map(c => this.getDescendantsOfNode(c, excludeSelf)))); } getDescendantsOfParent(parentUuid, minLevelTypeUUIDs) { diff --git a/packages/openchs-android/src/service/reports/DashboardFilterService.js b/packages/openchs-android/src/service/reports/DashboardFilterService.js index e8da054f4..04ce4f5d3 100644 --- a/packages/openchs-android/src/service/reports/DashboardFilterService.js +++ b/packages/openchs-android/src/service/reports/DashboardFilterService.js @@ -14,7 +14,6 @@ import { import {DashboardReportFilter} from "../../model/DashboardReportFilters"; import _ from "lodash"; import AddressLevelService from "../AddressLevelService"; -import GlobalContext from "../../GlobalContext"; @Service("dashboardFilterService") @@ -77,12 +76,13 @@ class DashboardFilterService extends BaseService { if (_.isEmpty(filterValue.selectedAddresses)) { ruleInput.filterValue = filterValue.selectedAddresses; } else { - const addressLevelService = GlobalContext.getInstance().beanRegistry.getService(AddressLevelService); + const addressLevelService = this.getService(AddressLevelService); + const addressFilterValues = [...filterValue.selectedAddresses]; const allChildrenOfLowestSelectedLocations = filterValue.selectedAddresses .filter(location => location.level === _.get(_.minBy(filterValue.selectedAddresses, 'level'), 'level')) - .reduce((acc, parent) => acc.concat(addressLevelService.getChildrenOfNode(parent, false)), []); - ruleInput.filterValue = allChildrenOfLowestSelectedLocations - .map(addressLevel => _.pick(addressLevel, ['uuid', 'name', 'level', 'type', 'parentUuid', 'typeUuid'])); + .reduce((acc, parent) => acc.concat(addressLevelService.getDescendantsOfNode(parent, true)), []); + ruleInput.filterValue = addressFilterValues.concat(allChildrenOfLowestSelectedLocations + .map(addressLevel => _.pick(addressLevel, ['uuid', 'name', 'level', 'type', 'parentUuid']))); } } else