Merge pull request #3017 from crazyserver/MOBILE-3900
MOBILE-3900 myoverview: Honour course graces periods
This commit is contained in:
		
						commit
						0ebff55ae3
					
				| @ -29,6 +29,7 @@ import { CoreTextUtils } from '@services/utils/text'; | ||||
| import { AddonCourseCompletion } from '@/addons/coursecompletion/services/coursecompletion'; | ||||
| import { AddonBlockMyOverviewFilterOptionsComponent } from '../filteroptions/filteroptions'; | ||||
| import { IonSearchbar } from '@ionic/angular'; | ||||
| import moment from 'moment'; | ||||
| 
 | ||||
| const FILTER_PRIORITY: AddonBlockMyOverviewTimeFilters[] = ['all', 'inprogress', 'future', 'past']; | ||||
| 
 | ||||
| @ -98,6 +99,8 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem | ||||
|     protected coursesObserver?: CoreEventObserver; | ||||
|     protected updateSiteObserver?: CoreEventObserver; | ||||
|     protected fetchContentDefaultError = 'Error getting my overview data.'; | ||||
|     protected gradePeriodAfter = 0; | ||||
|     protected gradePeriodBefore = 0; | ||||
| 
 | ||||
|     constructor() { | ||||
|         super('AddonBlockMyOverviewComponent'); | ||||
| @ -261,6 +264,9 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem | ||||
| 
 | ||||
|         this.hasCourses = this.allCourses.length > 0; | ||||
| 
 | ||||
|         this.gradePeriodAfter = parseInt(await this.currentSite.getConfig('coursegraceperiodafter', refresh), 10) || 0; | ||||
|         this.gradePeriodBefore = parseInt(await this.currentSite.getConfig('coursegraceperiodbefore', refresh), 10) || 0; | ||||
| 
 | ||||
|         this.loadSort(); | ||||
|         this.loadLayouts(config?.layouts?.value.split(',')); | ||||
|         this.loadFilters(config); | ||||
| @ -507,14 +513,15 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem | ||||
| 
 | ||||
|         // Time filter, favourite and hidden.
 | ||||
|         const today = CoreTimeUtils.timestamp(); | ||||
| 
 | ||||
|         this.filteredCourses = this.filteredCourses.filter((course) => { | ||||
|             let include = timeFilter == 'all'; | ||||
| 
 | ||||
|             if (!include) { | ||||
|                 if ((course.enddate && course.enddate < today) || course.completed) { | ||||
|                 if ((course.enddate && this.courseClassifyEndDate(course.enddate) < today) || course.completed) { | ||||
|                     // Courses that have already ended.
 | ||||
|                     include = timeFilter == 'past'; | ||||
|                 } else if (course.startdate && course.startdate > today) { | ||||
|                 } else if (course.startdate && this.courseClassifyStartDate(course.startdate) > today) { | ||||
|                     // Courses that have not started yet.
 | ||||
|                     include = timeFilter == 'future'; | ||||
|                 } else { | ||||
| @ -554,6 +561,26 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem | ||||
|         this.initPrefetchCoursesIcons(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This function calculates the end date to use for display classification purposes, incorporating the grace period, if any. | ||||
|      * | ||||
|      * @param endDate Course end date. | ||||
|      * @return The new enddate. | ||||
|      */ | ||||
|     protected courseClassifyEndDate(endDate: number): number { | ||||
|         return moment(endDate).add(this.gradePeriodAfter, 'days').valueOf(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This function calculates the start date to use for display classification purposes, incorporating the grace period, if any. | ||||
|      * | ||||
|      * @param startDate Course start date. | ||||
|      * @return The new startdate. | ||||
|      */ | ||||
|     protected courseClassifyStartDate(startDate: number): number { | ||||
|         return moment(startDate).subtract(this.gradePeriodBefore, 'days').valueOf(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Sort courses | ||||
|      * | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user