Re-modeled Power restore radio buttons
When a user selects a radio button and saves, the selected setting should be patched.
- Computed properties on generated bootstrap-vue radio buttons causes errors.
- Re-modeled radio buttons to take Redfish api data on component render.
- Mapped selected radio button value to patch the Redfish api property.
- Added translations.
Signed-off-by: Kenneth Fullbright <kennyneedsmilky@gmail.com>
Change-Id: I22ce75d9ef840d7f0c2659bba855093e5b4559f4
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 66b3e2f..d10763e 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -728,6 +728,11 @@
"AlwaysOff": "Always off",
"LastState": "Last state"
},
+ "policiesDesc": {
+ "AlwaysOn": "Always on - The system always powers on when power is applied.",
+ "AlwaysOff": "Always off - The system always remains powered off when power is applied.",
+ "LastState": "Last state - The system returns to its last on or off power state when power is applied."
+ },
"toast": {
"errorSaveSettings": "Error saving settings.",
"successSaveSettings": "Power restore policy updated successfully."
diff --git a/src/store/modules/Settings/PowerPolicyStore.js b/src/store/modules/Settings/PowerPolicyStore.js
index 4e76cdf..54efa2c 100644
--- a/src/store/modules/Settings/PowerPolicyStore.js
+++ b/src/store/modules/Settings/PowerPolicyStore.js
@@ -1,7 +1,7 @@
import api from '@/store/api';
import i18n from '@/i18n';
-const PowerControlStore = {
+const PowerPolicyStore = {
namespaced: true,
state: {
powerRestoreCurrentPolicy: null,
@@ -43,22 +43,22 @@
);
},
async getPowerRestoreCurrentPolicy({ commit }) {
- api
+ return await api
.get('/redfish/v1/Systems/system')
.then(({ data: { PowerRestorePolicy } }) => {
commit('setPowerRestoreCurrentPolicy', PowerRestorePolicy);
})
.catch((error) => console.log(error));
},
- async setPowerRestorePolicy({ commit }, powerPolicy) {
+ async setPowerRestorePolicy({ dispatch }, powerPolicy) {
const data = { PowerRestorePolicy: powerPolicy };
return await api
.patch('/redfish/v1/Systems/system', data)
- .then(() =>
- commit('setPowerRestoreCurrentPolicy', data.PowerRestorePolicy)
- )
- .then(() => i18n.t('pagePowerRestorePolicy.toast.successSaveSettings'))
+ .then(() => {
+ dispatch('getPowerRestoreCurrentPolicy');
+ return i18n.t('pagePowerRestorePolicy.toast.successSaveSettings');
+ })
.catch((error) => {
console.log(error);
throw new Error(
@@ -69,4 +69,4 @@
},
};
-export default PowerControlStore;
+export default PowerPolicyStore;
diff --git a/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue b/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
index 8589aed..06e30f3 100644
--- a/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
+++ b/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
@@ -5,15 +5,11 @@
<b-row>
<b-col sm="8" md="6" xl="12">
<b-form-group :label="$t('pagePowerRestorePolicy.powerPoliciesLabel')">
- <b-form-radio
- v-for="policy in powerRestorePolicies"
- :key="policy.state"
+ <b-form-radio-group
v-model="currentPowerRestorePolicy"
- :value="policy.state"
+ :options="options"
name="power-restore-policy"
- >
- {{ policy.desc }}
- </b-form-radio>
+ ></b-form-radio-group>
</b-form-group>
</b-col>
</b-row>
@@ -41,6 +37,7 @@
data() {
return {
policyValue: null,
+ options: [],
};
},
computed: {
@@ -58,12 +55,24 @@
},
created() {
this.startLoader();
- Promise.all([
- this.$store.dispatch('powerPolicy/getPowerRestorePolicies'),
- this.$store.dispatch('powerPolicy/getPowerRestoreCurrentPolicy'),
- ]).finally(() => this.endLoader());
+ this.renderPowerRestoreSettings();
},
methods: {
+ renderPowerRestoreSettings() {
+ Promise.all([
+ this.$store.dispatch('powerPolicy/getPowerRestorePolicies'),
+ this.$store.dispatch('powerPolicy/getPowerRestoreCurrentPolicy'),
+ ]).finally(() => {
+ this.options.length = 0;
+ this.powerRestorePolicies.map((item) => {
+ this.options.push({
+ text: this.$t(`pagePowerRestorePolicy.policiesDesc.${item.state}`),
+ value: `${item.state}`,
+ });
+ });
+ this.endLoader();
+ });
+ },
submitForm() {
this.startLoader();
this.$store
@@ -73,7 +82,9 @@
)
.then((message) => this.successToast(message))
.catch(({ message }) => this.errorToast(message))
- .finally(() => this.endLoader());
+ .finally(() => {
+ this.renderPowerRestoreSettings();
+ });
},
},
};