Add loading bar to Server power operations page

Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Change-Id: I823279c6865fa1ecff2f0443d735477e03fbf417
diff --git a/src/store/modules/Control/BootSettingsStore.js b/src/store/modules/Control/BootSettingsStore.js
index 8da586a..655c79e 100644
--- a/src/store/modules/Control/BootSettingsStore.js
+++ b/src/store/modules/Control/BootSettingsStore.js
@@ -30,8 +30,8 @@
     setTpmPolicy: (state, tpmEnabled) => (state.tpmEnabled = tpmEnabled)
   },
   actions: {
-    getBootSettings({ commit }) {
-      api
+    async getBootSettings({ commit }) {
+      return await api
         .get('/redfish/v1/Systems/system/')
         .then(({ data: { Boot } }) => {
           commit(
@@ -70,9 +70,9 @@
           return error;
         });
     },
-    getTpmPolicy({ commit }) {
+    async getTpmPolicy({ commit }) {
       // TODO: switch to Redfish when available
-      api
+      return await api
         .get('/xyz/openbmc_project/control/host0/TPMEnable')
         .then(({ data: { data: { TPMEnable } } }) =>
           commit('setTpmPolicy', TPMEnable)
diff --git a/src/views/Control/ServerPowerOperations/BootSettings.vue b/src/views/Control/ServerPowerOperations/BootSettings.vue
index 0558a1b..16d567a 100644
--- a/src/views/Control/ServerPowerOperations/BootSettings.vue
+++ b/src/views/Control/ServerPowerOperations/BootSettings.vue
@@ -60,10 +60,11 @@
 <script>
 import { mapState } from 'vuex';
 import BVToastMixin from '../../../components/Mixins/BVToastMixin';
+import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
 
 export default {
   name: 'BootSettings',
-  mixins: [BVToastMixin],
+  mixins: [BVToastMixin, LoadingBarMixin],
   data() {
     return {
       form: {
@@ -102,11 +103,14 @@
     }
   },
   created() {
-    this.$store.dispatch('hostBootSettings/getBootSettings');
-    this.$store.dispatch('hostBootSettings/getTpmPolicy');
+    Promise.all([
+      this.$store.dispatch('hostBootSettings/getBootSettings'),
+      this.$store.dispatch('hostBootSettings/getTpmPolicy')
+    ]).finally(() => this.endLoader());
   },
   methods: {
     handleSubmit() {
+      this.startLoader();
       const bootSettingsChanged =
         this.$v.form.bootOption.$dirty || this.$v.form.oneTimeBoot.$dirty;
       const tpmPolicyChanged = this.$v.form.tpmPolicyOn.$dirty;
@@ -130,6 +134,7 @@
         .catch(({ message }) => this.errorToast(message))
         .finally(() => {
           this.$v.form.$reset();
+          this.endLoader();
         });
     },
     onChangeSelect(selectedOption) {
diff --git a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
index 01fc661..441217f 100644
--- a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
+++ b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
@@ -108,11 +108,12 @@
 import PageSection from '../../../components/Global/PageSection';
 import BVToastMixin from '../../../components/Mixins/BVToastMixin';
 import BootSettings from './BootSettings';
+import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
 
 export default {
   name: 'ServerPowerOperations',
   components: { PageTitle, PageSection, BootSettings },
-  mixins: [BVToastMixin],
+  mixins: [BVToastMixin, LoadingBarMixin],
   data() {
     return {
       form: {
@@ -132,6 +133,13 @@
       return this.$store.getters['hostBootSettings/overrideEnabled'];
     }
   },
+  created() {
+    this.startLoader();
+  },
+  beforeRouteLeave(to, from, next) {
+    this.hideLoader();
+    next();
+  },
   methods: {
     powerOn() {
       this.$store.dispatch('controls/hostPowerOn');