MOBILE-3054 Courses: Trigger update of "All sections" download icon

main
Mark Johnson 2019-08-02 12:13:00 +01:00
parent d6f30dcd88
commit d03845caa7
3 changed files with 21 additions and 4 deletions

View File

@ -86,7 +86,8 @@
</ion-item>
<ng-container *ngFor="let module of section.modules">
<core-course-module *ngIf="module.visibleoncoursepage !== 0" [module]="module" [courseId]="course.id" [downloadEnabled]="downloadEnabled" [section]="section" (completionChanged)="onCompletionChange($event)"></core-course-module>
<core-course-module *ngIf="module.visibleoncoursepage !== 0" [module]="module" [courseId]="course.id" [downloadEnabled]="downloadEnabled" [section]="section"
(completionChanged)="onCompletionChange($event)" (statusChanged)="onModuleStatusChange($event)"></core-course-module>
</ng-container>
</section>
</ng-template>

View File

@ -488,9 +488,9 @@ export class CoreCourseFormatComponent implements OnInit, OnChanges, OnDestroy {
if (this.downloadEnabled) {
// The download status of a section might have been changed from within a module page.
if (this.selectedSection && this.selectedSection.id !== CoreCourseProvider.ALL_SECTIONS_ID) {
this.courseHelper.calculateSectionStatus(this.selectedSection, this.course.id);
this.courseHelper.calculateSectionStatus(this.selectedSection, this.course.id, false, false);
} else {
this.courseHelper.calculateSectionsStatus(this.sections, this.course.id);
this.courseHelper.calculateSectionsStatus(this.sections, this.course.id, false, false);
}
}
}
@ -538,4 +538,13 @@ export class CoreCourseFormatComponent implements OnInit, OnChanges, OnDestroy {
// Emit a new event for other components.
this.completionChanged.emit(completionData);
}
/**
* Recalculate the download status of each section, in response to a module being downloaded.
*
* @param {any} eventData
*/
onModuleStatusChange(eventData: any): void {
this.courseHelper.calculateSectionsStatus(this.sections, this.course.id, false, false);
}
}

View File

@ -50,6 +50,7 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy {
}
}
@Output() completionChanged?: EventEmitter<any>; // Will emit an event when the module completion changes.
@Output() statusChanged?: EventEmitter<any>; // Will emit an event when the download status changes.
downloadStatus: string;
canCheckUpdates: boolean;
@ -66,6 +67,7 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy {
protected eventsProvider: CoreEventsProvider, protected sitesProvider: CoreSitesProvider,
protected courseProvider: CoreCourseProvider) {
this.completionChanged = new EventEmitter();
this.statusChanged = new EventEmitter();
}
/**
@ -149,7 +151,12 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy {
this.prefetchHandler.getDownloadSize(this.module, this.courseId, true).then((size) => {
return this.courseHelper.prefetchModule(this.prefetchHandler, this.module, size, this.courseId, refresh);
}).then(() => {
this.courseHelper.calculateSectionStatus(this.section, this.courseId, false, false);
const eventData = {
sectionId: this.section.id,
moduleId: this.module.id,
courseId: this.courseId
};
this.statusChanged.emit(eventData);
}).catch((error) => {
// Error, hide spinner.
this.spinner = false;