bfg-common 1.4.561 → 1.4.563

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.
@@ -38,7 +38,6 @@
38
38
  :project="props.project"
39
39
  :nav-items="navItems"
40
40
  :errors="errors"
41
- :browse-loading="props.browseLoading"
42
41
  @change-boot-order="emits('change-boot-order', $event)"
43
42
  @send-data="emits('send-data', $event)"
44
43
  @next="emits('next')"
@@ -92,7 +91,6 @@
92
91
  :project="props.project"
93
92
  :nav-items="navItems"
94
93
  :errors="errors"
95
- :browse-loading="props.browseLoading"
96
94
  @change-boot-order="emits('change-boot-order', $event)"
97
95
  @send-data="emits('send-data', $event)"
98
96
  @next="emits('next')"
@@ -159,7 +157,6 @@ const props = defineProps<{
159
157
  nodes: UI_I_FileTreeNode[]
160
158
  files: UI_I_FileTreeNode[]
161
159
  networksTable: UI_I_NetworkTableItem[]
162
- browseLoading: boolean
163
160
  cpu?: API_UI_I_VmEditCpu
164
161
  memory?: API_UI_I_VmEditMemory
165
162
  vmCpuHelpTextSecond?: string
@@ -43,7 +43,6 @@
43
43
  :passthrough-devices="props.passthroughDevices"
44
44
  :project="props.project"
45
45
  :guest-machine-type="guestMachineType"
46
- :browse-loading="props.browseLoading"
47
46
  @send-data="emits('send-data-virtual-hardware-method', $event)"
48
47
  @get-storage="emits('get-storage', $event)"
49
48
  @get-folders-or-files="emits('get-folders-or-files', $event)"
@@ -144,7 +143,6 @@ const props = defineProps<{
144
143
  networksForBootOptions: UI_I_SendDataNewNetwork[] | null
145
144
  hardDisksForBootOptions: UI_I_SendDataNewHardDisk[] | null
146
145
  cdDvdDrivesForBootOptions: UI_I_SendDataNewCdDvdDrive[] | null
147
- browseLoading: boolean
148
146
  cpu?: API_UI_I_VmEditCpu
149
147
  state?: string | number
150
148
  isEdit?: boolean
@@ -37,7 +37,6 @@
37
37
  :passthrough-devices="props.passthroughDevices"
38
38
  :project="props.project"
39
39
  :guest-machine-type="guestMachineType"
40
- :browse-loading="props.browseLoading"
41
40
  @send-data="emits('send-data-virtual-hardware-method', $event)"
42
41
  @get-storage="emits('get-storage', $event)"
43
42
  @get-folders-or-files="emits('get-folders-or-files', $event)"
@@ -121,7 +120,6 @@ const props = defineProps<{
121
120
  networksForBootOptions: UI_I_SendDataNewNetwork[] | null
122
121
  hardDisksForBootOptions: UI_I_SendDataNewHardDisk[] | null
123
122
  cdDvdDrivesForBootOptions: UI_I_SendDataNewCdDvdDrive[] | null
124
- browseLoading: boolean
125
123
  cpu?: API_UI_I_VmEditCpu
126
124
  state?: string | number
127
125
  isEdit?: boolean
@@ -38,7 +38,6 @@
38
38
  :guest-machine-type="guestMachineType"
39
39
  :passthrough-devices="passthroughDevices"
40
40
  :vm-cpu-help-text-second="vmCpuHelpTextSecond"
41
- :browse-loading="props.browseLoading"
42
41
  @add-device="onAddDevice"
43
42
  @get-storage="emits('get-storage', $event)"
44
43
  @remove-network="onRemoveNetwork"
@@ -105,7 +104,6 @@
105
104
  :guest-machine-type="guestMachineType"
106
105
  :passthrough-devices="passthroughDevices"
107
106
  :vm-cpu-help-text-second="vmCpuHelpTextSecond"
108
- :browse-loading="props.browseLoading"
109
107
  @add-device="onAddDevice"
110
108
  @get-storage="emits('get-storage', $event)"
111
109
  @remove-network="onRemoveNetwork"
@@ -186,7 +184,6 @@ const props = defineProps<{
186
184
  networksTable: UI_I_NetworkTableItem[]
187
185
  getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
188
186
  datastore: UI_I_DatastoreTableItem[]
189
- browseLoading: boolean
190
187
  state?: string | number
191
188
  cpu?: API_UI_I_VmEditCpu
192
189
  memory?: API_UI_I_VmEditMemory
@@ -185,7 +185,6 @@
185
185
  show
186
186
  :nodes="props.nodes"
187
187
  :files="props.files"
188
- :browse-loading="props.browseLoading"
189
188
  @submit="emits('add-exist-hard-disk', $event)"
190
189
  @get-storage="emits('get-storage', $event)"
191
190
  @get-folders-or-files="emits('get-folders-or-files', $event)"
@@ -256,7 +255,6 @@ const props = defineProps<{
256
255
  cdDvdDrivesIndex: number[]
257
256
  errorValidationFields: UI_I_ErrorValidationField<string>[]
258
257
  getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
259
- browseLoading: boolean
260
258
  cpu?: API_UI_I_VmEditCpu
261
259
  state?: string | number
262
260
  memory?: API_UI_I_VmEditMemory
@@ -137,7 +137,6 @@
137
137
  show
138
138
  :nodes="props.nodes"
139
139
  :files="props.files"
140
- :browse-loading="props.browseLoading"
141
140
  @submit="emits('add-exist-hard-disk', $event)"
142
141
  @get-storage="emits('get-storage', $event)"
143
142
  @get-folders-or-files="emits('get-folders-or-files', $event)"
@@ -210,7 +209,6 @@ const props = defineProps<{
210
209
  cdDvdDrivesIndex: number[]
211
210
  errorValidationFields: UI_I_ErrorValidationField<string>[]
212
211
  getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
213
- browseLoading: boolean
214
212
  cpu?: API_UI_I_VmEditCpu
215
213
  state?: string | number
216
214
  memory?: API_UI_I_VmEditMemory
@@ -1,205 +1,215 @@
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
- :browse-loading="props.browseLoading"
12
- @get-nodes="onGetCurrentDirNodes"
13
- @select-node="onSelectNode"
14
- @submit="onSubmit"
15
- @hide="emits('hide')"
16
- />
17
- </div>
18
- </template>
19
-
20
- <script lang="ts" setup>
21
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
22
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
23
- import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
24
- import type { UI_I_CurrentDirNodesArguments } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/lib/models/interfaces'
25
- import type { UI_I_Localization } from '~/lib/models/interfaces'
26
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
27
- import type { UI_I_FileInfo } from '~/components/common/browse/lib/models/interfaces'
28
-
29
- const props = defineProps<{
30
- show: boolean
31
- nodes: UI_I_FileTreeNode[]
32
- files: UI_I_FileTreeNode[]
33
- browseLoading: boolean
34
- fileTypes?: UI_I_OptionItem[]
35
- }>()
36
- const emits = defineEmits<{
37
- (event: 'hide'): void
38
- (event: 'submit', value: UI_I_FileTreeNode | null): void
39
- (event: 'get-storage', value: UI_I_TablePayload): void
40
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
41
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
42
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
43
- }>()
44
-
45
- const { $recursion } = useNuxtApp()
46
-
47
- const localization = computed<UI_I_Localization>(() => useLocal())
48
-
49
- const selectedFileType = ref<string | null>(null)
50
- watch(
51
- selectedFileType,
52
- (newValue) => {
53
- if (newValue === null || selectedFile.value === null) return
54
-
55
- const isExist = files.value.includes(selectedFile.value)
56
- if (!isExist) selectedFile.value = null
57
- },
58
- { immediate: true, deep: true }
59
- )
60
- watch(
61
- () => props.fileTypes,
62
- (newValue) => {
63
- if (newValue?.length) selectedFileType.value = newValue[0].value
64
- },
65
- { immediate: true, deep: true }
66
- )
67
-
68
- const getStorage = (): void => {
69
- const payload: UI_I_TablePayload = {
70
- pagination: {
71
- page: 1,
72
- pageSize: 100,
73
- },
74
- sortBy: null,
75
- type: 'datastore',
76
- schema: 'full',
77
- }
78
-
79
- emits('get-storage', payload)
80
- }
81
- getStorage()
82
-
83
- const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
84
- emits('get-folders-or-files', payload)
85
- }
86
-
87
- const files = computed<UI_I_FileTreeNode[]>(() => {
88
- if (!selectedNode.value) return []
89
-
90
- const files: UI_I_FileTreeNode[] = props.files
91
- if (selectedFileType.value === 'all' || selectedFileType.value === null)
92
- return files
93
-
94
- let type = 3
95
- if (selectedFileType.value === 'iso') type = 2
96
-
97
- return files.filter((file) => file.provisioned_type === type)
98
- })
99
-
100
- const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
101
- let result = null
102
- props.nodes.forEach((node) => {
103
- const findNode =
104
- node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
105
-
106
- findNode && (result = node)
107
- })
108
-
109
- return result
110
- }
111
- const onGetCurrentDirNodes = async ({
112
- node,
113
- cb,
114
- select = false,
115
- type = 'folder',
116
- }: UI_I_CurrentDirNodesArguments): Promise<void> => {
117
- if (!node) return
118
-
119
- const isRootNode = props.nodes?.some((item) => item.id === node.id)
120
-
121
- if (!select && (isRootNode || node.nodesShow)) {
122
- emits('show-datastore-child', node)
123
- cb && cb()
124
- return
125
- }
126
-
127
- const rootNode = getRootNodeById(node.id)
128
- if (!rootNode) return
129
-
130
- const payload: UI_I_FolderOrFileTreePayload = {
131
- type,
132
- id: rootNode.id,
133
- path: node.path,
134
- merge: true,
135
- show: !select,
136
- }
137
-
138
- await getFileNodes(payload)
139
- cb && cb()
140
- }
141
-
142
- const selectedNode = ref<UI_I_FileTreeNode | null>(null)
143
- const selectedFile = ref<UI_I_FileTreeNode | null>(null)
144
- const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
145
- const node = selectedFile.value || selectedNode.value
146
- if (!node) return null
147
-
148
- const result = [
149
- {
150
- type: 'text',
151
- title: localization.value.common.name,
152
- value: node.name || '',
153
- },
154
- {
155
- type: 'size',
156
- title: localization.value.common.available,
157
- value: node.size || 0,
158
- },
159
- ]
160
-
161
- if (node.type !== 4) {
162
- const modified = node.modified_time || 0
163
- result.push({
164
- type: 'date',
165
- title: localization.value.common.modified,
166
- value: +modified * 1000,
167
- })
168
- }
169
-
170
- return result
171
- })
172
- const onSelectNode = (node: UI_I_FileTreeNode): void => {
173
- selectedNode.value = node
174
- selectedFile.value = null
175
-
176
- onGetCurrentDirNodes({ node, select: true, type: 'file' })
177
-
178
- emits('get-active-device-child', node)
179
- }
180
- const onSubmit = (): void => {
181
- emits('submit', selectedFile.value)
182
- emits('hide')
183
- }
184
-
185
- let helper = false
186
- watch(
187
- () => props.nodes,
188
- (newValue: UI_I_FileTreeNode[]) => {
189
- if (helper || !newValue.length) return
190
- newValue.forEach((node) => {
191
- getFileNodes({
192
- id: node.id,
193
- path: `${node.id}:/`,
194
- type: 'folder',
195
- show: false,
196
- merge: false,
197
- })
198
- })
199
- helper = true
200
- },
201
- { immediate: true }
202
- )
203
- </script>
204
-
205
- <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
+ :browse-loading="props.browseLoading"
12
+ @get-nodes="onGetCurrentDirNodes"
13
+ @select-node="onSelectNode"
14
+ @submit="onSubmit"
15
+ @hide="emits('hide')"
16
+ />
17
+ </div>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
22
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
23
+ import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
24
+ import type { UI_I_CurrentDirNodesArguments } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/lib/models/interfaces'
25
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
26
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
27
+ import type { UI_I_FileInfo } from '~/components/common/browse/lib/models/interfaces'
28
+
29
+ const props = defineProps<{
30
+ show: boolean
31
+ nodes: UI_I_FileTreeNode[]
32
+ files: UI_I_FileTreeNode[]
33
+ fileTypes?: UI_I_OptionItem[]
34
+ }>()
35
+ const emits = defineEmits<{
36
+ (event: 'hide'): void
37
+ (event: 'submit', value: UI_I_FileTreeNode | null): void
38
+ (event: 'get-storage', value: UI_I_TablePayload): void
39
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
40
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
41
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
42
+ }>()
43
+
44
+ const { $recursion } = useNuxtApp()
45
+
46
+ const localization = computed<UI_I_Localization>(() => useLocal())
47
+
48
+ const selectedFileType = ref<string | null>(null)
49
+ watch(
50
+ selectedFileType,
51
+ (newValue) => {
52
+ if (newValue === null || selectedFile.value === null) return
53
+
54
+ const isExist = files.value.includes(selectedFile.value)
55
+ if (!isExist) selectedFile.value = null
56
+ },
57
+ { immediate: true, deep: true }
58
+ )
59
+ watch(
60
+ () => props.fileTypes,
61
+ (newValue) => {
62
+ if (newValue?.length) selectedFileType.value = newValue[0].value
63
+ },
64
+ { immediate: true, deep: true }
65
+ )
66
+
67
+ const getStorage = (): void => {
68
+ const payload: UI_I_TablePayload = {
69
+ pagination: {
70
+ page: 1,
71
+ pageSize: 100,
72
+ },
73
+ sortBy: null,
74
+ type: 'datastore',
75
+ schema: 'full',
76
+ }
77
+
78
+ emits('get-storage', payload)
79
+ }
80
+ getStorage()
81
+
82
+ const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
83
+ emits('get-folders-or-files', payload)
84
+ }
85
+
86
+ const files = computed<UI_I_FileTreeNode[]>(() => {
87
+ if (!selectedNode.value) return []
88
+
89
+ const files: UI_I_FileTreeNode[] = props.files
90
+ if (selectedFileType.value === 'all' || selectedFileType.value === null)
91
+ return files
92
+
93
+ let type = 3
94
+ if (selectedFileType.value === 'iso') type = 2
95
+
96
+ return files.filter((file) => file.provisioned_type === type)
97
+ })
98
+
99
+ const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
100
+ let result = null
101
+ props.nodes.forEach((node) => {
102
+ const findNode =
103
+ node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
104
+
105
+ findNode && (result = node)
106
+ })
107
+
108
+ return result
109
+ }
110
+ const onGetCurrentDirNodes = async ({
111
+ node,
112
+ cb,
113
+ select = false,
114
+ type = 'folder',
115
+ }: UI_I_CurrentDirNodesArguments): Promise<void> => {
116
+ if (!node) return
117
+
118
+ const isRootNode = props.nodes?.some((item) => item.id === node.id)
119
+
120
+ if (!select && (isRootNode || node.nodesShow)) {
121
+ emits('show-datastore-child', node)
122
+ cb && cb()
123
+ return
124
+ }
125
+
126
+ const rootNode = getRootNodeById(node.id)
127
+ if (!rootNode) return
128
+
129
+ const payload: UI_I_FolderOrFileTreePayload = {
130
+ type,
131
+ id: rootNode.id,
132
+ path: node.path,
133
+ merge: true,
134
+ show: !select,
135
+ }
136
+
137
+ await getFileNodes(payload)
138
+ cb && cb()
139
+ }
140
+
141
+ const selectedNode = ref<UI_I_FileTreeNode | null>(null)
142
+ const selectedFile = ref<UI_I_FileTreeNode | null>(null)
143
+ const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
144
+ const node = selectedFile.value || selectedNode.value
145
+ if (!node) return null
146
+
147
+ const result = [
148
+ {
149
+ type: 'text',
150
+ title: localization.value.common.name,
151
+ value: node.name || '',
152
+ },
153
+ {
154
+ type: 'size',
155
+ title: localization.value.common.available,
156
+ value: node.size || 0,
157
+ },
158
+ ]
159
+
160
+ if (node.type !== 4) {
161
+ const modified = node.modified_time || 0
162
+ result.push({
163
+ type: 'date',
164
+ title: localization.value.common.modified,
165
+ value: +modified * 1000,
166
+ })
167
+ }
168
+
169
+ return result
170
+ })
171
+ const browseLoading = ref<boolean>(false)
172
+ const onSelectNode = (node: UI_I_FileTreeNode): void => {
173
+ browseLoading.value = true
174
+
175
+ selectedNode.value = node
176
+ selectedFile.value = null
177
+
178
+ onGetCurrentDirNodes({ node, select: true, type: 'file' })
179
+
180
+ emits('get-active-device-child', node)
181
+ }
182
+ watch(
183
+ files,
184
+ () => {
185
+ browseLoading.value = false
186
+ },
187
+ { immediate: true }
188
+ )
189
+
190
+ const onSubmit = (): void => {
191
+ emits('submit', selectedFile.value)
192
+ emits('hide')
193
+ }
194
+
195
+ let helper = false
196
+ watch(
197
+ () => props.nodes,
198
+ (newValue: UI_I_FileTreeNode[]) => {
199
+ if (helper || !newValue.length) return
200
+ newValue.forEach((node) => {
201
+ getFileNodes({
202
+ id: node.id,
203
+ path: `${node.id}:/`,
204
+ type: 'folder',
205
+ show: false,
206
+ merge: false,
207
+ })
208
+ })
209
+ helper = true
210
+ },
211
+ { immediate: true }
212
+ )
213
+ </script>
214
+
215
+ <style lang="scss" scoped></style>
@@ -68,9 +68,9 @@
68
68
  </ui-stack-block>
69
69
 
70
70
  <Teleport to="body">
71
- <!-- v-if="isShowFileModal"-->
72
71
  <common-vm-actions-common-customize-hardware-virtual-hardware-browse-view
73
- :show="isShowFileModal"
72
+ v-if="isShowFileModal"
73
+ show
74
74
  :file-types="props.fileTypes"
75
75
  :nodes="props.nodes"
76
76
  :files="props.files"
@@ -87,9 +87,7 @@
87
87
  <script lang="ts" setup>
88
88
  import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
89
89
  import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
90
- import type {
91
- UI_I_Localization,
92
- } from '~/lib/models/interfaces'
90
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
93
91
  import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
94
92
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
95
93
  import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
@@ -1,158 +1,165 @@
1
- <template>
2
- <div class="hardware-cd-dvd-drive">
3
- <atoms-stack-block
4
- :has-children="true"
5
- :is-roll-back="props.type === 'removed'"
6
- :removable="props.isRemovable"
7
- :test-id="`cd-dvd-drive-stack-block-${props.index}`"
8
- @remove="emits('remove')"
9
- @roll-back="emits('roll-back')"
10
- >
11
- <template #stackBlockKey>
12
- <div
13
- :id="`vm-wizard-toggle-block-cd-dvd-drive-${props.index}`"
14
- :data-id="`vm-wizard-toggle-block-cd-dvd-drive-${props.index}`"
15
- class="vm-wizard-toggle-block-cd-dvd-drive vm-wizard-toggle-block-hard-disk"
16
- >
17
- <span>{{ props.label }}</span>
18
- </div>
19
- </template>
20
- <template #stackBlockContent>
21
- <div class="flex-align-center flex-space-between">
22
- <template v-if="props.type === 'removed'">
23
- <span>{{ localization.common.deviceWillRemoved }}</span>
24
- <div class="flex-align-center" @click.stop>
25
- <input
26
- :id="`cd-dvd-delete-files-from-datastore-${props.index}`"
27
- v-model="deleteFilesFromDatastore"
28
- :data-id="`cd-dvd-delete-files-from-datastore-${props.index}`"
29
- :disabled="props.disabled"
30
- type="checkbox"
31
- class="pointer"
32
- @click.stop
33
- />
34
- <label
35
- :for="`cd-dvd-delete-files-from-datastore-${props.index}`"
36
- :class="[
37
- 'label-text-normal pointer',
38
- props.disabled && 'div-disabled',
39
- ]"
40
- >{{ localization.common.deleteFilesFromDatastore }}</label
41
- >
42
- </div>
43
- </template>
44
- <template v-else>
45
- <div class="select">
46
- <select
47
- id="vm-wizard-cd-dvd-drive-field"
48
- v-model="selectedCdDvdDrive"
49
- :data-id="`vm-wizard-cd-dvd-drive-field-${props.index}`"
50
- class="vm-wizard-cd-dvd-drive-field input-text-color"
51
- @click.stop
52
- @change="emits('change-cd-dvd-drive', $event)"
53
- >
54
- <option
55
- v-for="(item, key) in props.cdDvdDriveOptions"
56
- :key="key"
57
- :value="item.value"
58
- >
59
- {{ item.text }}
60
- </option>
61
- </select>
62
- </div>
63
- </template>
64
- </div>
65
- </template>
66
- <template #stackChildren>
67
- <common-vm-actions-common-customize-hardware-virtual-hardware-cd-dvd-drive-media
68
- v-if="selectedCdDvdDrive === 'datastoreIsoFile'"
69
- v-model:cd-dvd-media="cdDvdMedia"
70
- @browse="isShowFileModal = true"
71
- />
72
-
73
- <!-- :short-options="props.type === 'edit'" // поменял из-за задачки PNCWEB-384-->
74
- <common-vm-actions-common-customize-hardware-virtual-hardware-bus
75
- v-model:bus="bus"
76
- :index="props.indexByHardDisks"
77
- :validation-type="props.busValidationType"
78
- :error-validation-fields="props.errorValidationFields"
79
- :disabled="props.isRunning"
80
- :test-id="`vm-wizard-cd-dvd-bus-field-${props.index}`"
81
- short-options
82
- component-type="disk_devices"
83
- :guest-machine-type="props.guestMachineType"
84
- @remove-error-by-title="emits('remove-error-by-title', $event)"
85
- />
86
- </template>
87
- </atoms-stack-block>
88
-
89
- <Teleport to="body">
90
- <!-- v-if="isShowFileModal"-->
91
- <common-vm-actions-common-customize-hardware-virtual-hardware-browse-view
92
- :show="isShowFileModal"
93
- :file-types="props.fileTypes"
94
- :nodes="props.nodes"
95
- :files="props.files"
96
- @submit="emits('select-file', $event)"
97
- @get-storage="emits('get-storage', $event)"
98
- @get-folders-or-files="emits('get-folders-or-files', $event)"
99
- @get-active-device-child="emits('get-active-device-child', $event)"
100
- @show-datastore-child="emits('show-datastore-child', $event)"
101
- @hide="emits('hide-file-modal')"
102
- />
103
- </Teleport>
104
- </div>
105
- </template>
106
-
107
- <script lang="ts" setup>
108
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
109
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
110
- import type {
111
- UI_I_Localization,
112
- UI_I_HTMLSelectElement,
113
- } from '~/lib/models/interfaces'
114
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
115
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
116
- import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
117
- import type { UI_T_CdDvdType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
118
-
119
- const deleteFilesFromDatastore = defineModel<boolean>('deleteFilesFromDatastore', {required: true})
120
- const selectedCdDvdDrive = defineModel<string>('selectedCdDvdDrive', {required: true})
121
- const cdDvdMedia = defineModel<string>('cdDvdMedia', {required: true})
122
- const isShowFileModal = defineModel<boolean>('isShowFileModal', {required: true})
123
- const bus = defineModel<string>('bus', {required: true})
124
-
125
- const props = defineProps<{
126
- index: number
127
- nodes: UI_I_FileTreeNode[]
128
- files: UI_I_FileTreeNode[]
129
- errorValidationFields: UI_I_ErrorValidationField<string>[]
130
- type: UI_T_CdDvdType
131
- isRemovable: boolean
132
- label: string
133
- disabled: boolean
134
- cdDvdDriveOptions: UI_I_OptionItem[]
135
- indexByHardDisks: number
136
- busValidationType: string
137
- fileTypes: UI_I_OptionItem[]
138
- isRunning: boolean
139
- guestMachineType?: UI_I_OptionItem | null
140
- }>()
141
-
142
- const emits = defineEmits<{
143
- (event: 'remove'): void
144
- (event: 'roll-back'): void
145
- (event: 'remove-error-by-title', value: string): void
146
- (event: 'get-storage', value: UI_I_TablePayload): void
147
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
148
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
149
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
150
- (event: 'change-cd-dvd-drive', value: UI_I_HTMLSelectElement): void
151
- (event: 'select-file', value: UI_I_FileTreeNode): void
152
- (event: 'hide-file-modal'): void
153
- }>()
154
-
155
- const localization = computed<UI_I_Localization>(() => useLocal())
156
- </script>
157
-
158
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <div class="hardware-cd-dvd-drive">
3
+ <atoms-stack-block
4
+ :has-children="true"
5
+ :is-roll-back="props.type === 'removed'"
6
+ :removable="props.isRemovable"
7
+ :test-id="`cd-dvd-drive-stack-block-${props.index}`"
8
+ @remove="emits('remove')"
9
+ @roll-back="emits('roll-back')"
10
+ >
11
+ <template #stackBlockKey>
12
+ <div
13
+ :id="`vm-wizard-toggle-block-cd-dvd-drive-${props.index}`"
14
+ :data-id="`vm-wizard-toggle-block-cd-dvd-drive-${props.index}`"
15
+ class="vm-wizard-toggle-block-cd-dvd-drive vm-wizard-toggle-block-hard-disk"
16
+ >
17
+ <span>{{ props.label }}</span>
18
+ </div>
19
+ </template>
20
+ <template #stackBlockContent>
21
+ <div class="flex-align-center flex-space-between">
22
+ <template v-if="props.type === 'removed'">
23
+ <span>{{ localization.common.deviceWillRemoved }}</span>
24
+ <div class="flex-align-center" @click.stop>
25
+ <input
26
+ :id="`cd-dvd-delete-files-from-datastore-${props.index}`"
27
+ v-model="deleteFilesFromDatastore"
28
+ :data-id="`cd-dvd-delete-files-from-datastore-${props.index}`"
29
+ :disabled="props.disabled"
30
+ type="checkbox"
31
+ class="pointer"
32
+ @click.stop
33
+ />
34
+ <label
35
+ :for="`cd-dvd-delete-files-from-datastore-${props.index}`"
36
+ :class="[
37
+ 'label-text-normal pointer',
38
+ props.disabled && 'div-disabled',
39
+ ]"
40
+ >{{ localization.common.deleteFilesFromDatastore }}</label
41
+ >
42
+ </div>
43
+ </template>
44
+ <template v-else>
45
+ <div class="select">
46
+ <select
47
+ id="vm-wizard-cd-dvd-drive-field"
48
+ v-model="selectedCdDvdDrive"
49
+ :data-id="`vm-wizard-cd-dvd-drive-field-${props.index}`"
50
+ class="vm-wizard-cd-dvd-drive-field input-text-color"
51
+ @click.stop
52
+ @change="emits('change-cd-dvd-drive', $event)"
53
+ >
54
+ <option
55
+ v-for="(item, key) in props.cdDvdDriveOptions"
56
+ :key="key"
57
+ :value="item.value"
58
+ >
59
+ {{ item.text }}
60
+ </option>
61
+ </select>
62
+ </div>
63
+ </template>
64
+ </div>
65
+ </template>
66
+ <template #stackChildren>
67
+ <common-vm-actions-common-customize-hardware-virtual-hardware-cd-dvd-drive-media
68
+ v-if="selectedCdDvdDrive === 'datastoreIsoFile'"
69
+ v-model:cd-dvd-media="cdDvdMedia"
70
+ @browse="isShowFileModal = true"
71
+ />
72
+
73
+ <!-- :short-options="props.type === 'edit'" // поменял из-за задачки PNCWEB-384-->
74
+ <common-vm-actions-common-customize-hardware-virtual-hardware-bus
75
+ v-model:bus="bus"
76
+ :index="props.indexByHardDisks"
77
+ :validation-type="props.busValidationType"
78
+ :error-validation-fields="props.errorValidationFields"
79
+ :disabled="props.isRunning"
80
+ :test-id="`vm-wizard-cd-dvd-bus-field-${props.index}`"
81
+ short-options
82
+ component-type="disk_devices"
83
+ :guest-machine-type="props.guestMachineType"
84
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
85
+ />
86
+ </template>
87
+ </atoms-stack-block>
88
+
89
+ <Teleport to="body">
90
+ <common-vm-actions-common-customize-hardware-virtual-hardware-browse-view
91
+ v-if="isShowFileModal"
92
+ show
93
+ :file-types="props.fileTypes"
94
+ :nodes="props.nodes"
95
+ :files="props.files"
96
+ @submit="emits('select-file', $event)"
97
+ @get-storage="emits('get-storage', $event)"
98
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
99
+ @get-active-device-child="emits('get-active-device-child', $event)"
100
+ @show-datastore-child="emits('show-datastore-child', $event)"
101
+ @hide="emits('hide-file-modal')"
102
+ />
103
+ </Teleport>
104
+ </div>
105
+ </template>
106
+
107
+ <script lang="ts" setup>
108
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
109
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
110
+ import type {
111
+ UI_I_Localization,
112
+ UI_I_HTMLSelectElement,
113
+ } from '~/lib/models/interfaces'
114
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
115
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
116
+ import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
117
+ import type { UI_T_CdDvdType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
118
+
119
+ const deleteFilesFromDatastore = defineModel<boolean>(
120
+ 'deleteFilesFromDatastore',
121
+ { required: true }
122
+ )
123
+ const selectedCdDvdDrive = defineModel<string>('selectedCdDvdDrive', {
124
+ required: true,
125
+ })
126
+ const cdDvdMedia = defineModel<string>('cdDvdMedia', { required: true })
127
+ const isShowFileModal = defineModel<boolean>('isShowFileModal', {
128
+ required: true,
129
+ })
130
+ const bus = defineModel<string>('bus', { required: true })
131
+
132
+ const props = defineProps<{
133
+ index: number
134
+ nodes: UI_I_FileTreeNode[]
135
+ files: UI_I_FileTreeNode[]
136
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
137
+ type: UI_T_CdDvdType
138
+ isRemovable: boolean
139
+ label: string
140
+ disabled: boolean
141
+ cdDvdDriveOptions: UI_I_OptionItem[]
142
+ indexByHardDisks: number
143
+ busValidationType: string
144
+ fileTypes: UI_I_OptionItem[]
145
+ isRunning: boolean
146
+ guestMachineType?: UI_I_OptionItem | null
147
+ }>()
148
+
149
+ const emits = defineEmits<{
150
+ (event: 'remove'): void
151
+ (event: 'roll-back'): void
152
+ (event: 'remove-error-by-title', value: string): void
153
+ (event: 'get-storage', value: UI_I_TablePayload): void
154
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
155
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
156
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
157
+ (event: 'change-cd-dvd-drive', value: UI_I_HTMLSelectElement): void
158
+ (event: 'select-file', value: UI_I_FileTreeNode): void
159
+ (event: 'hide-file-modal'): void
160
+ }>()
161
+
162
+ const localization = computed<UI_I_Localization>(() => useLocal())
163
+ </script>
164
+
165
+ <style lang="scss" scoped></style>
@@ -19,7 +19,6 @@
19
19
  :vm-name-old="props.vmSettings?.name"
20
20
  :passthrough-devices="props.passthroughDevices"
21
21
  :get-datastore-table-func="props.getDatastoreTableFunc"
22
- :browse-loading="props.browseLoading"
23
22
  @hide="emits('hide')"
24
23
  @validate="validateSendData"
25
24
  @update-vm="emits('update-vm')"
@@ -108,7 +107,6 @@ const props = defineProps<{
108
107
  vmId: string
109
108
  datastore: UI_I_DatastoreTableItem[]
110
109
  validateSendDataFunc: UI_T_EditVmFinishFunc
111
- browseLoading: boolean
112
110
  getDatastoreTableFunc?: (payload: UI_I_TablePayload) => Promise<void>
113
111
  state?: string | number
114
112
  passthroughDevices?: UI_I_PciDevice[]
@@ -51,7 +51,6 @@
51
51
  :get-datastore-table-func="props.getDatastoreTableFunc"
52
52
  :datastore="props.datastore"
53
53
  is-edit
54
- :browse-loading="props.browseLoading"
55
54
  @get-storage="emits('get-storage', $event)"
56
55
  @get-folders-or-files="emits('get-folders-or-files', $event)"
57
56
  @get-active-device-child="emits('get-active-device-child', $event)"
@@ -110,7 +109,6 @@ const props = defineProps<{
110
109
  virtualHardwareNetworks: UI_I_SendDataNewNetwork[] | null
111
110
  virtualHardwareHardDisks: UI_I_SendDataNewHardDisk[] | null
112
111
  virtualHardwareCdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
113
- browseLoading: boolean
114
112
  state?: string | number
115
113
  vmNameOld?: string
116
114
  passthroughDevices?: UI_I_PciDevice[]
@@ -53,7 +53,6 @@
53
53
  :get-datastore-table-func="props.getDatastoreTableFunc"
54
54
  :datastore="props.datastore"
55
55
  is-edit
56
- :browse-loading="props.browseLoading"
57
56
  @get-storage="emits('get-storage', $event)"
58
57
  @get-folders-or-files="emits('get-folders-or-files', $event)"
59
58
  @get-active-device-child="emits('get-active-device-child', $event)"
@@ -116,7 +115,6 @@ const props = defineProps<{
116
115
  virtualHardwareNetworks: UI_I_SendDataNewNetwork[] | null
117
116
  virtualHardwareHardDisks: UI_I_SendDataNewHardDisk[] | null
118
117
  virtualHardwareCdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
119
- browseLoading: boolean
120
118
  state?: string | number
121
119
  vmNameOld?: string
122
120
  passthroughDevices?: UI_I_PciDevice[]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.4.561",
4
+ "version": "1.4.563",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",