bfg-common 1.5.75 → 1.5.77

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 (37) hide show
  1. package/components/common/wizards/datastore/add/Add.vue +1 -1
  2. package/components/common/wizards/datastore/add/New.vue +20 -40
  3. package/components/common/wizards/datastore/add/Old.vue +29 -29
  4. package/components/common/wizards/datastore/add/lib/config/steps.ts +23 -19
  5. package/components/common/wizards/datastore/add/lib/models/types.ts +2 -2
  6. package/components/common/wizards/datastore/add/nfs/Nfs.vue +0 -5
  7. package/components/common/wizards/datastore/add/sharedStorm/SharedStorm.vue +0 -14
  8. package/components/common/wizards/datastore/add/steps/_kerberosAuthentication/KerberosAuthentication.vue +1 -0
  9. package/components/common/wizards/datastore/add/steps/_local/Local.vue +2 -1
  10. package/components/common/wizards/datastore/add/{nfs/version/Version.vue → steps/_nfsVersion/NfsVersion.vue} +1 -0
  11. package/components/common/wizards/datastore/add/steps/_partitionConfiguration/PartitionConfiguration.vue +245 -0
  12. package/components/common/wizards/datastore/add/steps/_partitionConfiguration/graphicTooltip/graphicTooltip.vue +64 -0
  13. package/components/common/wizards/datastore/add/steps/_partitionConfiguration/lib/config/selectOptions.ts +46 -0
  14. package/components/common/wizards/datastore/add/steps/_partitionConfiguration/sizeGraphic/sizeGraphic.vue +225 -0
  15. package/components/common/wizards/datastore/add/steps/hostAccessibility/HostAccessibility.vue +60 -0
  16. package/components/common/wizards/datastore/add/steps/hostAccessibility/HostAccessibilityNew.vue +27 -0
  17. package/components/common/wizards/datastore/add/steps/hostAccessibility/HostAccessibilityOld.vue +60 -0
  18. package/components/common/wizards/datastore/add/steps/hostAccessibility/lib/config/tabsPannel.ts +31 -0
  19. package/components/common/wizards/datastore/add/steps/hostAccessibility/lib/models/interfaces.ts +9 -0
  20. package/components/common/wizards/datastore/add/steps/hostAccessibility/lib/models/types.ts +5 -0
  21. package/components/common/wizards/datastore/add/steps/hostAccessibility/tablesView/TablesView.vue +85 -0
  22. package/components/common/wizards/datastore/add/steps/hostAccessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  23. package/components/common/wizards/datastore/add/steps/hostAccessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  24. package/components/common/wizards/datastore/add/steps/hostAccessibility/tablesView/lib/config/tableKeys.ts +15 -0
  25. package/components/common/wizards/datastore/add/steps/hostAccessibility/tablesView/lib/models/interfaces.ts +11 -0
  26. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigure.vue +237 -0
  27. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureNew.vue +30 -0
  28. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureOld.vue +237 -0
  29. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/DeletePopover.vue +100 -0
  30. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/ServersList.vue +123 -0
  31. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/lib/config/serversListConfig.ts +40 -0
  32. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/lib/config/tableKeys.ts +3 -0
  33. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/lib/models/interfaces.ts +3 -0
  34. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/lib/models/types.ts +1 -0
  35. package/components/common/wizards/datastore/add/steps/nameAndConfigure/lib/models/interfaces.ts +5 -0
  36. package/package.json +1 -1
  37. /package/components/common/wizards/datastore/add/{nfs/version → steps/_nfsVersion}/lib/config/versionOptions.ts +0 -0
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <g class="graphic-tooltip">
3
+ <path
4
+ fill="none"
5
+ class="highcharts-label-box highcharts-tooltip-box highcharts-shadow"
6
+ d="M 3.5 0.5 L 53.5 0.5 L 59.5 -5.5 L 65.5 0.5 L 118 0.5 C 121.5 0.5 121.5 0.5 121.5 3.5 L 121.5 27.5 C 121.5 30.5 121.5 30.5 118.5 30.5 L 3.5 30.5 C 0.5 30.5 0.5 30.5 0.5 27.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5"
7
+ stroke="#000000"
8
+ stroke-opacity="0.049999999999999996"
9
+ stroke-width="5"
10
+ transform="translate(1, 1)"
11
+ ></path>
12
+ <path
13
+ fill="none"
14
+ class="highcharts-label-box highcharts-tooltip-box highcharts-shadow"
15
+ d="M 3.5 0.5 L 53.5 0.5 L 59.5 -5.5 L 65.5 0.5 L 118 0.5 C 121.5 0.5 121.5 0.5 121.5 3.5 L 121.5 27.5 C 121.5 30.5 121.5 30.5 118.5 30.5 L 3.5 30.5 C 0.5 30.5 0.5 30.5 0.5 27.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5"
16
+ stroke="#000000"
17
+ stroke-opacity="0.09999999999999999"
18
+ stroke-width="3"
19
+ transform="translate(1, 1)"
20
+ ></path>
21
+ <path
22
+ fill="none"
23
+ class="highcharts-label-box highcharts-tooltip-box highcharts-shadow"
24
+ d="M 3.5 0.5 L 53.5 0.5 L 59.5 -5.5 L 65.5 0.5 L 118 0.5 C 121.5 0.5 121.5 0.5 121.5 3.5 L 121.5 27.5 C 121.5 30.5 121.5 30.5 118.5 30.5 L 3.5 30.5 C 0.5 30.5 0.5 30.5 0.5 27.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5"
25
+ stroke="#000000"
26
+ stroke-opacity="0.15"
27
+ stroke-width="1"
28
+ transform="translate(1, 1)"
29
+ ></path>
30
+ <path
31
+ fill="rgba(247,247,247,0.85)"
32
+ class="highcharts-label-box highcharts-tooltip-box"
33
+ d="M 3.5 0.5 L 53.5 0.5 L 59.5 -5.5 L 65.5 0.5 L 118 0.5 C 121.5 0.5 121.5 0.5 121.5 3.5 L 121.5 27.5 C 121.5 30.5 121.5 30.5 118.5 30.5 L 3.5 30.5 C 0.5 30.5 0.5 30.5 0.5 27.5 L 0.5 3.5 C 0.5 0.5 0.5 0.5 3.5 0.5"
34
+ stroke="rgb(218, 218, 218)"
35
+ stroke-width="1"
36
+ ></path>
37
+ <text
38
+ x="9"
39
+ data-z-index="1"
40
+ y="20"
41
+ style="color: #333333; font-size: 12px; fill: #333333;"
42
+ >
43
+ {{ props.size }}
44
+ </text>
45
+ </g>
46
+ </template>
47
+
48
+ <script lang="ts" setup>
49
+ const props = defineProps<{
50
+ size: string
51
+ }>()
52
+ </script>
53
+
54
+ <style lang="scss" scoped>
55
+ .graphic-tooltip {
56
+ cursor: default;
57
+ white-space: nowrap;
58
+ pointer-events: none;
59
+ opacity: 0;
60
+ visibility: hidden;
61
+ transform: translate(331, -9999);
62
+ z-index: var(--z-popover);
63
+ }
64
+ </style>
@@ -0,0 +1,46 @@
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_I_SelectHostOptions } from '~/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces'
3
+
4
+ export const partitionConfigurationFunc = (
5
+ localization: UI_I_Localization
6
+ ): UI_I_SelectHostOptions[] => {
7
+ return [
8
+ { text: localization.common.selectConfiguration, value: '', disabled: true },
9
+ { text: localization.common.useAllAvailablePartitions, value: 'all-partitions' },
10
+ ]
11
+ }
12
+ export const blockSizeFunc = (
13
+ localization: UI_I_Localization
14
+ ): UI_I_SelectHostOptions[] => {
15
+ return [
16
+ {
17
+ text: `1 ${localization.common.mb}`,
18
+ value: '1',
19
+ },
20
+ ]
21
+ }
22
+
23
+ export const spaceGranularityFunc = (
24
+ localization: UI_I_Localization
25
+ ): UI_I_SelectHostOptions[] => {
26
+ return [
27
+ {
28
+ text: `1 ${localization.common.mb}`,
29
+ value: '1',
30
+ },
31
+ ]
32
+ }
33
+ export const spacePriorityFunc = (
34
+ localization: UI_I_Localization
35
+ ): UI_I_SelectHostOptions[] => {
36
+ return [
37
+ {
38
+ text: localization.common.low,
39
+ value: 'low',
40
+ },
41
+ {
42
+ text: localization.common.none,
43
+ value: 'none',
44
+ },
45
+ ]
46
+ }
@@ -0,0 +1,225 @@
1
+ <template>
2
+ <div class="graphic-size">
3
+ <svg
4
+ class="graphic-size__svg"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ width="100%"
7
+ height="100"
8
+ viewBox="0 0 782 100"
9
+ >
10
+ <defs aria-hidden="true">
11
+ <clipPath id="highcharts-zdne8nn-42-">
12
+ <rect x="0" y="0" width="802" height="80" fill="none"></rect>
13
+ </clipPath>
14
+ </defs>
15
+ <rect
16
+ fill="#ffffff"
17
+ class="highcharts-background"
18
+ x="0"
19
+ y="0"
20
+ width="782"
21
+ height="100"
22
+ rx="0"
23
+ ry="0"
24
+ aria-hidden="true"
25
+ ></rect>
26
+ <rect
27
+ fill="none"
28
+ class="highcharts-plot-background"
29
+ x="-10"
30
+ y="10"
31
+ width="802"
32
+ height="80"
33
+ aria-hidden="true"
34
+ ></rect>
35
+ <rect
36
+ fill="none"
37
+ class="highcharts-plot-border"
38
+ data-z-index="1"
39
+ x="-10"
40
+ y="10"
41
+ width="802"
42
+ height="80"
43
+ aria-hidden="true"
44
+ ></rect>
45
+ <g class="highcharts-series-group" data-z-index="3" aria-hidden="false">
46
+ <g
47
+ class="highcharts-series highcharts-series-0 highcharts-area-series"
48
+ data-z-index="0.1"
49
+ opacity="1"
50
+ transform="translate(-10,10) scale(1 1)"
51
+ clip-path="url(#highcharts-zdne8nn-42-)"
52
+ aria-hidden="false"
53
+ >
54
+ <path
55
+ fill="rgb(218,218,218)"
56
+ d="M 7.8627450980392 80 L 7.8627450980392 0 L 401 0 L 794.13725490196 0 L 794.13725490196 80 L 794.13725490196 80 L 794.13725490196 80 L 401 80 L 7.8627450980392 80 L 7.8627450980392 80 Z"
57
+ class="highcharts-area"
58
+ data-z-index="0"
59
+ aria-hidden="true"
60
+ ></path>
61
+ <path
62
+ fill="none"
63
+ d="M 7.8627450980392 80 L 7.8627450980392 0 L 401 0 L 794.13725490196 0 L 794.13725490196 80"
64
+ class="highcharts-graph"
65
+ data-z-index="1"
66
+ stroke-linejoin="round"
67
+ stroke-linecap="round"
68
+ aria-hidden="false"
69
+ role="region"
70
+ tabindex="-1"
71
+ aria-label="Empty, series 1 of 1 with 5 data points."
72
+ style="outline: 0"
73
+ ></path>
74
+ <path
75
+ fill="none"
76
+ d="M 7.8627450980392 80 L 7.8627450980392 0 L 401 0 L 794.13725490196 0 L 794.13725490196 80"
77
+ visibility="visible"
78
+ data-z-index="2"
79
+ class="highcharts-tracker-line"
80
+ stroke-linecap="round"
81
+ stroke-linejoin="round"
82
+ stroke="rgba(192,192,192,0.0001)"
83
+ stroke-width="20"
84
+ aria-hidden="true"
85
+ ></path>
86
+ </g>
87
+ <g
88
+ class="highcharts-markers highcharts-series-0 highcharts-area-series highcharts-tracker"
89
+ data-z-index="0.1"
90
+ opacity="1"
91
+ transform="translate(-10,10) scale(1 1)"
92
+ clip-path="none"
93
+ aria-hidden="true"
94
+ ></g>
95
+ </g>
96
+ <rect
97
+ x="0"
98
+ y="10"
99
+ width="782"
100
+ height="80"
101
+ fill="rgba(255,255,255,0)"
102
+ stroke="rgb(15,172,201)"
103
+ stroke-width="6"
104
+ data-z-index="3"
105
+ class="storage-partition-layout-selection-mask"
106
+ ></rect>
107
+ <rect
108
+ x="0"
109
+ y="10"
110
+ :width="setProgress"
111
+ height="80"
112
+ fill="rgba(15,172,201, 0.6)"
113
+ data-z-index="3"
114
+ class="storage-partition-layout-selection-mask"
115
+ ></rect>
116
+ <text
117
+ x="391"
118
+ text-anchor="middle"
119
+ class="highcharts-title"
120
+ data-z-index="4"
121
+ style="color: #333333; font-size: 18px; fill: #333333"
122
+ y="14"
123
+ aria-hidden="true"
124
+ ></text>
125
+ <text
126
+ x="391"
127
+ text-anchor="middle"
128
+ class="highcharts-subtitle"
129
+ data-z-index="4"
130
+ style="color: #666666; fill: #666666"
131
+ y="14"
132
+ aria-hidden="true"
133
+ ></text>
134
+ <text
135
+ x="0"
136
+ text-anchor="start"
137
+ class="highcharts-caption"
138
+ data-z-index="4"
139
+ style="color: #666666; fill: #666666"
140
+ y="112"
141
+ aria-hidden="true"
142
+ ></text>
143
+ <g
144
+ class="highcharts-data-labels highcharts-series-0 highcharts-area-series highcharts-tracker"
145
+ data-z-index="6"
146
+ opacity="1"
147
+ transform="translate(-10,10) scale(1 1)"
148
+ aria-hidden="true"
149
+ >
150
+ <g
151
+ class="highcharts-label highcharts-data-label highcharts-data-label-color-undefined"
152
+ data-z-index="1"
153
+ style="cursor: default; pointer-events: none; white-space: nowrap"
154
+ transform="translate(354,26)"
155
+ >
156
+ <text
157
+ x="5"
158
+ data-z-index="1"
159
+ y="17"
160
+ style="
161
+ color: #333;
162
+ font-family: 'ProximaNova', 'Avenir Next', 'Helvetica Neue', Arial,
163
+ sans-serif, 'Avenir Next', 'Helvetica Neue', Arial, sans-serif;
164
+ font-size: 12px;
165
+ font-weight: bold;
166
+ fill: #333;
167
+ "
168
+ >
169
+ <tspan
170
+ class="highcharts-text-outline"
171
+ fill="#FFFFFF"
172
+ stroke="#FFFFFF"
173
+ stroke-width="2px"
174
+ stroke-linejoin="round"
175
+ style=""
176
+ >
177
+ {{ emptySizeText }}
178
+ </tspan>
179
+ <tspan x="5" y="17">{{ emptySizeText }}</tspan>
180
+ </text>
181
+ </g>
182
+ </g>
183
+
184
+ <common-wizards-datastore-add-shared-storm-partition-configuration-graphic-tooltip
185
+ :size="emptySizeText"
186
+ />
187
+ </svg>
188
+ </div>
189
+ </template>
190
+
191
+ <script lang="ts" setup>
192
+ import { UI_I_Localization } from '~/lib/models/interfaces'
193
+
194
+ const props = defineProps<{
195
+ selectedSize: number | null
196
+ capacity: number
197
+ }>()
198
+ const localization = computed<UI_I_Localization>(() => useLocal())
199
+
200
+ const width = ref<number>(782)
201
+
202
+ const setProgress = computed<number>(() => {
203
+ if (!props.selectedSize) return 0
204
+ return (width.value * props.selectedSize) / props.capacity
205
+ })
206
+
207
+ const emptySizeText = computed<string>(() => {
208
+ const { empty, gb } = localization.value.common
209
+
210
+ return `${empty}: ${props.capacity} ${gb}`
211
+ })
212
+ </script>
213
+
214
+ <style lang="scss" scoped>
215
+ .graphic-size {
216
+ margin-top: 24px;
217
+ &:hover {
218
+ .graphic-tooltip {
219
+ visibility: visible;
220
+ opacity: 1;
221
+ transform: translate(331px, 25px);
222
+ }
223
+ }
224
+ }
225
+ </style>
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <div class="host-accessibility">
3
+ <atoms-alert
4
+ v-show="props.alertMessages?.length"
5
+ test-id="accessibility"
6
+ status="alert-danger"
7
+ :items="props.alertMessages"
8
+ @remove="onHideAlert"
9
+ />
10
+
11
+ <atoms-tabs
12
+ v-model="activeTab"
13
+ test-id="accessibility"
14
+ :items="tabs"
15
+ size="small"
16
+ class="w-100"
17
+ />
18
+ <common-wizards-datastore-add-nfs-accessibility-tables-view
19
+ v-model="modelHosts"
20
+ :data-table="dataTable?.items || []"
21
+ :total-items="dataTable?.total_items || 0"
22
+ :total-pages="dataTable?.total_pages || 1"
23
+ :table-type="activeTab"
24
+ />
25
+ </div>
26
+ </template>
27
+
28
+ <script lang="ts" setup>
29
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
30
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+ import type { T_HostsAccessibilityTab } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/models/types'
32
+ import type { UI_I_CreateDatastoreHosts } from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/models/interfaces'
33
+ import { hostAccessibilityTabsFunc } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/config/tabsPannel'
34
+
35
+ const props = defineProps<{
36
+ alertMessages: string[]
37
+ hosts?: UI_I_CreateDatastoreHosts
38
+ }>()
39
+ const modelHosts = defineModel<string[]>()
40
+ const emits = defineEmits<{
41
+ (event: 'hide-alert', value: number): void
42
+ }>()
43
+
44
+ const localization = computed<UI_I_Localization>(() => useLocal())
45
+
46
+ const activeTab = ref<T_HostsAccessibilityTab>('compatible-hosts')
47
+ const tabs = computed<UI_I_CollapseNavItem[]>(() =>
48
+ hostAccessibilityTabsFunc(localization.value, [
49
+ (props.hosts?.items?.length || 0) + '',
50
+ '0',
51
+ ])
52
+ )
53
+
54
+ const dataTable = computed<UI_I_CreateDatastoreHosts>(() => props.hosts)
55
+ const onHideAlert = (): void => {
56
+ emits('hide-alert', 6)
57
+ }
58
+ </script>
59
+
60
+ <style lang="scss" scoped></style>
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <div class="host-accessibility">
3
+ {{ props }}
4
+ {{ modelHosts }}
5
+ </div>
6
+ </template>
7
+
8
+ <script lang="ts" setup>
9
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
10
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
11
+ import type { T_HostsAccessibilityTab } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/models/types'
12
+ import type { UI_I_CreateDatastoreHosts } from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/models/interfaces'
13
+ import { hostAccessibilityTabsFunc } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/config/tabsPannel'
14
+
15
+ const props = defineProps<{
16
+ alertMessages: string[]
17
+ hosts?: UI_I_CreateDatastoreHosts
18
+ }>()
19
+ const modelHosts = defineModel<string[]>()
20
+ // const emits = defineEmits<{
21
+ // (event: 'hide-alert', value: number): void
22
+ // }>()
23
+
24
+ // const localization = computed<UI_I_Localization>(() => useLocal())
25
+ </script>
26
+
27
+ <style lang="scss" scoped></style>
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <div class="host-accessibility">
3
+ <atoms-alert
4
+ v-show="props.alertMessages?.length"
5
+ test-id="accessibility"
6
+ status="alert-danger"
7
+ :items="props.alertMessages"
8
+ @remove="onHideAlert"
9
+ />
10
+
11
+ <atoms-tabs
12
+ v-model="activeTab"
13
+ test-id="accessibility"
14
+ :items="tabs"
15
+ size="small"
16
+ class="w-100"
17
+ />
18
+ <common-wizards-datastore-add-nfs-accessibility-tables-view
19
+ v-model="modelHosts"
20
+ :data-table="dataTable?.items || []"
21
+ :total-items="dataTable?.total_items || 0"
22
+ :total-pages="dataTable?.total_pages || 1"
23
+ :table-type="activeTab"
24
+ />
25
+ </div>
26
+ </template>
27
+
28
+ <script lang="ts" setup>
29
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
30
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+ import type { T_HostsAccessibilityTab } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/models/types'
32
+ import type { UI_I_CreateDatastoreHosts } from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/models/interfaces'
33
+ import { hostAccessibilityTabsFunc } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/config/tabsPannel'
34
+
35
+ const props = defineProps<{
36
+ alertMessages: string[]
37
+ hosts?: UI_I_CreateDatastoreHosts
38
+ }>()
39
+ const modelHosts = defineModel<string[]>()
40
+ const emits = defineEmits<{
41
+ (event: 'hide-alert', value: number): void
42
+ }>()
43
+
44
+ const localization = computed<UI_I_Localization>(() => useLocal())
45
+
46
+ const activeTab = ref<T_HostsAccessibilityTab>('compatible-hosts')
47
+ const tabs = computed<UI_I_CollapseNavItem[]>(() =>
48
+ hostAccessibilityTabsFunc(localization.value, [
49
+ (props.hosts?.items?.length || 0) + '',
50
+ '0',
51
+ ])
52
+ )
53
+
54
+ const dataTable = computed<UI_I_CreateDatastoreHosts>(() => props.hosts)
55
+ const onHideAlert = (): void => {
56
+ emits('hide-alert', 6)
57
+ }
58
+ </script>
59
+
60
+ <style lang="scss" scoped></style>
@@ -0,0 +1,31 @@
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
3
+
4
+ export const hostAccessibilityTabsFunc = (
5
+ localization: UI_I_Localization,
6
+ hosts: string[]
7
+ ) => {
8
+ const [compatibleHosts, incompatibleHost] = hosts
9
+
10
+ const tabs: UI_I_CollapseNavItem[] = [
11
+ {
12
+ text: localization.common.compatibleHosts.replace(
13
+ '{0}',
14
+ compatibleHosts || ''
15
+ ),
16
+ value: 'compatible-hosts',
17
+ disabled: false,
18
+ testId: 'host-accessibility-compatible',
19
+ },
20
+ {
21
+ text: localization.common.incompatibleHosts.replace(
22
+ '{0}',
23
+ incompatibleHost || ''
24
+ ),
25
+ value: 'incompatible-hosts',
26
+ disabled: true,
27
+ testId: 'host-accessibility-incompatible',
28
+ },
29
+ ]
30
+ return tabs
31
+ }
@@ -0,0 +1,9 @@
1
+ export interface I_CompatibleHostsTable {
2
+ id: number,
3
+ host: string,
4
+ cluster: string
5
+ }
6
+
7
+ export interface I_IncompatibleHostsTable extends I_CompatibleHostsTable{
8
+ host_incompatibility_reason: string
9
+ }
@@ -0,0 +1,5 @@
1
+ export type T_HostsAccessibilityTab = 'compatible-hosts' | 'incompatible-hosts'
2
+
3
+ export type T_CompatibleHostsTableKeys = 'host' | 'cluster'
4
+
5
+ export type T_IncompatibleHostsTableKeys = 'host' | 'cluster' | 'host_incompatibility_reason'
@@ -0,0 +1,85 @@
1
+ <template>
2
+ <div class="data-table-view">
3
+ <div>
4
+ <atoms-table-data-grid
5
+ v-model:selected-row="selectedHostsIdLocal"
6
+ v-model:page-size="pagination.pageSize"
7
+ v-model:page="pagination.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
+ hide-page-size
16
+ :loading="loading"
17
+ server-off
18
+ >
19
+ <template #icon="{ item }">
20
+ <span :class="['datagrid-cell-icon', item.data.iconClassName]" />
21
+ <span class="text-ellipsis">
22
+ {{ item.text }}
23
+ </span>
24
+ </template>
25
+ </atoms-table-data-grid>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script lang="ts" setup>
31
+ import type {
32
+ UI_I_HeadItem,
33
+ UI_I_BodyItem,
34
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
35
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
36
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
37
+ import type { T_HostsAccessibilityTab } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/models/types'
38
+ import {
39
+ I_CompatibleHostsTable,
40
+ I_IncompatibleHostsTable,
41
+ } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/models/interfaces'
42
+ import * as compatibleTable from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/compatibleTable'
43
+ import * as incompatibleTable from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/incompatibleTable'
44
+
45
+ const props = defineProps<{
46
+ dataTable: I_CompatibleHostsTable[] | I_IncompatibleHostsTable[]
47
+ tableType: T_HostsAccessibilityTab
48
+ totalItems: number
49
+ totalPages: number
50
+ }>()
51
+ const selectedHostsIdLocal = defineModel<string[]>()
52
+
53
+ const localization = computed<UI_I_Localization>(() => useLocal())
54
+
55
+ const loading = computed<boolean>(() => false)
56
+
57
+ const pagination = ref<UI_I_Pagination>({
58
+ page: 1,
59
+ pageSize: 1,
60
+ })
61
+
62
+ const tables: any = {
63
+ 'compatible-hosts': compatibleTable,
64
+ 'incompatible-hosts': incompatibleTable,
65
+ }
66
+
67
+ const headItems = computed<UI_I_HeadItem[]>(() =>
68
+ tables[props.tableType].headItems(localization.value)
69
+ )
70
+ const bodyItems = computed<UI_I_BodyItem[][]>(() => {
71
+ return tables[props.tableType].bodyItems(props.dataTable)
72
+ })
73
+ </script>
74
+
75
+ <style lang="scss" scoped>
76
+ .data-table-view {
77
+ height: inherit;
78
+ .data-table {
79
+ height: inherit;
80
+ :deep(.datagrid-outer-wrapper) {
81
+ height: inherit;
82
+ }
83
+ }
84
+ }
85
+ </style>
@@ -0,0 +1,62 @@
1
+ import type {
2
+ UI_I_HeadItem,
3
+ UI_I_BodyItem,
4
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
5
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
6
+ import { constructHeadItem } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
7
+ import type { I_CompatibleHostsTable } from '~/components/common/wizards/datastore/add/nfs/accessibility/lib/models/interfaces'
8
+ import { compatibleHostsTableKeys } from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/tableKeys'
9
+ import {
10
+ hostIconByState,
11
+ clusterIconByState,
12
+ } from '~/components/common/lib/config/states'
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, key) => {
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
+ }