App.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <div>
  3. <IconSymbols />
  4. <Summary />
  5. <div class="layout-col mt-12">
  6. <div class="tabs">
  7. <Tabs v-model="tab" v-bind="{ customTabs }" />
  8. <div class="tab-main">
  9. <Details v-bind="{ tab }" />
  10. </div>
  11. </div>
  12. </div>
  13. </div>
  14. </template>
  15. <script>
  16. import IconSymbols from './Icons/IconSymbols.vue';
  17. import Summary from './Summary.vue';
  18. import Tabs from './Tabs.vue';
  19. import Details from './Details.vue';
  20. export default {
  21. props: {
  22. report: { required: true },
  23. config: { required: true },
  24. solutions: { required: true },
  25. telescopeUrl: { required: true },
  26. shareEndpoint: { required: true },
  27. defaultTab: { required: true },
  28. defaultTabProps: { required: false },
  29. appEnv: { required: true },
  30. appDebug: { required: true },
  31. },
  32. data() {
  33. return {
  34. customTabs: window.tabs,
  35. tab: {
  36. component: this.defaultTab,
  37. props: this.defaultTabProps || {},
  38. },
  39. };
  40. },
  41. provide() {
  42. return {
  43. config: this.config,
  44. report: this.report,
  45. solutions: this.solutions,
  46. telescopeUrl: this.telescopeUrl,
  47. shareEndpoint: this.shareEndpoint,
  48. setTab: this.setTab,
  49. appEnv: this.appEnv,
  50. appDebug: this.appDebug,
  51. };
  52. },
  53. components: {
  54. Summary,
  55. Tabs,
  56. Details,
  57. IconSymbols,
  58. },
  59. methods: {
  60. setTab(component, props = {}) {
  61. this.tab = {
  62. component,
  63. props,
  64. };
  65. },
  66. },
  67. created() {},
  68. };
  69. </script>