mutations.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import Vue from 'vue'
  2. import { defaultState } from '@/store/state'
  3. import Experiments from '@/router/experiments'
  4. const checkProgression = (state, experimentName, sceneName) => {
  5. if (!state.progression[experimentName])
  6. state.progression[experimentName] = {}
  7. if (!state.progression[experimentName][sceneName])
  8. state.progression[experimentName][sceneName] = { done: false, data: {} }
  9. }
  10. export default {
  11. resetApp(state, { hostConfig, progression }) {
  12. if (hostConfig) state.hostConfig = defaultState.hostConfig
  13. if (progression) state.progression = defaultState.progression
  14. },
  15. setHostConfig(state, newConfig) {
  16. state.hostConfig = newConfig
  17. },
  18. setListScenes(state, scenes) {
  19. state.scenesList = scenes
  20. const progressionObj = Experiments.reduce((accExpe, expe) => {
  21. const scenesProgressObj = scenes.reduce((accScene, scene) => {
  22. // Do not overwrite current progression
  23. if (state.progression[expe.name] && state.progression[expe.name][scene])
  24. accScene[scene] = state.progression[expe.name][scene]
  25. else accScene[scene] = { done: false, data: {} }
  26. return accScene
  27. }, {})
  28. accExpe[expe.name] = scenesProgressObj
  29. return accExpe
  30. }, {})
  31. state.progression = progressionObj
  32. },
  33. setExperimentProgress(state, { experimentName, sceneName, data }) {
  34. checkProgression(state, experimentName, sceneName)
  35. state.progression[experimentName][sceneName].data = data
  36. },
  37. setExperimentDone(state, { experimentName, sceneName, done }) {
  38. checkProgression(state, experimentName, sceneName)
  39. state.progression[experimentName][sceneName].done = done
  40. },
  41. SOCKET_ONOPEN(state, event) {
  42. Vue.prototype.$socket = event.currentTarget
  43. state.socket.isConnected = true
  44. },
  45. SOCKET_ONCLOSE(state, event) {
  46. state.socket.isConnected = false
  47. },
  48. SOCKET_ONERROR(state, event) {
  49. console.error(state, event)
  50. },
  51. // default handler called for all methods
  52. SOCKET_ONMESSAGE(state, { data: rawMessage }) {
  53. const message = JSON.parse(rawMessage)
  54. state.socket.message = message
  55. },
  56. // mutations for reconnect methods
  57. SOCKET_RECONNECT(state, count) {
  58. console.info(state, count)
  59. },
  60. SOCKET_RECONNECT_ERROR(state) {
  61. state.socket.reconnectError = true
  62. }
  63. }