bfg-common 1.4.46 → 1.4.47

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 (52) hide show
  1. package/components/common/wizards/datastore/add/nfs/accessibility/lib/models/interfaces.ts +4 -0
  2. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/config/selectOptions.ts +15 -6
  3. package/components/common/wizards/datastoreNew/add/Add.vue +464 -0
  4. package/components/common/wizards/datastoreNew/add/lib/config/steps.ts +135 -0
  5. package/components/common/wizards/datastoreNew/add/lib/models/enums.ts +5 -0
  6. package/components/common/wizards/datastoreNew/add/lib/models/interfaces.ts +12 -0
  7. package/components/common/wizards/datastoreNew/add/lib/models/types.ts +7 -0
  8. package/components/common/wizards/datastoreNew/add/lib/utils.ts +31 -0
  9. package/components/common/wizards/datastoreNew/add/local/Local.vue +44 -0
  10. package/components/common/wizards/datastoreNew/add/local/createName/CreateName.vue +116 -0
  11. package/components/common/wizards/datastoreNew/add/nfs/Nfs.vue +67 -0
  12. package/components/common/wizards/datastoreNew/add/nfs/accessibility/Accessibility.vue +63 -0
  13. package/components/common/wizards/datastoreNew/add/nfs/accessibility/lib/config/tabsPannel.ts +24 -0
  14. package/components/common/wizards/datastoreNew/add/nfs/accessibility/lib/models/interfaces.ts +9 -0
  15. package/components/common/wizards/datastoreNew/add/nfs/accessibility/lib/models/types.ts +5 -0
  16. package/components/common/wizards/datastoreNew/add/nfs/accessibility/tablesView/TablesView.vue +85 -0
  17. package/components/common/wizards/datastoreNew/add/nfs/accessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  18. package/components/common/wizards/datastoreNew/add/nfs/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  19. package/components/common/wizards/datastoreNew/add/nfs/accessibility/tablesView/lib/config/tableKeys.ts +15 -0
  20. package/components/common/wizards/datastoreNew/add/nfs/accessibility/tablesView/lib/models/interfaces.ts +11 -0
  21. package/components/common/wizards/datastoreNew/add/nfs/configuration/Configuration.vue +301 -0
  22. package/components/common/wizards/datastoreNew/add/nfs/configuration/lib/models/interfaces.ts +5 -0
  23. package/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/DeletePopover.vue +100 -0
  24. package/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/ServersList.vue +124 -0
  25. package/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/lib/config/serversListConfig.ts +41 -0
  26. package/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/lib/config/tableKeys.ts +3 -0
  27. package/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/lib/models/interfaces.ts +3 -0
  28. package/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/lib/models/types.ts +1 -0
  29. package/components/common/wizards/datastoreNew/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +55 -0
  30. package/components/common/wizards/datastoreNew/add/nfs/kerberosAuthentication/lib/config/radioOptions.ts +27 -0
  31. package/components/common/wizards/datastoreNew/add/nfs/version/Version.vue +26 -0
  32. package/components/common/wizards/datastoreNew/add/nfs/version/lib/config/versionOptions.ts +22 -0
  33. package/components/common/wizards/datastoreNew/add/readyComplete/ReadyComplete.vue +88 -0
  34. package/components/common/wizards/datastoreNew/add/readyComplete/lib/config/propertiesDetails.ts +192 -0
  35. package/components/common/wizards/datastoreNew/add/sharedStorm/SharedStorm.vue +83 -0
  36. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/DeviceSelection.vue +262 -0
  37. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/lib/config/selectOptions.ts +23 -0
  38. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/lib/models/interfaces.ts +48 -0
  39. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/lib/models/types.ts +8 -0
  40. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/table/Table.vue +134 -0
  41. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/table/lib/config/hostsTable.ts +87 -0
  42. package/components/common/wizards/datastoreNew/add/sharedStorm/deviceSelection/table/lib/config/tableKeys.ts +11 -0
  43. package/components/common/wizards/datastoreNew/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +236 -0
  44. package/components/common/wizards/datastoreNew/add/sharedStorm/partitionConfiguration/graphicTooltip/graphicTooltip.vue +64 -0
  45. package/components/common/wizards/datastoreNew/add/sharedStorm/partitionConfiguration/lib/config/selectOptions.ts +46 -0
  46. package/components/common/wizards/datastoreNew/add/sharedStorm/partitionConfiguration/sizeGraphic/sizeGraphic.vue +225 -0
  47. package/components/common/wizards/datastoreNew/add/sharedStorm/version/Version.vue +39 -0
  48. package/components/common/wizards/datastoreNew/add/sharedStorm/version/lib/config/versionOptions.ts +21 -0
  49. package/components/common/wizards/datastoreNew/add/types/Types.vue +78 -0
  50. package/components/common/wizards/datastoreNew/add/types/lib/config/typeOptions.ts +49 -0
  51. package/lib/models/interfaces.ts +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1,301 @@
1
+ <template>
2
+ <div class="configuration">
3
+ <div>
4
+ <atoms-alert
5
+ v-show="props.alertMessages?.length"
6
+ test-id="configure-information-alert"
7
+ status="alert-danger"
8
+ :items="props.alertMessages"
9
+ @remove="onHideAlert"
10
+ />
11
+
12
+ <atoms-alert
13
+ v-show="alertInfo"
14
+ test-id="configuration-info"
15
+ status="alert-info"
16
+ :items="[localization.nameAndConfigurationAlertInfo]"
17
+ @remove="alertInfo = false"
18
+ />
19
+ <h6 class="nd-mt-0">{{ localization.nfsShareDetails }}</h6>
20
+
21
+ <div class="clr-form-control clr-row">
22
+ <label for="" class="clr-control-label clr-col-md-2">
23
+ {{ localization.common.name }}
24
+ </label>
25
+
26
+ <div
27
+ class="clr-control-container"
28
+ :class="nameErrorText && 'clr-error'"
29
+ >
30
+ <div class="flex-align-center">
31
+ <input
32
+ id="configuration-name-input"
33
+ v-model="model.name"
34
+ data-id="configuration-name-input"
35
+ type="text"
36
+ class="clr-input"
37
+ @blur="initValidation(true, ['name'])"
38
+ @input="initValidation(false, ['name'])"
39
+ />
40
+ <atoms-the-icon class="error-icon" name="info-circle" />
41
+ </div>
42
+
43
+ <div class="clr-subtext" data-id="nfs-datastore-name-field-require">
44
+ {{ nameErrorText }}
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+ <div class="clr-form-control clr-row">
50
+ <label class="clr-control-label clr-col-md-2">
51
+ {{ localization.folder }}
52
+ </label>
53
+
54
+ <div
55
+ class="clr-control-container"
56
+ :class="folderErrorText && 'clr-error'"
57
+ >
58
+ <div class="flex-align-center">
59
+ <input
60
+ id="configuration-folder-input"
61
+ v-model="model.folder"
62
+ data-id="configuration-folder-input"
63
+ type="text"
64
+ class="clr-input"
65
+ @blur="initValidation(true, ['folder'])"
66
+ @input="initValidation(false, ['folder'])"
67
+ />
68
+ <atoms-the-icon class="error-icon" name="info-circle" />
69
+ </div>
70
+
71
+ <div
72
+ v-if="folderErrorText"
73
+ class="clr-subtext"
74
+ data-id="folder-name-field-require"
75
+ >
76
+ {{ folderErrorText }}
77
+ </div>
78
+ <div v-else class="clr-subtext">E.g: /vols/vol0/datastore-001</div>
79
+ </div>
80
+ </div>
81
+
82
+ <div class="nd-mt-0 clr-form-control clr-row">
83
+ <label class="clr-control-label clr-col-md-2">
84
+ {{ localization.common.server }}
85
+ </label>
86
+
87
+ <div
88
+ class="clr-control-container"
89
+ :class="serverErrorText && 'clr-error'"
90
+ >
91
+ <div class="flex-align-center input-action-wrapper">
92
+ <input
93
+ id="configuration-folder-input"
94
+ v-model="model.server"
95
+ data-id="configuration-folder-input"
96
+ type="text"
97
+ class="clr-input"
98
+ @blur="initValidation(true, ['server'])"
99
+ @input="initValidation(false, ['server'])"
100
+ />
101
+ <atoms-the-icon class="error-icon" name="info-circle" />
102
+ </div>
103
+ <div
104
+ v-if="serverErrorText"
105
+ class="clr-subtext"
106
+ data-id="server-name-field-require"
107
+ >
108
+ {{ serverErrorText }}
109
+ </div>
110
+ <div v-else class="clr-subtext">
111
+ E.g: nas, nas.it.com or 192.168.0.1
112
+ </div>
113
+ </div>
114
+
115
+ <!-- <button-->
116
+ <!-- v-show="props.nfsVersion === 'nfs-4.1' && false"-->
117
+ <!-- class="btn btn-sm nd-mt-0"-->
118
+ <!-- @click="onAddServerToList"-->
119
+ <!-- >-->
120
+ <!-- {{ localization.add }}-->
121
+ <!-- </button>-->
122
+ </div>
123
+
124
+ <div
125
+ v-show="model.nfsVersion === 'nfs-4.1' && false"
126
+ class="configuration__servers-list"
127
+ >
128
+ <common-wizards-datastore-add-nfs-configuration-servers-list
129
+ v-model:data-table="dataServers"
130
+ />
131
+ </div>
132
+ </div>
133
+
134
+ <div v-if="false" class="clr-form-control clr-row mt-1">
135
+ <label for="" class="clr-control-label clr-col-md-2">
136
+ {{ localization.accessMode }}
137
+ </label>
138
+
139
+ <div class="clr-col-md-10 clr-col-12 clr-checkbox-wrapper">
140
+ <input
141
+ id="playback-compression"
142
+ v-model="accessMode"
143
+ data-id="playback-compression-checkbox"
144
+ type="checkbox"
145
+ />
146
+ <label for="playback-compression" class="clr-control-label">
147
+ {{ localization.mountNfsReadOnly }}
148
+ </label>
149
+ </div>
150
+ </div>
151
+ </div>
152
+ </template>
153
+
154
+ <script lang="ts" setup>
155
+ import type { UI_T_Project } from '~/lib/models/types'
156
+ import type {
157
+ UI_I_Localization,
158
+ UI_I_ArbitraryObject,
159
+ } from '~/lib/models/interfaces'
160
+ import type { UI_I_ErrorFields } from '~/components/atoms/wizard/lib/models/interfaces'
161
+ import type { UI_I_DataServersListItem } from '~/components/common/wizards/datastoreNew/add/nfs/configuration/serversList/lib/models/interfaces'
162
+ import type { UI_I_InitialValidationFields } from '~/components/common/wizards/datastoreNew/add/nfs/configuration/lib/models/interfaces'
163
+
164
+ const props = defineProps<{
165
+ project: UI_T_Project
166
+ alertMessages: string[]
167
+ messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
168
+ }>()
169
+ const model = defineModel<any>()
170
+ const emits = defineEmits<{
171
+ (event: 'hide-alert', value: number): void
172
+ }>()
173
+
174
+ const localization = computed<UI_I_Localization>(() => useLocal())
175
+
176
+ const initValidationFields = ref<UI_I_InitialValidationFields>({
177
+ name: false,
178
+ folder: false,
179
+ server: false,
180
+ })
181
+ const initValidation = (onlyBlur = false, types: string[]): void => {
182
+ onlyBlur && types.forEach((type) => (initValidationFields.value[type] = true))
183
+ }
184
+
185
+ /* Validation error text for Name input field */
186
+ const nameErrorText = computed<string>(() => {
187
+ if (props.messagesFields?.name?.field && !model.value.name) {
188
+ return props.messagesFields.name.field
189
+ }
190
+
191
+ if (!initValidationFields.value.name) return ''
192
+ return !model.value.name ? localization.value.specifyDatastoreName : ''
193
+ })
194
+
195
+ /* Validation error text for Folder input field */
196
+ const folderErrorText = computed<string>(() => {
197
+ if (props.messagesFields.folder?.field && !model.value.folder) {
198
+ return props.messagesFields.folder.field
199
+ }
200
+
201
+ if (!initValidationFields.value.folder) return ''
202
+ return !model.value.folder ? localization.value.specifyFolderName : ''
203
+ })
204
+
205
+ /* Validation error text for Server input field */
206
+ const serverErrorText = computed<string>(() => {
207
+ if (props.messagesFields.server?.field && !model.value.server) {
208
+ return props.messagesFields.server.field
209
+ }
210
+
211
+ // if (!initValidationFields.value.server || dataServers.value.length) return ''
212
+ if (!initValidationFields.value.server) return ''
213
+ return !model.value.server ? localization.value.specifyServerName : ''
214
+ })
215
+
216
+ const accessMode = ref<boolean>(false)
217
+ const dataServers = ref<UI_I_DataServersListItem[]>([])
218
+ // const onAddServerToList = (): void => {
219
+ // const { server } = form.value
220
+ // // const { nfsVersion } = props
221
+ //
222
+ // if (!dataServers.value.length && !server.value) {
223
+ // validForm.value = validation.touch()
224
+ // isInitServerValidation.value = true
225
+ //
226
+ // return
227
+ // }
228
+ //
229
+ // // if (dataServers.value.length && !server.value) return
230
+ //
231
+ // const data: UI_I_DataServersListItem = {
232
+ // server_name: server.value,
233
+ // }
234
+ //
235
+ // const hasEqualItem = !!dataServers.value.find(
236
+ // (server: UI_I_DataServersListItem) => server.server_name === data.server_name
237
+ // )
238
+ //
239
+ // !hasEqualItem && dataServers.value.push(data)
240
+ //
241
+ // // if (nfsVersion === 'nfs-4.1') server.value = ''
242
+ // }
243
+ const onHideAlert = (): void => {
244
+ emits('hide-alert', 5)
245
+ }
246
+ const alertInfo = ref<boolean>(props.project === 'procurator')
247
+ </script>
248
+
249
+ <style lang="scss" scoped>
250
+ @import '~/assets/scss/common/mixins.scss';
251
+ .configuration {
252
+ @include flex($dir: column, $just: space-between);
253
+ height: 100%;
254
+ & > h6 {
255
+ font-weight: 500;
256
+ font-size: 14px;
257
+ padding-top: 6px;
258
+ }
259
+
260
+ &__alert-info {
261
+ :deep(.alert-text) {
262
+ font-size: 11px;
263
+ letter-spacing: normal;
264
+ }
265
+ }
266
+ .clr-form-control {
267
+ margin-top: 0;
268
+ display: flex;
269
+ flex-direction: row;
270
+
271
+ .clr-control-container {
272
+ min-height: 48px;
273
+ &.clr-error {
274
+ .clr-subtext,
275
+ .error-icon {
276
+ display: block;
277
+ }
278
+ }
279
+ .error-icon {
280
+ display: none;
281
+ }
282
+ .error-icon {
283
+ fill: #db2100;
284
+ width: 24px;
285
+ height: 24px;
286
+ }
287
+ }
288
+ }
289
+ &__servers-list {
290
+ height: 170px;
291
+ }
292
+ }
293
+ .flex-align-center {
294
+ &.input-action-wrapper {
295
+ width: 260px;
296
+ }
297
+ input {
298
+ width: 210px;
299
+ }
300
+ }
301
+ </style>
@@ -0,0 +1,5 @@
1
+ export interface UI_I_InitialValidationFields {
2
+ name: boolean
3
+ folder: boolean
4
+ server: boolean
5
+ }
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <div class="popover">
3
+ <slot>
4
+ <span
5
+ class="popover__item"
6
+ data-id="delete-popover-text"
7
+ @click="onClickItem"
8
+ >{{ localization.removeMember }}</span
9
+ >
10
+ </slot>
11
+ </div>
12
+ </template>
13
+
14
+ <script lang="ts" setup>
15
+ import { UI_I_Localization } from '~/lib/models/interfaces'
16
+
17
+ const emits = defineEmits<{
18
+ (event: 'hide'): void
19
+ (event: 'click-item'): void
20
+ }>()
21
+
22
+ const localization = computed<UI_I_Localization>(() => useLocal())
23
+ const onClickItem = (): void => {
24
+ emits('click-item')
25
+ }
26
+ const hide = (): void => {
27
+ emits('hide')
28
+ }
29
+ const windowClick = (): void => {
30
+ hide()
31
+ }
32
+
33
+ onMounted(() => {
34
+ setTimeout(() => {
35
+ window.addEventListener('click', windowClick)
36
+ })
37
+ })
38
+ onUnmounted(() => {
39
+ window.removeEventListener('click', windowClick)
40
+ })
41
+ </script>
42
+
43
+ <style lang="scss" scoped>
44
+ @import '~/assets/scss/common/mixins.scss';
45
+
46
+ .popover {
47
+ @include flex($align: center, $just: space-between);
48
+ height: 38px;
49
+ background: var(--block-view-bg-color2);
50
+ padding: 0.3rem;
51
+ margin-left: 0.3rem;
52
+ border: 0.05rem solid var(--block-border-color);
53
+ box-shadow: 0 0.05rem 0.15rem hsl(0deg 0% 55% / 25%);
54
+ transform: translateY(-50%);
55
+ border-radius: 0.15rem;
56
+ font-weight: 400;
57
+ white-space: nowrap;
58
+ z-index: 600;
59
+ &:before,
60
+ &:after {
61
+ content: '';
62
+ position: absolute;
63
+ top: 50%;
64
+ right: 100%;
65
+ width: 0;
66
+ height: 0;
67
+ }
68
+ &:before {
69
+ margin-top: -0.3rem;
70
+ border-bottom: 0.3rem solid transparent;
71
+ border-top: 0.3rem solid transparent;
72
+ border-left: 0;
73
+ border-right: 0.3rem solid var(--block-border-color);
74
+ }
75
+ &:after {
76
+ margin-top: -0.25rem;
77
+ border-right: 0.25rem solid var(--block-view-bg-color2);
78
+ border-top: 0.25rem solid transparent;
79
+ border-bottom: 0.25rem solid transparent;
80
+ }
81
+ &__item {
82
+ @include text($fs: 14px, $c: var(--global-font-color3));
83
+ line-height: 1.15rem;
84
+ padding: 0.05rem 1.2rem 0;
85
+ &:hover {
86
+ background-color: var(--popover-hover-bg-color);
87
+ cursor: pointer;
88
+ }
89
+ }
90
+ }
91
+ </style>
92
+
93
+ <style>
94
+ :root {
95
+ --popover-hover-bg-color: #e8e8e8;
96
+ }
97
+ :root.dark-theme {
98
+ --popover-hover-bg-color: #28404d;
99
+ }
100
+ </style>
@@ -0,0 +1,124 @@
1
+ <template>
2
+ <div class="servers-list">
3
+ <atoms-table-data-grid
4
+ v-model:selected-row="selectedDisk"
5
+ v-model:page-size="pagination.pageSize"
6
+ v-model:page="pagination.page"
7
+ type="any"
8
+ class="data-table"
9
+ test-id="servers-list-table"
10
+ :head-items="headItems"
11
+ :body-items="bodyItems"
12
+ :total-items="1"
13
+ :total-pages="1"
14
+ off-select-by-row
15
+ :loading="loading"
16
+ hide-footer
17
+ >
18
+ <template #type="{ item }">
19
+ <div class="data-table__action-icon">
20
+ <atoms-popover
21
+ test-id="servers-list"
22
+ @click="onShowTooltipForRemove(item)"
23
+ >
24
+ <template #elem>
25
+ <atoms-the-icon name="ellipsis-vertical" />
26
+ </template>
27
+ <template #content>
28
+ <common-wizards-datastore-add-nfs-configuration-servers-list-delete-popover
29
+ v-if="showTooltip && item[0].id === selectedServerForRemove"
30
+ class="data-table__popover"
31
+ @hide="showTooltip = false"
32
+ @click-item="onRemoveServerFromList(item)"
33
+ />
34
+ </template>
35
+ </atoms-popover>
36
+ </div>
37
+ </template>
38
+ </atoms-table-data-grid>
39
+ </div>
40
+ </template>
41
+
42
+ <script lang="ts" setup>
43
+ import {
44
+ UI_I_HeadItem,
45
+ UI_I_BodyItem,
46
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
47
+ import { UI_I_Localization } from '~/lib/models/interfaces'
48
+ import { UI_I_Pagination } from '~/lib/models/table/interfaces'
49
+ import { UI_I_DataServersListItem } from '~/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/models/interfaces'
50
+ import * as serversTable from '~/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/config/serversListConfig'
51
+
52
+ const props = defineProps<{
53
+ dataTable: UI_I_DataServersListItem[] | []
54
+ loading?: boolean
55
+ }>()
56
+ const emits = defineEmits<{
57
+ (event: 'update:data-table', value: UI_I_DataServersListItem[]): void
58
+ }>()
59
+
60
+ const localization = computed<UI_I_Localization>(() => useLocal())
61
+
62
+ const selectedDisk = ref<number | null>(null)
63
+
64
+ const pagination = ref<UI_I_Pagination>({
65
+ page: 1,
66
+ pageSize: 34,
67
+ })
68
+
69
+ // const columnKeys = ref<UI_I_ColumnKey[]>(serversTable.columnKeys(localization.value))
70
+ const headItems = computed<UI_I_HeadItem[]>(() =>
71
+ serversTable.headItems(localization.value)
72
+ )
73
+
74
+ const bodyItems = ref<UI_I_BodyItem[][]>([])
75
+ watch(
76
+ () => props.dataTable,
77
+ (newValue) => {
78
+ if (!newValue?.length) {
79
+ bodyItems.value = []
80
+ return
81
+ }
82
+
83
+ bodyItems.value = serversTable.bodyItems(newValue)
84
+ },
85
+ { deep: true, immediate: true }
86
+ )
87
+
88
+ const selectedServerForRemove = ref<number | null>(null)
89
+ const showTooltip = ref<boolean>(false)
90
+ const onShowTooltipForRemove = (server: UI_I_BodyItem[]): void => {
91
+ selectedServerForRemove.value = server[0].id
92
+ showTooltip.value = true
93
+ }
94
+ const onRemoveServerFromList = (removeItem: UI_I_BodyItem[]): void => {
95
+ const { text } = removeItem[0]
96
+
97
+ const serverList = props.dataTable.filter(
98
+ (server: UI_I_DataServersListItem) => server.server_name !== text
99
+ )
100
+ emits('update:data-table', serverList)
101
+ showTooltip.value = false
102
+ }
103
+ </script>
104
+
105
+ <style lang="scss" scoped>
106
+ .servers-list {
107
+ height: inherit;
108
+ .data-table {
109
+ &__action-icon {
110
+ width: 16px;
111
+ height: 16px;
112
+ cursor: pointer;
113
+ position: relative;
114
+ fill: var(--ellipsis-vertical-icon-color);
115
+ }
116
+
117
+ height: inherit;
118
+ :deep(.datagrid-outer-wrapper) {
119
+ height: inherit;
120
+ padding-top: 0;
121
+ }
122
+ }
123
+ }
124
+ </style>
@@ -0,0 +1,41 @@
1
+ import {
2
+ UI_I_HeadItem,
3
+ UI_I_BodyItem,
4
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
5
+ import {
6
+ constructHeadItem,
7
+ } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
8
+ import { UI_I_Localization } from '~/lib/models/interfaces'
9
+ import { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
10
+ import { serversTableItemsKeys } from '~/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/config/tableKeys'
11
+
12
+ const getItems = (
13
+ localization: UI_I_Localization
14
+ ): [string, boolean, string, string][] => {
15
+ return [
16
+ [localization.serversToBeAdded, true, '96px', serversTableItemsKeys[0]],
17
+ ]
18
+ }
19
+
20
+ export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
21
+ const result: UI_I_HeadItem[] = []
22
+ getItems(localization).forEach((item) => {
23
+ const col = 'type'
24
+ result.push(constructHeadItem(col, item[0], item[3], false, item[2]))
25
+ })
26
+ return result
27
+ }
28
+
29
+ export const bodyItems = (data: any[]): UI_I_BodyItem[][] => {
30
+ const bodyItems: UI_I_BodyItem[][] = []
31
+ data.forEach((server, key) => {
32
+ bodyItems.push([
33
+ {
34
+ key: 'col0',
35
+ text: server[serversTableItemsKeys[0]],
36
+ id: key,
37
+ },
38
+ ])
39
+ })
40
+ return bodyItems
41
+ }
@@ -0,0 +1,3 @@
1
+ import { T_ServersTableItemsTuple } from '~/components/common/wizards/datastore/add/nfs/configuration/serversList/lib/models/types'
2
+
3
+ export const serversTableItemsKeys: T_ServersTableItemsTuple = ['server_name']
@@ -0,0 +1,3 @@
1
+ export interface UI_I_DataServersListItem {
2
+ server_name: string
3
+ }
@@ -0,0 +1 @@
1
+ export type T_ServersTableItemsTuple = ['server_name']
@@ -0,0 +1,55 @@
1
+ <template>
2
+ <div class="kerberos-auth">
3
+ <atoms-alert
4
+ v-show="isShowAlert"
5
+ test-id="kerberos-authentication"
6
+ status="alert-warning"
7
+ :items="[localization.kerberosAuthenticationAlert]"
8
+ @remove="isShowAlert = false"
9
+ />
10
+
11
+ <div class="kerberos-auth__inner">
12
+ <div v-for="item in kerberosTypes" :key="item.value" class="radio">
13
+ <input
14
+ :id="item.label"
15
+ v-model="kerberosType"
16
+ :data-id="item.testId"
17
+ type="radio"
18
+ :value="item.value"
19
+ />
20
+ <label :for="item.label">
21
+ {{ item.label }}
22
+ </label>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script lang="ts" setup>
29
+ import { UI_I_Localization } from '~/lib/models/interfaces'
30
+ import { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
31
+ import { UI_T_KerberosAuthentication } from '~/components/common/wizards/datastore/add/lib/models/types'
32
+ import { kerberosOptionsFunc } from '~/components/common/wizards/datastore/add/nfs/kerberosAuthentication/lib/config/radioOptions'
33
+
34
+ const localization = computed<UI_I_Localization>(() => useLocal())
35
+
36
+ const kerberosType = ref<UI_T_KerberosAuthentication>('dont-use')
37
+ const isShowAlert = ref<boolean>(true)
38
+
39
+ const kerberosTypes = readonly<UI_I_RadioOption[]>(
40
+ kerberosOptionsFunc(localization.value)
41
+ )
42
+ </script>
43
+
44
+ <style lang="scss" scoped>
45
+ .kerberos-auth {
46
+ &__inner {
47
+ margin-top: 12px;
48
+ }
49
+ }
50
+
51
+ input[type='radio']:focus:checked + label::before,
52
+ input[type='radio']:focus + label::before {
53
+ box-shadow: inset 0 0 0 0.25rem #0094d2;
54
+ }
55
+ </style>
@@ -0,0 +1,27 @@
1
+ import { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
3
+
4
+ export const kerberosOptionsFunc = (
5
+ localization: UI_I_Localization
6
+ ): UI_I_RadioOption[] => {
7
+ return [
8
+ {
9
+ label: localization.dontUseKerberosAuthentication,
10
+ value: 'dont-use',
11
+ disabled: false,
12
+ testId: 'dont-use-value',
13
+ },
14
+ {
15
+ label: localization.useKerberosAuthenticationKrb5,
16
+ value: 'use-only-krb5',
17
+ disabled: false,
18
+ testId: 'use-only-krb5-value',
19
+ },
20
+ {
21
+ label: localization.useKerberosAuthenticationIntegrity,
22
+ value: 'use-integrity',
23
+ disabled: false,
24
+ testId: 'use-integrity-value',
25
+ },
26
+ ]
27
+ }
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <section class="nfs-version">
3
+ <common-select-radio-group
4
+ v-model="selectedNfsVersionLocal"
5
+ :options="nfsVersion"
6
+ />
7
+ </section>
8
+ </template>
9
+
10
+ <script lang="ts" setup>
11
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
12
+ import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
13
+ import type { UI_T_NfsType } from '~/components/common/wizards/datastore/add/lib/models/types'
14
+ import { nfsVersionFunc } from '~/components/common/wizards/datastore/add/nfs/version/lib/config/versionOptions'
15
+
16
+ const selectedNfsVersionLocal = defineModel<UI_T_NfsType>()
17
+
18
+ const localization = computed<UI_I_Localization>(() => useLocal())
19
+
20
+ const nfsVersion = ref<UI_I_RadioOption[]>(nfsVersionFunc(localization.value))
21
+ </script>
22
+
23
+ <style lang="scss" scoped>
24
+ .nfs-version {
25
+ }
26
+ </style>