ExperimentValidated.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <div>
  3. <h2>Experiment "{{ experimentFullName }}"</h2>
  4. <v-card>
  5. <v-card-title primary-title>
  6. <v-spacer />
  7. <div class="headline">Experiment validated for the scene "{{ sceneName }}"</div>
  8. <v-spacer />
  9. </v-card-title>
  10. <v-card-actions>
  11. <v-spacer />
  12. <v-btn flat exact to="/experiments/">
  13. <v-icon left>home</v-icon>
  14. Select another experiment
  15. </v-btn>
  16. <v-btn flat exact :to="`/experiments/${experimentName}`">
  17. <v-icon left>arrow_back</v-icon>
  18. Go back to scene selection
  19. </v-btn>
  20. <v-btn flat exact :to="`/experiments/${experimentName}/${getRandomScene()}`">
  21. <v-icon left>shuffle</v-icon>
  22. Continue with a random scene
  23. </v-btn>
  24. <v-spacer />
  25. </v-card-actions>
  26. </v-card>
  27. </div>
  28. </template>
  29. <script>
  30. import { mapState } from 'vuex'
  31. import Experiments from '@/router/experiments'
  32. import { getExperimentSceneList } from '@/config.utils'
  33. import { rand } from '@/functions'
  34. export default {
  35. name: 'ExperimentValidated',
  36. props: {
  37. experimentName: {
  38. type: String,
  39. required: true
  40. },
  41. sceneName: {
  42. type: String,
  43. required: true
  44. }
  45. },
  46. data() {
  47. return {
  48. experimentFullName: null,
  49. availableScenes: []
  50. }
  51. },
  52. computed: {
  53. ...mapState(['progression'])
  54. },
  55. mounted() {
  56. const scenesList = getExperimentSceneList(this.experimentName)
  57. // Find the selected experiment full name
  58. this.experimentFullName = Experiments.find(x => x.name === this.experimentName).meta.fullName
  59. // Get a list of available and not already validated scenes for this experiment
  60. this.availableScenes = Object.keys(this.progression[this.experimentName])
  61. .filter(aScene =>
  62. scenesList.includes(aScene) &&
  63. this.progression[this.experimentName] &&
  64. !this.progression[this.experimentName][aScene].done)
  65. },
  66. methods: {
  67. getRandomScene() {
  68. return this.availableScenes[rand(0, this.availableScenes.length - 1)]
  69. }
  70. }
  71. }
  72. </script>