Replies: 1 comment 10 replies
|
Thanks for the suggestions. While they all look good, it seems counter-UX in the sense that these were never a problem to users who have never touched the TA feature? Doing seems to increase friction of simply using the platform. Perhaps, we should think of a more robust fix that does not break UX for majority of users. A minor note on a higher level discussion: |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This discussion discusses fixes for #4283 and follows from #4292.
Schema and Serialization
Instead of storing lesson indices, we store
LessonIdsexport type ModuleLessonConfig = { -- [lessonType: LessonType]: LessonIndex[]; ++ [lessonType: LessonType]: LessonId[]; };LessonIds are serialization of all a lesson details, except its module info and lesson type, please refer to #4292 (comment) for why this was chosen.would serialize to
22|TUE|0900|1000|S16-0518|2_3_4_5_6_7_8_9_10_11_12_13.Serialization and deserialization can be quite expensive. So we calculate and store a map of the
LessonTypetoLessonIds to lessons inSemesterData.Storing lesson details like this is stable across timetable changes, but when the lesson itself changes, this id will change too, so we implement recovery based on the serialized lesson details.
Recovery and Validation
For non-TA modules, we simply pick all lessons with the
classNoand compare the set of lesson keys.For TA modules, we can either:
My preference is to keep it as is and notify the user and have them fix the config themselves
Notifications
I experimented with a few different ways of notifying users of lesson changes. The text messages are just placeholders, do suggest what you think would be clearer.
Tasks
I am still cleaning things up and splitting them up into smaller PRs
All reactions