ExperimentBlock.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <div>
  3. <v-container grid-list-md text-xs-center fluid>
  4. <v-layout row wrap>
  5. <!-- Experiment header -->
  6. <v-flex xs12>
  7. <v-layout justify-start>
  8. <v-btn flat exact :to="`/experiments/${experimentName}`">
  9. <v-icon left>arrow_back</v-icon>
  10. Back to scene selection
  11. </v-btn>
  12. </v-layout>
  13. <h2>Experiment "{{ $route.meta.fullName }}"</h2>
  14. <h3>{{ sceneName }}</h3>
  15. <slot name="header"></slot>
  16. </v-flex>
  17. <!--/ Experiment header -->
  18. <!-- Loading screen -->
  19. <loader v-if="loadingMessage" :message="loadingMessage" />
  20. <!--/ Loading screen -->
  21. <!-- Experiment -->
  22. <template v-else-if="!loadingErrorMessage">
  23. <slot name="content"></slot>
  24. </template>
  25. <!--/ Experiment -->
  26. </v-layout>
  27. </v-container>
  28. </div>
  29. </template>
  30. <script>
  31. import Loader from '@/components/Loader.vue'
  32. export default {
  33. name: 'ExperimentBlock',
  34. components: {
  35. Loader
  36. },
  37. props: {
  38. experimentName: {
  39. type: String,
  40. required: true
  41. },
  42. sceneName: {
  43. type: String,
  44. required: true
  45. },
  46. loadingMessage: {
  47. type: String,
  48. required: false,
  49. default: null
  50. },
  51. loadingErrorMessage: {
  52. type: String,
  53. required: false,
  54. default: null
  55. }
  56. }
  57. }
  58. </script>