bfg-common 1.4.721 → 1.4.723

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.
@@ -1,239 +1,244 @@
1
- <template>
2
- <div id="advanced-page" class="fill-parent">
3
- <div class="routed-view-panel-layout">
4
- <div class="settingsViewHeader">
5
- <h3 class="settingsBlockTitle m-0">
6
- {{ localization.inventoryMonitor.advancedPerformance }}
7
- </h3>
8
- </div>
9
- <div v-if="props.isEmpty" class="empty-data">
10
- {{ localization.inventoryMonitor.emptyAdvancedGraphText }}
11
- </div>
12
- <div v-else class="fill-parent flex-column">
13
- <div class="vertical-flex-container fill-parent">
14
- <common-monitor-advanced-tools
15
- v-model:selected-timespan-type="localSelectedTimespanType"
16
- :type="props.type"
17
- :start-date="props.data?.pointStart || 0"
18
- :chart-title="props.data?.groupName || ''"
19
- :language="props.language"
20
- :selected-counters-keys="props.selectedCountersKeys"
21
- :selected-metric="props.selectedMetric"
22
- :selected-metric-local="props.selectedMetricLocal"
23
- :disabled-period="props.disabledPeriod"
24
- :disabled-view="props.disabledView"
25
- :selected-chart-type="props.selectedChartType"
26
- :units-count="props.unitsCount"
27
- :period-type="props.periodType"
28
- :selected-custom-time="props.selectedCustomTime"
29
- :selected-chart-option-name="props.selectedChartOptionName"
30
- :custom-date-from="props.customDateFrom"
31
- :custom-date-to="props.customDateTo"
32
- :custom-time-from="props.customTimeFrom"
33
- :custom-time-to="props.customTimeTo"
34
- :total-cores="totalCores"
35
- :host-id="props.hostId"
36
- :selected-objects="props.selectedObjects"
37
- :project="props.project"
38
- :objects-loading="props.objectsLoading"
39
- :objects-data="props.objectsData"
40
- @update-tools="emits('update-tools', $event)"
41
- @exporting="onExporting"
42
- @open-advanced-page="onGetEmptyPage"
43
- @select-row="emits('select-row', $event)"
44
- @select-metric-local="emits('select-metric-local', $event)"
45
- @update-chart-type="emits('update-chart-type', $event)"
46
- @update-timespan-type="emits('update-timespan-type', $event)"
47
- @update-unit-count="emits('update-unit-count', $event)"
48
- @update-period-type="emits('update-period-type', $event)"
49
- @update-custom-time="emits('update-custom-time', $event)"
50
- @delete-option="emits('delete-option')"
51
- @submit-options="emits('submit-options', $event)"
52
- />
53
-
54
- <div v-show="!props.data" class="empty-container">
55
- {{
56
- localization.inventoryMonitor
57
- .noPerformanceCurrentlySelectedMetrics
58
- }}
59
- </div>
60
-
61
- <div v-show="props.data">
62
- <div class="main-graphs-loader relative">
63
- <common-monitor-advanced-graph-view
64
- :loading="props.advancedLoading"
65
- :data="props.data"
66
- :update="update"
67
- :export="exportGraph"
68
- :selected-row="selectedRow"
69
- :dark-mode="props.darkMode"
70
- :formatted-datetime="props.formattedDatetime"
71
- :get-date-format="props.getDateFormat"
72
- :language="props.language"
73
- :selected-chart-type="props.selectedChartType"
74
- />
75
- <div class="datatable">
76
- <common-monitor-advanced-table
77
- :data="props.tableData"
78
- @select="onCheckSelectedRow"
79
- />
80
- </div>
81
- </div>
82
- </div>
83
- </div>
84
- </div>
85
- </div>
86
- </div>
87
- </template>
88
-
89
- <script setup lang="ts">
90
- import type { UI_I_Localization } from '~/lib/models/interfaces'
91
- import type { UI_T_AdvancedType } from '~/components/common/monitor/advanced/lib/models/types'
92
- import type { I_SeriesLine } from 'bfg-nuxt-3-graph/graph/lib/models/interfaces'
93
- import type { UI_I_MonitorGraphPayload } from '~/components/common/monitor/lib/models/interfaces'
94
- import type { UI_I_PerformanceItem } from '~/components/common/monitor/advanced/table/lib/models/interfaces'
95
- import type {
96
- UI_T_ChartHost,
97
- UI_T_ChartVm,
98
- } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/types'
99
- import type { UI_I_OptionsForm } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/interfaces'
100
- import type { UI_I_AdvancedCounterItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/interfaces'
101
- import type { UI_I_ObjectItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/models/interfaces'
102
- import type { UI_T_Project } from '~/lib/models/types'
103
- import { getCountCores } from '~/components/common/monitor/advanced/tools/lib/utils/countCores'
104
-
105
- const props = defineProps<{
106
- type: UI_T_AdvancedType
107
- advancedLoading: boolean
108
- data: I_SeriesLine | null
109
- cpuCoresDataData: I_SeriesLine | null
110
- tableData: UI_I_PerformanceItem[] | []
111
- language: string
112
- darkMode: boolean
113
- formattedDatetime: any
114
- getDateFormat: any
115
- selectedCountersKeys: number[]
116
- selectedMetric: UI_T_ChartHost | UI_T_ChartVm
117
- selectedMetricLocal: UI_T_ChartHost | UI_T_ChartVm
118
- selectedChartType: string
119
- selectedTimespanType: string
120
- unitsCount: number
121
- periodType: string
122
- selectedCustomTime: string
123
- selectedChartOptionName: string
124
- customDateFrom: string
125
- customDateTo: string
126
- customTimeFrom: string
127
- customTimeTo: string
128
- hostId: string
129
- selectedObjects: string
130
- project: UI_T_Project
131
- objectsLoading: boolean
132
- objectsData: UI_I_ObjectItem[]
133
- disabledPeriod?: boolean
134
- disabledView?: boolean
135
- isEmpty?: boolean
136
- }>()
137
-
138
- const emits = defineEmits<{
139
- (event: 'update-tools', value: UI_I_MonitorGraphPayload): void
140
- (event: 'open-advanced-page'): void
141
- (event: 'update-selected-row', value: number[]): void
142
- (event: 'select-row', value: UI_I_AdvancedCounterItem[]): void
143
- (event: 'select-metric-local', value: string): void
144
- (event: 'update-chart-type', value: string): void
145
- (event: 'update-timespan-type', value: string): void
146
- (event: 'update-unit-count', value: number): void
147
- (event: 'update-period-type', value: string): void
148
- (event: 'update-custom-time', value: string): void
149
- (event: 'delete-option'): void
150
- (event: 'submit-options', value: UI_I_OptionsForm): void
151
- (event: 'update:selected-timespan-type', value: string): void
152
- }>()
153
-
154
- const localization = computed<UI_I_Localization>(() => useLocal())
155
-
156
- const localSelectedTimespanType = computed<string>({
157
- get() {
158
- return props.selectedTimespanType
159
- },
160
- set(newValue) {
161
- emits('update:selected-timespan-type', newValue)
162
- },
163
- })
164
-
165
- const totalCores = ref<number>(0)
166
- let isFirstUpdate = true
167
- watch(
168
- () => props.cpuCoresDataData,
169
- (newValue) => {
170
- if (!newValue || !isFirstUpdate) return
171
-
172
- totalCores.value = getCountCores(newValue)
173
- isFirstUpdate = false
174
- },
175
- { immediate: true }
176
- )
177
-
178
- const exportGraph = ref<string>('')
179
- const onExporting = (key: string): void => {
180
- exportGraph.value = key
181
- }
182
-
183
- const onGetEmptyPage = (): void => emits('open-advanced-page')
184
-
185
- const update = ref<number>(0)
186
-
187
- const selectedRow = ref<number[]>([])
188
- const onCheckSelectedRow = (data: number[]): void => {
189
- selectedRow.value = data
190
- }
191
- </script>
192
-
193
- <style scoped lang="scss">
194
- #advanced-page {
195
- overflow-x: hidden;
196
- }
197
- .fill-parent {
198
- flex-direction: column;
199
-
200
- .empty-data {
201
- height: 100%;
202
- display: flex;
203
- align-items: center;
204
- justify-content: center;
205
- }
206
- .empty-container {
207
- min-height: 300px;
208
- height: 100%;
209
- background-color: var(--block-view-bg-color5);
210
- display: flex;
211
- flex-grow: 1;
212
- flex-shrink: 1;
213
- justify-content: center;
214
- align-items: center;
215
- width: 100%;
216
- }
217
-
218
- .routed-view-panel-layout {
219
- width: 100%;
220
- height: 100%;
221
- box-sizing: border-box;
222
- display: flex;
223
- flex-direction: column;
224
-
225
- .settingsViewHeader {
226
- display: flex;
227
- align-items: center;
228
- box-sizing: border-box;
229
-
230
- .settingsBlockTitle {
231
- font-size: 22px;
232
- font-weight: 400;
233
- color: var(--light-white-100);
234
- padding: 4px 0 4px 2px;
235
- }
236
- }
237
- }
238
- }
239
- </style>
1
+ <template>
2
+ <div id="advanced-page" class="fill-parent">
3
+ <div class="routed-view-panel-layout">
4
+ <div class="settingsViewHeader">
5
+ <h3 class="settingsBlockTitle m-0">
6
+ {{ localization.inventoryMonitor.advancedPerformance }}
7
+ </h3>
8
+ </div>
9
+ <div v-if="props.isEmpty" class="empty-data">
10
+ {{ localization.inventoryMonitor.emptyAdvancedGraphText }}
11
+ </div>
12
+ <div v-else class="fill-parent flex-column">
13
+ <div class="vertical-flex-container fill-parent">
14
+ <common-monitor-advanced-tools
15
+ v-model:selected-timespan-type="localSelectedTimespanType"
16
+ :type="props.type"
17
+ :start-date="props.data?.pointStart || 0"
18
+ :end-date="props.data?.pointEnd || 0"
19
+ :chart-title="props.data?.groupName || ''"
20
+ :language="props.language"
21
+ :selected-counters-keys="props.selectedCountersKeys"
22
+ :selected-metric="props.selectedMetric"
23
+ :selected-metric-local="props.selectedMetricLocal"
24
+ :disabled-period="props.disabledPeriod"
25
+ :disabled-view="props.disabledView"
26
+ :selected-chart-type="props.selectedChartType"
27
+ :units-count="props.unitsCount"
28
+ :period-type="props.periodType"
29
+ :selected-custom-time="props.selectedCustomTime"
30
+ :selected-chart-option-name="props.selectedChartOptionName"
31
+ :custom-date-from="props.customDateFrom"
32
+ :custom-date-to="props.customDateTo"
33
+ :custom-time-from="props.customTimeFrom"
34
+ :custom-time-to="props.customTimeTo"
35
+ :total-cores="totalCores"
36
+ :host-id="props.hostId"
37
+ :selected-objects="props.selectedObjects"
38
+ :project="props.project"
39
+ :objects-loading="props.objectsLoading"
40
+ :objects-data="props.objectsData"
41
+ :valid-date-end="props.validDateEnd"
42
+ :format-date="props.formatDate"
43
+ @update-tools="emits('update-tools', $event)"
44
+ @exporting="onExporting"
45
+ @open-advanced-page="onGetEmptyPage"
46
+ @select-row="emits('select-row', $event)"
47
+ @select-metric-local="emits('select-metric-local', $event)"
48
+ @update-chart-type="emits('update-chart-type', $event)"
49
+ @update-timespan-type="emits('update-timespan-type', $event)"
50
+ @update-unit-count="emits('update-unit-count', $event)"
51
+ @update-period-type="emits('update-period-type', $event)"
52
+ @update-custom-time="emits('update-custom-time', $event)"
53
+ @delete-option="emits('delete-option')"
54
+ @submit-options="emits('submit-options', $event)"
55
+ />
56
+
57
+ <div v-show="!props.data" class="empty-container">
58
+ {{
59
+ localization.inventoryMonitor
60
+ .noPerformanceCurrentlySelectedMetrics
61
+ }}
62
+ </div>
63
+
64
+ <div v-show="props.data">
65
+ <div class="main-graphs-loader relative">
66
+ <common-monitor-advanced-graph-view
67
+ :loading="props.advancedLoading"
68
+ :data="props.data"
69
+ :update="update"
70
+ :export="exportGraph"
71
+ :selected-row="selectedRow"
72
+ :dark-mode="props.darkMode"
73
+ :formatted-datetime="props.formattedDatetime"
74
+ :get-date-format="props.getDateFormat"
75
+ :language="props.language"
76
+ :selected-chart-type="props.selectedChartType"
77
+ />
78
+ <div class="datatable">
79
+ <common-monitor-advanced-table
80
+ :data="props.tableData"
81
+ @select="onCheckSelectedRow"
82
+ />
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ </div>
90
+ </template>
91
+
92
+ <script setup lang="ts">
93
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
94
+ import type { UI_T_AdvancedType } from '~/components/common/monitor/advanced/lib/models/types'
95
+ import type { I_SeriesLine } from 'bfg-nuxt-3-graph/graph/lib/models/interfaces'
96
+ import type { UI_I_MonitorGraphPayload } from '~/components/common/monitor/lib/models/interfaces'
97
+ import type { UI_I_PerformanceItem } from '~/components/common/monitor/advanced/table/lib/models/interfaces'
98
+ import type {
99
+ UI_T_ChartHost,
100
+ UI_T_ChartVm,
101
+ } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/types'
102
+ import type { UI_I_OptionsForm } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/interfaces'
103
+ import type { UI_I_AdvancedCounterItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/interfaces'
104
+ import type { UI_I_ObjectItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/models/interfaces'
105
+ import type { UI_T_Project } from '~/lib/models/types'
106
+ import { getCountCores } from '~/components/common/monitor/advanced/tools/lib/utils/countCores'
107
+
108
+ const props = defineProps<{
109
+ type: UI_T_AdvancedType
110
+ advancedLoading: boolean
111
+ data: I_SeriesLine | null
112
+ cpuCoresDataData: I_SeriesLine | null
113
+ tableData: UI_I_PerformanceItem[] | []
114
+ language: string
115
+ darkMode: boolean
116
+ formattedDatetime: any
117
+ getDateFormat: any
118
+ selectedCountersKeys: number[]
119
+ selectedMetric: UI_T_ChartHost | UI_T_ChartVm
120
+ selectedMetricLocal: UI_T_ChartHost | UI_T_ChartVm
121
+ selectedChartType: string
122
+ selectedTimespanType: string
123
+ unitsCount: number
124
+ periodType: string
125
+ selectedCustomTime: string
126
+ selectedChartOptionName: string
127
+ customDateFrom: string
128
+ customDateTo: string
129
+ customTimeFrom: string
130
+ customTimeTo: string
131
+ hostId: string
132
+ selectedObjects: string
133
+ project: UI_T_Project
134
+ objectsLoading: boolean
135
+ objectsData: UI_I_ObjectItem[]
136
+ validDateEnd: number
137
+ formatDate: string
138
+ disabledPeriod?: boolean
139
+ disabledView?: boolean
140
+ isEmpty?: boolean
141
+ }>()
142
+
143
+ const emits = defineEmits<{
144
+ (event: 'update-tools', value: UI_I_MonitorGraphPayload): void
145
+ (event: 'open-advanced-page'): void
146
+ (event: 'update-selected-row', value: number[]): void
147
+ (event: 'select-row', value: UI_I_AdvancedCounterItem[]): void
148
+ (event: 'select-metric-local', value: string): void
149
+ (event: 'update-chart-type', value: string): void
150
+ (event: 'update-timespan-type', value: string): void
151
+ (event: 'update-unit-count', value: number): void
152
+ (event: 'update-period-type', value: string): void
153
+ (event: 'update-custom-time', value: string): void
154
+ (event: 'delete-option'): void
155
+ (event: 'submit-options', value: UI_I_OptionsForm): void
156
+ (event: 'update:selected-timespan-type', value: string): void
157
+ }>()
158
+
159
+ const localization = computed<UI_I_Localization>(() => useLocal())
160
+
161
+ const localSelectedTimespanType = computed<string>({
162
+ get() {
163
+ return props.selectedTimespanType
164
+ },
165
+ set(newValue) {
166
+ emits('update:selected-timespan-type', newValue)
167
+ },
168
+ })
169
+
170
+ const totalCores = ref<number>(0)
171
+ let isFirstUpdate = true
172
+ watch(
173
+ () => props.cpuCoresDataData,
174
+ (newValue) => {
175
+ if (!newValue || !isFirstUpdate) return
176
+
177
+ totalCores.value = getCountCores(newValue)
178
+ isFirstUpdate = false
179
+ },
180
+ { immediate: true }
181
+ )
182
+
183
+ const exportGraph = ref<string>('')
184
+ const onExporting = (key: string): void => {
185
+ exportGraph.value = key
186
+ }
187
+
188
+ const onGetEmptyPage = (): void => emits('open-advanced-page')
189
+
190
+ const update = ref<number>(0)
191
+
192
+ const selectedRow = ref<number[]>([])
193
+ const onCheckSelectedRow = (data: number[]): void => {
194
+ selectedRow.value = data
195
+ }
196
+ </script>
197
+
198
+ <style scoped lang="scss">
199
+ #advanced-page {
200
+ overflow-x: hidden;
201
+ }
202
+ .fill-parent {
203
+ flex-direction: column;
204
+
205
+ .empty-data {
206
+ height: 100%;
207
+ display: flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ }
211
+ .empty-container {
212
+ min-height: 300px;
213
+ height: 100%;
214
+ background-color: var(--block-view-bg-color5);
215
+ display: flex;
216
+ flex-grow: 1;
217
+ flex-shrink: 1;
218
+ justify-content: center;
219
+ align-items: center;
220
+ width: 100%;
221
+ }
222
+
223
+ .routed-view-panel-layout {
224
+ width: 100%;
225
+ height: 100%;
226
+ box-sizing: border-box;
227
+ display: flex;
228
+ flex-direction: column;
229
+
230
+ .settingsViewHeader {
231
+ display: flex;
232
+ align-items: center;
233
+ box-sizing: border-box;
234
+
235
+ .settingsBlockTitle {
236
+ font-size: 22px;
237
+ font-weight: 400;
238
+ color: var(--light-white-100);
239
+ padding: 4px 0 4px 2px;
240
+ }
241
+ }
242
+ }
243
+ }
244
+ </style>