1
1
import { each , flatMap } from 'lodash' ;
2
2
3
- import type { ColorIndex , Lesson , ModuleLessonConfig , SemTimetableConfig } from 'types/timetables' ;
3
+ import type {
4
+ ColorIndex ,
5
+ Lesson ,
6
+ ModuleLessonConfig ,
7
+ SemTimetableConfig ,
8
+ TaModulesConfig ,
9
+ } from 'types/timetables' ;
4
10
import type { Dispatch , GetState } from 'types/redux' ;
5
11
import type { ColorMapping } from 'types/reducers' ;
6
12
import type { ClassNo , LessonType , Module , ModuleCode , Semester } from 'types/modules' ;
@@ -19,17 +25,18 @@ import { getModuleTimetable } from 'utils/modules';
19
25
export const SET_TIMETABLE = 'SET_TIMETABLE' as const ;
20
26
export const ADD_MODULE = 'ADD_MODULE' as const ;
21
27
export const SET_HIDDEN_IMPORTED = 'SET_HIDDEN_IMPORTED' as const ;
22
- export const HIDDEN_IMPORTED_SEM = 'HIDDEN_IMPORTED_SEM ' as const ;
28
+ export const SET_TA_IMPORTED = 'SET_TA_IMPORTED ' as const ;
23
29
export const Internal = {
24
30
setTimetable (
25
31
semester : Semester ,
26
32
timetable : SemTimetableConfig | undefined ,
27
33
colors ?: ColorMapping ,
28
34
hiddenModules ?: ModuleCode [ ] ,
35
+ taModules ?: TaModulesConfig ,
29
36
) {
30
37
return {
31
38
type : SET_TIMETABLE ,
32
- payload : { semester, timetable, colors, hiddenModules } ,
39
+ payload : { semester, timetable, colors, hiddenModules, taModules } ,
33
40
} ;
34
41
} ,
35
42
@@ -165,7 +172,8 @@ export function setTimetable(
165
172
semester ,
166
173
validatedTimetable ,
167
174
colors ,
168
- getState ( ) . timetables . hidden [ HIDDEN_IMPORTED_SEM ] || [ ] ,
175
+ getState ( ) . timetables . hidden [ semester ] ?? [ ] ,
176
+ getState ( ) . timetables . ta [ semester ] ?? { } ,
169
177
) ,
170
178
) ;
171
179
} ;
@@ -211,14 +219,25 @@ export function fetchTimetableModules(timetables: SemTimetableConfig[]) {
211
219
} ;
212
220
}
213
221
214
- export function setHiddenModulesFromImport ( hiddenModules : ModuleCode [ ] ) {
215
- return ( dispatch : Dispatch ) => dispatch ( setHiddenImported ( hiddenModules ) ) ;
222
+ export function setHiddenModulesFromImport ( semester : Semester , hiddenModules : ModuleCode [ ] ) {
223
+ return ( dispatch : Dispatch ) => dispatch ( setHiddenImported ( semester , hiddenModules ) ) ;
216
224
}
217
225
218
- export function setHiddenImported ( hiddenModules : ModuleCode [ ] ) {
226
+ export function setHiddenImported ( semester : Semester , hiddenModules : ModuleCode [ ] ) {
219
227
return {
220
228
type : SET_HIDDEN_IMPORTED ,
221
- payload : { semester : HIDDEN_IMPORTED_SEM , hiddenModules } ,
229
+ payload : { semester, hiddenModules } ,
230
+ } ;
231
+ }
232
+
233
+ export function setTaModulesFromImport ( semester : Semester , taModules : TaModulesConfig ) {
234
+ return ( dispatch : Dispatch ) => dispatch ( setTaImported ( semester , taModules ) ) ;
235
+ }
236
+
237
+ export function setTaImported ( semester : Semester , taModules : TaModulesConfig ) {
238
+ return {
239
+ type : SET_TA_IMPORTED ,
240
+ payload : { semester, taModules } ,
222
241
} ;
223
242
}
224
243
@@ -253,3 +272,37 @@ export function showLessonInTimetable(semester: Semester, moduleCode: ModuleCode
253
272
payload : { moduleCode, semester } ,
254
273
} ;
255
274
}
275
+
276
+ export const ADD_TA_LESSON_IN_TIMETABLE = 'ADD_TA_LESSON_IN_TIMETABLE' as const ;
277
+ export function addTaLessonInTimetable (
278
+ semester : Semester ,
279
+ moduleCode : ModuleCode ,
280
+ lessonType : LessonType ,
281
+ classNo : ClassNo ,
282
+ ) {
283
+ return {
284
+ type : ADD_TA_LESSON_IN_TIMETABLE ,
285
+ payload : { semester, moduleCode, lessonType, classNo } ,
286
+ } ;
287
+ }
288
+
289
+ export const REMOVE_TA_LESSON_IN_TIMETABLE = 'REMOVE_TA_LESSON_IN_TIMETABLE' as const ;
290
+ export function removeTaLessonInTimetable (
291
+ semester : Semester ,
292
+ moduleCode : ModuleCode ,
293
+ lessonType : LessonType ,
294
+ classNo : ClassNo ,
295
+ ) {
296
+ return {
297
+ type : REMOVE_TA_LESSON_IN_TIMETABLE ,
298
+ payload : { semester, moduleCode, lessonType, classNo } ,
299
+ } ;
300
+ }
301
+
302
+ export const DISABLE_TA_MODE_IN_TIMETABLE = 'DISABLE_TA_MODE_IN_TIMETABLE' as const ;
303
+ export function disableTaModeInTimetable ( semester : Semester , moduleCode : ModuleCode ) {
304
+ return {
305
+ type : DISABLE_TA_MODE_IN_TIMETABLE ,
306
+ payload : { semester, moduleCode } ,
307
+ } ;
308
+ }
0 commit comments