bfg-common 1.5.217 → 1.5.218

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 (100) hide show
  1. package/components/common/backup/lib/utils/getBackupOrBackupStorageId.ts +29 -0
  2. package/components/common/backup/storage/actions/add/Add.vue +51 -0
  3. package/components/common/backup/storage/actions/add/temp/Add.vue +527 -0
  4. package/components/common/backup/storage/actions/add/temp/lib/config/stepItems.ts +236 -0
  5. package/components/common/backup/storage/actions/add/temp/lib/models/interfaces.ts +58 -0
  6. package/components/common/backup/storage/actions/add/temp/lib/models/types.ts +14 -0
  7. package/components/common/backup/storage/actions/add/temp/lib/utils.ts +71 -0
  8. package/components/common/backup/storage/actions/add/temp/local/Local.vue +83 -0
  9. package/components/common/backup/storage/actions/add/temp/local/accessibility/Accessibility.vue +104 -0
  10. package/components/common/backup/storage/actions/add/temp/local/accessibility/lib/config/tabsPannel.ts +25 -0
  11. package/components/common/backup/storage/actions/add/temp/local/accessibility/lib/models/interfaces.ts +9 -0
  12. package/components/common/backup/storage/actions/add/temp/local/accessibility/lib/models/types.ts +5 -0
  13. package/components/common/backup/storage/actions/add/temp/local/accessibility/tablesView/TablesView.vue +141 -0
  14. package/components/common/backup/storage/actions/add/temp/local/accessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  15. package/components/common/backup/storage/actions/add/temp/local/accessibility/tablesView/lib/config/hostsTableItems.ts +27 -0
  16. package/components/common/backup/storage/actions/add/temp/local/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  17. package/components/common/backup/storage/actions/add/temp/local/accessibility/tablesView/lib/config/tableKeys.ts +15 -0
  18. package/components/common/backup/storage/actions/add/temp/local/createName/CreateName.vue +160 -0
  19. package/components/common/backup/storage/actions/add/temp/local/createName/lib/config/defaultForm.ts +15 -0
  20. package/components/common/backup/storage/actions/add/temp/nfs/Nfs.vue +106 -0
  21. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/Accessibility.vue +104 -0
  22. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/lib/config/tabsPannel.ts +25 -0
  23. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/lib/models/interfaces.ts +9 -0
  24. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/lib/models/types.ts +5 -0
  25. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/TablesView.vue +141 -0
  26. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  27. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/hostsTableItems.ts +27 -0
  28. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  29. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/tableKeys.ts +15 -0
  30. package/components/common/backup/storage/actions/add/temp/nfs/configuration/Configuration.vue +469 -0
  31. package/components/common/backup/storage/actions/add/temp/nfs/configuration/lib/config/defaultForm.ts +51 -0
  32. package/components/common/backup/storage/actions/add/temp/nfs/configuration/lib/models/interfaces.ts +14 -0
  33. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/DeletePopover.vue +99 -0
  34. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/ServersList.vue +125 -0
  35. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/config/serversListConfig.ts +40 -0
  36. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/config/tableKeys.ts +3 -0
  37. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/models/interfaces.ts +13 -0
  38. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/models/types.ts +1 -0
  39. package/components/common/backup/storage/actions/add/temp/nfs/kerberosAuthentication/KerberosAuthentication.vue +55 -0
  40. package/components/common/backup/storage/actions/add/temp/nfs/kerberosAuthentication/lib/config/radioOptions.ts +27 -0
  41. package/components/common/backup/storage/actions/add/temp/nfs/version/Version.vue +42 -0
  42. package/components/common/backup/storage/actions/add/temp/nfs/version/lib/config/versionOptions.ts +22 -0
  43. package/components/common/backup/storage/actions/add/temp/readyComplete/ReadyComplete.vue +85 -0
  44. package/components/common/backup/storage/actions/add/temp/readyComplete/lib/config/propertiesDetails.ts +165 -0
  45. package/components/common/backup/storage/actions/add/temp/readyComplete/lib/models/interfaces.ts +4 -0
  46. package/components/common/backup/storage/actions/add/temp/samba/Samba.vue +95 -0
  47. package/components/common/backup/storage/actions/add/temp/samba/accessibility/Accessibility.vue +104 -0
  48. package/components/common/backup/storage/actions/add/temp/samba/accessibility/lib/config/tabsPannel.ts +25 -0
  49. package/components/common/backup/storage/actions/add/temp/samba/accessibility/lib/models/interfaces.ts +9 -0
  50. package/components/common/backup/storage/actions/add/temp/samba/accessibility/lib/models/types.ts +5 -0
  51. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/TablesView.vue +141 -0
  52. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  53. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/hostsTableItems.ts +53 -0
  54. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  55. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/tableKeys.ts +15 -0
  56. package/components/common/backup/storage/actions/add/temp/samba/configuration/Configuration.vue +470 -0
  57. package/components/common/backup/storage/actions/add/temp/samba/configuration/lib/config/defaultForm.ts +51 -0
  58. package/components/common/backup/storage/actions/add/temp/samba/configuration/lib/models/interfaces.ts +14 -0
  59. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/DeletePopover.vue +99 -0
  60. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/ServersList.vue +124 -0
  61. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/config/serversListConfig.ts +40 -0
  62. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/config/tableKeys.ts +3 -0
  63. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/models/interfaces.ts +13 -0
  64. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/models/types.ts +1 -0
  65. package/components/common/backup/storage/actions/add/temp/samba/kerberosAuthentication/KerberosAuthentication.vue +55 -0
  66. package/components/common/backup/storage/actions/add/temp/samba/kerberosAuthentication/lib/config/radioOptions.ts +27 -0
  67. package/components/common/backup/storage/actions/add/temp/sharedStorm/SharedStorm.vue +106 -0
  68. package/components/common/backup/storage/actions/add/temp/sharedStorm/storage/Storage.vue +71 -0
  69. package/components/common/backup/storage/actions/add/temp/sharedStorm/storage/lib/config/defaultForm.ts +15 -0
  70. package/components/common/backup/storage/actions/add/temp/types/Types.vue +79 -0
  71. package/components/common/backup/storage/actions/add/temp/types/lib/config/typeOptions.ts +62 -0
  72. package/components/common/backup/storage/actions/delete/Delete.vue +65 -0
  73. package/components/common/backup/storage/actions/delete/lib/models/interfaces.ts +5 -0
  74. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  75. package/components/common/browse/lib/models/interfaces.ts +5 -5
  76. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  77. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  78. package/components/common/diagramMain/lib/models/types.ts +21 -21
  79. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  80. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  81. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  82. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  83. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  84. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  85. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  86. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  87. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  88. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  89. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  90. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  91. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  92. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  93. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  94. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  95. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  96. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  97. package/components/common/diagramMain/port/Ports.vue +47 -47
  98. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +3 -3
  99. package/components/common/selectLanguage/lib/config/config.ts +6 -6
  100. package/package.json +2 -2
@@ -0,0 +1,141 @@
1
+ <template>
2
+ <div class="data-table-view">
3
+ <div>
4
+ <atoms-table-data-grid
5
+ v-model:selected-row="selected"
6
+ v-model:page-size="paginationLocal.pageSize"
7
+ v-model:page="paginationLocal.page"
8
+ type="checkbox"
9
+ class="data-table"
10
+ test-id="accessibility-table"
11
+ :head-items="headItems"
12
+ :body-items="bodyItems"
13
+ :total-items="props.totalItems"
14
+ :total-pages="props.totalPages"
15
+ :items-per-page="itemsPerPage"
16
+ :loading="loading"
17
+ @filtering="filtering"
18
+ @sorting="sorting"
19
+ >
20
+ <template #icon="{ item }">
21
+ <span :class="['datagrid-cell-icon', item.data.iconClassName]" />
22
+ <span class="text-ellipsis">
23
+ {{ item.text }}
24
+ </span>
25
+ </template>
26
+ </atoms-table-data-grid>
27
+ </div>
28
+ </div>
29
+ </template>
30
+
31
+ <script lang="ts" setup>
32
+ import type {
33
+ UI_I_HeadItem,
34
+ UI_I_BodyItem,
35
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
36
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
37
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
38
+ import { itemsPerPage } from '~/components/atoms/table/dataGrid/lib/config/itemsPerPage'
39
+ import type { UI_T_HostsAccessibilityTab } from '~/components/common/wizards/datastore/add/steps/hostAccessibility/lib/models/types'
40
+ import type {
41
+ I_CompatibleHostsTable,
42
+ I_IncompatibleHostsTable,
43
+ } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/lib/models/interfaces'
44
+ import * as compatibleTable from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/tablesView/lib/config/compatibleTable'
45
+ import * as incompatibleTable from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/tablesView/lib/config/incompatibleTable'
46
+
47
+ const props = defineProps<{
48
+ dataTable: I_CompatibleHostsTable[] | I_IncompatibleHostsTable[]
49
+ selectedRow: number[]
50
+ tableType: UI_T_HostsAccessibilityTab
51
+ totalItems: number
52
+ totalPages: number
53
+ pagination: UI_I_Pagination
54
+ }>()
55
+ const emits = defineEmits<{
56
+ (event: 'update:selected-row', value: number[]): void
57
+ (event: 'pagination', value: UI_I_Pagination): void
58
+ (event: 'sort', value: string): void
59
+ }>()
60
+
61
+ const localization = computed<UI_I_Localization>(() => useLocal())
62
+
63
+ const loading = computed<boolean>(() => false)
64
+
65
+ const selected = computed<number[]>({
66
+ get() {
67
+ return props.selectedRow
68
+ },
69
+ set(value) {
70
+ emits('update:selected-row', value)
71
+ },
72
+ })
73
+
74
+ const filtering = (e: [string, string][]): void => {
75
+ console.log(e, 111)
76
+ }
77
+ const sorting = (e: [number, boolean]): void => {
78
+ const [column, status] = e
79
+ const direction = status ? 'desc' : 'asc'
80
+
81
+ const sort = `${column}.${direction}`
82
+
83
+ emits('sort', sort)
84
+ }
85
+
86
+ const paginationLocal = ref<UI_I_Pagination>({
87
+ page: 1,
88
+ pageSize: 1,
89
+ })
90
+ watch(
91
+ () => props.pagination,
92
+ (newValue) => {
93
+ paginationLocal.value = newValue
94
+ },
95
+ { immediate: true }
96
+ )
97
+ watch(
98
+ paginationLocal,
99
+ (newValue) => {
100
+ emits('pagination', newValue)
101
+ },
102
+ { deep: true, immediate: true }
103
+ )
104
+ const tables: {
105
+ 'compatible-hosts': any
106
+ 'incompatible-hosts': any
107
+ } = {
108
+ 'compatible-hosts': compatibleTable,
109
+ 'incompatible-hosts': incompatibleTable,
110
+ }
111
+
112
+ const headItems = computed<UI_I_HeadItem[]>(() =>
113
+ tables[props.tableType].headItems(localization.value)
114
+ )
115
+
116
+ const bodyItems = ref<UI_I_BodyItem[][]>([])
117
+ watch(
118
+ () => props.dataTable,
119
+ (newValue) => {
120
+ if (!newValue?.length) {
121
+ bodyItems.value = []
122
+ return
123
+ }
124
+
125
+ bodyItems.value = tables[props.tableType].bodyItems(newValue)
126
+ },
127
+ { deep: true, immediate: true }
128
+ )
129
+ </script>
130
+
131
+ <style lang="scss" scoped>
132
+ .data-table-view {
133
+ height: inherit;
134
+ .data-table {
135
+ height: inherit;
136
+ :deep(.datagrid-outer-wrapper) {
137
+ height: inherit;
138
+ }
139
+ }
140
+ }
141
+ </style>
@@ -0,0 +1,62 @@
1
+ import type {
2
+ UI_I_HeadItem,
3
+ UI_I_BodyItem,
4
+ } from '~/node_modules/bfg-common/components/atoms/table/dataGrid/lib/models/interfaces'
5
+ import type { UI_I_Localization } from '~/node_modules/bfg-common/lib/models/interfaces'
6
+ import {
7
+ hostIconByState,
8
+ clusterIconByState,
9
+ } from '~/node_modules/bfg-common/components/common/lib/config/states'
10
+ import { constructHeadItem } from '~/node_modules/bfg-common/components/atoms/table/dataGrid/lib/utils/constructDataTable'
11
+ import type { I_CompatibleHostsTable } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/lib/models/interfaces'
12
+ import { compatibleHostsTableKeys } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/tablesView/lib/config/tableKeys'
13
+
14
+ const getItems = (
15
+ localization: UI_I_Localization
16
+ ): [string, boolean, string, string][] => {
17
+ return [
18
+ [localization.common.host, true, '300px', compatibleHostsTableKeys[0]],
19
+ [localization.common.cluster, true, '300px', compatibleHostsTableKeys[1]],
20
+ ]
21
+ }
22
+
23
+ export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
24
+ const result: UI_I_HeadItem[] = []
25
+ getItems(localization).forEach((item) => {
26
+ result.push(constructHeadItem('icon', item[0], item[3], false, item[2]))
27
+ })
28
+ return result
29
+ }
30
+
31
+ export const bodyItems = (
32
+ data: I_CompatibleHostsTable[]
33
+ ): UI_I_BodyItem[][] => {
34
+ const bodyItems: UI_I_BodyItem[][] = []
35
+ data.forEach((item: I_CompatibleHostsTable) => {
36
+ const hostData = {
37
+ // @ts-ignore
38
+ iconClassName: `vsphere-icon-${hostIconByState[item.state]}`,
39
+ }
40
+ const clusterData = {
41
+ iconClassName: `vsphere-icon-${clusterIconByState[1]}`,
42
+ }
43
+
44
+ bodyItems.push([
45
+ {
46
+ key: 'icon',
47
+ text: item[compatibleHostsTableKeys[0]],
48
+ data: hostData,
49
+ id: item.id,
50
+ testId: `host-table-item-${item.host}`,
51
+ },
52
+ {
53
+ key: 'icon',
54
+ text: item[compatibleHostsTableKeys[1]],
55
+ data: clusterData,
56
+ id: item.id,
57
+ testId: `host-table-item-${item.host}`,
58
+ },
59
+ ])
60
+ })
61
+ return bodyItems
62
+ }
@@ -0,0 +1,27 @@
1
+ import type { API_UI_I_DataTable } from '~/node_modules/bfg-common/lib/models/table/interfaces'
2
+ import type {
3
+ I_CompatibleHostsTable,
4
+ I_IncompatibleHostsTable,
5
+ } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/lib/models/interfaces'
6
+ import type { T_HostsAccessibilityTab } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/lib/models/types'
7
+
8
+ const compatibleHostsTable: API_UI_I_DataTable<I_CompatibleHostsTable[]> = {
9
+ items: [],
10
+ total_items: 5,
11
+ total_pages: 1,
12
+ }
13
+ const incompatibleHostsTable: API_UI_I_DataTable<I_IncompatibleHostsTable[]> = {
14
+ items: [],
15
+ total_items: 0,
16
+ total_pages: 1,
17
+ }
18
+
19
+ export { incompatibleHostsTable, compatibleHostsTable }
20
+ export const hostsAccessibilityTablesFunc = (type: T_HostsAccessibilityTab) => {
21
+ const hostItems = {
22
+ 'compatible-hosts': compatibleHostsTable,
23
+ 'incompatible-hosts': incompatibleHostsTable,
24
+ }
25
+
26
+ return hostItems[type]
27
+ }
@@ -0,0 +1,68 @@
1
+ import type {
2
+ UI_I_HeadItem,
3
+ UI_I_BodyItem,
4
+ } from '~/node_modules/bfg-common/components/atoms/table/dataGrid/lib/models/interfaces'
5
+ import type { UI_I_Localization } from '~/node_modules/bfg-common/lib/models/interfaces'
6
+ import { E_NodeIconsByState } from '~/node_modules/bfg-common/lib/models/enums'
7
+ import { constructHeadItem } from '~/node_modules/bfg-common/components/atoms/table/dataGrid/lib/utils/constructDataTable'
8
+ import type { I_IncompatibleHostsTable } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/lib/models/interfaces'
9
+ import { incompatibleHostsTableKeys } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/tablesView/lib/config/tableKeys'
10
+
11
+ const getItems = (
12
+ localization: UI_I_Localization
13
+ ): [string, boolean, string, string][] => {
14
+ return [
15
+ [localization.common.host, true, 'auto', incompatibleHostsTableKeys[0]],
16
+ [
17
+ localization.common.hostIncompatibilityReason,
18
+ true,
19
+ 'auto',
20
+ incompatibleHostsTableKeys[1],
21
+ ],
22
+ [localization.common.cluster, true, 'auto', incompatibleHostsTableKeys[2]],
23
+ ]
24
+ }
25
+
26
+ export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
27
+ const result: UI_I_HeadItem[] = []
28
+ getItems(localization).forEach((item, i) => {
29
+ const col = i === 0 || i === 2 ? 'icon' : `col${i}`
30
+ result.push(constructHeadItem(col, item[0], item[3], false, item[2]))
31
+ })
32
+ return result
33
+ }
34
+
35
+ export const bodyItems = (
36
+ data: I_IncompatibleHostsTable[]
37
+ ): UI_I_BodyItem[][] => {
38
+ const bodyItems: UI_I_BodyItem[][] = []
39
+ data.forEach((item: I_IncompatibleHostsTable, key) => {
40
+ const hostData = {
41
+ iconClassName: E_NodeIconsByState.host_Normal,
42
+ }
43
+ const clusterData = {
44
+ iconClassName: E_NodeIconsByState.host_Normal,
45
+ }
46
+
47
+ bodyItems.push([
48
+ {
49
+ key: 'icon',
50
+ text: item[incompatibleHostsTableKeys[0]],
51
+ data: hostData,
52
+ id: key,
53
+ },
54
+ {
55
+ key: 'col1',
56
+ text: item[incompatibleHostsTableKeys[1]],
57
+ id: key,
58
+ },
59
+ {
60
+ key: 'icon',
61
+ text: item[incompatibleHostsTableKeys[2]],
62
+ data: clusterData,
63
+ id: key,
64
+ },
65
+ ])
66
+ })
67
+ return bodyItems
68
+ }
@@ -0,0 +1,15 @@
1
+ import type {
2
+ T_CompatibleHostsTableKeys,
3
+ T_IncompatibleHostsTableKeys,
4
+ } from '~/components/templates/inventory/actions/backup/storage/add/temp/nfs/accessibility/lib/models/types'
5
+
6
+ export const compatibleHostsTableKeys: T_CompatibleHostsTableKeys[] = [
7
+ 'name',
8
+ 'cluster',
9
+ ]
10
+
11
+ export const incompatibleHostsTableKeys: T_IncompatibleHostsTableKeys[] = [
12
+ 'name',
13
+ 'cluster',
14
+ 'host_incompatibility_reason',
15
+ ]
@@ -0,0 +1,160 @@
1
+ <template>
2
+ <div class="create-datastore-name">
3
+ <atoms-alert
4
+ v-show="errors.length"
5
+ test-id="datastore-creat-name"
6
+ status="alert-danger"
7
+ :items="errors"
8
+ @remove="onRemoveValidationErrors"
9
+ />
10
+
11
+ <div class="clr-form-control clr-row flex flex-row">
12
+ <label for="datastore-name" class="clr-control-label clr-col-md-2">{{
13
+ localization.common.datastoreName
14
+ }}</label>
15
+
16
+ <div class="clr-control-container" :class="nameErrorText && 'clr-error'">
17
+ <div class="flex-align-center">
18
+ <input
19
+ id="datastore-name"
20
+ v-model.trim="form.name.value"
21
+ :data-id="`${props.testId}-backup-storage-name-input`"
22
+ type="text"
23
+ class="clr-input"
24
+ @blur="onBlurInputName"
25
+ @input="onInputName"
26
+ />
27
+ <atoms-the-icon class="error-icon" name="info-circle" />
28
+ </div>
29
+
30
+ <div class="clr-subtext ng-star-inserted">
31
+ {{ nameErrorText }}
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </template>
37
+
38
+ <script lang="ts" setup>
39
+ import type { UI_I_ValidationTouchResult } from '~/lib/models/plugins/validation/interfaces'
40
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
41
+ import type { UI_T_Project } from '~/lib/models/types'
42
+ // import type { UI_I_FormValidationDataStore } from '~/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces'
43
+ import { defaultFormFunc } from '~/components/common/backup/storage/actions/add/temp/local/createName/lib/config/defaultForm'
44
+ import { checkValidityName } from '~/components/common/backup/storage/actions/add/temp/lib/utils'
45
+
46
+ const props = defineProps<{
47
+ mode: UI_T_Project
48
+ localCreateNameSubmit: number
49
+ testId: string
50
+ }>()
51
+ const emits = defineEmits<{
52
+ (event: 'loading', value: boolean): void
53
+ (event: 'submit', value: string): void
54
+ }>()
55
+
56
+ const localization = computed<UI_I_Localization>(() => useLocal())
57
+ const { $validation } = useNuxtApp()
58
+
59
+ const validation = $validation.call({})
60
+ const defaultForm: UI_I_FormValidationDataStore = defaultFormFunc(
61
+ localization.value
62
+ )
63
+ const form = ref<UI_I_FormValidationDataStore>(useDeepCopy(defaultForm))
64
+
65
+ const setForm = (): void => {
66
+ form.value = useDeepCopy(defaultForm)
67
+ validation.setForm(form)
68
+ }
69
+ setForm()
70
+
71
+ const validForm = ref<UI_I_ValidationTouchResult | null>(null)
72
+
73
+ /* Validation for Name input */
74
+ const isInitNameValidation = ref<boolean>(false)
75
+ const onBlurInputName = (): void => {
76
+ validForm.value = validation.touch()
77
+ isInitNameValidation.value = true
78
+ }
79
+ const onInputName = (): void => {
80
+ validForm.value = validation.touch()
81
+ }
82
+ const nameErrorText = computed<string>(() => {
83
+ if (!isInitNameValidation.value) return ''
84
+ return validForm.value?.errors?.name?.[0] || ''
85
+ })
86
+ /* Validation Name input end */
87
+
88
+ const errors = ref<string[]>([])
89
+ const showValidationErrors = (data: string[]): void => {
90
+ errors.value = data
91
+ }
92
+ const onRemoveValidationErrors = (): void => {
93
+ errors.value = []
94
+ }
95
+ const submit = async (): Promise<void> => {
96
+ const name = form.value.name.value
97
+
98
+ if (!name) {
99
+ validForm.value = validation.touch()
100
+ isInitNameValidation.value = true
101
+ if (nameErrorText.value) return
102
+ }
103
+
104
+ if (name) {
105
+ emits('loading', true)
106
+
107
+ const { valid, msg } = await checkValidityName(name, props.mode)
108
+
109
+ emits('loading', false)
110
+
111
+ if (!valid) {
112
+ showValidationErrors([msg])
113
+ return
114
+ }
115
+ }
116
+
117
+ onRemoveValidationErrors()
118
+ emits('submit', name)
119
+ }
120
+ watch(
121
+ () => props.localCreateNameSubmit,
122
+ () => {
123
+ submit()
124
+ }
125
+ )
126
+ </script>
127
+
128
+ <style lang="scss" scoped>
129
+ .create-datastore-name {
130
+ &__alert-info {
131
+ :deep(.alert-text) {
132
+ font-size: 11px;
133
+ letter-spacing: normal;
134
+ }
135
+ }
136
+ .clr-form-control {
137
+ .clr-control-container {
138
+ min-height: 48px;
139
+ input {
140
+ width: 375px;
141
+ }
142
+ &.clr-error {
143
+ .clr-subtext,
144
+ .error-icon {
145
+ display: block;
146
+ }
147
+ }
148
+ .clr-subtext,
149
+ .error-icon {
150
+ display: none;
151
+ }
152
+ .error-icon {
153
+ fill: #db2100;
154
+ width: 24px;
155
+ height: 24px;
156
+ }
157
+ }
158
+ }
159
+ }
160
+ </style>
@@ -0,0 +1,15 @@
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+
3
+ export const defaultFormFunc = (localization: UI_I_Localization): any => {
4
+ return {
5
+ name: {
6
+ value: '',
7
+ validations: [
8
+ {
9
+ value: 'required',
10
+ errorText: localization.common.specifyDatastoreName,
11
+ },
12
+ ],
13
+ },
14
+ }
15
+ }
@@ -0,0 +1,106 @@
1
+ <template>
2
+ <div class="nfs-container flex flex-col h-full">
3
+ <span class="nfs-container__desc">{{ stepSubTitle }}</span>
4
+
5
+ <!-- <common-backup-storage-actions-add-temp-nfs-version-->
6
+ <!-- v-show="props.stepPosition === 1"-->
7
+ <!-- v-model:version="nfsVersion"-->
8
+ <!-- />-->
9
+
10
+ <common-backup-storage-actions-add-temp-nfs-configuration
11
+ v-show="props.stepPosition === 1"
12
+ :mode="props.mode"
13
+ :nfs-version="nfsVersion"
14
+ :nfs-configuration-submit="nfsConfigurationSubmit"
15
+ @loading="(e) => emits('loading', e)"
16
+ @next="onChangeConfigurationAndNext"
17
+ />
18
+
19
+ <!-- <templates-home-datastore-actions-add-nfs-kerberos-authentication-->
20
+ <!-- v-show="nfsVersion === 'nfs-4.1' && props.stepPosition === 3"-->
21
+ <!-- :nfs-version="nfsVersion"-->
22
+ <!-- />--><!-- TODO Он будет когда будем делать групповое -->
23
+
24
+ <common-backup-storage-actions-add-temp-nfs-accessibility
25
+ v-if="showHostAccessibility"
26
+ :host-accessibility-submit="props.hostAccessibilitySubmit"
27
+ :hosts="props.hosts"
28
+ @next="onChangeAccessibilityAndNext"
29
+ />
30
+ <!-- TODO Он будет когда будем делать групповое -->
31
+ </div>
32
+ </template>
33
+
34
+ <script lang="ts" setup>
35
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
36
+ import type {
37
+ UI_T_DatastoreType,
38
+ UI_T_NfsType,
39
+ UI_T_WizardDatastoreMode,
40
+ } from '~/components/common/backup/storage/actions/add/temp/lib/models/types'
41
+ import type { UI_I_ConfigurationSendDataNfs } from '~/components/common/backup/storage/actions/add/temp/nfs/configuration/lib/models/interfaces'
42
+ import { subTitleFunc } from '~/components/common/backup/storage/actions/add/temp/lib/config/stepItems'
43
+
44
+ const props = defineProps<{
45
+ mode: UI_T_WizardDatastoreMode
46
+ stepPosition: number
47
+ datastoreType: UI_T_DatastoreType
48
+ nfsConfigurationSubmit: number
49
+ hostAccessibilitySubmit: number
50
+ hosts?: any
51
+ }>()
52
+ const emits = defineEmits<{
53
+ (event: 'loading', value: boolean): void
54
+ (event: 'submit', value: UI_I_ConfigurationSendDataNfs): void
55
+ (event: 'change-nfs-version', value: UI_T_NfsType): void
56
+ }>()
57
+
58
+ const localization = computed<UI_I_Localization>(() => useLocal())
59
+
60
+ const nfsVersion = ref<UI_T_NfsType>('nfs-4.1')
61
+
62
+ const stepSubTitle = computed<string>(() => {
63
+ const { datastoreType, stepPosition } = props
64
+ return subTitleFunc(
65
+ localization.value,
66
+ datastoreType,
67
+ stepPosition,
68
+ nfsVersion.value
69
+ )
70
+ })
71
+
72
+ // const showHostAccessibility = computed<boolean>(() => {
73
+ // return (
74
+ // (props.stepPosition === 4 && nfsVersion.value === 'nfs-4.1') ||
75
+ // (props.stepPosition === 3 && nfsVersion.value === 'nfs-3')
76
+ // )
77
+ // })
78
+ const showHostAccessibility = computed<boolean>(() => {
79
+ return props.mode === 'sphere' && props.stepPosition === 2
80
+ })
81
+
82
+ watch(nfsVersion, (newValue: UI_T_NfsType) => {
83
+ emits('change-nfs-version', newValue)
84
+ })
85
+
86
+ let sendData: any = null
87
+ const onChangeConfigurationAndNext = (
88
+ event: UI_I_ConfigurationSendDataNfs
89
+ ): void => {
90
+ sendData = {
91
+ name: event.name,
92
+ folder: event.folder,
93
+ server: event.server,
94
+ user: event.user,
95
+ password: event.password,
96
+ hosts: [],
97
+ }
98
+ emits('submit', sendData)
99
+ }
100
+ const onChangeAccessibilityAndNext = (hosts: string[]): void => {
101
+ sendData.hosts = hosts
102
+ emits('submit', sendData)
103
+ }
104
+ </script>
105
+
106
+ <style lang="scss" scoped></style>