Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ export interface Event {
id: string;
startDateTime: string;
endDateTime: string;
planningLabel: string;
course: {
id: string;
label: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ export class ScheduleService {
this.configService.get<ScheduleProviderApi>('scheduleProviderApi');
}

private addPlanningLabelToEvent(schedule: Schedule): Schedule {
schedule.plannings.forEach((planning) => {
planning.events.forEach((event) => {
event.planningLabel = planning.label;
});
});
return schedule;
}

public getSchedule(query: UserScheduleQueryDto): Observable<Schedule> {
const url = this.scheduleProviderApiConfig.apiUrl
.replace(
Expand All @@ -82,9 +91,7 @@ export class ScheduleService {
this.logger.error(errorMessage, err);
throw new RpcException(errorMessage);
}),
map((res) => {
return res.data;
}),
map((res) => this.addPlanningLabelToEvent(res.data)),
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,13 @@
<ion-row class="card-labels course-label">
<ion-text class="app-text-3">{{event.course.label}}</ion-text>
</ion-row>
<ion-row *ngIf="event.planningLabel" class="card-labels planning-label">
<ion-icon class="app-icon-5" name="calendar-outline" aria-label=""></ion-icon>
<ion-text class="app-text-4 light">{{event.planningLabel}}</ion-text>
</ion-row>
<ion-row class="card-labels" *ngFor="let room of event.rooms">
<ion-icon class="app-icon-5" name="business-outline" aria-label=""></ion-icon>
<ion-text class="app-text-4 light">{{room.label}} - {{room.building}}</ion-text>
<ion-text class="app-text-4 light">{{room.label}}<ng-container *ngIf="room.label && room.building"> - </ng-container>{{room.building}}</ion-text>
</ion-row>
<ion-row class="card-labels" *ngFor="let teacher of event.teachers">
<ion-icon class="app-icon-5" name="man-outline" aria-label=""></ion-icon>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import { Component, Input } from '@angular/core';
import { Browser } from '@capacitor/browser';
import { take } from 'rxjs/operators';
import { Course, Event, HiddenCourse } from '../../schedule.repository';
import {Course, Event, HiddenCourse} from '../../schedule.repository';
import { ScheduleService } from '../../schedule.service';

@Component({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@
* termes.
*/

import { createStore, select, Store, withProps } from '@ngneat/elf';
import { persistState } from '@ngneat/elf-persist-state';
import { localForageStore } from '@multi/shared';
import { combineLatest, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import {createStore, select, Store, withProps} from '@ngneat/elf';
import {persistState} from '@ngneat/elf-persist-state';
import {localForageStore} from '@multi/shared';
import {combineLatest, Observable} from 'rxjs';
import {map} from 'rxjs/operators';

const STORE_NAME = 'schedule';
const STORE_NAME_2 = 'impersonated-schedule';
Expand All @@ -54,15 +54,18 @@ export interface ScheduleProps {
hiddenCourseList: HiddenCourse[];
allPlanningsData: PlanningData[];
}

export interface Schedule {
messages: [Message?];
plannings?: Planning[];
}

export interface Message {
level: string;
code: string;
text: string;
}

export interface Planning {
id: string;
label: string;
Expand All @@ -76,16 +79,19 @@ export interface Planning {
] | [];
events?: Event[];
}

export interface PlanningData {
id: string;
label: string;
default: boolean;
isSelected: boolean;
}

export interface Event {
id: string;
startDateTime: string;
endDateTime: string;
planningLabel: string;
course: Course;
rooms: [
{
Expand All @@ -109,6 +115,7 @@ export interface Event {
}
];
}

export interface Course {
id: string;
label: string;
Expand All @@ -117,6 +124,7 @@ export interface Course {
online: boolean;
url?: string;
}

export interface HiddenCourse {
id: string;
title: string;
Expand Down Expand Up @@ -202,15 +210,15 @@ export class ScheduleStoreManager {
.map(mapPlanningId) :
activePlanningIdsInSchedule;

const updatedAllPlanningsData = state.allPlanningsData.map(planningData => {
const isActive = activePlanningIds.includes(planningData.id);
const isSelected = planningData.isSelected === null && isActive ? isActive : planningData.isSelected;
const updatedAllPlanningsData = state.allPlanningsData.map(planningData => {
const isActive = activePlanningIds.includes(planningData.id);
const isSelected = planningData.isSelected === null && isActive ? isActive : planningData.isSelected;

return {
...planningData,
isSelected,
};
});
return {
...planningData,
isSelected,
};
});

return {
...state,
Expand All @@ -219,14 +227,15 @@ export class ScheduleStoreManager {
};
});
}

public setActivePlanningIds(activePlanningIds) {
this.store.update((state) => {
const updatedPlanningsData = state.allPlanningsData
.map((planningData: PlanningData) => ({
...planningData,
isSelected: activePlanningIds.includes(planningData.id)
})
);
...planningData,
isSelected: activePlanningIds.includes(planningData.id)
})
);

return {
...state,
Expand All @@ -241,6 +250,7 @@ export class ScheduleStoreManager {
hiddenCourseList,
}));
}

public resetStore() {
this.store.update(() => ({
schedule: null,
Expand All @@ -251,12 +261,12 @@ export class ScheduleStoreManager {
}

public persistStore(storeName: string) {
persistState(this.store, { key: storeName, storage: localForageStore });
persistState(this.store, {key: storeName, storage: localForageStore});
}

private createStore(storeName: string): Store {
return createStore(
{ name: storeName },
{name: storeName},
withProps<ScheduleProps>({
schedule: null,
hiddenCourseList: [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,21 +72,28 @@

<ion-card-header>
<ion-card-title [ngClass]="fontColor()" class="app-title-5 light">
{{event.startDateTime | localHour}} - {{event.endDateTime | localHour}}
{{ event.startDateTime | localHour }} - {{ event.endDateTime | localHour }}
</ion-card-title>
</ion-card-header>

<ion-card-content>
<ion-row>
<ion-col>
<ion-text [ngClass]="fontColor()" class="app-title-5">{{event.course.label}}</ion-text>

<ion-text [ngClass]="fontColor()" class="app-title-5">{{ event.course.label }}</ion-text>
<ion-row class="ion-align-items-start card-labels planning-label" *ngIf="event.planningLabel">
<ion-col size="auto" class="ion-no-padding">
<ion-icon [ngClass]="fontColor()" class="card-labels-icons" name="calendar-outline" aria-hidden="true"></ion-icon>
</ion-col>
<ion-col class="ion-no-padding">
<ion-text [ngClass]="fontColor()" class="app-title-6 light">{{ event.planningLabel }}</ion-text>
</ion-col>
</ion-row>
<ion-row class="ion-align-items-start card-labels" *ngFor="let room of event.rooms">
<ion-col size="auto" class="ion-no-padding">
<ion-icon [ngClass]="[fontColor(), 'card-labels-icons']" name="business-outline" aria-hidden="true"></ion-icon>
</ion-col>
<ion-col class="ion-no-padding">
<ion-text [ngClass]="fontColor()" class="app-title-6 light">{{room.label}} - {{room.building}}</ion-text>
<ion-text [ngClass]="fontColor()" class="app-title-6 light">{{room.label}}<ng-container *ngIf="room.label && room.building"> - </ng-container>{{room.building}}</ion-text>
</ion-col>
</ion-row>

Expand Down Expand Up @@ -151,6 +158,14 @@
</ion-row>
<ion-text class="app-title-5 event-label slider-font-color">{{event.course.label}}</ion-text>
<ion-row class="event-additional">
<ion-row class="ion-align-items-start card-labels planning-label" *ngIf="event.planningLabel">
<ion-col size="auto" class="ion-no-padding">
<ion-icon [ngClass]="fontColor()" class="card-labels-icons" name="calendar-outline" aria-hidden="true"></ion-icon>
</ion-col>
<ion-col class="ion-no-padding">
<ion-text [ngClass]="fontColor()" class="app-title-6 light">{{ event.planningLabel }}</ion-text>
</ion-col>
</ion-row>
<ion-row class="ion-align-items-center card-labels" *ngFor="let room of event.rooms">
<ion-icon class="card-labels-icons slider-font-color" name="business-outline" aria-hidden="true"></ion-icon>
<ion-text class="app-title-6 light slider-font-color">{{room.label}}<span *ngIf="room.building"> - {{room.building}}</span></ion-text>
Expand Down