bfg-common 1.4.353 → 1.4.355

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 (35) hide show
  1. package/assets/localization/local_be.json +2796 -2806
  2. package/assets/localization/local_en.json +2800 -2810
  3. package/assets/localization/local_hy.json +17 -27
  4. package/assets/localization/local_kk.json +17 -27
  5. package/assets/localization/local_ru.json +17 -27
  6. package/assets/localization/local_zh.json +17 -27
  7. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  8. package/components/common/browse/lib/models/interfaces.ts +5 -5
  9. package/components/common/layout/theHeader/feedback/Feedback.vue +7 -12
  10. package/components/common/layout/theHeader/feedback/FeedbackNew.vue +63 -0
  11. package/components/common/layout/theHeader/helpMenu/About.vue +72 -45
  12. package/components/common/layout/theHeader/helpMenu/HelpMenu.vue +1 -1
  13. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +64 -136
  14. package/components/common/portlets/tag/CreateCategory.vue +276 -0
  15. package/components/common/portlets/tag/TagAddNew.vue +578 -0
  16. package/components/common/portlets/tag/TagsNew.vue +450 -0
  17. package/components/common/portlets/tag/lib/config/config.ts +200 -0
  18. package/components/common/portlets/tag/lib/models/interfaces.ts +27 -0
  19. package/components/common/portlets/tag/lib/models/types.ts +16 -0
  20. package/components/common/spiceConsole/Drawer.vue +0 -28
  21. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  22. package/lib/models/interfaces.ts +0 -1
  23. package/package.json +2 -2
  24. package/components/common/layout/theHeader/feedback/lib/config/sendFeedback.ts +0 -9
  25. package/components/common/layout/theHeader/feedback/new/New.vue +0 -131
  26. package/components/common/layout/theHeader/feedback/new/additionalDetails/AdditionalDetails.vue +0 -14
  27. package/components/common/layout/theHeader/feedback/new/description/Description.vue +0 -58
  28. package/components/common/layout/theHeader/feedback/new/email/Email.vue +0 -43
  29. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +0 -83
  30. package/components/common/layout/theHeader/feedback/new/tabs/Tabs.vue +0 -79
  31. package/components/common/layout/theHeader/feedback/new/tabs/lib/config/tabs.ts +0 -25
  32. package/components/common/layout/theHeader/feedback/new/tabs/lib/models/interfaces.ts +0 -17
  33. package/components/common/layout/theHeader/feedback/new/tabs/lib/models/types.ts +0 -1
  34. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +0 -92
  35. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +0 -95
@@ -0,0 +1,450 @@
1
+ <template>
2
+ <div>
3
+ <ui-portlet
4
+ class="tags"
5
+ test-id="tags-portlet"
6
+ :title="localization.common.assignedTags"
7
+ :dragged="props.dragged"
8
+ :dragged-any="props.draggedAny"
9
+ :is-open="props.isOpen"
10
+ :portlet-id="props.portletId"
11
+ @toggle="onTogglePortlet"
12
+ >
13
+ <template #portletBody>
14
+ <ui-data-table
15
+ test-id="tags-portlet-table"
16
+ :data="data"
17
+ :options="options"
18
+ server-off
19
+ :default-layout="false"
20
+ size="sm"
21
+ >
22
+ <!-- :loading="loading"-->
23
+ <template #icon="{ item }">
24
+ <div style="display: flex; justify-content: flex-end; width: 100%">
25
+ <span
26
+ :id="`actions-${item.data.row}`"
27
+ :class="[
28
+ 'icon-container',
29
+ {
30
+ selected: isShow[`action-${item.data.row}`],
31
+ },
32
+ ]"
33
+ @click="onShowActions(item.data.row)"
34
+ >
35
+ <ui-icon :name="item.data.icon" width="16" height="16" />
36
+ </span>
37
+ <ui-popup-window
38
+ v-model="isShow[`action-${item.data.row}`]"
39
+ :elem-id="`actions-${item.data.row}`"
40
+ width="fit-content"
41
+ >
42
+ <div style="padding: 8px">
43
+ <div
44
+ class="action"
45
+ data-id="view-tag-details-action"
46
+ @click="onShowDetails(item.data.row)"
47
+ >
48
+ <ui-icon name="details" width="16" height="16" />
49
+ <span>{{ localization.common.viewDetails }}</span>
50
+ </div>
51
+ <div
52
+ class="action-remove"
53
+ data-id="show-remove-tag-dialog-action"
54
+ @click="onShowRemoveDialog(item.data.row)"
55
+ >
56
+ <ui-icon name="delete" width="16" height="16" />
57
+ <span>{{ localization.common.remove }}</span>
58
+ </div>
59
+ </div>
60
+ </ui-popup-window>
61
+ </div>
62
+ </template>
63
+ </ui-data-table>
64
+ </template>
65
+ <template #portletFooter>
66
+ <div class="footer">
67
+ <ui-button
68
+ test-id="show-assign-new-tag-modal"
69
+ variant="text"
70
+ is-without-height
71
+ is-without-sizes
72
+ @click="onShowAssignModal"
73
+ >
74
+ {{ localization.common.assignNew }}...
75
+ </ui-button>
76
+ </div>
77
+ </template>
78
+ </ui-portlet>
79
+
80
+ <ui-popup
81
+ v-if="isShowRemoveDialog"
82
+ test-id="remove-tag-dialog"
83
+ icon-name="info-status"
84
+ :texts="removeTagDialogTexts"
85
+ :message="removeTagMessage"
86
+ :title="localization.common.removeTag"
87
+ @hide="onHideRemoveDialog"
88
+ @submit="onRemoveTag"
89
+ />
90
+
91
+ <common-portlets-tag-add-new
92
+ v-if="isShowModal"
93
+ :is-show-modal="isShowModal"
94
+ :assign-data="assignData"
95
+ :selected-item-name="props.selectedItemName"
96
+ @add-new-tag="onAddNewTag"
97
+ @create-category="onCreateCategory"
98
+ @cancel="onHideAssignModal"
99
+ @assign="onAssignSelectedTags"
100
+ />
101
+
102
+ </div>
103
+ </template>
104
+
105
+ <script setup lang="ts">
106
+ import type {
107
+ UI_I_ArbitraryObject,
108
+ UI_I_Localization,
109
+ } from '~/lib/models/interfaces'
110
+ import type {
111
+ UI_I_DataTable,
112
+ UI_I_DataTableOptions,
113
+ UI_I_DataTableHeader,
114
+ UI_I_DataTableBody,
115
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
116
+ import type { UI_I_ModalTexts } from '~/node_modules/bfg-uikit/components/ui/modal/models/interfaces'
117
+ import type { I_CreateCategoryData } from '~/components/common/portlets/tag/lib/models/interfaces'
118
+ import {
119
+ tagTableHeaderOptions,
120
+ tagTableHeaderDataFunc,
121
+ tagsAssignBodyItemsTemporary,
122
+ } from '~/components/common/portlets/tag/lib/config/config'
123
+
124
+ const props = defineProps<{
125
+ portletId: string
126
+ dragged?: boolean
127
+ isOpen?: boolean
128
+ draggedAny?: boolean
129
+ selectedItemName: string
130
+ objectSummary: any
131
+ }>()
132
+
133
+ const localization = computed<UI_I_Localization>(() => useLocal())
134
+
135
+ const isShow = ref<UI_I_ArbitraryObject<boolean>>({})
136
+ const isShowModal = ref<boolean>(false)
137
+ const onShowAssignModal = (): void => {
138
+ isShowModal.value = true
139
+ }
140
+
141
+ const onHideAssignModal = (): void => {
142
+ isShowModal.value = false
143
+ }
144
+ const onShowActions = (id: number): void => {
145
+ isShow.value[`action-${id}`] = !isShow.value[`action-${id}`]
146
+ }
147
+ const onShowDetails = (_id: number): void => {
148
+ navigateTo('/tags-attributes/tags')
149
+ }
150
+
151
+ const isShowRemoveDialog = ref<boolean>(false)
152
+
153
+ const onHideRemoveDialog = (): void => {
154
+ isShowRemoveDialog.value = false
155
+ }
156
+ const tagIdForRemove = ref<number>(0)
157
+ const tagNameForRemove = computed<string>(
158
+ () =>
159
+ (tagsBodyItems.value.find(
160
+ (row: UI_I_DataTableBody) => row.row === tagIdForRemove.value
161
+ )?.data[0]?.text || '') as string
162
+ )
163
+
164
+ const removeTagMessage = computed<string>(() =>
165
+ localization.value.common.removeTagDialog
166
+ .replace?.('{tagName}', tagNameForRemove.value)
167
+ .replace('{selectedItemName}', props.selectedItemName)
168
+ )
169
+ const onShowRemoveDialog = (id: number): void => {
170
+ tagIdForRemove.value = id
171
+ isShowRemoveDialog.value = true
172
+ }
173
+
174
+ const removeTagDialogTexts = computed<UI_I_ModalTexts>(() => ({
175
+ button1: localization.value.common.cancel,
176
+ button2: localization.value.common.remove,
177
+ }))
178
+
179
+ const onRemoveTag = (): void => {
180
+ onHideRemoveDialog()
181
+ tagsBodyItems.value = tagsBodyItems.value.filter(
182
+ (row) => row.row !== tagIdForRemove.value
183
+ )
184
+ }
185
+
186
+ const options: UI_I_DataTableOptions = {
187
+ ...tagTableHeaderOptions,
188
+ isSelectable: false,
189
+ }
190
+
191
+ const tagsHeadItems = computed<UI_I_DataTableHeader[]>(() =>
192
+ tagTableHeaderDataFunc(localization.value)
193
+ )
194
+ // const tagsBodyItems = computed<UI_I_TableBodyItem[][]>(() => {
195
+ // return $store.getters['inventory/getTags'] || []
196
+ // })
197
+
198
+ // const { $store } = useNuxtApp()
199
+
200
+ const tagsBodyItems = ref<UI_I_DataTableBody[]>([])
201
+
202
+ watch(
203
+ () => props.objectSummary,
204
+ (newValue: any) => {
205
+ let result: UI_I_DataTableBody[] = []
206
+ const attr = newValue.portlets?.find((portlet) => portlet.kind === 2)
207
+
208
+ if (attr) {
209
+ const rows = []
210
+
211
+ for (const key in attr.rows) {
212
+ // @ts-ignore
213
+ rows.push({
214
+ row: +key,
215
+ data: [
216
+ { col: 0, text: attr.rows[key][0] },
217
+ { col: 1, text: attr.rows[key][1] },
218
+ { col: 2, text: attr.rows[key][2] },
219
+ {
220
+ col: 3,
221
+ text: '',
222
+ key: 'icon',
223
+ data: {
224
+ icon: 'vertical-dotes',
225
+ row: +key,
226
+ },
227
+ },
228
+ ],
229
+ })
230
+ }
231
+ result = rows
232
+ }
233
+
234
+ tagsBodyItems.value = result
235
+ },
236
+ { deep: true, immediate: true }
237
+ )
238
+ const tagsAssignBodyItems = ref<UI_I_DataTableBody[]>(
239
+ useDeepCopy(tagsAssignBodyItemsTemporary)
240
+ )
241
+
242
+ const data = computed<UI_I_DataTable>(() => ({
243
+ id: '0',
244
+ selectedRows: [],
245
+ isAllSelected: false,
246
+ title: '',
247
+ subTitle: '',
248
+ header: tagsHeadItems.value,
249
+ body: tagsBodyItems.value,
250
+ }))
251
+
252
+ const assignData = computed<UI_I_DataTable>(() => ({
253
+ id: '1',
254
+ selectedRows: [],
255
+ isAllSelected: false,
256
+ title: '',
257
+ subTitle: '',
258
+ header: tagsHeadItems.value,
259
+ body: tagsAssignBodyItems.value,
260
+ }))
261
+
262
+ // const showTagModal = (): void => {
263
+ // isShowTagModal.value = true
264
+ // }
265
+
266
+ // const routeParams = useRoute().params
267
+ // const routeId: string = routeParams?.id.toString()
268
+ // const routeType: string = routeParams?.type.toString()
269
+ // const getTags = async (): Promise<void> => {
270
+ // const payload: I_GetTagsPayload = {
271
+ // id: routeId,
272
+ // type: `${routeType}s`,
273
+ // }
274
+ //
275
+ // return await $store.dispatch('inventory/A_GET_TAGS', payload)
276
+ // }
277
+ // getTags()
278
+
279
+ const onAddNewTag = (newTag: UI_I_DataTableBody): void => {
280
+ tagsAssignBodyItems.value.push(newTag)
281
+ emits('create-new-tag', newTag)
282
+ }
283
+
284
+ const onAssignSelectedTags = async (
285
+ data: UI_I_DataTableBody[]
286
+ ): Promise<void> => {
287
+ if (data.length > 0) {
288
+ const sortedIds = tagsBodyItems.value.map((row: UI_I_DataTableBody) => Number(row.row)).sort()
289
+ let lastId = sortedIds[sortedIds.length - 1]
290
+ lastId = lastId === undefined ? -1 : lastId
291
+
292
+ const selectedNewTags = data.map((row, index) => {
293
+ return {
294
+ ...row,
295
+ row: lastId + index + 1,
296
+ isSelected: false,
297
+ data: [
298
+ row.data[0],
299
+ row.data[1],
300
+ row.data[2],
301
+ {
302
+ ...row.data[3],
303
+ key: 'icon',
304
+ data: {
305
+ icon: 'vertical-dotes',
306
+ row: lastId + index + 1,
307
+ },
308
+ },
309
+ ],
310
+ }
311
+ })
312
+
313
+ const addedTagsName = selectedNewTags.map((row) => row.data[0].text)
314
+
315
+ tagsAssignBodyItems.value = tagsAssignBodyItems.value.filter(
316
+ (row: UI_I_DataTableBody) => !addedTagsName.includes(row.data[0].text)
317
+ )
318
+
319
+ tagsBodyItems.value = [...tagsBodyItems.value, ...selectedNewTags]
320
+ emits('assign-new-tags', selectedNewTags)
321
+ }
322
+ onHideAssignModal()
323
+ // const tags = data.map((row) => {
324
+ // return {
325
+ // name: row[0].text,
326
+ // description: row[1].text,
327
+ // category: 'none',
328
+ // }
329
+ // })
330
+ // const payload: I_UpdateTagsPayload = {
331
+ // tags,
332
+ // id: routeId,
333
+ // type: `${routeType}s`,
334
+ // }
335
+ // hideTagModal()
336
+ // await $store.dispatch('inventory/A_UPDATE_TAGS', payload)
337
+ //
338
+ // globalRefresh()
339
+ }
340
+ // const globalRefresh = (): void => {
341
+ // $store.dispatch('main/A_GLOBAL_REFRESH', null)
342
+ // }
343
+
344
+ const onCreateCategory = (data: I_CreateCategoryData): void => {
345
+ emits('create-category', data)
346
+ }
347
+
348
+ const emits = defineEmits<{
349
+ (event: 'toggle-portlet', id: string): void
350
+ (event: 'create-category', value: I_CreateCategoryData): void
351
+ (event: 'create-new-tag', value: UI_I_DataTableBody): void
352
+ (event: 'assign-new-tags', value: UI_I_DataTableBody[]): void
353
+ }>()
354
+
355
+ const onTogglePortlet = (id: string): void => {
356
+ emits('toggle-portlet', id)
357
+ }
358
+ </script>
359
+
360
+ <style>
361
+ :root {
362
+ --table-actions-icon: #4d5d69;
363
+ --table-actions-icon-hover: #008fd6;
364
+ --table-actions-view: #182531;
365
+ --table-actions-remove: #ea3223;
366
+ --table-actions-bg-hover: #e9ebed66;
367
+ }
368
+ :root.dark-theme {
369
+ --table-actions-icon: #e9eaec;
370
+ --table-actions-icon-hover: #ffffff;
371
+ --table-actions-view: #ffffff;
372
+ --table-actions-remove: #ea3223;
373
+ --table-actions-bg-hover: #e9ebed0f;
374
+ }
375
+ </style>
376
+
377
+ <style scoped lang="scss">
378
+ .footer {
379
+ padding: 0 10px 5px;
380
+
381
+ .edit-trigger {
382
+ color: var(--global-text-color);
383
+ cursor: pointer;
384
+ margin-right: 10px;
385
+ }
386
+ }
387
+
388
+ .icon-container {
389
+ width: 16px;
390
+ height: 16px;
391
+ display: block;
392
+ cursor: pointer;
393
+ color: var(--table-actions-icon);
394
+
395
+ &:hover,
396
+ &.selected {
397
+ color: var(--table-actions-icon-hover);
398
+ }
399
+ }
400
+
401
+ .action-remove {
402
+ display: flex;
403
+ align-items: center;
404
+ column-gap: 8px;
405
+
406
+ height: 32px;
407
+ border-radius: 4px;
408
+ padding: 8px;
409
+ color: var(--table-actions-remove);
410
+ cursor: pointer;
411
+
412
+ font-size: 13px;
413
+ font-weight: 500;
414
+ line-height: 15.73px;
415
+
416
+ &:hover {
417
+ background: var(--table-actions-bg-hover);
418
+ }
419
+ }
420
+
421
+ .action {
422
+ display: flex;
423
+ align-items: center;
424
+ column-gap: 8px;
425
+
426
+ height: 32px;
427
+ border-radius: 4px;
428
+ padding: 8px;
429
+ color: var(--table-actions-view);
430
+ margin-bottom: 8px;
431
+ cursor: pointer;
432
+
433
+ font-size: 13px;
434
+ font-weight: 500;
435
+ line-height: 15.73px;
436
+
437
+ &:hover {
438
+ background: var(--table-actions-bg-hover);
439
+ }
440
+ }
441
+
442
+ .footer {
443
+ :deep(button.ui-btn) {
444
+ line-height: 16px;
445
+ margin-bottom: 11px;
446
+ margin-left: 6px;
447
+ width: fit-content;
448
+ }
449
+ }
450
+ </style>
@@ -0,0 +1,200 @@
1
+ import type {
2
+ UI_I_DataTableOptions,
3
+ UI_I_DataTableBody,
4
+ UI_I_DataTableHeader,
5
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
6
+ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
7
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
8
+ import type { I_CreateCategoryData } from '~/components/common/portlets/tag/lib/models/interfaces'
9
+ import type { T_CreateCategoryTypes } from '~/components/common/portlets/tag/lib/models/types'
10
+ export const createCategoryData: I_CreateCategoryData = {
11
+ categoryName: '',
12
+ description: '',
13
+ tagsPerObject: '0',
14
+ types: {
15
+ folder: false,
16
+ datacenter: false,
17
+ datastoreCluster: false,
18
+ distributedSwitch: false,
19
+ contentLibrary: false,
20
+ network: false,
21
+ vApp: false,
22
+ cluster: false,
23
+ datastore: false,
24
+ distributedPortGroup: false,
25
+ host: false,
26
+ libraryItem: false,
27
+ resourcePool: false,
28
+ virtualMachine: false,
29
+ },
30
+ }
31
+
32
+ export const createCategoryTypes: Readonly<T_CreateCategoryTypes> = [
33
+ 'folder',
34
+ 'datacenter',
35
+ 'datastoreCluster',
36
+ 'distributedSwitch',
37
+ 'contentLibrary',
38
+ 'network',
39
+ 'vApp',
40
+ 'cluster',
41
+ 'datastore',
42
+ 'distributedPortGroup',
43
+ 'host',
44
+ 'libraryItem',
45
+ 'resourcePool',
46
+ 'virtualMachine',
47
+ ] as const
48
+
49
+ export const tagTableHeaderOptions: UI_I_DataTableOptions = {
50
+ perPageOptions: [],
51
+ isSelectable: true,
52
+ selectType: 'checkbox',
53
+ showPagination: false,
54
+ showPageInfo: false,
55
+ isSortable: true,
56
+ server: false,
57
+ isResizable: false,
58
+ showSearch: false,
59
+ showColumnManager: false,
60
+ }
61
+
62
+ export const temporaryCategories: UI_I_Dropdown[] = [
63
+ {
64
+ text: 'Category1',
65
+ value: 'Category1',
66
+ selected: false,
67
+ },
68
+ {
69
+ text: 'Category2',
70
+ value: 'Category2',
71
+ selected: false,
72
+ },
73
+ {
74
+ text: 'Category3',
75
+ value: 'Category3',
76
+ selected: false,
77
+ },
78
+ {
79
+ text: 'Category4',
80
+ value: 'Category4',
81
+ selected: false,
82
+ },
83
+ ]
84
+
85
+ export const makeNewTagCreateActionRowFunc = (
86
+ row: number
87
+ ): UI_I_DataTableBody => ({
88
+ row,
89
+ isSelected: false,
90
+ actionRow: true,
91
+ data: [
92
+ {
93
+ col: 0,
94
+ text: '',
95
+ key: 'icon',
96
+ data: {
97
+ type: 'tagName',
98
+ },
99
+ },
100
+ {
101
+ col: 1,
102
+ text: '',
103
+ key: 'icon',
104
+ data: {
105
+ type: 'category',
106
+ },
107
+ },
108
+ {
109
+ col: 2,
110
+ text: '',
111
+ key: 'icon',
112
+ data: {
113
+ type: 'description',
114
+ },
115
+ },
116
+ {
117
+ col: 3,
118
+ text: '',
119
+ key: 'icon',
120
+ data: {
121
+ type: 'actions',
122
+ },
123
+ },
124
+ ],
125
+ })
126
+
127
+ export const tagTableHeaderDataFunc = (
128
+ localization: UI_I_Localization
129
+ ): UI_I_DataTableHeader[] => [
130
+ {
131
+ col: 0,
132
+ colName: 'Tag Name',
133
+ text: localization.common.tagName,
134
+ isSortable: true,
135
+ sort: 'asc',
136
+ width: '31%',
137
+ show: true,
138
+ filter: false,
139
+ },
140
+ {
141
+ col: 1,
142
+ colName: 'Category',
143
+ text: localization.common.category,
144
+ isSortable: true,
145
+ sort: 'asc',
146
+ width: '31%',
147
+ show: true,
148
+ filter: false,
149
+ },
150
+ {
151
+ col: 2,
152
+ colName: 'Description',
153
+ text: localization.common.description,
154
+ isSortable: true,
155
+ sort: 'asc',
156
+ width: '31%',
157
+ show: true,
158
+ filter: false,
159
+ },
160
+ {
161
+ col: 3,
162
+ colName: '',
163
+ text: '',
164
+ width: '7%',
165
+ show: true,
166
+ },
167
+ ]
168
+
169
+ export const tagsAssignBodyItemsTemporary: UI_I_DataTableBody[] = [
170
+ {
171
+ row: 0,
172
+ isSelected: false,
173
+ data: [
174
+ { col: 0, text: 'test1' },
175
+ { col: 1, text: 'test1' },
176
+ { col: 2, text: 'test1' },
177
+ { col: 3, text: '' },
178
+ ],
179
+ },
180
+ {
181
+ row: 1,
182
+ isSelected: false,
183
+ data: [
184
+ { col: 0, text: 'test2' },
185
+ { col: 1, text: 'test2' },
186
+ { col: 2, text: 'test2' },
187
+ { col: 3, text: '' },
188
+ ],
189
+ },
190
+ {
191
+ row: 2,
192
+ isSelected: false,
193
+ data: [
194
+ { col: 0, text: 'test3' },
195
+ { col: 1, text: 'test3' },
196
+ { col: 2, text: 'test3' },
197
+ { col: 3, text: '' },
198
+ ],
199
+ },
200
+ ]
@@ -0,0 +1,27 @@
1
+ export interface I_CreateCategoryData {
2
+ categoryName: string
3
+ description: string
4
+ tagsPerObject: '0' | '1'
5
+ types: {
6
+ folder: boolean
7
+ datacenter: boolean
8
+ datastoreCluster: boolean
9
+ distributedSwitch: boolean
10
+ contentLibrary: boolean
11
+ network: boolean
12
+ vApp: boolean
13
+ cluster: boolean
14
+ datastore: boolean
15
+ distributedPortGroup: boolean
16
+ host: boolean
17
+ libraryItem: boolean
18
+ resourcePool: boolean
19
+ virtualMachine: boolean
20
+ }
21
+ }
22
+
23
+ export interface I_NewTagData {
24
+ tagName: string
25
+ category: string
26
+ description: string
27
+ }
@@ -0,0 +1,16 @@
1
+ export type T_CreateCategoryTypes = [
2
+ 'folder',
3
+ 'datacenter',
4
+ 'datastoreCluster',
5
+ 'distributedSwitch',
6
+ 'contentLibrary',
7
+ 'network',
8
+ 'vApp',
9
+ 'cluster',
10
+ 'datastore',
11
+ 'distributedPortGroup',
12
+ 'host',
13
+ 'libraryItem',
14
+ 'resourcePool',
15
+ 'virtualMachine'
16
+ ]