bfg-common 1.6.3 → 1.6.4

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.
Files changed (65) hide show
  1. package/assets/localization/local_be.json +56 -4
  2. package/assets/localization/local_en.json +61 -9
  3. package/assets/localization/local_hy.json +57 -5
  4. package/assets/localization/local_kk.json +56 -4
  5. package/assets/localization/local_ru.json +60 -8
  6. package/assets/localization/local_zh.json +56 -4
  7. package/assets/scss/common/theme.scss +2 -2
  8. package/components/atoms/stack/StackBlock.vue +1 -1
  9. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +1 -1
  10. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +0 -1
  11. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +1 -0
  12. package/components/common/configure/physicalAdapters/PhysicalAdapters.vue +6 -0
  13. package/components/common/configure/physicalAdapters/PhysicalAdaptersNew.vue +219 -192
  14. package/components/common/configure/physicalAdapters/PhysicalAdaptersOld.vue +6 -4
  15. package/components/common/configure/physicalAdapters/buttons/Buttons.vue +1 -0
  16. package/components/common/configure/physicalAdapters/modals/edit/Edit.vue +26 -1
  17. package/components/common/configure/physicalAdapters/modals/edit/EditNew.vue +30 -1
  18. package/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces.ts +5 -0
  19. package/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations.ts +19 -0
  20. package/components/common/configure/physicalAdapters/tableView/TableViewNew.vue +12 -1
  21. package/components/common/configure/physicalAdapters/tableView/lib/config/physicalAdaptersTableConfigNew.ts +21 -21
  22. package/components/common/configure/physicalAdapters/tableView/lib/config/settings.ts +12 -5
  23. package/components/common/configure/physicalAdapters/tableView/lib/models/interfaces.ts +4 -1
  24. package/components/common/diagramMain/DiagramMain.vue +6 -0
  25. package/components/common/diagramMain/modals/Modals.vue +4 -0
  26. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +2 -2
  27. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +1 -1
  28. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +2 -2
  29. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +1 -1
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +5 -9
  31. package/components/common/monitor/utilization/New.vue +5 -0
  32. package/components/common/monitor/utilization/Old.vue +79 -0
  33. package/components/common/monitor/utilization/Utilization.vue +51 -0
  34. package/components/common/monitor/utilization/infoBlock/InfoBlock.vue +23 -0
  35. package/components/common/monitor/utilization/infoBlock/New.vue +5 -0
  36. package/components/common/monitor/utilization/infoBlock/Old.vue +185 -0
  37. package/components/common/monitor/utilization/lib/models/enums.ts +4 -0
  38. package/components/common/monitor/utilization/lib/models/interfaces.ts +25 -0
  39. package/components/common/monitor/utilization/lib/utils/index.ts +31 -0
  40. package/components/common/noDataProvided/NoDataProvidedNew.vue +1 -1
  41. package/components/common/pages/tasks/Tasks.vue +4 -1
  42. package/components/common/split/vertical/New.vue +11 -6
  43. package/components/common/vm/actions/add/New.vue +21 -6
  44. package/components/common/vm/actions/common/select/options/New.vue +10 -19
  45. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +13 -15
  46. package/components/common/vm/snapshots/DetailView.vue +6 -6
  47. package/components/common/wizards/common/steps/name/New.vue +1 -1
  48. package/components/common/wizards/datastore/add/New.vue +6 -0
  49. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
  50. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +1 -1
  51. package/components/common/wizards/network/add/Add.vue +13 -2
  52. package/components/common/wizards/network/add/AddNew.vue +22 -26
  53. package/components/common/wizards/network/add/lib/config/initialData.ts +4 -4
  54. package/components/common/wizards/network/add/lib/utils/utils.ts +1 -1
  55. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +2 -8
  56. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +2 -8
  57. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +10 -3
  58. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +5 -1
  59. package/components/common/wizards/network/add/validations/common.ts +1 -1
  60. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/New.vue +31 -13
  61. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/clusterTable.ts +340 -0
  62. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/hostTable.ts +3 -1
  63. package/lib/models/store/tasks/enums.ts +2 -0
  64. package/package.json +2 -2
  65. package/store/tasks/actions.ts +26 -8
@@ -11,6 +11,14 @@
11
11
  @submit="emits('send-edit-data')"
12
12
  >
13
13
  <template #content>
14
+ <ui-alert
15
+ v-if="!!errors.alert"
16
+ :messages="[errors.alert]"
17
+ test-id="virtual-functions-alert"
18
+ size="md"
19
+ class="virtual-functions-alert"
20
+ @hide="onHideAlert"
21
+ />
14
22
  <div class="form-group">
15
23
  <div class="form-group-speed">
16
24
  <label class="config-speed-title title">
@@ -30,7 +38,7 @@
30
38
  <div v-if="props.hasSpeed" class="form-group-sr">
31
39
  <ui-line margin="24px 0 16px" />
32
40
  <label class="sr-title title">
33
- {{ localization.common.status }}
41
+ {{ localization.common.srIov }}
34
42
  </label>
35
43
  <p class="sr-description">
36
44
  {{ localization.common.srIovDescription }}
@@ -59,6 +67,7 @@
59
67
  :placeholder="localization.common.virtualFunctions"
60
68
  size="md"
61
69
  type="number"
70
+ :error="sriovStatus ? errors.field : ''"
62
71
  :disabled="!sriovStatus"
63
72
  />
64
73
  </div>
@@ -85,6 +94,8 @@ import type { UI_I_ModalTexts } from '~/node_modules/bfg-uikit/components/ui/mod
85
94
  import type { UI_I_OptionItem } from '~/node_modules/bfg-common/components/atoms/lib/models/interfaces'
86
95
  import type { UI_I_Localization } from '~/lib/models/interfaces'
87
96
  import type { UI_I_SwitchAdapterItem } from '~/components/common/diagramMain/lib/models/interfaces'
97
+ import type { UI_I_SrOptionError } from '~/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces'
98
+ import { vfNumberValidationFunc } from '~/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations'
88
99
 
89
100
  const props = defineProps<{
90
101
  hasSpeed: boolean
@@ -109,6 +120,7 @@ const modalTexts = ref<UI_I_ModalTexts>({
109
120
  const configSpeed = defineModel<string>('config-speed')
110
121
  const sriovStatus = defineModel<boolean>('status')
111
122
  const numberOfFunctions = defineModel<number>('number-of-functions')
123
+ const errors = defineModel<UI_I_SrOptionError>('errors')
112
124
 
113
125
  const status = computed({
114
126
  get() {
@@ -118,6 +130,19 @@ const status = computed({
118
130
  sriovStatus.value = newValue === '1'
119
131
  },
120
132
  })
133
+
134
+ watch(
135
+ numberOfFunctions,
136
+ (newValue: number): void => {
137
+ errors.value.field = vfNumberValidationFunc(newValue, localization.value)
138
+ errors.value.alert = ''
139
+ },
140
+ { immediate: true }
141
+ )
142
+
143
+ const onHideAlert = (): void => {
144
+ errors.value.alert = ''
145
+ }
121
146
  </script>
122
147
 
123
148
  <style scoped lang="scss">
@@ -200,4 +225,8 @@ const status = computed({
200
225
  }
201
226
  }
202
227
  }
228
+
229
+ .virtual-functions-alert {
230
+ margin: 8px 32px;
231
+ }
203
232
  </style>
@@ -10,3 +10,8 @@ export interface UI_I_SrOption {
10
10
  value: string
11
11
  text: string
12
12
  }
13
+
14
+ export interface UI_I_SrOptionError {
15
+ alert: string
16
+ field: string
17
+ }
@@ -0,0 +1,19 @@
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+
3
+ export const vfNumberValidationFunc = (
4
+ vfNumber: number,
5
+ localization: UI_I_Localization,
6
+ isAlert = false
7
+ ): string => {
8
+ if (vfNumber !== 0 && !vfNumber) {
9
+ return isAlert
10
+ ? localization.inventoryConfigure.vfRequiredMessage
11
+ : localization.common.fieldRequired
12
+ } else if (vfNumber < 1 || vfNumber > 63) {
13
+ return isAlert
14
+ ? localization.inventoryConfigure.vfNotNegativeMessage
15
+ : localization.inventoryConfigure.vfNotNegativeMessage
16
+ }
17
+
18
+ return ''
19
+ }
@@ -170,7 +170,9 @@ const actions = computed<UI_I_ButtonsGroup>(() => [
170
170
  value: 'edit',
171
171
  testId: 'edit-physical-adapted',
172
172
  id: 'edit-physical-adapted',
173
+ iconName: 'edit',
173
174
  disabled: !props.hasSelectedAdapter,
175
+ development: true,
174
176
  },
175
177
  ])
176
178
 
@@ -247,6 +249,11 @@ const onShowEditModal = (id: string): void => {
247
249
  :deep(.table-container) {
248
250
  height: 100%;
249
251
  grid-template-rows: min-content auto min-content;
252
+
253
+ .title-container {
254
+ margin-right: 16px;
255
+ }
256
+
250
257
  &.full-width-search {
251
258
  grid-template-rows: min-content min-content auto min-content;
252
259
  }
@@ -322,7 +329,7 @@ const onShowEditModal = (id: string): void => {
322
329
  }
323
330
  }
324
331
  &-text {
325
- line-height: 16px;
332
+ line-height: 18px;
326
333
  }
327
334
  }
328
335
 
@@ -331,4 +338,8 @@ const onShowEditModal = (id: string): void => {
331
338
  white-space: nowrap;
332
339
  }
333
340
  }
341
+
342
+ :deep(.ui-button-group-dots-icon) {
343
+ padding-left: 0;
344
+ }
334
345
  </style>
@@ -8,96 +8,96 @@ import type { UI_I_PhysicalAdapter } from '~/components/common/configure/physica
8
8
  import { physicalAdaptersTableItemsTuple } from '~/components/common/configure/physicalAdapters/tableView/lib/config/tableKeys'
9
9
 
10
10
  export const getHeaderDataFunc = (
11
- localization: UI_I_Localization
11
+ localization: UI_I_Localization
12
12
  ): UI_I_DataTableHeader[] => [
13
13
  {
14
14
  col: 'col0',
15
- colName: [physicalAdaptersTableItemsTuple[0]],
15
+ colName: physicalAdaptersTableItemsTuple[0],
16
16
  text: localization.common[physicalAdaptersTableItemsTuple[0]],
17
17
  isSortable: true,
18
18
  sort: 'asc',
19
19
  sortColumn: true,
20
- width: '30%',
20
+ width: '160px',
21
21
  show: true,
22
22
  filter: true,
23
23
  },
24
24
  {
25
25
  col: 'col1',
26
- colName: [physicalAdaptersTableItemsTuple[1]],
26
+ colName: physicalAdaptersTableItemsTuple[1],
27
27
  text: localization.common[physicalAdaptersTableItemsTuple[1]],
28
28
  isSortable: true,
29
29
  sort: 'asc',
30
- width: '20%',
30
+ width: '200px',
31
31
  show: true,
32
32
  filter: true,
33
33
  },
34
34
  {
35
35
  col: 'col2',
36
- colName: [physicalAdaptersTableItemsTuple[2]],
36
+ colName: physicalAdaptersTableItemsTuple[2],
37
37
  text: localization.common[physicalAdaptersTableItemsTuple[2]],
38
38
  isSortable: true,
39
39
  sort: 'asc',
40
- width: '20%',
40
+ width: '240px',
41
41
  show: true,
42
42
  filter: true,
43
43
  },
44
44
  {
45
45
  col: 'col3',
46
- colName: [physicalAdaptersTableItemsTuple[3]],
46
+ colName: physicalAdaptersTableItemsTuple[3],
47
47
  text: localization.common[physicalAdaptersTableItemsTuple[3]],
48
48
  isSortable: true,
49
49
  sort: 'asc',
50
- width: '20%',
50
+ width: '140px',
51
51
  show: true,
52
52
  filter: true,
53
53
  },
54
54
  {
55
55
  col: 'col4',
56
- colName: [physicalAdaptersTableItemsTuple[4]],
56
+ colName: physicalAdaptersTableItemsTuple[4],
57
57
  text: localization.common[physicalAdaptersTableItemsTuple[4]],
58
58
  isSortable: true,
59
59
  sort: 'asc',
60
- width: '20%',
60
+ width: '176px',
61
61
  show: true,
62
62
  filter: true,
63
63
  },
64
64
  {
65
65
  col: 'col5',
66
- colName: [physicalAdaptersTableItemsTuple[5]],
66
+ colName: physicalAdaptersTableItemsTuple[5],
67
67
  text: localization.common[physicalAdaptersTableItemsTuple[5]],
68
68
  isSortable: true,
69
69
  sort: 'asc',
70
- width: '20%',
70
+ width: '174px',
71
71
  show: true,
72
72
  filter: true,
73
73
  },
74
74
  {
75
75
  col: 'col6',
76
- colName: [physicalAdaptersTableItemsTuple[6]],
76
+ colName: physicalAdaptersTableItemsTuple[6],
77
77
  text: localization.common[physicalAdaptersTableItemsTuple[6]],
78
78
  isSortable: true,
79
79
  sort: 'asc',
80
- width: '20%',
80
+ width: '200px',
81
81
  show: true,
82
82
  filter: true,
83
83
  },
84
84
  {
85
85
  col: 'col7',
86
- colName: [physicalAdaptersTableItemsTuple[7]],
86
+ colName: physicalAdaptersTableItemsTuple[7],
87
87
  text: localization.common[physicalAdaptersTableItemsTuple[7]],
88
88
  isSortable: true,
89
89
  sort: 'asc',
90
- width: '20%',
90
+ width: '200px',
91
91
  show: true,
92
92
  filter: true,
93
93
  },
94
94
  {
95
95
  col: 'col8',
96
- colName: [physicalAdaptersTableItemsTuple[8]],
96
+ colName: physicalAdaptersTableItemsTuple[8],
97
97
  text: localization.common[physicalAdaptersTableItemsTuple[8]],
98
98
  isSortable: true,
99
99
  sort: 'asc',
100
- width: '20%',
100
+ width: '140px',
101
101
  show: true,
102
102
  filter: true,
103
103
  },
@@ -131,8 +131,8 @@ export const options: UI_I_DataTableOptions = {
131
131
  }
132
132
 
133
133
  export const getBodyDataFunc = (
134
- bodyData: UI_I_PhysicalAdapter[],
135
- selectedRow: number
134
+ bodyData: UI_I_PhysicalAdapter[],
135
+ selectedRow: number
136
136
  ): UI_I_DataTableBody[] => {
137
137
  return bodyData.map((adapter: UI_I_PhysicalAdapter, index: number) => {
138
138
  return {
@@ -11,22 +11,22 @@ export const adapterViewSettingsModalTabsFunc = (
11
11
  {
12
12
  text: localization.common.all,
13
13
  value: 0,
14
- testId: 'physical-adapter-view-all-settings'
14
+ testId: 'physical-adapter-view-all-settings',
15
15
  },
16
16
  {
17
17
  text: localization.common.properties,
18
18
  value: 1,
19
- testId: 'physical-adapter-view-properties-setting'
19
+ testId: 'physical-adapter-view-properties-setting',
20
20
  },
21
21
  {
22
22
  text: localization.common.cdp,
23
23
  value: 2,
24
- testId: 'physical-adapter-view-cdp-setting'
24
+ testId: 'physical-adapter-view-cdp-setting',
25
25
  },
26
26
  {
27
27
  text: localization.common.lldp,
28
28
  value: 3,
29
- testId: 'physical-adapter-view-lldp-setting'
29
+ testId: 'physical-adapter-view-lldp-setting',
30
30
  },
31
31
  ]
32
32
 
@@ -36,6 +36,7 @@ export const adapterViewSettingsFunc = (
36
36
  ): UI_I_ViewSettingsFields[] => {
37
37
  return [
38
38
  {
39
+ title: localization.common.properties,
39
40
  id: 1,
40
41
  type: 1,
41
42
  rows: [
@@ -67,6 +68,8 @@ export const adapterViewSettingsFunc = (
67
68
  value: initialData.carrier
68
69
  ? localization.common.connected
69
70
  : localization.common.disconnected,
71
+ status: true,
72
+ color: initialData.carrier,
70
73
  },
71
74
  {
72
75
  name: localization.common.actualSpeedDuplex,
@@ -102,7 +105,11 @@ export const adapterViewSettingsFunc = (
102
105
  rows: [
103
106
  {
104
107
  name: localization.common.status,
105
- value: !initialData.srIov ? localization.common.notSupported : '',
108
+ value: !initialData.srIov
109
+ ? localization.common.notSupported
110
+ : localization.common.supported,
111
+ status: true,
112
+ color: initialData.srIov,
106
113
  },
107
114
  ],
108
115
  },
@@ -13,7 +13,10 @@ export interface UI_I_PhysicalAdapter {
13
13
 
14
14
  export interface UI_I_ViewSettingsFieldsRow {
15
15
  name: string
16
- value: string | string[]
16
+ value?: string | string[] | undefined
17
+ color?: boolean
18
+ status?: boolean
19
+ icon?: string
17
20
  }
18
21
 
19
22
  export interface UI_I_ViewSettingsFields {
@@ -74,6 +74,8 @@
74
74
  :selected-switch-id="selectedSwitchId"
75
75
  :tcp-stacks="props.tcpStacks"
76
76
  :is-networking-loading="props.isNetworkingLoading"
77
+ :is-get-existing-switches-loading="props.isGetExistingSwitchesLoading"
78
+ :is-get-tcp-stack-loading="props.isGetTcpStackLoading"
77
79
  :networks-list="props.networksList"
78
80
  :is-migrate-adapter-loading="props.isMigrateAdapterLoading"
79
81
  :diagrams-data="props.diagramsData"
@@ -172,6 +174,8 @@ const props = withDefaults(
172
174
  diagramsData?: UI_I_DiagramData[]
173
175
  isManageAdaptersModalLoading?: boolean
174
176
  isNetworkingLoading?: boolean
177
+ isGetExistingSwitchesLoading?: boolean
178
+ isGetTcpStackLoading?: boolean
175
179
  isRemoveModalLoading?: boolean
176
180
  isEditModalLoading?: boolean
177
181
  isMigrateAdapterLoading?: boolean
@@ -193,6 +197,8 @@ const props = withDefaults(
193
197
  diagramsData: [],
194
198
  isManageAdaptersModalLoading: false,
195
199
  isNetworkingLoading: false,
200
+ isGetExistingSwitchesLoading: false,
201
+ isGetTcpStackLoading: false,
196
202
  isRemoveModalLoading: false,
197
203
  isEditModalLoading: false,
198
204
  isMigrateAdapterLoading: false,
@@ -183,6 +183,8 @@
183
183
  :tcp-stacks="props.tcpStacks"
184
184
  :diagrams-data="props.diagramsData"
185
185
  :is-networking-loading="props.isNetworkingLoading"
186
+ :is-get-existing-switches-loading="props.isGetExistingSwitchesLoading"
187
+ :is-get-tcp-stack-loading="props.isGetTcpStackLoading"
186
188
  :host-name="props.hostName"
187
189
  :project="props.project"
188
190
  @check-network-label="onCheckNetworkLabel"
@@ -274,6 +276,8 @@ const props = defineProps<{
274
276
  selectedSwitchId: string
275
277
  tcpStacks: UI_I_TCPStack[]
276
278
  isNetworkingLoading: boolean
279
+ isGetExistingSwitchesLoading: boolean
280
+ isGetTcpStackLoading: boolean
277
281
  networksList: UI_I_Network[]
278
282
  isMigrateAdapterLoading: boolean
279
283
  diagramsData: UI_I_DiagramData[]
@@ -141,7 +141,7 @@ const isShowErrorMessage = computed<boolean>(
141
141
 
142
142
  const fieldsValues = ref<UI_I_PropertiesFields>(
143
143
  useDeepCopy({
144
- vlanId: props.initialData.vlanId || `${localization.value.common.none} (0)`,
144
+ vlanId: props.initialData.vlanId || `${localization.value.common.none2} (0)`,
145
145
  networkLabel: props.initialData.networkLabel || 'Network',
146
146
  })
147
147
  )
@@ -180,7 +180,7 @@ const setMessageOnChangedField = (
180
180
 
181
181
  if (
182
182
  name === 'vlanId' &&
183
- values !== `${localization.value.common.none} (0)` &&
183
+ values !== `${localization.value.common.none2} (0)` &&
184
184
  values !== `${localization.value.common.all} (4095)` &&
185
185
  (isNumberInRange(values, 0, 4095) || values === '')
186
186
  ) {
@@ -18,7 +18,7 @@ export const vmKernelAdapterViewSettingsFunc = (
18
18
  type: 0,
19
19
  rows: [
20
20
  { name: localization.common.networkLabel, value: '' },
21
- { name: localization.common.vlanId, value: `${localization.common.none} (0)` },
21
+ { name: localization.common.vlanId, value: `${localization.common.none2} (0)` },
22
22
  { name: localization.common.tcpIpStack, value: 'Default' },
23
23
  { name: localization.common.enabledServices },
24
24
  ],
@@ -112,7 +112,7 @@ const title = computed<string>(
112
112
 
113
113
  const connectionSettings = ref<UI_I_ConnectionSettings>({
114
114
  networkLabel: 'VM Network',
115
- vlanId: `${localization.value.common.none} (0)`,
115
+ vlanId: `${localization.value.common.none2} (0)`,
116
116
  })
117
117
 
118
118
  const vmkernelAdapter = ref<UI_I_SelectVmkernelAdapter>({
@@ -262,7 +262,7 @@ const reset = (): void => {
262
262
  wizard.reset()
263
263
  connectionSettings.value = {
264
264
  networkLabel: 'VM Network',
265
- vlanId: `${localization.value.common.none} (0)`,
265
+ vlanId: `${localization.value.common.none2} (0)`,
266
266
  }
267
267
  vmkernelAdapter.value = {
268
268
  vm: '',
@@ -14,6 +14,6 @@ export const checkVlanId = (
14
14
  vlanId: string,
15
15
  localization: UI_I_Localization
16
16
  ): boolean =>
17
- vlanId !== `${localization.common.none} (0)` &&
17
+ vlanId !== `${localization.common.none2} (0)` &&
18
18
  vlanId !== `${localization.common.all} (4095)` &&
19
19
  (isIntegerNumberInRange(vlanId, 0, 4095) || vlanId === '')
@@ -15,13 +15,9 @@
15
15
  />
16
16
  </div>
17
17
 
18
- <div class="description second-description">
19
- {{ localization.myPreferences.showNotificationDescription }}
20
- </div>
21
-
22
- <div class="flex-align-center">
18
+ <div class="flex-align-center second-description">
23
19
  <label for="show-notification">{{
24
- localization.myPreferences.showNotification
20
+ localization.myPreferences.showNotificationDescription
25
21
  }}</label>
26
22
  <input
27
23
  id="show-notification"
@@ -63,10 +59,10 @@ window.tools = new Proxy(
63
59
  <style lang="scss" scoped>
64
60
  .description {
65
61
  margin-bottom: 10px;
62
+ }
66
63
 
67
- &.second-description {
68
- margin-top: 20px;
69
- }
64
+ .second-description {
65
+ margin-top: 20px;
70
66
  }
71
67
 
72
68
  label {
@@ -0,0 +1,5 @@
1
+ <template>New</template>
2
+
3
+ <script setup lang="ts"></script>
4
+
5
+ <style scoped lang="scss"></style>
@@ -0,0 +1,79 @@
1
+ <template>
2
+ <div class="logs__wrapper flex flex-col h-full">
3
+ <common-headline :headline="localization.common.utilization" class="mb-1" />
4
+
5
+ <div class="utilization-body-container">
6
+ <div class="utilization-info-block-flex-container">
7
+ <template v-for="(item, key) in allDataLocal" :key="key">
8
+ <common-monitor-utilization-info-block
9
+ v-if="item.isShow"
10
+ :info-data="item"
11
+ />
12
+ </template>
13
+ </div>
14
+
15
+ <div class="utilization-column-manage-container relative">
16
+ <ui-icon
17
+ name="settings"
18
+ width="24px"
19
+ height="24px"
20
+ @click="isShowColumnManage = !isShowColumnManage"
21
+ />
22
+
23
+ <atoms-popup-simple-popup
24
+ v-model="isShowColumnManage"
25
+ test-id="utilization-column-manage-popup"
26
+ top="0"
27
+ right="0"
28
+ >
29
+ <li v-for="(item, key) in allDataLocal" :key="key" class="list-item">
30
+ <input
31
+ v-model="item.isShow"
32
+ :id="`utilization-column-manage-${item.id}`"
33
+ type="checkbox"
34
+ />
35
+ <label :for="`utilization-column-manage-${item.id}`">{{
36
+ item.title
37
+ }}</label>
38
+ </li>
39
+ </atoms-popup-simple-popup>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </template>
44
+
45
+ <script setup lang="ts">
46
+ import type { UI_I_UtilizationDataItem } from '~/components/common/monitor/utilization/lib/models/interfaces'
47
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
48
+
49
+ const allDataLocal = defineModel<UI_I_UtilizationDataItem[]>('all-data')
50
+
51
+ const localization = computed<UI_I_Localization>(() => useLocal())
52
+
53
+ const isShowColumnManage = ref<boolean>(false)
54
+ </script>
55
+
56
+ <style scoped lang="scss">
57
+ .utilization-body-container {
58
+ display: flex;
59
+ align-items: flex-start;
60
+ justify-content: space-between;
61
+
62
+ .utilization-info-block-flex-container {
63
+ display: flex;
64
+ flex-wrap: wrap;
65
+ gap: 20px;
66
+ }
67
+ .utilization-column-manage-container {
68
+ :deep(.close-wrapper) {
69
+ display: none;
70
+ }
71
+ .list-item {
72
+ white-space: nowrap;
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 5px;
76
+ }
77
+ }
78
+ }
79
+ </style>
@@ -0,0 +1,51 @@
1
+ <template>
2
+ <component :is="currentComponent" v-model:all-data="constructedData" />
3
+ </template>
4
+
5
+ <script setup lang="ts">
6
+ import type {
7
+ API_UI_I_UtilizationData,
8
+ UI_I_UtilizationDataItem,
9
+ } from '~/components/common/monitor/utilization/lib/models/interfaces'
10
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
11
+ import { constructApiData } from '~/components/common/monitor/utilization/lib/utils'
12
+
13
+ const props = defineProps<{
14
+ apiData: API_UI_I_UtilizationData
15
+ }>()
16
+
17
+ const { $store }: any = useNuxtApp()
18
+
19
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
20
+
21
+ const currentComponent = computed(() =>
22
+ isNewView.value
23
+ ? defineAsyncComponent(() => import('./New.vue'))
24
+ : defineAsyncComponent(() => import('./Old.vue'))
25
+ )
26
+
27
+ const localization = computed<UI_I_Localization>(() => useLocal())
28
+
29
+ const constructedData = ref<UI_I_UtilizationDataItem[]>([])
30
+
31
+ watch(
32
+ () => props.apiData,
33
+ () => {
34
+ !constructedData.value.length &&
35
+ (constructedData.value = constructApiData(
36
+ props.apiData,
37
+ localization.value
38
+ ))
39
+ },
40
+ { immediate: true, deep: true }
41
+ )
42
+ watch(
43
+ () => localization.value,
44
+ () => {
45
+ constructedData.value = constructApiData(props.apiData, localization.value)
46
+ },
47
+ { deep: true }
48
+ )
49
+ </script>
50
+
51
+ <style scoped lang="scss"></style>
@@ -0,0 +1,23 @@
1
+ <template>
2
+ <component :is="currentComponent" :info-data="props.infoData" />
3
+ </template>
4
+
5
+ <script setup lang="ts">
6
+ import type { UI_I_UtilizationDataItem } from '~/components/common/monitor/utilization/lib/models/interfaces'
7
+
8
+ const props = defineProps<{
9
+ infoData: UI_I_UtilizationDataItem
10
+ }>()
11
+
12
+ const { $store }: any = useNuxtApp()
13
+
14
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
15
+
16
+ const currentComponent = computed(() =>
17
+ isNewView.value
18
+ ? defineAsyncComponent(() => import('./New.vue'))
19
+ : defineAsyncComponent(() => import('./Old.vue'))
20
+ )
21
+ </script>
22
+
23
+ <style scoped lang="scss"></style>
@@ -0,0 +1,5 @@
1
+ <template>New</template>
2
+
3
+ <script setup lang="ts"></script>
4
+
5
+ <style scoped lang="scss"></style>