From 83caf8c5b08b33e56fc006b2de1c00c83414513d Mon Sep 17 00:00:00 2001 From: AnjuJose011 <154979799+AnjuJose011@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:13:02 +0000 Subject: [PATCH] Revert "TD-6899 Refactor of Case Completion status" --- .../Scripts/vuesrc/activity.ts | 34 +++---------------- .../resource/CaseOrAssessmentResource.vue | 27 ++------------- .../vuesrc/resource/ResourceContent.vue | 19 +++-------- LearningHub.Nhs.WebUI/package-lock.json | 2 +- 4 files changed, 12 insertions(+), 70 deletions(-) diff --git a/LearningHub.Nhs.WebUI/Scripts/vuesrc/activity.ts b/LearningHub.Nhs.WebUI/Scripts/vuesrc/activity.ts index 91fd70738..bc5a08bbb 100644 --- a/LearningHub.Nhs.WebUI/Scripts/vuesrc/activity.ts +++ b/LearningHub.Nhs.WebUI/Scripts/vuesrc/activity.ts @@ -10,18 +10,13 @@ const recordActivityLaunched = async function ( resourceVersionId: number, nodePathId: number, activityDatetime: Date, - isMultiPageCase: boolean = false, extraAttemptReason?: string): Promise { var data = { resourceVersionId: resourceVersionId, nodePathId: nodePathId, - activityStatus: (resourceType == ResourceType.ASSESSMENT || - resourceType == ResourceType.VIDEO || - resourceType == ResourceType.AUDIO || - resourceType == ResourceType.SCORM || - (resourceType == ResourceType.CASE && isMultiPageCase) - ) ? ActivityStatus.Incomplete : ActivityStatus.Completed, + activityStatus: (resourceType == ResourceType.ASSESSMENT || resourceType == ResourceType.VIDEO || resourceType == ResourceType.AUDIO || + resourceType == ResourceType.SCORM) ? ActivityStatus.Incomplete : ActivityStatus.Completed, activityStart: activityDatetime, extraAttemptReason }; @@ -40,10 +35,8 @@ const recordActivityLaunched = async function ( console.log('recordActivityLaunched:' + e); throw e; }); -}; - - +}; const recordActivity = async function ( resourceVersionId: number, nodePathId: number, @@ -222,24 +215,6 @@ const recordAssessmentResourceActivityInteraction = async function ( }); } -// handle case completion -const recordCaseActivityComplete = async function ( - resourceVersionId: number, - nodePathId: number, - activityStart: Date, - activityEnd: Date, - launchResourceActivityId: number -): Promise { - return await recordActivity( - resourceVersionId, - nodePathId, - activityStart, - activityEnd, - ActivityStatus.Completed, - launchResourceActivityId - ); -}; - export const activityRecorder = { recordActivityLaunched, recordActivity, @@ -247,6 +222,5 @@ export const activityRecorder = { recordMediaResourceActivityInteraction, recordActivityAndInteractionTogether, recordAssessmentResourceActivity, - recordAssessmentResourceActivityInteraction, - recordCaseActivityComplete + recordAssessmentResourceActivityInteraction }; diff --git a/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/CaseOrAssessmentResource.vue b/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/CaseOrAssessmentResource.vue index ec011ffb6..a7c20515c 100644 --- a/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/CaseOrAssessmentResource.vue +++ b/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/CaseOrAssessmentResource.vue @@ -116,7 +116,6 @@ props: { resourceItem: { type: Object } as PropOptions, resourceActivityId: { type: Number } as PropOptions, - activityStart: { type: Date }, assessmentProgress: { type: Object } as PropOptions, keepUserSessionAliveIntervalSeconds: { type: Number } as PropOptions, }, @@ -235,26 +234,10 @@ this.questionsInFocus = [...this.questionsInFocus]; this.selectedQuestionValues = [...this.selectedQuestionValues]; }, - async updateProgress(page: number, isCompleted: boolean) { + updateProgress(page: number, isCompleted: boolean) { if (isCompleted) { this.pagesProgress.completePage(page); } - if (this.resourceItem.resourceTypeEnum === ResourceType.CASE && - isCompleted && - page === this.pageCount - 1 && - this.resourceActivityId > 0) { - - let startDate = new Date(this.activityStart as any); - - await activityRecorder.recordCaseActivityComplete( - this.resourceItem.resourceVersionId, - this.resourceItem.nodePathId, - startDate, - new Date(), - this.resourceActivityId - ); - } - if (this.allPagesCompleted && this.isAssessment) { this.allAssessmentInteractionsSubmitted = true; } @@ -324,13 +307,7 @@ // Only make a new activity if the latest activity is finished if (typeof latest.userScore === 'number') { - const result = await activityRecorder.recordActivityLaunched( - this.resourceItem.resourceTypeEnum, - this.resourceItem.resourceVersionId, - this.resourceItem.nodePathId, - new Date(), - false as boolean - ); + const result = await activityRecorder.recordActivityLaunched(this.resourceItem.resourceTypeEnum, this.resourceItem.resourceVersionId, this.resourceItem.nodePathId, new Date(), reason); this.shuffleMatchQuestionsState(); await activityRecorder.recordAssessmentResourceActivity(result.createdId, this.matchQuestionsState, reason); } diff --git a/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/ResourceContent.vue b/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/ResourceContent.vue index cba006b24..1f966cfac 100644 --- a/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/ResourceContent.vue +++ b/LearningHub.Nhs.WebUI/Scripts/vuesrc/resource/ResourceContent.vue @@ -72,7 +72,7 @@
- +
@@ -102,7 +102,6 @@ import { MKPlayer } from '@mediakind/mkplayer'; import { MKPlayerType, MKStreamType } from '../MKPlayerConfigEnum'; import { MKPlayerControlbar } from '../mkioplayer-controlbar'; - import { BlockCollectionModel } from '../models/contribute-resource/blocks/blockCollectionModel'; Vue.use(Vuelidate as any); @@ -123,7 +122,6 @@ ResourceAccessibility: ResourceAccessibility, launchedResourceActivityId: 0, mediaResourceActivityId: 0, - activityStart: null, activityLogged: false, activityEndLogged: false, // Applies to media only. mediaResourceActivityLogged: false, @@ -412,16 +410,10 @@ const userAgent = navigator.userAgent || navigator.vendor; this.isIphone = /iPhone/i.test(userAgent); }, - async initialise(): Promise { + initialise(): void { // record activity on page created for resource article if (this.userAuthenticated && this.resourceItem.resourceTypeEnum === ResourceType.CASE) { - let isMultiPageCase = false; - if (this.resourceItem.resourceTypeEnum === ResourceType.CASE && this.resourceItem.caseDetails) { - const blockCollection = new BlockCollectionModel(this.resourceItem.caseDetails.blockCollection); - isMultiPageCase = blockCollection.getPages().length > 1; - } - - await this.recordActivityLaunched(isMultiPageCase); + this.recordActivityLaunched(); } else if (this.userAuthenticated && this.resourceItem.resourceTypeEnum === ResourceType.ASSESSMENT) { this.getCurrentAssessmentActivity(); @@ -464,12 +456,11 @@ hasResourceAccess(): boolean { return this.userAuthenticated && (!(this.isGeneralUser && this.resourceItem.resourceAccessibilityEnum == this.ResourceAccessibility.FullAccess)) }, - async recordActivityLaunched(isMultiPageCase: boolean = false): Promise { + async recordActivityLaunched(): Promise { if (!this.activityLogged) { this.activityLogged = true; - this.activityStart = new Date(); - await activityRecorder.recordActivityLaunched(this.resourceItem.resourceTypeEnum, this.resourceItem.resourceVersionId, this.resourceItem.nodePathId, this.activityStart,isMultiPageCase) + await activityRecorder.recordActivityLaunched(this.resourceItem.resourceTypeEnum, this.resourceItem.resourceVersionId, this.resourceItem.nodePathId, new Date()) // await activityRecorder.recordActivityLaunched(this.resourceItem.resourceVersionId, this.resourceItem.nodePathId, new Date()) .then(response => { this.launchedResourceActivityId = response.createdId; diff --git a/LearningHub.Nhs.WebUI/package-lock.json b/LearningHub.Nhs.WebUI/package-lock.json index d6ecd758e..1b09c4094 100644 --- a/LearningHub.Nhs.WebUI/package-lock.json +++ b/LearningHub.Nhs.WebUI/package-lock.json @@ -36,7 +36,7 @@ "vue-carousel-3d": "^1.0.1", "vue-clamp": "0.4.1", "vue-click-outside": "1.1.0", - "vue-ctk-date-time-picker": "2.5.0", + "vue-ctk-date-time-picker": "^2.5.0", "vue-router": "^3.6.5", "vue-simple-progress": "^1.1.1", "vue-typeahead": "^2.3.2",