bfg-common 1.0.15 → 1.0.17

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 (120) hide show
  1. package/components/atoms/alert/Notification.vue +167 -167
  2. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  3. package/components/atoms/combobox/Combobox.vue +131 -131
  4. package/components/atoms/datepicker/Datepicker.vue +612 -612
  5. package/components/atoms/dropdown/tree/Tree.vue +134 -134
  6. package/components/atoms/list/SelectList.vue +62 -62
  7. package/components/atoms/modal/bySteps/BySteps.vue +234 -234
  8. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +174 -174
  9. package/components/atoms/nav/NavBar.vue +116 -116
  10. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  11. package/components/atoms/notificationBar/NotificationBar.vue +175 -175
  12. package/components/atoms/perPage/PerPage.vue +52 -52
  13. package/components/atoms/popup/SimplePopup.vue +90 -90
  14. package/components/atoms/step/VerticalStep.vue +104 -104
  15. package/components/atoms/switch/Switch.vue +107 -107
  16. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +204 -204
  17. package/components/atoms/table/dataGrid/DataGridPage.vue +189 -189
  18. package/components/atoms/table/dataGrid/DataGridPagination.vue +83 -83
  19. package/components/atoms/table/dataGrid/config/itemsPerPage.ts +20 -20
  20. package/components/atoms/tabs/Tabs.vue +189 -189
  21. package/components/atoms/tooltip/Signpost.vue +224 -224
  22. package/components/common/accordion/Accordion.vue +176 -176
  23. package/components/common/accordion/Recursion.vue +195 -195
  24. package/components/common/adapterManager/AdapterManager.vue +9 -9
  25. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  26. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  27. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  28. package/components/common/adapterManager/ui/table/Table.vue +2 -2
  29. package/components/common/addNetworking/AddNetworking.vue +2 -2
  30. package/components/common/addNetworking/config/sendData.ts +1 -1
  31. package/components/common/addNetworking/mappers/mappers.ts +1 -1
  32. package/components/common/browse/Browse.vue +182 -182
  33. package/components/common/browse/blocks/Title.vue +66 -66
  34. package/components/common/diagramMain/DiagramMain.vue +2 -2
  35. package/components/common/diagramMain/Header.vue +160 -160
  36. package/components/common/diagramMain/adapter/AdapterItem.vue +227 -227
  37. package/components/common/diagramMain/adapter/AdapterItems.vue +57 -57
  38. package/components/common/diagramMain/config/initial.ts +1 -1
  39. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +1 -1
  40. package/components/common/diagramMain/modals/config/initial.ts +31 -45
  41. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +6 -5
  42. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +9 -4
  43. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +2 -1
  44. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +5 -4
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  46. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  47. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  48. package/components/common/diagramMain/modals/viewSettings/Info.vue +94 -94
  49. package/components/common/diagramMain/models/interfaces.ts +53 -74
  50. package/components/common/diagramMain/models/types.ts +1 -1
  51. package/components/common/diagramMain/network/Contents.vue +238 -238
  52. package/components/common/feedback/Buttons.vue +232 -232
  53. package/components/common/feedback/Message.vue +468 -468
  54. package/components/common/feedback/VisitPortal.vue +54 -54
  55. package/components/common/modals/Rename.vue +165 -165
  56. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/Form.vue +388 -388
  57. package/components/common/perPage/PerPage.vue +51 -51
  58. package/components/common/recursionTree/RecursionTree.vue +201 -201
  59. package/components/common/vm/actions/add/Add.vue +687 -687
  60. package/components/common/vm/actions/add/FolderTreeView.vue +83 -83
  61. package/components/common/vm/actions/add/config/capabilities.ts +670 -670
  62. package/components/common/vm/actions/add/customizeHardware/CustomizeHardware.vue +1 -1
  63. package/components/common/vm/actions/add/customizeHardware/virtualHardware/browseView/BrowseView.vue +203 -203
  64. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +55 -55
  65. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/CoresPerSocket.vue +1 -1
  66. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/Cpu.vue +8 -5
  67. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/CpuModel.vue +2 -2
  68. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/MaxCpu.vue +10 -4
  69. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/shares/Shares.vue +7 -3
  70. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/Limit.vue +7 -3
  71. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/Memory.vue +9 -5
  72. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/Location.vue +10 -10
  73. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +10 -6
  74. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/cache/Cache.vue +1 -1
  75. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIops.vue +7 -3
  76. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/provisioning/Provisioning.vue +2 -2
  77. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/Location.vue +1 -1
  78. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +256 -252
  79. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterType.vue +86 -86
  80. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +6 -6
  81. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +3 -3
  82. package/components/common/vm/actions/add/customizeHardware/virtualHardware/reservation/Reservation.vue +231 -228
  83. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/TotalVideoMemory.vue +1 -1
  84. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/VideoCard.vue +173 -169
  85. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +1 -1
  86. package/components/common/vm/actions/add/customizeHardware/vmoptions/Vmoptions.vue +145 -141
  87. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/BootOptions.vue +1 -1
  88. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +1 -1
  89. package/components/common/vm/actions/add/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +114 -114
  90. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +7 -3
  91. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/imgCompression/ImgCompression.vue +1 -1
  92. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/jpegCompression/JpegCompression.vue +1 -1
  93. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +50 -50
  94. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/mouseMode/MouseMode.vue +52 -52
  95. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/streamingMode/StreamingMode.vue +1 -1
  96. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/type/Type.vue +1 -1
  97. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/zlibCompression/ZlibCompression.vue +1 -1
  98. package/components/common/vm/actions/add/select/compatibility/Compatibility.vue +6 -6
  99. package/components/common/vm/actions/add/select/computeResource/ComputeResource.vue +170 -170
  100. package/components/common/vm/actions/add/select/computeResource/TreeView.vue +126 -126
  101. package/components/common/vm/actions/add/select/name/Name.vue +173 -173
  102. package/components/common/vm/actions/add/select/os/os.vue +221 -221
  103. package/components/common/vm/actions/add/utils.ts +118 -118
  104. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/TablesView.vue +141 -141
  105. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +373 -373
  106. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +123 -123
  107. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  108. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +131 -131
  109. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  110. package/models/store/storage/interfaces.ts +32 -32
  111. package/package.json +1 -1
  112. package/plugins/recursion.ts +230 -230
  113. package/public/spice-console/application/codec.js +257 -257
  114. package/public/spice-console/lib/rasterEngine.js +907 -907
  115. package/public/spice-console-minify/lib/decoder/dixie.min.js +4 -4
  116. package/public/spice-console-minify/lib/jgestures.min.js +24 -24
  117. package/public/spice-console-minify/lib/jquery-2.0.3.min.js +24 -24
  118. package/public/spice-console-minify/lib/jquery-mousewheel.min.js +11 -11
  119. package/public/spice-console-minify/lib/jquery-visibility.min.js +1 -1
  120. package/public/spice-console-minify/lib/lodash.4.0.0.min.js +5 -5
@@ -96,7 +96,7 @@ import { navItemsFunc } from '~/components/common/vm/actions/add/customizeHardwa
96
96
 
97
97
  const props = defineProps<{
98
98
  vmName: string
99
- errorValidationFields: UI_I_ErrorValidationField<string>[]
99
+ errorValidationFields: UI_I_ErrorValidationField[]
100
100
  storage: UI_I_DatastoreTableItem | null
101
101
  guestMachineType: UI_I_OptionItem | null
102
102
  guestOsFamily: UI_I_OptionItem | null
@@ -1,203 +1,203 @@
1
- <template>
2
- <div>
3
- <common-browse
4
- v-model:selected-file="selectedFile"
5
- v-model:selected-file-type="selectedFileType"
6
- :show="props.show"
7
- :nodes="props.nodes"
8
- :files="files"
9
- :info="selectedNodeInfo"
10
- :file-types="props.fileTypes"
11
- @get-nodes="onGetCurrentDirNodes"
12
- @select-node="onSelectNode"
13
- @submit="onSubmit"
14
- @hide="emits('hide')"
15
- />
16
- </div>
17
- </template>
18
-
19
- <script lang="ts" setup>
20
- import { UI_I_FileTreeNode } from '~/components/models/interfaces'
21
- import { UI_I_TablePayload } from '~/models/store/interfaces'
22
- import { UI_I_FolderOrFileTreePayload } from '~/models/store/storage/interfaces'
23
- import { UI_I_CurrentDirNodesArguments } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/browseView/models/interfaces'
24
- import { UI_I_Localization } from '~/models/interfaces'
25
- import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
26
- import { UI_I_FileInfo } from '~/components/common/browse/models/interfaces'
27
-
28
- const props = defineProps<{
29
- show: boolean
30
- nodes: UI_I_FileTreeNode[]
31
- files: UI_I_FileTreeNode[]
32
- fileTypes?: UI_I_OptionItem[]
33
- }>()
34
- const emits = defineEmits<{
35
- (event: 'hide'): void
36
- (event: 'submit', value: UI_I_FileTreeNode | null): void
37
- (event: 'get-storage', value: UI_I_TablePayload): void
38
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
39
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
40
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
41
- }>()
42
-
43
- const { $recursion } = useNuxtApp()
44
-
45
- const localization = computed<UI_I_Localization>(() => useLocal())
46
-
47
- const selectedFileType = ref<string | null>(null)
48
- watch(
49
- selectedFileType,
50
- (newValue) => {
51
- if (newValue === null || selectedFile.value === null) return
52
-
53
- const isExist = files.value.includes(selectedFile.value)
54
- if (!isExist) selectedFile.value = null
55
- },
56
- { immediate: true, deep: true }
57
- )
58
- watch(
59
- () => props.fileTypes,
60
- (newValue) => {
61
- if (newValue?.length) selectedFileType.value = newValue[0].value
62
- },
63
- { immediate: true, deep: true }
64
- )
65
-
66
- const getStorage = (): void => {
67
- const payload: UI_I_TablePayload = {
68
- pagination: {
69
- page: 1,
70
- pageSize: 100,
71
- },
72
- sortBy: null,
73
- type: 'datastore',
74
- schema: 'full',
75
- }
76
-
77
- emits('get-storage', payload)
78
- }
79
- getStorage()
80
-
81
- const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
82
- emits('get-folders-or-files', payload)
83
- }
84
-
85
- const files = computed<UI_I_FileTreeNode[]>(() => {
86
- if (!selectedNode.value) return []
87
-
88
- const files: UI_I_FileTreeNode[] = props.files
89
- if (selectedFileType.value === 'all' || selectedFileType.value === null)
90
- return files
91
-
92
- let type = 3
93
- if (selectedFileType.value === 'iso') type = 2
94
-
95
- return files.filter((file) => file.provisioned_type === type)
96
- })
97
-
98
- const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
99
- let result = null
100
- props.nodes.forEach((node) => {
101
- const findNode =
102
- node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
103
-
104
- findNode && (result = node)
105
- })
106
-
107
- return result
108
- }
109
- const onGetCurrentDirNodes = async ({
110
- node,
111
- cb,
112
- select = false,
113
- type = 'folder',
114
- }: UI_I_CurrentDirNodesArguments): Promise<void> => {
115
- if (!node) return
116
-
117
- const isRootNode = props.nodes?.some((item) => item.id === node.id)
118
-
119
- if (!select && (isRootNode || node.nodesShow)) {
120
- emits('show-datastore-child', node)
121
- cb && cb()
122
- return
123
- }
124
-
125
- const rootNode = getRootNodeById(node.id)
126
- if (!rootNode) return
127
-
128
- const payload: UI_I_FolderOrFileTreePayload = {
129
- type,
130
- id: rootNode.id,
131
- path: node.path,
132
- merge: true,
133
- show: !select,
134
- }
135
-
136
- await getFileNodes(payload)
137
- cb && cb()
138
- }
139
-
140
- const selectedNode = ref<UI_I_FileTreeNode | null>(null)
141
- const selectedFile = ref<UI_I_FileTreeNode | null>(null)
142
- const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
143
- const node = selectedFile.value || selectedNode.value
144
- if (!node) return null
145
-
146
- const result = [
147
- {
148
- type: 'text',
149
- title: localization.value.name,
150
- value: node.name || '',
151
- },
152
- {
153
- type: 'size',
154
- title: localization.value.available,
155
- value: node.size || 0,
156
- },
157
- ]
158
-
159
- if (node.type !== 4) {
160
- const modified = node.modified_time || 0
161
- result.push({
162
- type: 'date',
163
- title: localization.value.modified,
164
- value: +modified * 1000,
165
- })
166
- }
167
-
168
- return result
169
- })
170
- const onSelectNode = (node: UI_I_FileTreeNode): void => {
171
- selectedNode.value = node
172
- selectedFile.value = null
173
-
174
- onGetCurrentDirNodes({ node, select: true, type: 'file' })
175
-
176
- emits('get-active-device-child', node)
177
- }
178
- const onSubmit = (): void => {
179
- emits('submit', selectedFile.value)
180
- emits('hide')
181
- }
182
-
183
- let helper = false
184
- watch(
185
- () => props.nodes,
186
- (newValue: UI_I_FileTreeNode[]) => {
187
- if (helper || !newValue.length) return
188
- newValue.forEach((node) => {
189
- getFileNodes({
190
- id: node.id,
191
- path: `${node.id}:/`,
192
- type: 'folder',
193
- show: false,
194
- merge: false,
195
- })
196
- })
197
- helper = true
198
- },
199
- { immediate: true }
200
- )
201
- </script>
202
-
203
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <div>
3
+ <common-browse
4
+ v-model:selected-file="selectedFile"
5
+ v-model:selected-file-type="selectedFileType"
6
+ :show="props.show"
7
+ :nodes="props.nodes"
8
+ :files="files"
9
+ :info="selectedNodeInfo"
10
+ :file-types="props.fileTypes"
11
+ @get-nodes="onGetCurrentDirNodes"
12
+ @select-node="onSelectNode"
13
+ @submit="onSubmit"
14
+ @hide="emits('hide')"
15
+ />
16
+ </div>
17
+ </template>
18
+
19
+ <script lang="ts" setup>
20
+ import { UI_I_FileTreeNode } from '~/components/models/interfaces'
21
+ import { UI_I_TablePayload } from '~/models/store/interfaces'
22
+ import { UI_I_FolderOrFileTreePayload } from '~/models/store/storage/interfaces'
23
+ import { UI_I_CurrentDirNodesArguments } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/browseView/models/interfaces'
24
+ import { UI_I_Localization } from '~/models/interfaces'
25
+ import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
26
+ import { UI_I_FileInfo } from '~/components/common/browse/models/interfaces'
27
+
28
+ const props = defineProps<{
29
+ show: boolean
30
+ nodes: UI_I_FileTreeNode[]
31
+ files: UI_I_FileTreeNode[]
32
+ fileTypes?: UI_I_OptionItem[]
33
+ }>()
34
+ const emits = defineEmits<{
35
+ (event: 'hide'): void
36
+ (event: 'submit', value: UI_I_FileTreeNode | null): void
37
+ (event: 'get-storage', value: UI_I_TablePayload): void
38
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
39
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
40
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
41
+ }>()
42
+
43
+ const { $recursion } = useNuxtApp()
44
+
45
+ const localization = computed<UI_I_Localization>(() => useLocal())
46
+
47
+ const selectedFileType = ref<string | null>(null)
48
+ watch(
49
+ selectedFileType,
50
+ (newValue) => {
51
+ if (newValue === null || selectedFile.value === null) return
52
+
53
+ const isExist = files.value.includes(selectedFile.value)
54
+ if (!isExist) selectedFile.value = null
55
+ },
56
+ { immediate: true, deep: true }
57
+ )
58
+ watch(
59
+ () => props.fileTypes,
60
+ (newValue) => {
61
+ if (newValue?.length) selectedFileType.value = newValue[0].value
62
+ },
63
+ { immediate: true, deep: true }
64
+ )
65
+
66
+ const getStorage = (): void => {
67
+ const payload: UI_I_TablePayload = {
68
+ pagination: {
69
+ page: 1,
70
+ pageSize: 100,
71
+ },
72
+ sortBy: null,
73
+ type: 'datastore',
74
+ schema: 'full',
75
+ }
76
+
77
+ emits('get-storage', payload)
78
+ }
79
+ getStorage()
80
+
81
+ const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
82
+ emits('get-folders-or-files', payload)
83
+ }
84
+
85
+ const files = computed<UI_I_FileTreeNode[]>(() => {
86
+ if (!selectedNode.value) return []
87
+
88
+ const files: UI_I_FileTreeNode[] = props.files
89
+ if (selectedFileType.value === 'all' || selectedFileType.value === null)
90
+ return files
91
+
92
+ let type = 3
93
+ if (selectedFileType.value === 'iso') type = 2
94
+
95
+ return files.filter((file) => file.provisioned_type === type)
96
+ })
97
+
98
+ const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
99
+ let result = null
100
+ props.nodes.forEach((node) => {
101
+ const findNode =
102
+ node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
103
+
104
+ findNode && (result = node)
105
+ })
106
+
107
+ return result
108
+ }
109
+ const onGetCurrentDirNodes = async ({
110
+ node,
111
+ cb,
112
+ select = false,
113
+ type = 'folder',
114
+ }: UI_I_CurrentDirNodesArguments): Promise<void> => {
115
+ if (!node) return
116
+
117
+ const isRootNode = props.nodes?.some((item) => item.id === node.id)
118
+
119
+ if (!select && (isRootNode || node.nodesShow)) {
120
+ emits('show-datastore-child', node)
121
+ cb && cb()
122
+ return
123
+ }
124
+
125
+ const rootNode = getRootNodeById(node.id)
126
+ if (!rootNode) return
127
+
128
+ const payload: UI_I_FolderOrFileTreePayload = {
129
+ type,
130
+ id: rootNode.id,
131
+ path: node.path,
132
+ merge: true,
133
+ show: !select,
134
+ }
135
+
136
+ await getFileNodes(payload)
137
+ cb && cb()
138
+ }
139
+
140
+ const selectedNode = ref<UI_I_FileTreeNode | null>(null)
141
+ const selectedFile = ref<UI_I_FileTreeNode | null>(null)
142
+ const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
143
+ const node = selectedFile.value || selectedNode.value
144
+ if (!node) return null
145
+
146
+ const result = [
147
+ {
148
+ type: 'text',
149
+ title: localization.value.name,
150
+ value: node.name || '',
151
+ },
152
+ {
153
+ type: 'size',
154
+ title: localization.value.available,
155
+ value: node.size || 0,
156
+ },
157
+ ]
158
+
159
+ if (node.type !== 4) {
160
+ const modified = node.modified_time || 0
161
+ result.push({
162
+ type: 'date',
163
+ title: localization.value.modified,
164
+ value: +modified * 1000,
165
+ })
166
+ }
167
+
168
+ return result
169
+ })
170
+ const onSelectNode = (node: UI_I_FileTreeNode): void => {
171
+ selectedNode.value = node
172
+ selectedFile.value = null
173
+
174
+ onGetCurrentDirNodes({ node, select: true, type: 'file' })
175
+
176
+ emits('get-active-device-child', node)
177
+ }
178
+ const onSubmit = (): void => {
179
+ emits('submit', selectedFile.value)
180
+ emits('hide')
181
+ }
182
+
183
+ let helper = false
184
+ watch(
185
+ () => props.nodes,
186
+ (newValue: UI_I_FileTreeNode[]) => {
187
+ if (helper || !newValue.length) return
188
+ newValue.forEach((node) => {
189
+ getFileNodes({
190
+ id: node.id,
191
+ path: `${node.id}:/`,
192
+ type: 'folder',
193
+ show: false,
194
+ merge: false,
195
+ })
196
+ })
197
+ helper = true
198
+ },
199
+ { immediate: true }
200
+ )
201
+ </script>
202
+
203
+ <style lang="scss" scoped></style>
@@ -1,55 +1,55 @@
1
- <template>
2
- <div class="">
3
- <atoms-stack-block :has-children="false">
4
- <template #stackBlockKey>
5
- {{ localization.cdDvdMedia }}
6
- </template>
7
- <template #stackBlockContent>
8
- <div class="flex-align-center">
9
- <input
10
- id="vm-wizard-dvd-media-input"
11
- v-model="cdDvdMediaLocal"
12
- type="text"
13
- disabled
14
- />
15
- <button
16
- id="vm-wizard-dvd-media-input"
17
- class="button btn btn-default btn-sm"
18
- @click="onBrowse"
19
- >
20
- {{ localization.browse }}...
21
- </button>
22
- </div>
23
- </template>
24
- </atoms-stack-block>
25
- </div>
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import { UI_I_Localization } from '~/models/interfaces'
30
-
31
- const props = defineProps<{
32
- cdDvdMedia: string
33
- }>()
34
- const emits = defineEmits<{
35
- (event: 'update:cd-dvd-media', value: string): void
36
- (event: 'browse'): void
37
- }>()
38
-
39
- const localization = computed<UI_I_Localization>(() => useLocal())
40
-
41
- const cdDvdMediaLocal = computed<string>({
42
- get() {
43
- return props.cdDvdMedia
44
- },
45
- set(newValue) {
46
- emits('update:cd-dvd-media', newValue)
47
- },
48
- })
49
-
50
- const onBrowse = (): void => {
51
- emits('browse')
52
- }
53
- </script>
54
-
55
- <style scoped></style>
1
+ <template>
2
+ <div class="">
3
+ <atoms-stack-block :has-children="false">
4
+ <template #stackBlockKey>
5
+ {{ localization.cdDvdMedia }}
6
+ </template>
7
+ <template #stackBlockContent>
8
+ <div class="flex-align-center">
9
+ <input
10
+ id="vm-wizard-dvd-media-input"
11
+ v-model="cdDvdMediaLocal"
12
+ type="text"
13
+ disabled
14
+ />
15
+ <button
16
+ id="vm-wizard-dvd-media-input"
17
+ class="button btn btn-default btn-sm"
18
+ @click="onBrowse"
19
+ >
20
+ {{ localization.browse }}...
21
+ </button>
22
+ </div>
23
+ </template>
24
+ </atoms-stack-block>
25
+ </div>
26
+ </template>
27
+
28
+ <script setup lang="ts">
29
+ import { UI_I_Localization } from '~/models/interfaces'
30
+
31
+ const props = defineProps<{
32
+ cdDvdMedia: string
33
+ }>()
34
+ const emits = defineEmits<{
35
+ (event: 'update:cd-dvd-media', value: string): void
36
+ (event: 'browse'): void
37
+ }>()
38
+
39
+ const localization = computed<UI_I_Localization>(() => useLocal())
40
+
41
+ const cdDvdMediaLocal = computed<string>({
42
+ get() {
43
+ return props.cdDvdMedia
44
+ },
45
+ set(newValue) {
46
+ emits('update:cd-dvd-media', newValue)
47
+ },
48
+ })
49
+
50
+ const onBrowse = (): void => {
51
+ emits('browse')
52
+ }
53
+ </script>
54
+
55
+ <style scoped></style>
@@ -52,7 +52,7 @@ const props = defineProps<{
52
52
  selectedCorePerSocket: number
53
53
  isEdit: boolean
54
54
  disabled: boolean
55
- errorValidationFields: UI_I_ErrorValidationField<string>[]
55
+ errorValidationFields: UI_I_ErrorValidationField[]
56
56
  }>()
57
57
  const emits = defineEmits<{
58
58
  (event: 'update:selected-core-per-socket', value: number): void
@@ -183,8 +183,7 @@ watch(selectedCpu, (newValue) => {
183
183
  selectedMaxCpu.value <= newValue ? newValue + 1 : selectedMaxCpu.value
184
184
  if (selectedMaxCpu.value > props.maxCpus) selectedMaxCpu.value = props.maxCpus
185
185
  })
186
- // @ts-ignore
187
- const selectedMaxCpu = ref<number>(cpuOptions.value.at(-1).value)
186
+ const selectedMaxCpu = ref<number>(cpuOptions.value.at(-1)?.value)
188
187
  watch(
189
188
  () => props.maxCpus,
190
189
  (newValue) => {
@@ -243,9 +242,13 @@ const cpuInvalid = computed<boolean>(
243
242
  sharesInvalid.value ||
244
243
  (selectedCpu.value < props.maxCpus && maxCpuInvalid.value)
245
244
  )
246
- watch(cpuInvalid, (val: boolean) => {
247
- emits('invalid', val)
248
- })
245
+ watch(
246
+ cpuInvalid,
247
+ (newValue: boolean) => {
248
+ emits('invalid', newValue)
249
+ },
250
+ { immediate: true }
251
+ )
249
252
 
250
253
  const reservation = ref<string>('1')
251
254
  const reservationType = ref<string>('mhz')
@@ -152,7 +152,7 @@ watch(
152
152
  }
153
153
  )
154
154
 
155
- const passthroughHostCpuLocal = computed({
155
+ const passthroughHostCpuLocal = computed<boolean>({
156
156
  get() {
157
157
  return props.passthroughHostCpu
158
158
  },
@@ -160,7 +160,7 @@ const passthroughHostCpuLocal = computed({
160
160
  emits('update:passthrough-host-cpu', newValue)
161
161
  },
162
162
  })
163
- const hostModelCpuLocal = computed({
163
+ const hostModelCpuLocal = computed<boolean>({
164
164
  get() {
165
165
  return props.hostModelCpu
166
166
  },
@@ -31,7 +31,7 @@
31
31
  <script setup lang="ts">
32
32
  import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
33
33
  import { UI_I_ErrorValidationField } from '~/models/store/interfaces'
34
- const localization = computed(() => useLocal())
34
+ import { UI_I_Localization } from '~/models/interfaces'
35
35
 
36
36
  const props = defineProps<{
37
37
  cpuOptions: UI_I_OptionItem[]
@@ -45,6 +45,8 @@ const emits = defineEmits<{
45
45
  (event: 'remove-error-by-title', value: string): void
46
46
  }>()
47
47
 
48
+ const localization = computed<UI_I_Localization>(() => useLocal())
49
+
48
50
  const selectedMaxCpuLocal = computed<number>({
49
51
  get() {
50
52
  return props.selectedMaxCpu
@@ -91,9 +93,13 @@ const maxVcpusLocalAndApiErrorsTexts = computed<string>(() => {
91
93
  return result
92
94
  })
93
95
  const isInvalid = computed<boolean>(() => !!errorTextLocal.value)
94
- watch(isInvalid, (val) => {
95
- emits('invalid', val)
96
- })
96
+ watch(
97
+ isInvalid,
98
+ (newValue) => {
99
+ emits('invalid', newValue)
100
+ },
101
+ { immediate: true }
102
+ )
97
103
  </script>
98
104
 
99
105
  <style scoped></style>
@@ -127,9 +127,13 @@ const sharesErrorLocalText = computed<string>(() => {
127
127
  return ''
128
128
  })
129
129
  const sharesInvalid = computed<boolean>(() => !!sharesErrorLocalText.value)
130
- watch(sharesInvalid, (val) => {
131
- emits('invalid', val)
132
- })
130
+ watch(
131
+ sharesInvalid,
132
+ (newValue) => {
133
+ emits('invalid', newValue)
134
+ },
135
+ { immediate: true }
136
+ )
133
137
 
134
138
  const sharesLocalAndApiErrorsTexts = computed<string>(() => {
135
139
  const localError = sharesErrorLocalText.value
@@ -185,9 +185,13 @@ const limitErrorLocalText = computed<string>(() => {
185
185
  return ''
186
186
  })
187
187
  const limitInvalid = computed<boolean>(() => !!limitErrorLocalText.value)
188
- watch(limitInvalid, (val) => {
189
- emits('invalid', val)
190
- })
188
+ watch(
189
+ limitInvalid,
190
+ (newValue) => {
191
+ emits('invalid', newValue)
192
+ },
193
+ { immediate: true }
194
+ )
191
195
 
192
196
  const limitLocalAndApiErrorsTexts = computed<string>(() => {
193
197
  const localError = limitErrorLocalText.value