From 5367ddb90fef12f6fc1258aaf56dc978168ec07b Mon Sep 17 00:00:00 2001 From: Vitalii Lysak Date: Mon, 25 Jul 2022 10:36:05 +0300 Subject: add tables for dynamic --- src/components/_sila/Global/Chart.vue | 7 +- src/locales/ru-RU.json | 26 ++++++- src/utilities/_sila/metricProperties.js | 8 +-- src/views/_sila/Fans/Dynamic/FansDynamicPage.vue | 82 ++++++++++++++++++++++ .../_sila/Memory/Dynamic/MemoryDynamicPage.vue | 81 +++++++++++++++++++++ .../Motherboard/Dynamic/MotherboardDynamicPage.vue | 81 +++++++++++++++++++++ .../Processors/Dynamic/ProcessorsDynamicPage.vue | 67 ++---------------- 7 files changed, 285 insertions(+), 67 deletions(-) (limited to 'src') diff --git a/src/components/_sila/Global/Chart.vue b/src/components/_sila/Global/Chart.vue index a74c5425..d24aad72 100644 --- a/src/components/_sila/Global/Chart.vue +++ b/src/components/_sila/Global/Chart.vue @@ -14,6 +14,10 @@ export default { type: Array, default: () => [], }, + colors: { + type: Array, + default: () => [], + }, type: { type: String, default: '', @@ -70,7 +74,7 @@ export default { return rv; }, {}); - let metricArr = Object.keys(group).map((key) => { + let metricArr = Object.keys(group).map((key, index) => { let groupTime = group[key].reduce(function (rv, x) { (rv[x['Timestamp']] = rv[x['Timestamp']] || []).push(x); return rv; @@ -91,6 +95,7 @@ export default { return { name: key, data: arr.slice(-60), + color: this.colors[index], }; }); diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index 0b91f4f9..b996c8bd 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -830,10 +830,15 @@ "pageFans": { "installedFans": "Установленные вентиляторы", "table": { - "name": "Имя", + "name": "Имя модуля", "health": "Состояние", "type": "Тип устройства", - "currentValue": "Текущая скорость, об/мин" + "current": "Текущая", + "middle": "Средняя", + "min": "Минимальная", + "minDate": "Дата минимальной", + "max": "Максимальная", + "maxDate": "Дата максимальной" } }, "pageProcessors": { @@ -853,6 +858,23 @@ "maxDate": "Дата максимального" } }, + "pageMemory": { + "temperature": "Показатели температуры", + "labels": { + "notNormal": "Не штатный режим", + "critical": "Критический режим", + "warning": "Значение предупреждения" + }, + "table": { + "name": "Имя модуля", + "currentTemperature": "Текущее, С°", + "middleTemperature": "Среднее, С°", + "minTemperature": "Минимальное, С°", + "minDate": "Дата минимального", + "maxTemperature": "Максимальное, С°", + "maxDate": "Дата максимального" + } + }, "pageSerialOverLan": { "alert": { "disconnectedAlertMessage" : "Система должна быть включена для соединения" diff --git a/src/utilities/_sila/metricProperties.js b/src/utilities/_sila/metricProperties.js index 5dd58014..abae260f 100644 --- a/src/utilities/_sila/metricProperties.js +++ b/src/utilities/_sila/metricProperties.js @@ -26,11 +26,11 @@ export function getItems(data) { return Object.keys(group).map((metric) => { return { name: metric, - currentTemperature: group[metric][group[metric].length - 1].MetricValue, - middleTemperature: findAverage(group[metric]), - minTemperature: findMin(group[metric]), + current: group[metric][group[metric].length - 1].MetricValue, + middle: findAverage(group[metric]), + min: findMin(group[metric]), minDate: findDateOfMin(group[metric]), - maxTemperature: findMax(group[metric]), + max: findMax(group[metric]), maxDate: findDateOfMax(group[metric]), }; }); diff --git a/src/views/_sila/Fans/Dynamic/FansDynamicPage.vue b/src/views/_sila/Fans/Dynamic/FansDynamicPage.vue index 22374fa7..37e759bc 100644 --- a/src/views/_sila/Fans/Dynamic/FansDynamicPage.vue +++ b/src/views/_sila/Fans/Dynamic/FansDynamicPage.vue @@ -4,10 +4,46 @@ + + + + + + @@ -18,6 +54,7 @@ import Chart from '@/components/_sila/Global/Chart'; import DataFormatterMixin from '@/components/_sila/Mixins/DataFormatterMixin'; import LoadingBarMixin from '@/components/_sila/Mixins/LoadingBarMixin'; import TableFilterMixin from '@/components/_sila/Mixins/TableFilterMixin'; +import { getItems } from '@/utilities/_sila/metricProperties'; export default { components: { PageTitle, Chart }, @@ -27,6 +64,37 @@ export default { activeFilters: [], fanSpeedWarninig: 2450, fanSpeedShutdown: 3150, + fields: [ + { + key: 'name', + label: this.$t('pageFans.table.name'), + }, + { + key: 'current', + label: this.$t('pageFans.table.current'), + }, + { + key: 'middle', + label: this.$t('pageFans.table.middle'), + }, + { + key: 'min', + label: this.$t('pageFans.table.min'), + }, + { + key: 'minDate', + label: this.$t('pageFans.table.minDate'), + }, + { + key: 'max', + label: this.$t('pageFans.table.max'), + }, + { + key: 'maxDate', + label: this.$t('pageFans.table.maxDate'), + }, + ], + items: [], }; }, @@ -39,6 +107,20 @@ export default { filteredSensors() { return this.getFilteredTableData(this.allSensors, this.activeFilters); }, + + colors() { + return this.$randomColor({ + count: this.items?.length, + hue: 'random', + luminosity: 'random', + }); + }, + }, + + watch: { + filteredSensors(data) { + this.items = getItems(data); + }, }, created() { diff --git a/src/views/_sila/Memory/Dynamic/MemoryDynamicPage.vue b/src/views/_sila/Memory/Dynamic/MemoryDynamicPage.vue index 21e18fe1..db304d24 100644 --- a/src/views/_sila/Memory/Dynamic/MemoryDynamicPage.vue +++ b/src/views/_sila/Memory/Dynamic/MemoryDynamicPage.vue @@ -4,11 +4,46 @@ + + + + + @@ -19,6 +54,7 @@ import Chart from '@/components/_sila/Global/Chart'; import DataFormatterMixin from '@/components/_sila/Mixins/DataFormatterMixin'; import LoadingBarMixin from '@/components/_sila/Mixins/LoadingBarMixin'; import TableFilterMixin from '@/components/_sila/Mixins/TableFilterMixin'; +import { getItems } from '@/utilities/_sila/metricProperties'; export default { components: { PageTitle, Chart }, @@ -29,6 +65,37 @@ export default { temperatureWarning: 72, temperatureNonNormal: 44, temperatureCriticalStart: 55, + fields: [ + { + key: 'name', + label: this.$t('pageMemory.table.name'), + }, + { + key: 'current', + label: this.$t('pageMemory.table.currentTemperature'), + }, + { + key: 'middle', + label: this.$t('pageMemory.table.middleTemperature'), + }, + { + key: 'min', + label: this.$t('pageMemory.table.minTemperature'), + }, + { + key: 'minDate', + label: this.$t('pageMemory.table.minDate'), + }, + { + key: 'max', + label: this.$t('pageMemory.table.maxTemperature'), + }, + { + key: 'maxDate', + label: this.$t('pageMemory.table.maxDate'), + }, + ], + items: [], }; }, @@ -41,6 +108,20 @@ export default { filteredSensors() { return this.getFilteredTableData(this.allSensors, this.activeFilters); }, + + colors() { + return this.$randomColor({ + count: this.items?.length, + hue: 'random', + luminosity: 'random', + }); + }, + }, + + watch: { + filteredSensors(data) { + this.items = getItems(data); + }, }, created() { diff --git a/src/views/_sila/Motherboard/Dynamic/MotherboardDynamicPage.vue b/src/views/_sila/Motherboard/Dynamic/MotherboardDynamicPage.vue index b4d13f3f..e08fab38 100644 --- a/src/views/_sila/Motherboard/Dynamic/MotherboardDynamicPage.vue +++ b/src/views/_sila/Motherboard/Dynamic/MotherboardDynamicPage.vue @@ -4,11 +4,46 @@ + + + + + @@ -19,6 +54,7 @@ import Chart from '@/components/_sila/Global/Chart'; import DataFormatterMixin from '@/components/_sila/Mixins/DataFormatterMixin'; import LoadingBarMixin from '@/components/_sila/Mixins/LoadingBarMixin'; import TableFilterMixin from '@/components/_sila/Mixins/TableFilterMixin'; +import { getItems } from '@/utilities/_sila/metricProperties'; export default { components: { PageTitle, Chart }, @@ -29,6 +65,37 @@ export default { temperatureWarning: 72, temperatureNonNormal: 44, temperatureCriticalStart: 55, + fields: [ + { + key: 'name', + label: this.$t('pageMemory.table.name'), + }, + { + key: 'current', + label: this.$t('pageMemory.table.currentTemperature'), + }, + { + key: 'middle', + label: this.$t('pageMemory.table.middleTemperature'), + }, + { + key: 'min', + label: this.$t('pageMemory.table.minTemperature'), + }, + { + key: 'minDate', + label: this.$t('pageMemory.table.minDate'), + }, + { + key: 'max', + label: this.$t('pageMemory.table.maxTemperature'), + }, + { + key: 'maxDate', + label: this.$t('pageMemory.table.maxDate'), + }, + ], + items: [], }; }, @@ -41,6 +108,20 @@ export default { filteredSensors() { return this.getFilteredTableData(this.allSensors, this.activeFilters); }, + + colors() { + return this.$randomColor({ + count: this.items?.length, + hue: 'random', + luminosity: 'random', + }); + }, + }, + + watch: { + filteredSensors(data) { + this.items = getItems(data); + }, }, created() { diff --git a/src/views/_sila/Processors/Dynamic/ProcessorsDynamicPage.vue b/src/views/_sila/Processors/Dynamic/ProcessorsDynamicPage.vue index 54f8e284..fa98e951 100644 --- a/src/views/_sila/Processors/Dynamic/ProcessorsDynamicPage.vue +++ b/src/views/_sila/Processors/Dynamic/ProcessorsDynamicPage.vue @@ -35,11 +35,13 @@