bfg-common 1.5.475 → 1.5.476

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 (53) hide show
  1. package/components/common/layout/theHeader/helpMenu/About.vue +2 -2
  2. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +4 -1
  3. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusOld.vue +1 -1
  4. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +1 -0
  5. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +1 -0
  6. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +1 -0
  7. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +84 -78
  8. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocketNew.vue +4 -1
  9. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/HotPlugNew.vue +4 -1
  10. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/maxCpu/MaxCpuNew.vue +4 -1
  11. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +4 -1
  12. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/SharesNew.vue +4 -1
  13. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/LimitNew.vue +4 -1
  14. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlugNew.vue +4 -1
  15. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +2 -0
  16. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/CacheNew.vue +4 -1
  17. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/File.vue +1 -0
  18. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/FileNew.vue +5 -1
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIopsNew.vue +4 -1
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +4 -1
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSize.vue +1 -0
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSizeNew.vue +5 -1
  23. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeNew.vue +4 -1
  24. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/ProvisioningNew.vue +4 -1
  25. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +4 -1
  26. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterTypeNew.vue +4 -1
  27. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +4 -1
  28. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +69 -66
  29. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +4 -1
  30. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +1 -0
  31. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +49 -42
  32. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +4 -1
  33. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +4 -1
  34. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +4 -1
  35. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/ReservationNew.vue +4 -1
  36. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/ModelNew.vue +4 -1
  37. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplaysNew.vue +4 -1
  38. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +4 -1
  39. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/DelayNew.vue +4 -1
  40. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +4 -1
  41. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +4 -1
  42. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +4 -1
  43. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +16 -4
  44. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +4 -1
  45. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +4 -1
  46. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +4 -1
  47. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +4 -1
  48. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +4 -1
  49. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +4 -1
  50. package/composables/useLocal.ts +6 -51
  51. package/composables/useLocalCommon.ts +39 -0
  52. package/{composables/productNameLocal.ts → lib/utils/localizationMapper.ts} +30 -30
  53. package/package.json +1 -1
@@ -72,8 +72,8 @@ const aboutDesc = computed<string[]>(() =>
72
72
  .replaceAll('{companyName}', companyName.value)
73
73
  .replaceAll('{trademark}', brandName.value).split('{url}')
74
74
  )
75
- const aboutDesc1 = computed<string>(() => aboutDesc.value[0].trim())
76
- const aboutDesc2 = computed<string>(() => aboutDesc.value[1].trim())
75
+ const aboutDesc1 = computed<string>(() => aboutDesc.value[0])
76
+ const aboutDesc2 = computed<string>(() => aboutDesc.value[1])
77
77
 
78
78
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
79
79
  </script>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`virtual-hardware-bus-stack-block-${props.componentType}-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">
5
8
  {{ localization.common.bus }}
@@ -2,7 +2,7 @@
2
2
  <div class="">
3
3
  <atoms-stack-block
4
4
  :has-children="false"
5
- :test-id="`virtual-hardware-bus-stack-block-${props.componentType}`"
5
+ :test-id="`virtual-hardware-bus-stack-block-${props.componentType}-${props.index}`"
6
6
  >
7
7
  <template #stackBlockKey>
8
8
  {{ localization.common.bus }}
@@ -70,6 +70,7 @@
70
70
  <common-vm-actions-common-customize-hardware-virtual-hardware-cd-dvd-drive-media
71
71
  v-if="selectedCdDvdDrive === 'datastoreIsoFile'"
72
72
  v-model:cd-dvd-media="cdDvdMedia"
73
+ :index="props.index"
73
74
  @browse="isShowFileModal = true"
74
75
  />
75
76
 
@@ -67,6 +67,7 @@
67
67
  <common-vm-actions-common-customize-hardware-virtual-hardware-cd-dvd-drive-media
68
68
  v-if="selectedCdDvdDrive === 'datastoreIsoFile'"
69
69
  v-model:cd-dvd-media="cdDvdMedia"
70
+ :index="props.index"
70
71
  @browse="isShowFileModal = true"
71
72
  />
72
73
 
@@ -2,6 +2,7 @@
2
2
  <common-vm-actions-common-customize-hardware-virtual-hardware-cd-dvd-drive-media-new
3
3
  v-if="isNewView"
4
4
  v-model:cd-dvd-media="cdDvdMedia"
5
+ :index="props.index"
5
6
  @browse="emits('browse')"
6
7
  />
7
8
  <common-vm-actions-common-customize-hardware-virtual-hardware-cd-dvd-drive-media-old
@@ -1,78 +1,84 @@
1
- <template>
2
- <ui-stack-block :has-children="false">
3
- <template #stackBlockKey>
4
- {{ localization.common.cdDvdMedia }}
5
- </template>
6
- <template #stackBlockContent>
7
- <div class="media-content flex-align-center">
8
- <ui-input
9
- id="vm-wizard-dvd-media-input"
10
- v-model="cdDvdMedia"
11
- test-id="vm-wizard-dvd-media-input"
12
- type="text"
13
- size="sm"
14
- disabled
15
- />
16
- <ui-button
17
- id="vm-wizard-dvd-media-button"
18
- test-id="vm-wizard-dvd-media-button"
19
- size="sm"
20
- class="media-button"
21
- variant="text"
22
- @click="emits('browse')"
23
- >
24
- {{ localization.vmWizard.browse }}
25
- </ui-button>
26
- <div class="divider"></div>
27
- <ui-button
28
- id="vm-wizard-dvd-media-eject"
29
- data-id="vm-wizard-dvd-media-eject"
30
- size="sm"
31
- class="eject-button"
32
- variant="text"
33
- type="error"
34
- @click="cdDvdMedia = ''"
35
- >
36
- {{ localization.vmWizard.eject }}
37
- </ui-button>
38
- </div>
39
- </template>
40
- </ui-stack-block>
41
- </template>
42
-
43
- <script setup lang="ts">
44
- import type { UI_I_Localization } from '~/lib/models/interfaces'
45
-
46
- const cdDvdMedia = defineModel<string>('cdDvdMedia', { required: true })
47
-
48
- const emits = defineEmits<{
49
- (event: 'browse'): void
50
- }>()
51
-
52
- const localization = computed<UI_I_Localization>(() => useLocal())
53
- </script>
54
-
55
- <style>
56
- :root {
57
- --media-content-border-color: #e9ebeda3;
58
- }
59
- :root.dark-theme {
60
- --media-content-border-color: #e9ebed1f;
61
- }
62
- </style>
63
- <style lang="scss" scoped>
64
- .media-content {
65
- gap: 12px;
66
-
67
- .media-button,
68
- .eject-button {
69
- white-space: nowrap;
70
- padding: 0;
71
- }
72
- .divider {
73
- width: 1px;
74
- height: 20px;
75
- background-color: var(--media-content-border-color);
76
- }
77
- }
78
- </style>
1
+ <template>
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`cd-dvd-media-stack-block-${props.index}`"
5
+ >
6
+ <template #stackBlockKey>
7
+ {{ localization.common.cdDvdMedia }}
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <div class="media-content flex-align-center">
11
+ <ui-input
12
+ id="vm-wizard-dvd-media-input"
13
+ v-model="cdDvdMedia"
14
+ test-id="vm-wizard-dvd-media-input"
15
+ type="text"
16
+ size="sm"
17
+ disabled
18
+ />
19
+ <ui-button
20
+ id="vm-wizard-dvd-media-button"
21
+ test-id="vm-wizard-dvd-media-button"
22
+ size="sm"
23
+ class="media-button"
24
+ variant="text"
25
+ @click="emits('browse')"
26
+ >
27
+ {{ localization.vmWizard.browse }}
28
+ </ui-button>
29
+ <div class="divider"></div>
30
+ <ui-button
31
+ id="vm-wizard-dvd-media-eject"
32
+ data-id="vm-wizard-dvd-media-eject"
33
+ size="sm"
34
+ class="eject-button"
35
+ variant="text"
36
+ type="error"
37
+ @click="cdDvdMedia = ''"
38
+ >
39
+ {{ localization.vmWizard.eject }}
40
+ </ui-button>
41
+ </div>
42
+ </template>
43
+ </ui-stack-block>
44
+ </template>
45
+
46
+ <script setup lang="ts">
47
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
48
+
49
+ const cdDvdMedia = defineModel<string>('cdDvdMedia', { required: true })
50
+
51
+ const props = defineProps<{
52
+ index: number
53
+ }>()
54
+ const emits = defineEmits<{
55
+ (event: 'browse'): void
56
+ }>()
57
+
58
+ const localization = computed<UI_I_Localization>(() => useLocal())
59
+ </script>
60
+
61
+ <style>
62
+ :root {
63
+ --media-content-border-color: #e9ebeda3;
64
+ }
65
+ :root.dark-theme {
66
+ --media-content-border-color: #e9ebed1f;
67
+ }
68
+ </style>
69
+ <style lang="scss" scoped>
70
+ .media-content {
71
+ gap: 12px;
72
+
73
+ .media-button,
74
+ .eject-button {
75
+ white-space: nowrap;
76
+ padding: 0;
77
+ }
78
+ .divider {
79
+ width: 1px;
80
+ height: 20px;
81
+ background-color: var(--media-content-border-color);
82
+ }
83
+ }
84
+ </style>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="cores-per-socket-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="cores-per-socket-title mt-2">{{ localization.common.coresPerSocket }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="cpu-hot-plug-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="cpu-hot-plug-title mt-2">
5
8
  {{ localization.common.cpuHotPlug }}</span
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="cpu-max-cpu-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  {{ localization.common.maxCpu }}
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="cpu-model-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.cpuModel }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="cpu-shares-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.shares }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`virtual-hardware-limit-stack-block-${props.componentType}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.limit }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="memory-hot-plug-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.memoryHotPlug }}
@@ -92,6 +92,7 @@
92
92
  <template #stackChildren>
93
93
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size
94
94
  :free-mb="props.maxHardDisk"
95
+ :index="props.index"
95
96
  />
96
97
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-location
97
98
  v-if="props.isNewType"
@@ -107,6 +108,7 @@
107
108
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file
108
109
  v-else
109
110
  :path="props.hardDisk?.source"
111
+ :index="props.index"
110
112
  />
111
113
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-provisioning
112
114
  v-model:disk-provisioning="diskProvisioning"
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-cache-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">
5
8
  {{ localization.common.cache }}
@@ -2,6 +2,7 @@
2
2
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file-new
3
3
  v-if="isNewView"
4
4
  :path="props.path"
5
+ :index="props.index"
5
6
  />
6
7
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file-old
7
8
  v-else
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-file-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.diskFile }}
@@ -18,6 +21,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
18
21
 
19
22
  const props = defineProps<{
20
23
  path: string
24
+ index: number
21
25
  }>()
22
26
  </script>
23
27
 
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-limit-iops-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.limitIops }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-location-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  {{ localization.common.location }}
5
8
  </template>
@@ -2,6 +2,7 @@
2
2
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size-new
3
3
  v-if="isNewView"
4
4
  :free-gb="freeGb"
5
+ :index="props.index"
5
6
  />
6
7
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size-old
7
8
  v-else
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-maximum-size-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title">
5
8
  {{ localization.common.maximumSize }}
@@ -16,6 +19,7 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
16
19
 
17
20
  const props = defineProps<{
18
21
  freeGb: number
22
+ index: number
19
23
  }>()
20
24
 
21
25
  const localization = computed<UI_I_Localization>(() => useLocal())
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-mode-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.diskMode }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-provisioning-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.diskProvisioning }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`hard-disk-sharing-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="limit-title mt-2">
5
8
  {{ localization.common.sharing }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`network-adapter-type-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">
5
8
  {{ localization.common.adapterType }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`network-adapter-mac-address-stack-block-${props.index}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.macAddress }}</span>
5
8
  </template>
@@ -1,66 +1,69 @@
1
- <template>
2
- <ui-stack-block :has-children="false">
3
- <template #stackBlockKey>
4
- {{ localization.common.pciDevice }}
5
- </template>
6
- <template #stackBlockContent>
7
- <ui-input
8
- :id="`direct-path-io-${props.pciDeviceIndex}`"
9
- v-model="model"
10
- :test-id="`direct-path-io-${props.pciDeviceIndex}-input`"
11
- type="text"
12
- size="sm"
13
- />
14
- </template>
15
- </ui-stack-block>
16
- </template>
17
-
18
- <script lang="ts" setup>
19
- import type { UI_I_Localization } from '~/lib/models/interfaces'
20
-
21
- const model = defineModel<string>({ required: true })
22
-
23
- const props = defineProps<{
24
- pciDeviceIndex: number
25
- }>()
26
-
27
- const localization = computed<UI_I_Localization>(() => useLocal())
28
- </script>
29
-
30
- <style lang="scss" scoped></style>
31
-
32
- <!--<template>-->
33
- <!-- <ui-stack-block :has-children="false">-->
34
- <!-- <template #stackBlockKey>-->
35
- <!-- <span>{{ localization.common.pciDevice }}</span>-->
36
- <!-- </template>-->
37
- <!-- <template #stackBlockContent>-->
38
- <!-- <ui-select-->
39
- <!-- id="direct-path-io"-->
40
- <!-- v-model="model"-->
41
- <!-- width="auto"-->
42
- <!-- :items="props.passthroughDevices"-->
43
- <!-- :test-id="`direct-path-io-select-${props.pciDeviceIndex}`"-->
44
- <!-- />-->
45
- <!-- </template>-->
46
- <!-- </ui-stack-block>-->
47
- <!--</template>-->
48
-
49
- <!--<script lang="ts" setup>-->
50
- <!--import type { UI_I_Localization } from '~/lib/models/interfaces'-->
51
- <!--import type {-->
52
- <!-- UI_I_ConfigureAllPciDevicesItem,-->
53
- <!-- UI_I_ConfigurePciDevicesTable,-->
54
- <!--} from '~/lib/models/store/host/interfaces'-->
55
-
56
- <!--const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()-->
57
-
58
- <!--const props = defineProps<{-->
59
- <!-- pciDeviceIndex: number-->
60
- <!-- passthroughDevices: UI_I_ConfigurePciDevicesTable-->
61
- <!--}>()-->
62
-
63
- <!--const localization = computed<UI_I_Localization>(() => useLocal())-->
64
- <!--</script>-->
65
-
66
- <!--<style lang="scss" scoped></style>-->
1
+ <template>
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
5
+ >
6
+ <template #stackBlockKey>
7
+ {{ localization.common.pciDevice }}
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <ui-input
11
+ :id="`direct-path-io-${props.pciDeviceIndex}`"
12
+ v-model="model"
13
+ :test-id="`direct-path-io-${props.pciDeviceIndex}-input`"
14
+ type="text"
15
+ size="sm"
16
+ />
17
+ </template>
18
+ </ui-stack-block>
19
+ </template>
20
+
21
+ <script lang="ts" setup>
22
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
23
+
24
+ const model = defineModel<string>({ required: true })
25
+
26
+ const props = defineProps<{
27
+ pciDeviceIndex: number
28
+ }>()
29
+
30
+ const localization = computed<UI_I_Localization>(() => useLocal())
31
+ </script>
32
+
33
+ <style lang="scss" scoped></style>
34
+
35
+ <!--<template>-->
36
+ <!-- <ui-stack-block :has-children="false">-->
37
+ <!-- <template #stackBlockKey>-->
38
+ <!-- <span>{{ localization.common.pciDevice }}</span>-->
39
+ <!-- </template>-->
40
+ <!-- <template #stackBlockContent>-->
41
+ <!-- <ui-select-->
42
+ <!-- id="direct-path-io"-->
43
+ <!-- v-model="model"-->
44
+ <!-- width="auto"-->
45
+ <!-- :items="props.passthroughDevices"-->
46
+ <!-- :test-id="`direct-path-io-select-${props.pciDeviceIndex}`"-->
47
+ <!-- />-->
48
+ <!-- </template>-->
49
+ <!-- </ui-stack-block>-->
50
+ <!--</template>-->
51
+
52
+ <!--<script lang="ts" setup>-->
53
+ <!--import type { UI_I_Localization } from '~/lib/models/interfaces'-->
54
+ <!--import type {-->
55
+ <!-- UI_I_ConfigureAllPciDevicesItem,-->
56
+ <!-- UI_I_ConfigurePciDevicesTable,-->
57
+ <!--} from '~/lib/models/store/host/interfaces'-->
58
+
59
+ <!--const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()-->
60
+
61
+ <!--const props = defineProps<{-->
62
+ <!-- pciDeviceIndex: number-->
63
+ <!-- passthroughDevices: UI_I_ConfigurePciDevicesTable-->
64
+ <!--}>()-->
65
+
66
+ <!--const localization = computed<UI_I_Localization>(() => useLocal())-->
67
+ <!--</script>-->
68
+
69
+ <!--<style lang="scss" scoped></style>-->
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`pci-device-dynamic-direct-path-io-stack-block-${props.pciDeviceIndex}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span>{{ localization.common.pciDevice }}</span>
5
8
  </template>
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note-new
3
3
  v-if="isNewView"
4
+ :pci-device-index="props.pciDeviceIndex"
4
5
  />
5
6
  <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note-old
6
7
  v-else
@@ -1,42 +1,49 @@
1
- <template>
2
- <ui-stack-block :has-children="false">
3
- <template #stackBlockContent>
4
- <div class="note-content">
5
- <ui-icon
6
- name="warning-outline"
7
- width="16px"
8
- heigth="16px"
9
- class="note-icon"
10
- color="#FBCE28"
11
- />
12
- <p class="note-text">
13
- {{ localization.common.note }}:
14
- {{ localization.common.pciDeviceNote }}
15
- </p>
16
- </div>
17
- </template>
18
- </ui-stack-block>
19
- </template>
20
-
21
- <script lang="ts" setup>
22
- import type { UI_I_Localization } from '~/lib/models/interfaces'
23
-
24
- const localization = computed<UI_I_Localization>(() => useLocal())
25
- </script>
26
-
27
- <style lang="scss" scoped>
28
- .note-content {
29
- display: flex;
30
- gap: 10px;
31
-
32
- .note-icon {
33
- min-width: 16px;
34
- }
35
-
36
- .note-text {
37
- font-size: 13px;
38
- line-height: 15.73px;
39
- color: #9da6ad;
40
- }
41
- }
42
- </style>
1
+ <template>
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`pci-device-note-stack-block-${props.pciDeviceIndex}`"
5
+ >
6
+ <template #stackBlockContent>
7
+ <div class="note-content">
8
+ <ui-icon
9
+ name="warning-outline"
10
+ width="16px"
11
+ heigth="16px"
12
+ class="note-icon"
13
+ color="#FBCE28"
14
+ />
15
+ <p class="note-text">
16
+ {{ localization.common.note }}:
17
+ {{ localization.common.pciDeviceNote }}
18
+ </p>
19
+ </div>
20
+ </template>
21
+ </ui-stack-block>
22
+ </template>
23
+
24
+ <script lang="ts" setup>
25
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
26
+
27
+ const props = defineProps<{
28
+ pciDeviceIndex: number
29
+ }>()
30
+
31
+ const localization = computed<UI_I_Localization>(() => useLocal())
32
+ </script>
33
+
34
+ <style lang="scss" scoped>
35
+ .note-content {
36
+ display: flex;
37
+ gap: 10px;
38
+
39
+ .note-icon {
40
+ min-width: 16px;
41
+ }
42
+
43
+ .note-text {
44
+ font-size: 13px;
45
+ line-height: 15.73px;
46
+ color: #9da6ad;
47
+ }
48
+ }
49
+ </style>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`pci-device-nvidia-grid-stack-block-${props.pciDeviceIndex}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  {{ localization.common.nvidiaGridGpuProfile }}
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`pci-device-type-selection-stack-block-${props.pciDeviceIndex}`"
5
+ >
3
6
  <template #stackBlockContent>
4
7
  <div class="type-selection-content">
5
8
  <div v-for="(item, index) in props.options" :key="item">
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="input-devices-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.inputDevices }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ :test-id="`virtual-hardware-reservation-stack-block-${props.componentType}`"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="reservation-title mt-2">
5
8
  {{ localization.common.reservation }}
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="video-card-model-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  {{ localization.common.videoCardModel }}
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="video-card-number-displays-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.numberDisplays }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="vide-card-total-video-memory-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  {{ localization.common.totalVideoMemory }}
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="boot-options-delay-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.bootDelay }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="boot-options-firmware-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.firmware }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="boot-options-menu-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.bootMenu }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="boot-options-order-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  {{ localization.common.bootOrder }}
5
8
  </template>
@@ -23,7 +23,10 @@
23
23
  </div>
24
24
  </template>
25
25
  <template #stackChildren>
26
- <ui-stack-block :has-children="false">
26
+ <ui-stack-block
27
+ :has-children="false"
28
+ test-id="general-options-vm-name-stack-block"
29
+ >
27
30
  <template #stackBlockKey>
28
31
  {{ props.nameLabel }}
29
32
  </template>
@@ -42,7 +45,10 @@
42
45
  </template>
43
46
  </ui-stack-block>
44
47
 
45
- <ui-stack-block :has-children="false">
48
+ <ui-stack-block
49
+ :has-children="false"
50
+ test-id="general-options-machine-type-stack-block"
51
+ >
46
52
  <template #stackBlockKey>
47
53
  <span class="mt-2">{{ localization.common.machineType }}</span>
48
54
  </template>
@@ -61,7 +67,10 @@
61
67
  </template>
62
68
  </ui-stack-block>
63
69
 
64
- <ui-stack-block :has-children="false">
70
+ <ui-stack-block
71
+ :has-children="false"
72
+ test-id="general-options-guest-os-family-stack-block"
73
+ >
65
74
  <template #stackBlockKey>
66
75
  <span class="mt-2">{{ localization.common.guestOsFamily }}</span>
67
76
  </template>
@@ -81,7 +90,10 @@
81
90
  </template>
82
91
  </ui-stack-block>
83
92
 
84
- <ui-stack-block :has-children="false">
93
+ <ui-stack-block
94
+ :has-children="false"
95
+ test-id="general-options-guest-os-version-stack-block"
96
+ >
85
97
  <template #stackBlockKey>
86
98
  <span class="mt-2">{{ localization.common.guestOsVersion }}</span>
87
99
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="remote-console-copy-paste-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.copyPaste }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="remote-console-file-transfer-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.fileTransfer }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="remote-console-folder-sharing-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.folderSharing }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="remote-console-keymap-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.keymap }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="remote-console-password-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.auth.password }}</span>
5
8
  </template>
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <ui-stack-block :has-children="false">
2
+ <ui-stack-block
3
+ :has-children="false"
4
+ test-id="remote-console-usb-redirection-stack-block"
5
+ >
3
6
  <template #stackBlockKey>
4
7
  <span class="mt-2">{{ localization.common.usbRedirection }}</span>
5
8
  </template>
@@ -1,51 +1,6 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import localAr from '~/assets/scss/clarity/local_ar.json'
3
- import localRu from '~/assets/localization/local_ru.json'
4
- import localEn from '~/assets/localization/local_en.json'
5
- import localHy from '~/assets/localization/local_hy.json'
6
- import localZh from '~/assets/localization/local_zh.json'
7
- import localKk from '~/assets/localization/local_kk.json'
8
- import localBe from '~/assets/localization/local_be.json'
9
-
10
- const locals = {
11
- localAr,
12
- localRu,
13
- localEn,
14
- localHy,
15
- localZh,
16
- localKk,
17
- localBe,
18
- }
19
- export const useLocal = (): UI_I_Localization => {
20
- const config = useRuntimeConfig()
21
-
22
- let code: string = config?.public?.LOCALIZATION_CODE?.toLowerCase() || 'ru'
23
-
24
- if (code === 'ar' && !useLocalStorage('rtl')) code = 'ru'
25
-
26
- document.getElementsByTagName('html')[0].setAttribute('lang', code)
27
-
28
- let result: UI_I_Localization = locals.localRu
29
- switch (code) {
30
- case 'ar':
31
- result = locals.localAr
32
- break
33
- case 'en':
34
- result = locals.localEn
35
- break
36
- case 'hy':
37
- result = locals.localHy
38
- break
39
- case 'zh':
40
- result = locals.localZh
41
- break
42
- case 'kk':
43
- result = locals.localKk
44
- break
45
- case 'be':
46
- result = locals.localBe
47
- break
48
- }
49
-
50
- return productNameLocal(result)
51
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import { useLocalCommon } from '~/composables/useLocalCommon'
3
+
4
+ export const useLocal = (): UI_I_Localization => {
5
+ return useLocalCommon()
6
+ }
@@ -0,0 +1,39 @@
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import localAr from '~/assets/scss/clarity/local_ar.json'
3
+ import localRu from '~/assets/localization/local_ru.json'
4
+ import localEn from '~/assets/localization/local_en.json'
5
+ import localHy from '~/assets/localization/local_hy.json'
6
+ import localZh from '~/assets/localization/local_zh.json'
7
+ import localKk from '~/assets/localization/local_kk.json'
8
+ import localBe from '~/assets/localization/local_be.json'
9
+ import { productNameLocal } from '~/lib/utils/localizationMapper'
10
+
11
+ const rawLocals: Record<string, any> = {
12
+ ar: localAr,
13
+ ru: localRu,
14
+ en: localEn,
15
+ hy: localHy,
16
+ zh: localZh,
17
+ kk: localKk,
18
+ be: localBe,
19
+ }
20
+
21
+ // Кешируем уже обработанные локали
22
+ const processedCache: Record<string, UI_I_Localization | undefined> = {}
23
+
24
+ export const useLocalCommon = (): UI_I_Localization => {
25
+ const config = useRuntimeConfig()
26
+ let code = String(config?.public?.LOCALIZATION_CODE || 'ru').toLowerCase()
27
+
28
+ if (code === 'ar' && !useLocalStorage('rtl')) code = 'ru'
29
+
30
+ if (typeof document !== 'undefined') document.documentElement.lang = code
31
+
32
+ // если в кеше нет — создаём и сохраняем
33
+ if (!processedCache[code]) {
34
+ const raw = rawLocals[code] || rawLocals['ru']
35
+ processedCache[code] = productNameLocal(raw)
36
+ }
37
+
38
+ return processedCache[code] as UI_I_Localization
39
+ }
@@ -1,30 +1,30 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type { UI_T_LanguageKey } from '~/lib/models/types'
3
-
4
- export function productNameLocal(
5
- localization: UI_I_Localization
6
- ): UI_I_Localization {
7
- const config = useRuntimeConfig()
8
-
9
- const productName =
10
- config.public.LOCALIZATION_CODE === 'ru'
11
- ? config.public.PRODUCT_NAME_RU
12
- : config.public.PRODUCT_NAME_EN
13
-
14
- return replaceProductNameRecursion(localization, productName)
15
- }
16
-
17
- const replaceProductNameRecursion = (
18
- localization: UI_I_Localization,
19
- productName: any
20
- ): UI_I_Localization => {
21
- for (const key of Object.keys(localization)) {
22
- let item = localization[key as UI_T_LanguageKey]
23
-
24
- for (const key2 of Object.keys(item)) {
25
- item[key2] = item[key2].replaceAll('{productName}', productName)
26
- }
27
- }
28
-
29
- return localization
30
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_T_LanguageKey } from '~/lib/models/types'
3
+
4
+ const replaceProductNameRecursion = (
5
+ localization: UI_I_Localization,
6
+ productName: any
7
+ ): UI_I_Localization => {
8
+ for (const key of Object.keys(localization)) {
9
+ let item = localization[key as UI_T_LanguageKey]
10
+
11
+ for (const key2 of Object.keys(item)) {
12
+ item[key2] = item[key2].replaceAll('{productName}', productName)
13
+ }
14
+ }
15
+
16
+ return localization
17
+ }
18
+
19
+ export const productNameLocal = (
20
+ localization: UI_I_Localization
21
+ ): UI_I_Localization => {
22
+ const config = useRuntimeConfig()
23
+
24
+ const productName =
25
+ config.public.LOCALIZATION_CODE === 'ru'
26
+ ? config.public.PRODUCT_NAME_RU
27
+ : config.public.PRODUCT_NAME_EN
28
+
29
+ return replaceProductNameRecursion(localization, productName)
30
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.5.475",
4
+ "version": "1.5.476",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",