MOBILE-3320 calendar: Fix create button disappearing when filter changed

main
Dani Palou 2021-06-29 10:50:46 +02:00
parent 0607bd7f58
commit 8797d3e56f
3 changed files with 11 additions and 12 deletions

View File

@ -9,7 +9,7 @@
<ion-radio-group [(ngModel)]="courseId" (ionChange)="onChange()"> <ion-radio-group [(ngModel)]="courseId" (ionChange)="onChange()">
<ion-item class="ion-text-wrap" *ngFor="let course of courses"> <ion-item class="ion-text-wrap" *ngFor="let course of courses">
<ion-label><core-format-text [text]="course.fullname"></core-format-text></ion-label> <ion-label><core-format-text [text]="course.fullname"></core-format-text></ion-label>
<ion-radio slot="end" value="{{course.id}}"></ion-radio> <ion-radio slot="end" [value]="course.id"></ion-radio>
</ion-item> </ion-item>
</ion-radio-group> </ion-radio-group>
</ng-container> </ng-container>

View File

@ -31,7 +31,7 @@ export class AddonCalendarFilterPopoverComponent implements OnInit {
@Input() filter: AddonCalendarFilter = { @Input() filter: AddonCalendarFilter = {
filtered: false, filtered: false,
courseId: -1, courseId: undefined,
categoryId: undefined, categoryId: undefined,
course: true, course: true,
group: true, group: true,
@ -40,7 +40,7 @@ export class AddonCalendarFilterPopoverComponent implements OnInit {
category: true, category: true,
}; };
courseId = '-1'; courseId = -1;
@Input() courses: Partial<CoreEnrolledCourseData>[] = []; @Input() courses: Partial<CoreEnrolledCourseData>[] = [];
typeIcons: AddonCalendarEventIcons[] = []; typeIcons: AddonCalendarEventIcons[] = [];
@ -59,24 +59,23 @@ export class AddonCalendarFilterPopoverComponent implements OnInit {
* Init the component. * Init the component.
*/ */
ngOnInit(): void { ngOnInit(): void {
this.courseId = (this.filter.courseId || -1) + ''; this.courseId = this.filter.courseId || -1;
} }
/** /**
* Function called when an item is clicked. * Function called when an item is clicked.
*/ */
onChange(): void { onChange(): void {
const courseId = parseInt(this.courseId, 10); if (this.courseId > 0) {
if (courseId > 0) { const course = this.courses.find((course) => this.courseId == course.id);
const course = this.courses.find((course) => courseId == course.id); this.filter.courseId = course?.id;
this.filter.courseId = course?.id || -1;
this.filter.categoryId = course?.categoryid; this.filter.categoryId = course?.categoryid;
} else { } else {
this.filter.courseId = -1; this.filter.courseId = undefined;
this.filter.categoryId = undefined; this.filter.categoryId = undefined;
} }
this.filter.filtered = this.filter.courseId > 0 || this.types.some((name) => !this.filter[name]); this.filter.filtered = !!this.filter.courseId || this.types.some((name) => !this.filter[name]);
CoreEvents.trigger(AddonCalendarProvider.FILTER_CHANGED_EVENT, this.filter); CoreEvents.trigger(AddonCalendarProvider.FILTER_CHANGED_EVENT, this.filter);
} }

View File

@ -89,7 +89,7 @@ export class AddonCalendarListPage implements OnInit, OnDestroy {
syncIcon = CoreConstants.ICON_LOADING; syncIcon = CoreConstants.ICON_LOADING;
filter: AddonCalendarFilter = { filter: AddonCalendarFilter = {
filtered: false, filtered: false,
courseId: -1, courseId: undefined,
categoryId: undefined, categoryId: undefined,
course: true, course: true,
group: true, group: true,
@ -212,7 +212,7 @@ export class AddonCalendarListPage implements OnInit, OnDestroy {
* View loaded. * View loaded.
*/ */
async ngOnInit(): Promise<void> { async ngOnInit(): Promise<void> {
this.filter.courseId = CoreNavigator.getRouteNumberParam('courseId') || -1; this.filter.courseId = CoreNavigator.getRouteNumberParam('courseId');
this.syncIcon = CoreConstants.ICON_LOADING; this.syncIcon = CoreConstants.ICON_LOADING;
await this.fetchData(false, true, false); await this.fetchData(false, true, false);