MOBILE-2795 calendar: Hide imposible options in events reminders

main
Pau Ferrer Ocaña 2019-01-10 10:34:26 +01:00
parent 49615641af
commit 8cafbfdd9f
2 changed files with 31 additions and 10 deletions

View File

@ -52,19 +52,19 @@
</ion-card-content> </ion-card-content>
</ion-card> </ion-card>
<ion-card list *ngIf="notificationsEnabled"> <ion-card list *ngIf="notificationsEnabled && event.timestart - 600 > currentTime">
<ion-item> <ion-item>
<ion-label>{{ 'addon.calendar.notifications' | translate }}</ion-label> <ion-label>{{ 'addon.calendar.notifications' | translate }}</ion-label>
<ion-select [(ngModel)]="notificationTime" (ionChange)="updateNotificationTime($event)" interface="action-sheet"> <ion-select [(ngModel)]="notificationTime" (ionChange)="updateNotificationTime($event)" interface="action-sheet">
<ion-option value="-1">{{ 'core.defaultvalue' | translate :{$a: defaultTimeReadable} }}</ion-option> <ion-option value="-1" *ngIf="event.timestart - defaultTime > currentTime">{{ 'core.defaultvalue' | translate :{$a: defaultTimeReadable} }}</ion-option>
<ion-option value="0">{{ 'core.settings.disabled' | translate }}</ion-option> <ion-option value="0">{{ 'core.settings.disabled' | translate }}</ion-option>
<ion-option value="10">{{ 600 | coreDuration }}</ion-option> <ion-option value="10">{{ 600 | coreDuration }}</ion-option>
<ion-option value="30">{{ 1800 | coreDuration }}</ion-option> <ion-option value="30" *ngIf="event.timestart - 1800 > currentTime">{{ 1800 | coreDuration }}</ion-option>
<ion-option value="60">{{ 3600 | coreDuration }}</ion-option> <ion-option value="60" *ngIf="event.timestart - 3600 > currentTime">{{ 3600 | coreDuration }}</ion-option>
<ion-option value="120">{{ 7200 | coreDuration }}</ion-option> <ion-option value="120" *ngIf="event.timestart - 7200 > currentTime">{{ 7200 | coreDuration }}</ion-option>
<ion-option value="360">{{ 21600 | coreDuration }}</ion-option> <ion-option value="360" *ngIf="event.timestart - 21600 > currentTime">{{ 21600 | coreDuration }}</ion-option>
<ion-option value="720">{{ 43200 | coreDuration }}</ion-option> <ion-option value="720" *ngIf="event.timestart - 43200 > currentTime">{{ 43200 | coreDuration }}</ion-option>
<ion-option value="1440">{{ 86400 | coreDuration }}</ion-option> <ion-option value="1440" *ngIf="event.timestart - 86400 > currentTime">{{ 86400 | coreDuration }}</ion-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
</ion-card> </ion-card>

View File

@ -48,12 +48,14 @@ export class AddonCalendarEventPage {
notificationsEnabled = false; notificationsEnabled = false;
moduleUrl = ''; moduleUrl = '';
categoryPath = ''; categoryPath = '';
currentTime: number;
defaultTime: number;
constructor(private translate: TranslateService, private calendarProvider: AddonCalendarProvider, navParams: NavParams, constructor(private translate: TranslateService, private calendarProvider: AddonCalendarProvider, navParams: NavParams,
private domUtils: CoreDomUtilsProvider, private coursesProvider: CoreCoursesProvider, timeUtils: CoreTimeUtilsProvider, private domUtils: CoreDomUtilsProvider, private coursesProvider: CoreCoursesProvider,
private calendarHelper: AddonCalendarHelperProvider, private sitesProvider: CoreSitesProvider, private calendarHelper: AddonCalendarHelperProvider, private sitesProvider: CoreSitesProvider,
localNotificationsProvider: CoreLocalNotificationsProvider, private courseProvider: CoreCourseProvider, localNotificationsProvider: CoreLocalNotificationsProvider, private courseProvider: CoreCourseProvider,
private textUtils: CoreTextUtilsProvider) { private textUtils: CoreTextUtilsProvider, private timeUtils: CoreTimeUtilsProvider) {
this.eventId = navParams.get('id'); this.eventId = navParams.get('id');
this.notificationsEnabled = localNotificationsProvider.isAvailable(); this.notificationsEnabled = localNotificationsProvider.isAvailable();
@ -61,9 +63,12 @@ export class AddonCalendarEventPage {
if (this.notificationsEnabled) { if (this.notificationsEnabled) {
this.calendarProvider.getEventNotificationTimeOption(this.eventId).then((notificationTime) => { this.calendarProvider.getEventNotificationTimeOption(this.eventId).then((notificationTime) => {
this.notificationTime = notificationTime; this.notificationTime = notificationTime;
this.loadNotificationTime();
}); });
this.calendarProvider.getDefaultNotificationTime().then((defaultTime) => { this.calendarProvider.getDefaultNotificationTime().then((defaultTime) => {
this.defaultTime = defaultTime * 60;
this.loadNotificationTime();
if (defaultTime === 0) { if (defaultTime === 0) {
// Disabled by default. // Disabled by default.
this.defaultTimeReadable = this.translate.instant('core.settings.disabled'); this.defaultTimeReadable = this.translate.instant('core.settings.disabled');
@ -111,6 +116,9 @@ export class AddonCalendarEventPage {
this.calendarHelper.formatEventData(event); this.calendarHelper.formatEventData(event);
this.event = event; this.event = event;
this.currentTime = this.timeUtils.timestamp();
this.loadNotificationTime();
// Reset some of the calculated data. // Reset some of the calculated data.
this.categoryPath = ''; this.categoryPath = '';
this.courseName = ''; this.courseName = '';
@ -178,6 +186,19 @@ export class AddonCalendarEventPage {
}); });
} }
/**
* Loads notification time by discarding options not in the list.
*/
loadNotificationTime(): void {
if (typeof this.notificationTime != 'undefined') {
if (this.notificationTime > 0 && this.event.timestart - this.notificationTime * 60 < this.currentTime) {
this.notificationTime = 0;
} else if (this.notificationTime < 0 && this.event.timestart - this.defaultTime < this.currentTime) {
this.notificationTime = 0;
}
}
}
/** /**
* Refresh the event. * Refresh the event.
* *