summaryrefslogtreecommitdiff
path: root/src/views/_sila/Power/Dynamic/PowerTemp.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/_sila/Power/Dynamic/PowerTemp.vue')
-rw-r--r--src/views/_sila/Power/Dynamic/PowerTemp.vue115
1 files changed, 85 insertions, 30 deletions
diff --git a/src/views/_sila/Power/Dynamic/PowerTemp.vue b/src/views/_sila/Power/Dynamic/PowerTemp.vue
index 1d18e8b1..18c2cc53 100644
--- a/src/views/_sila/Power/Dynamic/PowerTemp.vue
+++ b/src/views/_sila/Power/Dynamic/PowerTemp.vue
@@ -8,35 +8,62 @@
<img src="@/assets/images/_sila/collapsed/temperature.svg" />
</template>
<page-section>
- <b-row class="align-items-end limit-container">
- <b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-form-group :label="$t('pagePowerSup.labels.warning')">
- <b-form-input
- v-model.number="warning"
- type="number"
- :min="0"
- :max="100"
+ <b-form novalidate>
+ <b-row class="align-items-end limit-container">
+ <b-col xs="12" sm="6" xl="3" class="pt-4">
+ <b-form-group :label="$t('pagePowerSup.labels.warning')">
+ <b-form-input
+ v-model.number="warning"
+ type="number"
+ :min="1"
+ :max="critical"
+ :state="getValidationState($v.warning)"
+ @blur="$v.warning.$touch()"
+ >
+ </b-form-input>
+ <b-form-invalid-feedback class="absolute" role="alert">
+ <div v-if="!$v.warning.between">
+ {{ $t('global.form.invalidValue') }}
+ </div>
+ <div v-if="!$v.warning.required">
+ {{ $t('global.form.fieldRequired') }}
+ </div>
+ </b-form-invalid-feedback>
+ </b-form-group>
+ </b-col>
+ <b-col xs="12" sm="6" xl="3" class="pt-4">
+ <b-form-group :label="$t('pagePowerSup.labels.critical')">
+ <b-form-input
+ v-model.number="critical"
+ type="number"
+ :min="warning"
+ :max="100"
+ :state="getValidationState($v.critical)"
+ @blur="$v.critical.$touch()"
+ >
+ </b-form-input>
+ <b-form-invalid-feedback class="absolute" role="alert">
+ <div v-if="!$v.critical.between">
+ {{ $t('global.form.invalidValue') }}
+ </div>
+ <div v-if="!$v.critical.required">
+ {{ $t('global.form.fieldRequired') }}
+ </div>
+ </b-form-invalid-feedback>
+ </b-form-group>
+ </b-col>
+ <b-col xs="12" sm="6" xl="3" class="pt-4">
+ <b-button
+ variant="primary"
+ style="height: 35px"
+ :disabled="loading"
+ @click="saveLimit"
>
- </b-form-input>
- </b-form-group>
- </b-col>
- <b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-form-group :label="$t('pagePowerSup.labels.critical')">
- <b-form-input
- v-model.number="critical"
- type="number"
- :min="0"
- :max="100"
- >
- </b-form-input>
- </b-form-group>
- </b-col>
- <b-col xs="12" sm="6" xl="3" class="pt-4">
- <b-button variant="primary" style="height: 35px" @click="saveLimit">
- {{ $t('global.action.save') }}
- </b-button>
- </b-col>
- </b-row>
+ {{ $t('global.action.save') }}
+ </b-button>
+ </b-col>
+ </b-row>
+ </b-form>
<chart
type="processors"
:time-scale="timeScale"
@@ -87,16 +114,26 @@ import Chart from '@/components/_sila/Global/Chart';
import PageSection from '@/components/Global/PageSection';
import DataFormatterMixin from '@/components/_sila/Mixins/DataFormatterMixin';
+import LoadingBarMixin, {
+ loading,
+} from '@/components/_sila/Mixins/LoadingBarMixin';
import TableFilterMixin from '@/components/_sila/Mixins/TableFilterMixin';
-import LoadingBarMixin from '@/components/_sila/Mixins/LoadingBarMixin';
import BVToastMixin from '@/components/_sila/Mixins/BVToastMixin';
+import VuelidateMixin from '@/components/_sila/Mixins/VuelidateMixin.js';
import Collapse from '@/components/_sila/Global/Collapse';
import { getGroups, getItems } from '@/utilities/_sila/metricProperties';
+import { between, required } from 'vuelidate/lib/validators';
export default {
components: { PageSection, Chart, Collapse },
- mixins: [DataFormatterMixin, TableFilterMixin, LoadingBarMixin, BVToastMixin],
+ mixins: [
+ DataFormatterMixin,
+ TableFilterMixin,
+ LoadingBarMixin,
+ BVToastMixin,
+ VuelidateMixin,
+ ],
props: {
timeScale: {
type: String,
@@ -105,6 +142,7 @@ export default {
},
data() {
return {
+ loading,
warning: null,
critical: null,
isBusy: true,
@@ -142,6 +180,19 @@ export default {
};
},
+ validations() {
+ return {
+ warning: {
+ required,
+ between: between(1, this.critical),
+ },
+ critical: {
+ required,
+ between: between(this.warning, 100),
+ },
+ };
+ },
+
computed: {
groups() {
return getGroups(this.allSensors);
@@ -196,10 +247,14 @@ export default {
},
methods: {
saveLimit() {
+ this.$v.$touch();
+ if (this.$v.$invalid) return;
+
this.startLoader();
this.$store
.dispatch('powerSupply/patchLimitsTemp', {
warning: this.warning,
+ critical: this.critical,
groups: this.groups,
})
.catch(({ message }) => this.errorToast(message))