From adbcd57b58c84a57f5fbf4f8b56ea2dfbc76af14 Mon Sep 17 00:00:00 2001 From: trtshen Date: Mon, 2 Feb 2026 15:01:03 +0800 Subject: [PATCH] [CORE-8139] assessment-specific review rating toggle --- .../pages/activity-desktop/activity-desktop.page.ts | 3 ++- .../pages/assessment-mobile/assessment-mobile.page.ts | 6 +++++- projects/v3/src/app/services/assessment.service.ts | 8 +++++++- projects/v3/src/app/services/notifications.service.ts | 10 +++++++++- projects/v3/src/app/services/storage.service.ts | 2 +- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts b/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts index 9befc398e..9c5eccf66 100644 --- a/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts +++ b/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts @@ -524,7 +524,8 @@ export class ActivityDesktopPage { // display review rating modal return await this.notificationsService.popUpReviewRating( this.review.id, - false + false, + this.assessmentService.assessment?.hasReviewRating ); } diff --git a/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts b/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts index a7b596641..0e0760925 100644 --- a/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts +++ b/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts @@ -262,7 +262,11 @@ export class AssessmentMobilePage implements OnInit, OnDestroy { try { // display review rating modal - return await this.notificationsService.popUpReviewRating(this.review.id, false); + return await this.notificationsService.popUpReviewRating( + this.review.id, + false, + this.assessment?.hasReviewRating + ); } catch (err) { const header = $localize`Can not get review rating information`; await this.notificationsService.alert({ diff --git a/projects/v3/src/app/services/assessment.service.ts b/projects/v3/src/app/services/assessment.service.ts index b1bbf6c2c..7e6bf1c96 100644 --- a/projects/v3/src/app/services/assessment.service.ts +++ b/projects/v3/src/app/services/assessment.service.ts @@ -52,6 +52,7 @@ export interface Assessment { isOverdue?: boolean; groups: Array; pulseCheck: boolean; + hasReviewRating: boolean; // assessment level setting to enable review rating allowResubmit?: boolean; // indicator to show resubmit button } @@ -138,7 +139,11 @@ export class AssessmentService { .graphQLFetch( `query getAssessment($assessmentId: Int!, $reviewer: Boolean!, $activityId: Int, $contextId: Int!, $submissionId: Int) { assessment(id:$assessmentId, reviewer:$reviewer, activityId:$activityId, submissionId:$submissionId) { - id name type description dueDate isTeam pulseCheck allowResubmit + id name type + description dueDate isTeam + pulseCheck + hasReviewRating + allowResubmit groups { name description questions{ @@ -265,6 +270,7 @@ export class AssessmentService { ? this.utils.timeComparer(data.assessment.dueDate) < 0 : false, pulseCheck: data.assessment.pulseCheck, + hasReviewRating: data.assessment.hasReviewRating, allowResubmit: data.assessment.allowResubmit, groups: [], }; diff --git a/projects/v3/src/app/services/notifications.service.ts b/projects/v3/src/app/services/notifications.service.ts index 6b8a5a6b2..c72676964 100644 --- a/projects/v3/src/app/services/notifications.service.ts +++ b/projects/v3/src/app/services/notifications.service.ts @@ -422,13 +422,21 @@ export class NotificationsService { * @param {number} reviewId submission review record id * @param {string[]} redirect array: routeUrl, boolean: disable * routing (stay at same component) + * @param {boolean} hasReviewRating optional flag from assessment to + * skip popup when disabled * * @return {Promise} deferred ionic modal */ async popUpReviewRating( reviewId, - redirect: string[] | boolean + redirect: string[] | boolean, + hasReviewRating?: boolean ): Promise { + // skip popup if assessment-level review rating is disabled + if (hasReviewRating === false) { + return; + } + return this.modalOnly( ReviewRatingComponent, { diff --git a/projects/v3/src/app/services/storage.service.ts b/projects/v3/src/app/services/storage.service.ts index c56d30673..6141143eb 100644 --- a/projects/v3/src/app/services/storage.service.ts +++ b/projects/v3/src/app/services/storage.service.ts @@ -34,7 +34,7 @@ export interface User { userHash?: string; colors?: Colors; activityCardImage?: string; // default activity card image - hasReviewRating?: boolean; + hasReviewRating?: boolean; // from experience settings (enable/disable entirely from global setting) truncateDescription?: boolean; enrolment?: any; activityCompleteMessage?: string;