From ce27941ec979a910d75e1d351b0cdad59bbc38df Mon Sep 17 00:00:00 2001 From: Joy A Date: Fri, 28 Jun 2024 17:52:00 +0530 Subject: [PATCH] avniproject/avni-webapp#1263 | Add recentDuration input for 'Recent' type Standard Report Cards --- src/ReportCard.js | 17 ++++++++++++++++- src/Schema.js | 2 +- src/StandardReportCardType.js | 30 +++++++++++++++++++++++++----- 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/ReportCard.js b/src/ReportCard.js index 2c545f2..07be060 100644 --- a/src/ReportCard.js +++ b/src/ReportCard.js @@ -23,7 +23,8 @@ class ReportCard extends BaseEntity { countOfCards: {type: "int", default: 1, optional: true}, //Used only by nested ReportCards standardReportCardInputSubjectTypes: {type: "list", objectType: "SubjectType"}, standardReportCardInputPrograms: {type: "list", objectType: "Program"}, - standardReportCardInputEncounterTypes: {type: "list", objectType: "EncounterType"} + standardReportCardInputEncounterTypes: {type: "list", objectType: "EncounterType"}, + standardReportCardInputRecentDurationJSON: {type: "string", optional: true} }, }; @@ -32,6 +33,7 @@ class ReportCard extends BaseEntity { reportCard.standardReportCardInputSubjectTypes = []; reportCard.standardReportCardInputPrograms = []; reportCard.standardReportCardInputEncounterTypes = []; + reportCard.standardReportCardInputRecentDuration = null; return reportCard; } @@ -132,6 +134,14 @@ class ReportCard extends BaseEntity { this.that.standardReportCardInputEncounterTypes = this.fromEntityList(x); } + get standardReportCardInputRecentDurationJSON() { + return JSON.parse(this.that.standardReportCardInputRecentDurationJSON); + } + + set standardReportCardInputRecentDurationJSON(x) { + this.that.standardReportCardInputRecentDurationJSON = x; + } + /** * Helper method used to generate unique key value for Nested Report Cards using UUID and Index of the Report Card. * The Nested Report Card's query responses would be mapped to the corresponding Dashboard Report cards using the UUID and Index. @@ -172,6 +182,7 @@ class ReportCard extends BaseEntity { resource.standardReportCardInputEncounterTypes.forEach(uuid => { reportCard.standardReportCardInputEncounterTypes.push(entityService.findByUUID(uuid, EncounterType.schema.name)); }); + reportCard.standardReportCardInputRecentDurationJSON = resource.standardReportCardInputRecentDuration; return reportCard; } @@ -187,6 +198,10 @@ class ReportCard extends BaseEntity { isSubjectTypeFilterSupported() { return this.isStandardReportType() && this.standardReportCardType.isSubjectTypeFilterSupported(); } + + isRecentType() { + return this.isStandardReportType() && this.standardReportCardType.isRecentType(); + } } export default ReportCard; diff --git a/src/Schema.js b/src/Schema.js index 72c3e94..516dd3a 100644 --- a/src/Schema.js +++ b/src/Schema.js @@ -252,7 +252,7 @@ function createRealmConfig() { return doCompact; }, //order is important, should be arranged according to the dependency - schemaVersion: 192, + schemaVersion: 193, onMigration: function (oldDB, newDB) { console.log("[AvniModels.Schema]", `Running migration with old schema version: ${oldDB.schemaVersion} and new schema version: ${newDB.schemaVersion}`); if (oldDB.schemaVersion === VersionWithEmbeddedMigrationProblem) diff --git a/src/StandardReportCardType.js b/src/StandardReportCardType.js index 4b59019..2009330 100644 --- a/src/StandardReportCardType.js +++ b/src/StandardReportCardType.js @@ -42,9 +42,9 @@ class StandardReportCardType extends BaseEntity { Rejected: "Rejected", ScheduledVisits: "Scheduled visits", OverdueVisits: "Overdue visits", - LatestRegistrations: "Last 24 hours registrations", - LatestEnrolments: "Last 24 hours enrolments", - LatestVisits: "Last 24 hours visits", + RecentRegistrations: "Recent registrations", + RecentEnrolments: "Recent enrolments", + RecentVisits: "Recent visits", Total: "Total", Comments: "Comments", CallTasks: "Call tasks", @@ -52,6 +52,12 @@ class StandardReportCardType extends BaseEntity { DueChecklist: "Due checklist", }; + static recentCardDurationUnits = [ + "days", + "weeks", + "months" + ] + get iconName() { const typeIcon = { [StandardReportCardType.type.Approved]: 'check-circle', @@ -94,7 +100,7 @@ class StandardReportCardType extends BaseEntity { } defaultTypes() { - return [StandardReportCardType.type.ScheduledVisits, StandardReportCardType.type.OverdueVisits, StandardReportCardType.type.LatestRegistrations, StandardReportCardType.type.LatestEnrolments, StandardReportCardType.type.LatestVisits, StandardReportCardType.type.Total] + return [StandardReportCardType.type.ScheduledVisits, StandardReportCardType.type.OverdueVisits, StandardReportCardType.type.RecentRegistrations, StandardReportCardType.type.RecentEnrolments, StandardReportCardType.type.RecentVisits, StandardReportCardType.type.Total] } isApprovalType() { @@ -131,7 +137,21 @@ class StandardReportCardType extends BaseEntity { } isSubjectTypeFilterSupported() { - return [StandardReportCardType.type.ScheduledVisits, StandardReportCardType.type.OverdueVisits].includes(this.name); + return [ + StandardReportCardType.type.ScheduledVisits, + StandardReportCardType.type.OverdueVisits, + StandardReportCardType.type.RecentRegistrations, + StandardReportCardType.type.RecentEnrolments, + StandardReportCardType.type.RecentVisits, + ].includes(this.name); + } + + isRecentType() { + return [ + StandardReportCardType.type.RecentRegistrations, + StandardReportCardType.type.RecentEnrolments, + StandardReportCardType.type.RecentVisits, + ].includes(this.name); } }