| 277 | |
| 278 | actions: { |
| 279 | toggleModuleCollapse ({ commit, getters }, moduleNumber) { |
| 280 | try { |
| 281 | const courseId = getters.getSelectedCourseIdCurrentClassroom |
| 282 | const isCollapsed = getters.isModuleCollapsed(moduleNumber) |
| 283 | const currentCollapsed = getters.getCollapsedModules[courseId] || [] |
| 284 | |
| 285 | let collapsedModules |
| 286 | if (isCollapsed) { |
| 287 | collapsedModules = currentCollapsed.filter(num => num !== moduleNumber) |
| 288 | } else { |
| 289 | collapsedModules = [...currentCollapsed, moduleNumber] |
| 290 | } |
| 291 | |
| 292 | commit('setModuleCollapsedState', { courseId, collapsedModules }) |
| 293 | } catch (error) { |
| 294 | console.error('Failed to toggle module collapse:', error) |
| 295 | throw error |
| 296 | } |
| 297 | }, |
| 298 | // componentName = name of the vue component -> used to fetch relevant data for the respective page |
| 299 | // options = { data: {} } |
| 300 | // options.data = {} -> contains specific properties to fetch (or `project`) for an object as a string, eg: {users: 'firstName,lastName,email', levelSessions: 'state.complete,level,creator,changed'} |