From ca981a5cf99f016be02dddc090c2927dd9997c42 Mon Sep 17 00:00:00 2001 From: Vitalii Lysak Date: Mon, 22 Aug 2022 17:31:25 +0300 Subject: SILABMC-271: add max reading as chart max --- src/components/_sila/Global/Chart.vue | 148 +++++++++++++-------- src/store/modules/HardwareStatus/FanStore.js | 4 +- src/views/_sila/Fans/Dynamic/FanSpeedCpu.vue | 15 ++- src/views/_sila/Fans/Dynamic/FanSpeedSystem.vue | 48 ++++++- src/views/_sila/Memory/Dynamic/MemoryTemp.vue | 7 + .../_sila/Motherboard/Dynamic/MotherboardTemp.vue | 7 + src/views/_sila/Processors/Dynamic/CpuTemp.vue | 7 + 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 + ); + }, }, }; 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" > { 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" > { + 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" > { + 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" > { + 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" > { + return limit?.MaxReadingRangeTemp; + })?.MaxReadingRangeTemp; + }, + allSensors() { return this.timeScale === 'hour' ? this.$store.getters['processors/cpuTempLastHour'] -- cgit v1.2.3