bfg-common 1.3.614 → 1.3.616
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/localization/local_be.json +3 -1
- package/assets/localization/local_en.json +3 -1
- package/assets/localization/local_hy.json +3 -1
- package/assets/localization/local_kk.json +3 -1
- package/assets/localization/local_ru.json +2491 -2489
- package/assets/localization/local_zh.json +3 -1
- package/components/common/pages/hardwareHealth/Graph.vue +84 -0
- package/components/common/pages/hardwareHealth/HardwareHealth.vue +55 -2
- package/components/common/pages/hardwareHealth/lib/config/tabsPannel.ts +14 -2
- package/components/common/pages/hardwareHealth/tableView/TableView.vue +17 -1
- package/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable.ts +17 -2
- package/package.json +1 -1
|
@@ -1229,6 +1229,7 @@
|
|
|
1229
1229
|
"override": "覆盖",
|
|
1230
1230
|
"overrideDefaultGatewayForThisAdapter": "覆盖该适配器的默认网关",
|
|
1231
1231
|
"overview": "概述",
|
|
1232
|
+
"overview2": "概述",
|
|
1232
1233
|
"owner": "所有者",
|
|
1233
1234
|
"packages": "套餐",
|
|
1234
1235
|
"paravirtual": "准虚拟",
|
|
@@ -2481,5 +2482,6 @@
|
|
|
2481
2482
|
"uniqIdClientApp": "这是一个唯一标识符,用于在与 ADFS(Active Directory 联合身份验证服务)服务器交互时识别客户端应用程序。此标识符帮助 ADFS 服务器确定哪个应用程序正在发出身份验证或授权请求。",
|
|
2482
2483
|
"embedded": "嵌入式",
|
|
2483
2484
|
"offUser": "离开用户",
|
|
2484
|
-
"addingStorage": "添加存储空间"
|
|
2485
|
+
"addingStorage": "添加存储空间",
|
|
2486
|
+
"historyTestimony": "见证历史"
|
|
2485
2487
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="hardware-health-graph">
|
|
3
|
+
<common-graph
|
|
4
|
+
v-if="dataLocal && !props.loading"
|
|
5
|
+
:data="dataLocal"
|
|
6
|
+
:update="updateHelper"
|
|
7
|
+
/>
|
|
8
|
+
<div v-else-if="props.loading" class="graphic-loader-block">
|
|
9
|
+
<div class="spinner"></div>
|
|
10
|
+
</div>
|
|
11
|
+
<div v-else class="empty-content"></div>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { format } from 'date-fns'
|
|
17
|
+
import type { I_SeriesLine } from '~/node_modules/bfg-nuxt-3-graph/graph/lib/models/interfaces'
|
|
18
|
+
import type { I_LineGraph } from '~/node_modules/bfg-nuxt-3-graph/graph/lib/models/interfaces'
|
|
19
|
+
import { graphDataFunc } from '~/node_modules/bfg-nuxt-3-graph/graph/lib/utils/renderGraph'
|
|
20
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
21
|
+
|
|
22
|
+
const props = defineProps<{
|
|
23
|
+
data: I_SeriesLine | null
|
|
24
|
+
loading: boolean
|
|
25
|
+
formattedDatetime: any
|
|
26
|
+
isDarkMode: boolean
|
|
27
|
+
getDateFormat: any
|
|
28
|
+
language: string
|
|
29
|
+
}>()
|
|
30
|
+
|
|
31
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
32
|
+
|
|
33
|
+
const dataLocal = ref<I_LineGraph | null>(null)
|
|
34
|
+
const updateHelper = ref<number>(0)
|
|
35
|
+
let dateFormat = ''
|
|
36
|
+
|
|
37
|
+
const updateChart = (): void => {
|
|
38
|
+
if (!props.data) return
|
|
39
|
+
|
|
40
|
+
dataLocal.value = graphDataFunc(
|
|
41
|
+
props.data,
|
|
42
|
+
props.isDarkMode,
|
|
43
|
+
localization.value,
|
|
44
|
+
() => {},
|
|
45
|
+
false,
|
|
46
|
+
false,
|
|
47
|
+
true,
|
|
48
|
+
'spline',
|
|
49
|
+
'',
|
|
50
|
+
undefined,
|
|
51
|
+
() => {},
|
|
52
|
+
props.formattedDatetime,
|
|
53
|
+
format,
|
|
54
|
+
dateFormat
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
updateHelper.value++
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
watch(
|
|
61
|
+
() => [props.data, props.isDarkMode, props.language],
|
|
62
|
+
(newValue) => {
|
|
63
|
+
dateFormat = props.getDateFormat(newValue[2])
|
|
64
|
+
updateChart()
|
|
65
|
+
},
|
|
66
|
+
{ immediate: true, deep: true }
|
|
67
|
+
)
|
|
68
|
+
</script>
|
|
69
|
+
|
|
70
|
+
<style scoped lang="scss">
|
|
71
|
+
.hardware-health-graph {
|
|
72
|
+
height: 300px;
|
|
73
|
+
|
|
74
|
+
.graphic-loader-block {
|
|
75
|
+
height: inherit;
|
|
76
|
+
display: flex;
|
|
77
|
+
justify-content: center;
|
|
78
|
+
align-items: center;
|
|
79
|
+
}
|
|
80
|
+
.empty-content {
|
|
81
|
+
height: inherit;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
</style>
|
|
@@ -37,8 +37,19 @@
|
|
|
37
37
|
|
|
38
38
|
<common-pages-hardware-health-tools-panel :selected-tab="activeTab" />
|
|
39
39
|
|
|
40
|
+
<common-pages-hardware-health-graph
|
|
41
|
+
v-if="activeTab === 'history-testimony'"
|
|
42
|
+
:data="props.historyTestimony"
|
|
43
|
+
:loading="props.loadingHistoryTestimony"
|
|
44
|
+
:is-dark-mode="props.isDarkMode"
|
|
45
|
+
:formatted-datetime="props.formattedDatetime"
|
|
46
|
+
:get-date-format="props.getDateFormat"
|
|
47
|
+
:language="props.language"
|
|
48
|
+
/>
|
|
49
|
+
|
|
40
50
|
<common-pages-hardware-health-table-view
|
|
41
51
|
:key="uniqueKey"
|
|
52
|
+
v-model:selected="selectedRow"
|
|
42
53
|
:data-table="hardwareHealth"
|
|
43
54
|
:total-items="hardwareHealth.length"
|
|
44
55
|
:total-pages="1"
|
|
@@ -49,16 +60,28 @@
|
|
|
49
60
|
</template>
|
|
50
61
|
|
|
51
62
|
<script lang="ts" setup>
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
63
|
+
import type { I_SeriesLine } from '~/node_modules/bfg-nuxt-3-graph/graph/lib/models/interfaces'
|
|
64
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
65
|
+
import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
|
|
54
66
|
import type { UI_T_HardwareHealthTabMode } from '~/components/common/pages/hardwareHealth/lib/models/types'
|
|
55
67
|
import type { UI_I_StorageSensorsAlert } from '~/components/common/pages/hardwareHealth/lib/models/interfaces'
|
|
56
68
|
import type { UI_I_HardwareHealthSensors } from '~/components/common/pages/hardwareHealth/tableView/lib/models/interfaces'
|
|
69
|
+
import type { UI_T_SelectedRow } from '~/components/atoms/table/dataGrid/lib/models/types'
|
|
57
70
|
import { hardwareHealthTabsFunc } from '~/components/common/pages/hardwareHealth/lib/config/tabsPannel'
|
|
58
71
|
|
|
59
72
|
const props = defineProps<{
|
|
60
73
|
data: UI_I_HardwareHealthSensors[]
|
|
61
74
|
loading: boolean
|
|
75
|
+
historyTestimony: I_SeriesLine | null
|
|
76
|
+
loadingHistoryTestimony: boolean
|
|
77
|
+
isDarkMode: boolean
|
|
78
|
+
formattedDatetime: any
|
|
79
|
+
getDateFormat: any
|
|
80
|
+
language: string
|
|
81
|
+
}>()
|
|
82
|
+
|
|
83
|
+
const emits = defineEmits<{
|
|
84
|
+
(event: 'update-chart-data', value: string): void
|
|
62
85
|
}>()
|
|
63
86
|
|
|
64
87
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
@@ -67,6 +90,8 @@ const { $store }: any = useNuxtApp()
|
|
|
67
90
|
const activeTab = ref<UI_T_HardwareHealthTabMode>('sensor')
|
|
68
91
|
const uniqueKey = ref<number>(0)
|
|
69
92
|
|
|
93
|
+
const selectedRow = ref<UI_T_SelectedRow>([])
|
|
94
|
+
|
|
70
95
|
const hardwareHealthTabs = computed<UI_I_CollapseNavItem[]>(() =>
|
|
71
96
|
hardwareHealthTabsFunc(localization.value)
|
|
72
97
|
)
|
|
@@ -126,10 +151,38 @@ const generateAlertTextWithLink = computed<UI_I_StorageSensorsAlert>(() => {
|
|
|
126
151
|
}
|
|
127
152
|
})
|
|
128
153
|
|
|
154
|
+
const updateChartData = (isSendAll: boolean = false): void => {
|
|
155
|
+
const selectedNames: string[] = []
|
|
156
|
+
hardwareHealth.value.forEach((item, key) => {
|
|
157
|
+
if (isSendAll) {
|
|
158
|
+
if (['power', 'temperature'].includes(item.category.toLowerCase()))
|
|
159
|
+
selectedNames.push(item.name)
|
|
160
|
+
} else if (
|
|
161
|
+
['power', 'temperature'].includes(item.category.toLowerCase()) &&
|
|
162
|
+
selectedRow.value.includes(key)
|
|
163
|
+
) {
|
|
164
|
+
selectedNames.push(item.name)
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
emits('update-chart-data', selectedNames.join(','))
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
watch(selectedRow, (newValue) => {
|
|
171
|
+
newValue.length && updateChartData()
|
|
172
|
+
})
|
|
173
|
+
|
|
129
174
|
watch(activeTab, () => {
|
|
130
175
|
uniqueKey.value++
|
|
131
176
|
})
|
|
132
177
|
|
|
178
|
+
watch(
|
|
179
|
+
hardwareHealth,
|
|
180
|
+
(newValue) => {
|
|
181
|
+
newValue.length && updateChartData(true)
|
|
182
|
+
},
|
|
183
|
+
{ immediate: true }
|
|
184
|
+
)
|
|
185
|
+
|
|
133
186
|
onMounted(() => {
|
|
134
187
|
$store.dispatch('main/A_CONTINUE_GLOBAL_REFRESH', 'hardwareHealth')
|
|
135
188
|
})
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
-
import { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
|
|
1
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
+
import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
|
|
3
|
+
|
|
3
4
|
export const hardwareHealthTabsFunc = (
|
|
4
5
|
localization: UI_I_Localization
|
|
5
6
|
): UI_I_CollapseNavItem[] => {
|
|
7
|
+
const config = useRuntimeConfig()
|
|
8
|
+
|
|
9
|
+
const isDisabledHistoryTestimony =
|
|
10
|
+
String(config.public.PRODUCT_NAME_EN).toLowerCase() === 'sphere'
|
|
11
|
+
|
|
6
12
|
return [
|
|
7
13
|
{
|
|
8
14
|
text: localization.sensors,
|
|
@@ -28,5 +34,11 @@ export const hardwareHealthTabsFunc = (
|
|
|
28
34
|
disabled: false,
|
|
29
35
|
testId: 'hardware-health-system-log',
|
|
30
36
|
},
|
|
37
|
+
{
|
|
38
|
+
text: localization.historyTestimony,
|
|
39
|
+
value: 'history-testimony',
|
|
40
|
+
disabled: isDisabledHistoryTestimony,
|
|
41
|
+
testId: 'hardware-health-history-testimony',
|
|
42
|
+
},
|
|
31
43
|
]
|
|
32
44
|
}
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
<div class="data-table-view__inner">
|
|
4
4
|
<atoms-table-data-grid
|
|
5
5
|
v-model:column-keys="columnKeys"
|
|
6
|
+
v-model:selected-row="selectedRow"
|
|
6
7
|
:head-items="headItems"
|
|
7
8
|
:body-items="bodyItems"
|
|
8
9
|
:total-items="props.totalItems"
|
|
9
10
|
:total-pages="props.totalPages"
|
|
10
11
|
:page-size="100"
|
|
11
12
|
:page="1"
|
|
13
|
+
:type="tableType"
|
|
12
14
|
class="data-table"
|
|
13
15
|
test-id="hardware-health-table"
|
|
14
16
|
:loading="props.loading"
|
|
@@ -71,6 +73,10 @@ import type {
|
|
|
71
73
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
72
74
|
import type { UI_I_HardwareHealthSensors } from '~/components/common/pages/hardwareHealth/tableView/lib/models/interfaces'
|
|
73
75
|
import type { UI_T_HardwareHealthTabMode } from '~/components/common/pages/hardwareHealth/lib/models/types'
|
|
76
|
+
import type {
|
|
77
|
+
UI_T_DataGridType,
|
|
78
|
+
UI_T_SelectedRow,
|
|
79
|
+
} from '~/components/atoms/table/dataGrid/lib/models/types'
|
|
74
80
|
import * as sensorTable from '~/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable'
|
|
75
81
|
import * as storageSensorTable from '~/components/common/pages/hardwareHealth/tableView/lib/config/storageSensorTable'
|
|
76
82
|
import * as alertWarningTable from '~/components/common/pages/hardwareHealth/tableView/lib/config/alertWarningTable'
|
|
@@ -83,6 +89,7 @@ const props = defineProps<{
|
|
|
83
89
|
totalPages: number
|
|
84
90
|
tableMode: UI_T_HardwareHealthTabMode
|
|
85
91
|
}>()
|
|
92
|
+
const selectedRow = defineModel<string[]>('selected')
|
|
86
93
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
87
94
|
|
|
88
95
|
const table: any = {
|
|
@@ -90,8 +97,13 @@ const table: any = {
|
|
|
90
97
|
'storage-sensor': storageSensorTable,
|
|
91
98
|
'alert-warning': alertWarningTable,
|
|
92
99
|
'system-log': systemLogTable,
|
|
100
|
+
'history-testimony': sensorTable,
|
|
93
101
|
}
|
|
94
102
|
|
|
103
|
+
const tableType = computed<UI_T_DataGridType | undefined>(() =>
|
|
104
|
+
props.tableMode === 'history-testimony' ? 'checkbox' : undefined
|
|
105
|
+
)
|
|
106
|
+
|
|
95
107
|
const hasNonEmptySelEntries = computed<boolean>(() => {
|
|
96
108
|
return (
|
|
97
109
|
props.dataTable.some(
|
|
@@ -125,7 +137,11 @@ const bodyItems = computed<UI_I_BodyItem[][]>(() => {
|
|
|
125
137
|
break
|
|
126
138
|
}
|
|
127
139
|
|
|
128
|
-
return table[props.tableMode].bodyItems(
|
|
140
|
+
return table[props.tableMode].bodyItems(
|
|
141
|
+
tableData,
|
|
142
|
+
localization.value,
|
|
143
|
+
props.tableMode
|
|
144
|
+
)
|
|
129
145
|
})
|
|
130
146
|
|
|
131
147
|
const isShowSensorWarningDetails = ref<boolean>(false)
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
constructColumnKey,
|
|
10
10
|
} from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
|
|
11
11
|
import type { UI_I_HardwareHealthSensors } from '~/components/common/pages/hardwareHealth/tableView/lib/models/interfaces'
|
|
12
|
+
import type { UI_T_HardwareHealthTabMode } from '~/components/common/pages/hardwareHealth/lib/models/types'
|
|
12
13
|
import { UI_E_SensorsCategoryIcon } from '~/components/common/pages/hardwareHealth/lib/models/enums'
|
|
13
14
|
import { hardwareHealthSensorTableKeys } from '~/components/common/pages/hardwareHealth/tableView/lib/config/tableKeys'
|
|
14
15
|
import {
|
|
@@ -21,7 +22,12 @@ const getItems = (
|
|
|
21
22
|
): [string, boolean, string, string][] => {
|
|
22
23
|
return [
|
|
23
24
|
[localization.sensors, true, '330px', hardwareHealthSensorTableKeys[0]],
|
|
24
|
-
[
|
|
25
|
+
[
|
|
26
|
+
localization.common.status,
|
|
27
|
+
true,
|
|
28
|
+
'140px',
|
|
29
|
+
hardwareHealthSensorTableKeys[1],
|
|
30
|
+
],
|
|
25
31
|
[localization.reading, true, '115px', hardwareHealthSensorTableKeys[2]],
|
|
26
32
|
[localization.categories, true, '130px', hardwareHealthSensorTableKeys[3]],
|
|
27
33
|
[localization.lastUpdated, true, '195px', hardwareHealthSensorTableKeys[4]],
|
|
@@ -60,7 +66,8 @@ export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
|
|
|
60
66
|
|
|
61
67
|
export const bodyItems = (
|
|
62
68
|
data: UI_I_HardwareHealthSensors[],
|
|
63
|
-
localization: UI_I_Localization
|
|
69
|
+
localization: UI_I_Localization,
|
|
70
|
+
tableMode: UI_T_HardwareHealthTabMode
|
|
64
71
|
): UI_I_BodyItem[][] => {
|
|
65
72
|
const bodyItems: UI_I_BodyItem[][] = []
|
|
66
73
|
data.forEach((sensor: UI_I_HardwareHealthSensors, key) => {
|
|
@@ -70,6 +77,13 @@ export const bodyItems = (
|
|
|
70
77
|
warning: sensor.warning,
|
|
71
78
|
}
|
|
72
79
|
|
|
80
|
+
let isDisabledRow = false
|
|
81
|
+
if (
|
|
82
|
+
tableMode === 'history-testimony' &&
|
|
83
|
+
!['power', 'temperature'].includes(sensor.category.toLowerCase())
|
|
84
|
+
)
|
|
85
|
+
isDisabledRow = true
|
|
86
|
+
|
|
73
87
|
bodyItems.push([
|
|
74
88
|
// {
|
|
75
89
|
// data,
|
|
@@ -82,6 +96,7 @@ export const bodyItems = (
|
|
|
82
96
|
key: 'col0',
|
|
83
97
|
text: sensor[hardwareHealthSensorTableKeys[0]],
|
|
84
98
|
id: key,
|
|
99
|
+
disabled: isDisabledRow,
|
|
85
100
|
},
|
|
86
101
|
{
|
|
87
102
|
key: 'icon',
|