summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitalii Lysak <v.lysak@dunice.net>2022-08-22 17:31:25 +0300
committerVitalii Lysak <v.lysak@dunice.net>2022-08-22 17:31:25 +0300
commitca981a5cf99f016be02dddc090c2927dd9997c42 (patch)
treef0a727f0a4482f08b92cd36c542f5eb78f6acd84
parenta9cd79d13938dc0e43fd443e3d2deb7367726403 (diff)
downloadwebui-vue-ca981a5cf99f016be02dddc090c2927dd9997c42.tar.xz
SILABMC-271: add max reading as chart max
-rw-r--r--src/components/_sila/Global/Chart.vue148
-rw-r--r--src/store/modules/HardwareStatus/FanStore.js4
-rw-r--r--src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue15
-rw-r--r--src/views/_sila/Fans/Dynamic/FanSpeedSystem.vue48
-rw-r--r--src/views/_sila/Memory/Dynamic/MemoryTemp.vue7
-rw-r--r--src/views/_sila/Motherboard/Dynamic/MotherboardTemp.vue7
-rw-r--r--src/views/_sila/Processors/Dynamic/CpuTemp.vue7
7 files changed, 172 insertions, 64 deletions
diff --git a/src/components/_sila/Global/Chart.vue b/src/components/_sila/Global/Chart.vue
index 43141a7a..6abf8b07 100644
--- a/src/components/_sila/Global/Chart.vue
+++ b/src/components/_sila/Global/Chart.vue
@@ -35,11 +35,11 @@ export default {
type: Number,
default: null,
},
- notNormal: {
+ critical: {
type: Number,
default: null,
},
- critical: {
+ max: {
type: Number,
default: null,
},
@@ -48,14 +48,6 @@ export default {
default: false,
},
},
- data() {
- return {
- categories: null,
- minRange: null,
- yMax: null,
- minTickInterval: null,
- };
- },
computed: {
readyData() {
let filteredData = this.data.filter((metric) => {
@@ -79,9 +71,11 @@ export default {
return transform;
},
+
step() {
return this.timeScale === 'hour' ? 10 : 60;
},
+
metricData() {
let group = this.readyData.reduce(function (rv, x) {
(rv[x['Sensor']] = rv[x['Sensor']] || []).push(x);
@@ -339,69 +333,114 @@ export default {
}
return plotBands;
},
- },
- async created() {
- this.setOptions();
- this.setChart();
- },
+ yMax() {
+ let yMax = null;
- methods: {
- setOptions() {
- Highcharts.setOptions({
- lang: {
- resetZoom: this.$t('chart.resetZoom'),
- },
- });
+ switch (this.type) {
+ case 'motherboard':
+ case 'memory':
+ case 'processors':
+ yMax = this.max;
+ break;
+ case 'power':
+ yMax = 100;
+ break;
+ case 'voltage-input':
+ yMax = 250;
+ break;
+ case 'voltage-output':
+ yMax = 100;
+ break;
+ case 'current':
+ yMax = 10;
+ break;
+ case 'psu-power':
+ yMax = 125;
+ break;
+ }
+ return yMax;
},
- setChart() {
+ categories() {
+ let categories = null;
+
switch (this.type) {
+ case 'motherboard':
+ categories = this.setCategories(this.setMaxWithInterval(), 'С°');
+ break;
case 'fans':
- this.categories = this.setSpeed(10000);
- this.minRange = 10000;
- this.minTickInterval = 1000;
+ categories = this.setSpeed(this.setMaxWithInterval());
break;
case 'memory':
- this.categories = this.setCategories(101, 'С°');
- this.yMax = 100;
- this.minTickInterval = 25;
+ categories = this.setCategories(this.setMaxWithInterval(), 'С°');
break;
case 'processors':
- this.categories = this.setCategories(101, 'С°');
- this.yMax = 100;
- this.minTickInterval = 25;
- break;
- case 'motherboard':
- this.categories = this.setCategories(101, 'С°');
- this.yMax = 100;
- this.minTickInterval = 25;
+ categories = this.setCategories(this.setMaxWithInterval(), 'С°');
break;
case 'power':
- this.categories = this.setCategories(101, 'Вт');
- this.yMax = 100;
- this.minTickInterval = 25;
+ categories = this.setCategories(101, 'Вт');
break;
case 'voltage-input':
- this.categories = this.setCategories(251, 'В');
- this.yMax = 250;
- this.minTickInterval = 25;
+ categories = this.setCategories(251, 'В');
break;
case 'voltage-output':
- this.categories = this.setCategories(101, 'В');
- this.yMax = 100;
- this.minTickInterval = 25;
+ categories = this.setCategories(101, 'В');
break;
case 'current':
- this.categories = this.setCategories(11, 'A');
- this.yMax = 10;
- this.minTickInterval = 2;
+ categories = this.setCategories(11, 'A');
+ break;
+ case 'psu-power':
+ categories = this.setCategories(126, 'Вт');
+ break;
+ }
+ return categories;
+ },
+
+ minRange() {
+ let minRange = null;
+
+ switch (this.type) {
+ case 'fans':
+ minRange = 10000;
break;
+ }
+ return minRange;
+ },
+
+ minTickInterval() {
+ let minTickInterval = null;
+
+ switch (this.type) {
+ case 'fans':
+ minTickInterval = 1000;
+ break;
+ case 'motherboard':
+ case 'memory':
+ case 'processors':
+ case 'power':
+ case 'voltage-input':
+ case 'voltage-output':
+ case 'current':
case 'psu-power':
- this.categories = this.setCategories(126, 'Вт');
- this.yMax = 125;
- this.minTickInterval = 25;
+ minTickInterval = 25;
+ break;
}
+ return minTickInterval;
+ },
+ },
+
+ async created() {
+ this.setOptions();
+ },
+
+ methods: {
+ setOptions() {
+ Highcharts.setOptions({
+ lang: {
+ resetZoom: this.$t('chart.resetZoom'),
+ },
+ });
},
setCategories(count, desc) {
const arr = [...new Array(count)].map((i, k) => `${k} ${desc}`);
@@ -411,6 +450,11 @@ export default {
const arr = [...new Array(count)].map((i, k) => `${k}`);
return arr;
},
+ setMaxWithInterval() {
+ return (
+ Math.ceil(this.max / this.minTickInterval) * this.minTickInterval + 1
+ );
+ },
},
};
</script>
diff --git a/src/store/modules/HardwareStatus/FanStore.js b/src/store/modules/HardwareStatus/FanStore.js
index 792c5ad1..9bc84280 100644
--- a/src/store/modules/HardwareStatus/FanStore.js
+++ b/src/store/modules/HardwareStatus/FanStore.js
@@ -77,8 +77,8 @@ const FanStore = {
async getLimits({ commit }) {
return await api
.get('/redfish/v1/Chassis/SILA_Baseboard/Thermal')
- .then(({ data: { Temperatures = [] } }) => {
- commit('setLimits', Temperatures);
+ .then(({ data: { Fans = [] } }) => {
+ commit('setLimits', Fans);
})
.catch((error) => console.log(error));
},
diff --git a/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue b/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue
index 018e19a1..07c6618c 100644
--- a/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue
+++ b/src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue
@@ -42,7 +42,8 @@
:time-scale="timeScale"
:data="filteredForChart"
:warning="warningLimit"
- :shutdown="shutdownLimit"
+ :critical="criticalLimit"
+ :max="maxLimit"
></chart>
<b-table
@@ -112,7 +113,7 @@ export default {
data() {
return {
warning: null,
- shutdown: null,
+ critical: null,
isBusy: true,
fields: [
{
@@ -189,7 +190,7 @@ export default {
})?.UpperThresholdNonCritical;
},
- shutdownLimit() {
+ criticalLimit() {
return this.limits.find((limit) => {
return (
limit?.UpperThresholdCritical && this.groups.includes(limit.MemberId)
@@ -197,6 +198,12 @@ export default {
})?.UpperThresholdCritical;
},
+ maxLimit() {
+ return this.limits.find((limit) => {
+ return limit?.MaxReadingRange;
+ })?.MaxReadingRange;
+ },
+
allSensors() {
return this.timeScale === 'hour'
? this.$store.getters['fan/fansLastHour']
@@ -274,7 +281,7 @@ export default {
this.$store.dispatch('fan/getFansDynamic', payload).finally(() => {
this.$store.dispatch('fan/getLimits').finally(() => {
this.warning = this.warningLimit;
- this.shutdown = this.shutdownLimit;
+ this.critical = this.criticalLimit;
this.endLoader();
this.isBusy = false;
});
diff --git a/src/views/_sila/Fans/Dynamic/FanSpeedSystem.vue b/src/views/_sila/Fans/Dynamic/FanSpeedSystem.vue
index 06f4dd14..bcf0b375 100644
--- a/src/views/_sila/Fans/Dynamic/FanSpeedSystem.vue
+++ b/src/views/_sila/Fans/Dynamic/FanSpeedSystem.vue
@@ -42,7 +42,8 @@
:time-scale="timeScale"
:data="filteredForChart"
:warning="warning"
- :shutdown="shutdown"
+ :critical="critical"
+ :max="maxLimit"
></chart>
<b-table
@@ -96,7 +97,7 @@ import LoadingBarMixin from '@/components/_sila/Mixins/LoadingBarMixin';
import TableFilterMixin from '@/components/_sila/Mixins/TableFilterMixin';
import Collapse from '@/components/_sila/Global/Collapse';
-import { getItems } from '@/utilities/_sila/metricProperties';
+import { getGroups, getItems } from '@/utilities/_sila/metricProperties';
import { fanFilter } from '@/utilities/_sila/psuFilter';
export default {
@@ -110,8 +111,8 @@ export default {
},
data() {
return {
- warning: 8900,
- shutdown: 9500,
+ warning: null,
+ critical: null,
isBusy: true,
fields: [
{
@@ -151,6 +152,10 @@ export default {
},
computed: {
+ groups() {
+ return getGroups(this.filteredSensors);
+ },
+
items() {
const allArr = getItems(this.filteredSensors);
@@ -172,6 +177,33 @@ export default {
});
},
+ limits() {
+ return this.$store.getters['fan/limits'];
+ },
+
+ warningLimit() {
+ return this.limits.find((limit) => {
+ return (
+ limit?.UpperThresholdNonCritical &&
+ this.groups.includes(limit.MemberId)
+ );
+ })?.UpperThresholdNonCritical;
+ },
+
+ criticalLimit() {
+ return this.limits.find((limit) => {
+ return (
+ limit?.UpperThresholdCritical && this.groups.includes(limit.MemberId)
+ );
+ })?.UpperThresholdCritical;
+ },
+
+ maxLimit() {
+ return this.limits.find((limit) => {
+ return limit?.MaxReadingRange;
+ })?.MaxReadingRange;
+ },
+
allSensors() {
return this.timeScale === 'hour'
? this.$store.getters['fan/fansLastHour']
@@ -239,8 +271,12 @@ export default {
this.startLoader();
this.$store.dispatch('fan/getFansDynamic', payload).finally(() => {
- this.endLoader();
- this.isBusy = false;
+ this.$store.dispatch('fan/getLimits').finally(() => {
+ this.warning = this.warningLimit;
+ this.critical = this.criticalLimit;
+ this.endLoader();
+ this.isBusy = false;
+ });
});
},
},
diff --git a/src/views/_sila/Memory/Dynamic/MemoryTemp.vue b/src/views/_sila/Memory/Dynamic/MemoryTemp.vue
index 2c890862..ce9ac25a 100644
--- a/src/views/_sila/Memory/Dynamic/MemoryTemp.vue
+++ b/src/views/_sila/Memory/Dynamic/MemoryTemp.vue
@@ -70,6 +70,7 @@
:data="filteredSensors"
:warning="warningLimit"
:critical="criticalLimit"
+ :max="maxLimit"
></chart>
<b-table
responsive="md"
@@ -217,6 +218,12 @@ export default {
})?.UpperThresholdCritical;
},
+ maxLimit() {
+ return this.limits.find((limit) => {
+ return limit?.MaxReadingRangeTemp;
+ })?.MaxReadingRangeTemp;
+ },
+
allSensors() {
return this.timeScale === 'hour'
? this.$store.getters['memory/dimmsLastHour']
diff --git a/src/views/_sila/Motherboard/Dynamic/MotherboardTemp.vue b/src/views/_sila/Motherboard/Dynamic/MotherboardTemp.vue
index 6d4c15b7..610af549 100644
--- a/src/views/_sila/Motherboard/Dynamic/MotherboardTemp.vue
+++ b/src/views/_sila/Motherboard/Dynamic/MotherboardTemp.vue
@@ -48,6 +48,7 @@
:colors="colors"
:data="filteredSensors"
:warning="warningLimit"
+ :max="maxLimit"
></chart>
<b-table
responsive="md"
@@ -183,6 +184,12 @@ export default {
})?.UpperThresholdNonCritical;
},
+ maxLimit() {
+ return this.limits.find((limit) => {
+ return limit?.MaxReadingRangeTemp;
+ })?.MaxReadingRangeTemp;
+ },
+
allSensors() {
return this.timeScale === 'hour'
? this.$store.getters['motherboard/motherboardLastHour']
diff --git a/src/views/_sila/Processors/Dynamic/CpuTemp.vue b/src/views/_sila/Processors/Dynamic/CpuTemp.vue
index 840034a3..0f90341b 100644
--- a/src/views/_sila/Processors/Dynamic/CpuTemp.vue
+++ b/src/views/_sila/Processors/Dynamic/CpuTemp.vue
@@ -75,6 +75,7 @@
:colors="colors"
:warning="warningLimit"
:critical="criticalLimit"
+ :max="maxLimit"
></chart>
<b-table
responsive="md"
@@ -227,6 +228,12 @@ export default {
})?.UpperThresholdCritical;
},
+ maxLimit() {
+ return this.limits.find((limit) => {
+ return limit?.MaxReadingRangeTemp;
+ })?.MaxReadingRangeTemp;
+ },
+
allSensors() {
return this.timeScale === 'hour'
? this.$store.getters['processors/cpuTempLastHour']