Skip to content

Commit

Permalink
#1382 - filters as string instead of array and string both
Browse files Browse the repository at this point in the history
  • Loading branch information
petmongrels committed Jun 24, 2024
1 parent 64fab83 commit ad3bcab
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import RealmQueryService from "../../service/query/RealmQueryService";
import SubjectTypeService from "../../service/SubjectTypeService";
import {DashboardCacheFilter} from "openchs-models";
import General from "../../utility/General";
import {JSONStringify} from "../../utility/JsonStringify";

function getApplicableEncounterTypes(holder) {
return _.isEmpty(holder.selectedGeneralEncounterTypes) ? holder.selectedEncounterTypes : holder.selectedGeneralEncounterTypes;
Expand All @@ -35,11 +36,11 @@ function updateCacheWithPostSyncValues(context) {
if (oneSyncCompleted) {
const subjectTypeQuery = (path) => [`${path} = "${subjectTypes[0].uuid}"`];
toUpdateValues = {
individualFilters: subjectTypeQuery('subjectType.uuid'),
encountersFilters: subjectTypeQuery('programEnrolment.individual.subjectType.uuid'),
enrolmentFilters: subjectTypeQuery('individual.subjectType.uuid'),
generalEncountersFilters: subjectTypeQuery('individual.subjectType.uuid'),
dueChecklistFilter: subjectTypeQuery('individual.subjectType.uuid'),
individualFilters: RealmQueryService.orQuery(subjectTypeQuery('subjectType.uuid')),
encountersFilters: RealmQueryService.orQuery(subjectTypeQuery('programEnrolment.individual.subjectType.uuid')),
enrolmentFilters: RealmQueryService.orQuery(subjectTypeQuery('individual.subjectType.uuid')),
generalEncountersFilters: RealmQueryService.orQuery(subjectTypeQuery('individual.subjectType.uuid')),
dueChecklistFilter: RealmQueryService.orQuery(subjectTypeQuery('individual.subjectType.uuid')),
selectedSubjectTypeUUID: subjectTypes[0].uuid,
...toUpdateValues
};
Expand Down Expand Up @@ -104,9 +105,9 @@ class MyDashboardActions {
showFilters: false,
filters: new Map(),
locationSearchCriteria: IndividualSearchCriteria.empty(),
individualFilters: [],
encountersFilters: [],
generalEncountersFilters: [],
individualFilters: '',
encountersFilters: '',
generalEncountersFilters: '',
enrolmentFilters: [],
dueChecklistFilter: [],
selectedLocations: [],
Expand Down Expand Up @@ -144,6 +145,8 @@ class MyDashboardActions {
const queryGeneralEncounter = MyDashboardActions.shouldQueryGeneralEncounter(state);
const dueChecklistWithChecklistItem = individualService.dueChecklistForDefaultDashboard(dashboardCacheFilter.filterDate, dashboardCacheFilter.dueChecklistFilter);

General.logDebugTemp("MyDashboardActions", JSONStringify(dashboardCacheFilter));

const [
allIndividualsWithScheduledVisits,
allIndividualsWithOverDueVisits,
Expand Down Expand Up @@ -230,7 +233,9 @@ class MyDashboardActions {
if (listType === "recentlyCompletedRegistration" || listType === "total")
allIndividuals = methodMap.get(listType)(state.date.value, [], filters, state.selectedPrograms, getApplicableEncounterTypes(state));
else if (listType === "dueChecklist") {
allIndividuals = methodMap.get(listType)(state.date.value, [], state.dueChecklistFilter)
allIndividuals = methodMap.get(listType)(state.date.value, [], filters, state.selectedPrograms, getApplicableEncounterTypes(state), queryProgramEncounter, queryGeneralEncounter);
} else if (["scheduled", "overdue"].includes(listType)) {
allIndividuals = methodMap.get(listType)(state.date.value, [], state.encountersFilters, state.generalEncountersFilters, queryProgramEncounter, queryGeneralEncounter);
} else
allIndividuals = methodMap.get(listType)(state.date.value, [], filters, state.generalEncountersFilters, queryProgramEncounter, queryGeneralEncounter);

Expand Down
19 changes: 14 additions & 5 deletions packages/openchs-android/src/service/IndividualService.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,16 @@ function getSubjectUUIDsForCustomFilters(customFilterService, reportFilters) {
return {uniqueSubjects, filterApplied};
}

function applyUserFilters(entities, reportFilters, criteria, addressFilter, genders, schema, customFilterService) {
function applyConfiguredFilters(entities, criteria) {
let filteredEntities = entities;
if (!_.isEmpty(criteria)) {
filteredEntities = filteredEntities.filtered(criteria);
}
return filteredEntities;
}

function applyUserFilters(entities, reportFilters, addressFilter, genders, schema, customFilterService) {
let filteredEntities = entities;
filteredEntities = RealmQueryService.filterBasedOnAddress(schema, filteredEntities, addressFilter);
filteredEntities = RealmQueryService.filterBasedOnGenders(schema, filteredEntities, genders);
const {uniqueSubjects, filterApplied} = getSubjectUUIDsForCustomFilters(customFilterService, reportFilters);
Expand Down Expand Up @@ -259,7 +264,8 @@ class IndividualService extends BaseService {
dateMidnight,
dateMorning);

programEncounters = applyUserFilters(programEncounters, reportFilters, programEncounterCriteria, addressFilter, genders, ProgramEncounter.schema.name, this.getService(CustomFilterService));
programEncounters = applyConfiguredFilters(programEncounters, programEncounterCriteria);
programEncounters = applyUserFilters(programEncounters, reportFilters, addressFilter, genders, ProgramEncounter.schema.name, this.getService(CustomFilterService));

programEncounters = programEncounters.map((enc) => {
const individual = enc.programEnrolment.individual;
Expand Down Expand Up @@ -296,7 +302,8 @@ class IndividualService extends BaseService {
dateMidnight,
dateMorning);

encounters = applyUserFilters(encounters, reportFilters, encounterCriteria, addressFilter, genders, Encounter.schema.name, this.getService(CustomFilterService));
encounters = applyConfiguredFilters(encounters, encounterCriteria);
encounters = applyUserFilters(encounters, reportFilters, addressFilter, genders, Encounter.schema.name, this.getService(CustomFilterService));

encounters = encounters.map((enc) => {
const individual = enc.individual;
Expand Down Expand Up @@ -346,7 +353,8 @@ class IndividualService extends BaseService {
'AND voided = false ',
dateMorning);

programEncounters = applyUserFilters(programEncounters, reportFilters, programEncounterCriteria, addressFilter, genders, ProgramEncounter.schema.name, this.getService(CustomFilterService));
programEncounters = applyConfiguredFilters(programEncounters, programEncounterCriteria);
programEncounters = applyUserFilters(programEncounters, reportFilters, addressFilter, genders, ProgramEncounter.schema.name, this.getService(CustomFilterService));

programEncounters = programEncounters.map((enc) => {
const individual = enc.programEnrolment.individual;
Expand Down Expand Up @@ -381,7 +389,8 @@ class IndividualService extends BaseService {
'AND voided = false ',
dateMorning);

encounters = applyUserFilters(encounters, reportFilters, encounterCriteria, addressFilter, genders, Encounter.schema.name, this.getService(CustomFilterService));
encounters = applyConfiguredFilters(encounters, encounterCriteria);
encounters = applyUserFilters(encounters, reportFilters, addressFilter, genders, Encounter.schema.name, this.getService(CustomFilterService));

encounters = encounters.map((enc) => {
const individual = enc.individual;
Expand Down
14 changes: 7 additions & 7 deletions packages/openchs-android/src/service/SyncService.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ function transformResourceToEntity(entityMetaData, entityResources) {
try {
return acc.concat([entityMetaData.entityClass.fromResource(resource, this.entityService, entityResources)]);
} catch (error) {
if(error instanceof IgnorableSyncError) {
if (error instanceof IgnorableSyncError) {
resource.excludeFromPersist = true;
General.logError("SyncService", error);
} else {
Expand Down Expand Up @@ -104,9 +104,9 @@ class SyncService extends BaseService {
.then(() => Promise.resolve(this.logSyncCompleteEvent(syncStartTime)))
.then(() => this.clearDataIn([RuleFailureTelemetry]))
.then(() => this.downloadNewsImages())
.then(() => {
return updatedSyncSource;
});
.then(() => {
return updatedSyncSource;
});

// Even blank dataServerSync with no data in or out takes quite a while.
// Don't do it twice if no image sync required
Expand Down Expand Up @@ -411,12 +411,12 @@ class SyncService extends BaseService {
});
const customDashboardService = this.context.getService(CustomDashboardService);
const renderCustomDashboard = customDashboardService.isCustomDashboardMarkedPrimary();
if(!renderCustomDashboard) {
this.dispatchAction(MyDashboardActionNames.ON_LOAD);
} else {
if (renderCustomDashboard) {
this.dispatchAction(CustomDashboardActionNames.ON_LOAD, {customDashboardType: CustomDashboardType.None});
this.dispatchAction(CustomDashboardActionNames.REMOVE_OLDER_COUNTS);
setTimeout(() => this.dispatchAction(CustomDashboardActionNames.REFRESH_COUNT), 500);
} else {
this.dispatchAction(MyDashboardActionNames.ON_LOAD);
}
}
}
Expand Down

0 comments on commit ad3bcab

Please sign in to comment.