xref: /openbmc/webui-vue/src/views/Overview/Overview.vue (revision 883a0d597962dfd30d6c48319b8b33e2d0f98606)
1<template>
2  <b-container fluid="xl">
3    <page-title />
4    <overview-quick-links class="mb-4" />
5    <page-section
6      :section-title="$t('pageOverview.systemInformation')"
7      class="mb-1"
8    >
9      <b-card-group deck>
10        <overview-server />
11        <overview-firmware />
12      </b-card-group>
13      <b-card-group deck>
14        <overview-network />
15        <overview-power />
16      </b-card-group>
17    </page-section>
18    <page-section :section-title="$t('pageOverview.statusInformation')">
19      <b-card-group deck>
20        <overview-events />
21        <overview-inventory />
22        <overview-dumps v-if="showDumps" />
23      </b-card-group>
24    </page-section>
25  </b-container>
26</template>
27
28<script>
29import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
30import OverviewDumps from './OverviewDumps.vue';
31import OverviewEvents from './OverviewEvents.vue';
32import OverviewFirmware from './OverviewFirmware.vue';
33import OverviewInventory from './OverviewInventory.vue';
34import OverviewNetwork from './OverviewNetwork';
35import OverviewPower from './OverviewPower';
36import OverviewQuickLinks from './OverviewQuickLinks';
37import OverviewServer from './OverviewServer';
38import PageSection from '@/components/Global/PageSection';
39import PageTitle from '@/components/Global/PageTitle';
40import { useI18n } from 'vue-i18n';
41
42export default {
43  name: 'Overview',
44  components: {
45    OverviewDumps,
46    OverviewEvents,
47    OverviewFirmware,
48    OverviewInventory,
49    OverviewNetwork,
50    OverviewPower,
51    OverviewQuickLinks,
52    OverviewServer,
53    PageSection,
54    PageTitle,
55  },
56  mixins: [LoadingBarMixin],
57  data() {
58    return {
59      $t: useI18n().t,
60      showDumps: process.env.VUE_APP_ENV_NAME === 'ibm',
61    };
62  },
63  created() {
64    this.startLoader();
65    const dumpsPromise = new Promise((resolve) => {
66      this.$root.$on('overview-dumps-complete', () => resolve());
67    });
68    const eventsPromise = new Promise((resolve) => {
69      this.$root.$on('overview-events-complete', () => resolve());
70    });
71    const firmwarePromise = new Promise((resolve) => {
72      this.$root.$on('overview-firmware-complete', () => resolve());
73    });
74    const inventoryPromise = new Promise((resolve) => {
75      this.$root.$on('overview-inventory-complete', () => resolve());
76    });
77    const networkPromise = new Promise((resolve) => {
78      this.$root.$on('overview-network-complete', () => resolve());
79    });
80    const powerPromise = new Promise((resolve) => {
81      this.$root.$on('overview-power-complete', () => resolve());
82    });
83    const quicklinksPromise = new Promise((resolve) => {
84      this.$root.$on('overview-quicklinks-complete', () => resolve());
85    });
86    const serverPromise = new Promise((resolve) => {
87      this.$root.$on('overview-server-complete', () => resolve());
88    });
89
90    const promises = [
91      eventsPromise,
92      firmwarePromise,
93      inventoryPromise,
94      networkPromise,
95      powerPromise,
96      quicklinksPromise,
97      serverPromise,
98    ];
99    if (this.showDumps) promises.push(dumpsPromise);
100    Promise.all(promises).finally(() => this.endLoader());
101  },
102};
103</script>
104