1<template> 2 <b-container fluid="xl"> 3 <page-title :description="$t('pagePowerRestorePolicy.description')" /> 4 5 <b-row> 6 <b-col sm="8" md="6" xl="12"> 7 <b-form-group :label="$t('pagePowerRestorePolicy.powerPoliciesLabel')"> 8 <b-form-radio 9 v-for="policy in powerRestorePolicies" 10 :key="policy.state" 11 v-model="currentPowerRestorePolicy" 12 :value="policy.state" 13 name="power-restore-policy" 14 > 15 {{ policy.desc }} 16 </b-form-radio> 17 </b-form-group> 18 </b-col> 19 </b-row> 20 21 <b-button variant="primary" type="submit" @click="submitForm"> 22 {{ $t('global.action.saveSettings') }} 23 </b-button> 24 </b-container> 25</template> 26 27<script> 28import PageTitle from '@/components/Global/PageTitle'; 29import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; 30import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js'; 31import BVToastMixin from '@/components/Mixins/BVToastMixin'; 32 33export default { 34 name: 'PowerRestorePolicy', 35 components: { PageTitle }, 36 mixins: [VuelidateMixin, BVToastMixin, LoadingBarMixin], 37 beforeRouteLeave(to, from, next) { 38 this.hideLoader(); 39 next(); 40 }, 41 data() { 42 return { 43 policyValue: null, 44 }; 45 }, 46 computed: { 47 powerRestorePolicies() { 48 return this.$store.getters['powerPolicy/powerRestorePolicies']; 49 }, 50 currentPowerRestorePolicy: { 51 get() { 52 return this.$store.getters['powerPolicy/powerRestoreCurrentPolicy']; 53 }, 54 set(policy) { 55 this.policyValue = policy; 56 }, 57 }, 58 }, 59 created() { 60 this.startLoader(); 61 Promise.all([ 62 this.$store.dispatch('powerPolicy/getPowerRestorePolicies'), 63 this.$store.dispatch('powerPolicy/getPowerRestoreCurrentPolicy'), 64 ]).finally(() => this.endLoader()); 65 }, 66 methods: { 67 submitForm() { 68 this.startLoader(); 69 this.$store 70 .dispatch( 71 'powerPolicy/setPowerRestorePolicy', 72 this.policyValue || this.currentPowerRestorePolicy 73 ) 74 .then((message) => this.successToast(message)) 75 .catch(({ message }) => this.errorToast(message)) 76 .finally(() => this.endLoader()); 77 }, 78 }, 79}; 80</script> 81