blob: 1d64dffc3252746480d4c222ef2a4c5daad1d108 [file] [log] [blame]
Dixsie Wolmers97d86b32019-12-02 05:07:57 -06001<template>
Yoshie Muranaka3111b6f2020-04-21 19:48:38 -07002 <b-container fluid="xl">
Derick Montague09e45cd2020-01-23 15:45:57 -06003 <page-title />
Dixsie Wolmers6a192d52021-09-02 15:26:58 -05004 <overview-quick-links class="mb-4" />
5 <page-section
6 :section-title="$t('pageOverview.systemInformation')"
7 class="mb-1"
8 >
jason westoverd36ac8a2025-11-03 20:58:59 -06009 <b-row class="row-cols-1 row-cols-md-2">
10 <b-col class="mb-3">
11 <overview-server class="h-100" />
12 </b-col>
13 <b-col class="mb-3">
14 <overview-firmware class="h-100" />
15 </b-col>
16 </b-row>
17 <b-row class="row-cols-1 row-cols-md-2">
18 <b-col class="mb-3">
19 <overview-network class="h-100" />
20 </b-col>
21 <b-col class="mb-3">
22 <overview-power class="h-100" />
23 </b-col>
24 </b-row>
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050025 </page-section>
26 <page-section :section-title="$t('pageOverview.statusInformation')">
jason westoverd36ac8a2025-11-03 20:58:59 -060027 <b-row class="row-cols-1 row-cols-md-2">
28 <b-col class="mb-3">
29 <overview-events class="h-100" />
30 </b-col>
31 <b-col class="mb-3">
32 <overview-inventory class="h-100" />
33 </b-col>
34 <b-col v-if="showDumps" class="mb-3">
35 <overview-dumps class="h-100" />
36 </b-col>
37 </b-row>
Derick Montague09e45cd2020-01-23 15:45:57 -060038 </page-section>
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060039 </b-container>
40</template>
41
42<script>
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070043import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050044import OverviewDumps from './OverviewDumps.vue';
45import OverviewEvents from './OverviewEvents.vue';
46import OverviewFirmware from './OverviewFirmware.vue';
47import OverviewInventory from './OverviewInventory.vue';
48import OverviewNetwork from './OverviewNetwork';
49import OverviewPower from './OverviewPower';
50import OverviewQuickLinks from './OverviewQuickLinks';
51import OverviewServer from './OverviewServer';
52import PageSection from '@/components/Global/PageSection';
53import PageTitle from '@/components/Global/PageTitle';
Ed Tanous883a0d52024-03-23 14:56:34 -070054import { useI18n } from 'vue-i18n';
Dixsie Wolmers9d40e302020-02-13 13:29:40 -060055
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060056export default {
Derick Montaguee2fd1562019-12-20 13:26:53 -060057 name: 'Overview',
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060058 components: {
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050059 OverviewDumps,
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060060 OverviewEvents,
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050061 OverviewFirmware,
62 OverviewInventory,
Dixsie Wolmers9d40e302020-02-13 13:29:40 -060063 OverviewNetwork,
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050064 OverviewPower,
65 OverviewQuickLinks,
66 OverviewServer,
Derick Montague602e98a2020-10-21 16:20:00 -050067 PageSection,
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050068 PageTitle,
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060069 },
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070070 mixins: [LoadingBarMixin],
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050071 data() {
72 return {
Ed Tanous883a0d52024-03-23 14:56:34 -070073 $t: useI18n().t,
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050074 showDumps: process.env.VUE_APP_ENV_NAME === 'ibm',
jason westoverd36ac8a2025-11-03 20:58:59 -060075 // Promise resolvers
76 dumpsResolver: null,
77 eventsResolver: null,
78 selResolver: null,
79 firmwareResolver: null,
80 inventoryResolver: null,
81 networkResolver: null,
82 powerResolver: null,
83 quicklinksResolver: null,
84 serverResolver: null,
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050085 };
Yoshie Muranaka98bb24e2020-10-06 10:00:19 -070086 },
Derick Montague09e45cd2020-01-23 15:45:57 -060087 created() {
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070088 this.startLoader();
jason westoverd36ac8a2025-11-03 20:58:59 -060089
Dixsie Wolmers6a192d52021-09-02 15:26:58 -050090 const dumpsPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -060091 this.dumpsResolver = resolve;
92 this.$eventBus.on('overview-dumps-complete', () => resolve());
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070093 });
jason westoverd36ac8a2025-11-03 20:58:59 -060094
Derick Montague602e98a2020-10-21 16:20:00 -050095 const eventsPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -060096 this.eventsResolver = resolve;
97 this.$eventBus.on('overview-events-complete', () => resolve());
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070098 });
jason westoverd36ac8a2025-11-03 20:58:59 -060099
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500100 const firmwarePromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -0600101 this.firmwareResolver = resolve;
102 this.$eventBus.on('overview-firmware-complete', () => resolve());
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500103 });
jason westoverd36ac8a2025-11-03 20:58:59 -0600104
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500105 const inventoryPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -0600106 this.inventoryResolver = resolve;
107 this.$eventBus.on('overview-inventory-complete', () => resolve());
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500108 });
jason westoverd36ac8a2025-11-03 20:58:59 -0600109
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500110 const networkPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -0600111 this.networkResolver = resolve;
112 this.$eventBus.on('overview-network-complete', () => resolve());
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500113 });
jason westoverd36ac8a2025-11-03 20:58:59 -0600114
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500115 const powerPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -0600116 this.powerResolver = resolve;
117 this.$eventBus.on('overview-power-complete', () => resolve());
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500118 });
jason westoverd36ac8a2025-11-03 20:58:59 -0600119
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500120 const quicklinksPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -0600121 this.quicklinksResolver = resolve;
122 this.$eventBus.on('overview-quicklinks-complete', () => resolve());
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500123 });
jason westoverd36ac8a2025-11-03 20:58:59 -0600124
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500125 const serverPromise = new Promise((resolve) => {
jason westoverd36ac8a2025-11-03 20:58:59 -0600126 this.serverResolver = resolve;
127 this.$eventBus.on('overview-server-complete', () => resolve());
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500128 });
129
Konstantinda53c062023-02-06 17:25:19 +0300130 const promises = [
Derick Montague602e98a2020-10-21 16:20:00 -0500131 eventsPromise,
Dixsie Wolmers6a192d52021-09-02 15:26:58 -0500132 firmwarePromise,
133 inventoryPromise,
134 networkPromise,
135 powerPromise,
136 quicklinksPromise,
137 serverPromise,
Konstantinda53c062023-02-06 17:25:19 +0300138 ];
139 if (this.showDumps) promises.push(dumpsPromise);
jason westoverd36ac8a2025-11-03 20:58:59 -0600140 Promise.all(promises).finally(() => {
141 this.endLoader();
142 });
143 },
144 beforeUnmount() {
145 // Clean up event listeners
146 this.$eventBus.off('overview-dumps-complete', this.handleDumpsComplete);
147 this.$eventBus.off('overview-events-complete', this.handleEventsComplete);
148 this.$eventBus.off('overview-sel-complete', this.handleSelComplete);
149 this.$eventBus.off(
150 'overview-firmware-complete',
151 this.handleFirmwareComplete,
152 );
153 this.$eventBus.off(
154 'overview-inventory-complete',
155 this.handleInventoryComplete,
156 );
157 this.$eventBus.off('overview-network-complete', this.handleNetworkComplete);
158 this.$eventBus.off('overview-power-complete', this.handlePowerComplete);
159 this.$eventBus.off(
160 'overview-quicklinks-complete',
161 this.handleQuicklinksComplete,
162 );
163 this.$eventBus.off('overview-server-complete', this.handleServerComplete);
164 },
165 methods: {
166 handleDumpsComplete() {
167 if (this.dumpsResolver) this.dumpsResolver();
168 },
169 handleEventsComplete() {
170 if (this.eventsResolver) this.eventsResolver();
171 },
172 handleSelComplete() {
173 if (this.selResolver) this.selResolver();
174 },
175 handleFirmwareComplete() {
176 if (this.firmwareResolver) this.firmwareResolver();
177 },
178 handleInventoryComplete() {
179 if (this.inventoryResolver) this.inventoryResolver();
180 },
181 handleNetworkComplete() {
182 if (this.networkResolver) this.networkResolver();
183 },
184 handlePowerComplete() {
185 if (this.powerResolver) this.powerResolver();
186 },
187 handleQuicklinksComplete() {
188 if (this.quicklinksResolver) this.quicklinksResolver();
189 },
190 handleServerComplete() {
191 if (this.serverResolver) this.serverResolver();
192 },
Derick Montague09e45cd2020-01-23 15:45:57 -0600193 },
Dixsie Wolmers97d86b32019-12-02 05:07:57 -0600194};
195</script>