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 e3a07f570..3aa33ae65 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 @@ -638,7 +638,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 3dde4df08..c50cc2437 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 @@ -265,7 +265,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 f830811ba..a3f67c553 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 0dd8d22eb..ac4f52cf9 100644 --- a/projects/v3/src/app/services/notifications.service.ts +++ b/projects/v3/src/app/services/notifications.service.ts @@ -445,13 +445,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 241478801..48074123b 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;