_template.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <ExperimentBlock
  3. :experiment-name="experimentName"
  4. :scene-name="sceneName"
  5. :loading-message="loadingMessage"
  6. :loading-error-message="loadingErrorMessage"
  7. >
  8. <template v-slot:header>
  9. <!-- ## Template to place in the header (example: Extract-configurator) ## -->
  10. </template>
  11. <template v-slot:content>
  12. <!-- ## Actual experiment template ## -->
  13. </template>
  14. </ExperimentBlock>
  15. </template>
  16. <script>
  17. import ExperimentBlock from '@/components/ExperimentBlock.vue'
  18. import ExperimentBaseAreTheSame from '@/mixins/ExperimentBaseAreSameImages'
  19. export default {
  20. name: 'YourExperimentName',
  21. components: {
  22. ExperimentBlock
  23. },
  24. mixins: [ExperimentBaseAreTheSame],
  25. data() {
  26. return {
  27. experimentName: 'YourExperimentName'
  28. }
  29. },
  30. // When experiment is loaded, this function is ran
  31. async mounted() {
  32. // Load config and progress for this scene to local state
  33. this.loadConfig()
  34. this.loadProgress()
  35. // ## Do your experiment initialization stuff here ##
  36. this.loadingMessage = 'Loading experiment data...'
  37. this.loadingErrorMessage = null
  38. try {
  39. // Load scene qualities list
  40. await this.getQualitiesList()
  41. }
  42. catch (err) {
  43. console.error(err)
  44. this.loadingErrorMessage = err.message
  45. return
  46. }
  47. finally {
  48. this.loadingMessage = null
  49. }
  50. // ##/ Do your experiment initialization stuff here ##
  51. // Save progress from local state into store
  52. this.saveProgress()
  53. },
  54. // List of experiment-specific methods
  55. methods: {}
  56. }
  57. </script>
  58. <style scoped>
  59. /* Experiment-specific style (CSS) */
  60. </style>