ExperimentValidated.vue 2.2 KB

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