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
@@ -72,7 +72,7 @@ const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
72
72
 
73
73
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
74
74
 
75
- const title = computed<string>(() => localization.value.common.addHost)
75
+ const title = computed<string>(() => localization.value.common.newDatastore)
76
76
 
77
77
  const form = ref<UI_I_CreateDatastoreForm>(
78
78
  useDeepCopy(datastoreDefaultFormFunc(props.hostId))
@@ -9,7 +9,7 @@
9
9
  test-id="add-datastore-wizard"
10
10
  @change-steps="onChangeSteps"
11
11
  @hide="onHideModal"
12
- @submit="onFinish"
12
+ @submit="onCreateDatastore"
13
13
  >
14
14
  <template #content="{ selectedStep, isLoading }">
15
15
  <ui-wizard-block
@@ -54,9 +54,8 @@
54
54
  <template #content>
55
55
  <common-wizards-datastore-add-steps-name-and-device
56
56
  v-if="selectedStep.id === dynamicSteps.nameAndDevice"
57
- v-model="form"
57
+ v-model="formModelLocal"
58
58
  :project="props.project"
59
- :alert-messages="alertMessages[selectedStep.id]"
60
59
  :messages-fields="selectedStep.fields"
61
60
  :hosts="props.nfsHosts"
62
61
  :host-id="props.hostId"
@@ -66,20 +65,18 @@
66
65
  </ui-wizard-block>
67
66
 
68
67
  <ui-wizard-block
69
- v-if="selectedStep.id === dynamicSteps.hostSummary"
68
+ v-if="selectedStep.id === dynamicSteps.nameAndConfigure"
70
69
  :sub-title-height="height2"
71
70
  >
72
71
  <template #subTitle>
73
72
  <div ref="subTitleBlock2">
74
73
  <div class="subtitle-block">
75
74
  <ui-alert
76
- v-if="hostAssociated"
75
+ v-if="props.alertMessages[dynamicSteps.nameAndConfigure].length"
77
76
  test-id="add-host-connection-settings-error-alert"
78
77
  type="error"
79
78
  size="md"
80
- :messages="[
81
- localization.common.errorProcuratorHostAlreadyConnectedSphere,
82
- ]"
79
+ :messages="props.alertMessages[dynamicSteps.nameAndConfigure]"
83
80
  class="subtitle-block__alert"
84
81
  />
85
82
 
@@ -88,36 +85,29 @@
88
85
  </div>
89
86
  </template>
90
87
  <template #content>
91
- <common-wizards-datastore-add-shared-storm
92
- v-show="datastoreType === 'shared-storm'"
93
- v-model="form"
88
+ <common-wizards-datastore-add-steps-name-and-configure
89
+ v-if="selectedStep.id === dynamicSteps.nameAndConfigure"
90
+ v-model="formModelLocal"
94
91
  :project="props.project"
95
- :step-id="selectedStep.id"
96
- :datastore-type="datastoreType"
97
- :alert-messages="alertMessages[selectedStep.id]"
98
92
  :messages-fields="selectedStep.fields"
99
- :hosts="props.nfsHosts"
100
- :is-main-filter="props.isMainFilter"
101
- :host-id="props.hostId"
102
- @hide-alert="onHideAlert"
103
- @main-filter="emits('main-filter', $event)"
93
+ @hide-alert="(e) => emits('hide-alert', e)"
104
94
  />
105
95
  </template>
106
96
  </ui-wizard-block>
107
97
 
108
98
  <ui-wizard-block
109
- v-if="selectedStep.id === dynamicSteps.assignLicense"
99
+ v-if="selectedStep.id === dynamicSteps.hostAccessibility"
110
100
  :sub-title-height="height3"
111
101
  >
112
102
  <template #subTitle>
113
103
  <div ref="subTitleBlock3">
114
104
  <div class="subtitle-block">
115
105
  <ui-alert
116
- v-if="props.alertMessages[dynamicSteps.assignLicense].length"
106
+ v-if="props.alertMessages[dynamicSteps.hostAccessibility].length"
117
107
  test-id="add-host-assign-license-error-alert"
118
108
  type="error"
119
109
  size="md"
120
- :messages="props.alertMessages[dynamicSteps.assignLicense]"
110
+ :messages="props.alertMessages[dynamicSteps.hostAccessibility]"
121
111
  class="subtitle-block__alert"
122
112
  />
123
113
 
@@ -126,14 +116,12 @@
126
116
  </div>
127
117
  </template>
128
118
  <template #content>
129
- <common-wizards-datastore-add-nfs
130
- v-show="datastoreType === 'nfs'"
131
- v-model="form"
132
- :project="props.project"
133
- :step-id="selectedStep.id"
134
- :alert-messages="alertMessages[selectedStep.id]"
135
- :messages-fields="selectedStep.fields"
119
+ <common-wizards-datastore-add-steps-host-accessibility
120
+ v-if="selectedStep.id === dynamicSteps.hostAccessibility"
121
+ v-model="formModelLocal.hosts"
122
+ :alert-messages="props.alertMessages[dynamicSteps.nameAndDevice]"
136
123
  :hosts="props.nfsHosts"
124
+ @hide-alert="(e) => emits('hide-alert', e)"
137
125
  />
138
126
  </template>
139
127
  </ui-wizard-block>
@@ -179,7 +167,6 @@ import type { UI_T_DatastoreTypeCode } from '~/components/common/wizards/datasto
179
167
  import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
180
168
  import type { UI_I_DetailsItem } from '~/components/common/details/lib/models/interfaces'
181
169
  import type { UI_I_CreateDatastoreHosts } from '~/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/models/interfaces'
182
- import { E_DatastoreTypeKode } from '~/components/common/wizards/datastore/add/lib/models/enums'
183
170
  import { constructDataReadyViewFunc } from '~/components/common/wizards/datastore/add/readyComplete/lib/config/propertiesDetails'
184
171
  import { dynamicSteps } from '~/components/common/wizards/datastore/add/lib/config/steps'
185
172
 
@@ -198,7 +185,7 @@ const emits = defineEmits<{
198
185
  (event: 'change-steps', value: UI_I_WizardStep[]): void
199
186
  (event: 'hide-alert', value: number): void
200
187
  (event: 'hide'): void
201
- (event: 'finish', value: any): void
188
+ (event: 'submit', value: any): void
202
189
  (event: 'main-filter', value: string): void
203
190
  }>()
204
191
 
@@ -231,9 +218,6 @@ const { height: height3 } = useElementSize(subTitleBlock3)
231
218
  const subTitleBlock4 = ref<HTMLElement | null>(null)
232
219
  const { height: height4 } = useElementSize(subTitleBlock4)
233
220
 
234
- // const datastoreType = ref<UI_T_DatastoreTypeCode>(
235
- // props.project === 'procurator' ? 'local' : 'shared-storm'
236
- // )
237
221
  const datastoreType = ref<UI_T_DatastoreTypeCode>(2)
238
222
  const form = ref<UI_I_CreateDatastoreForm>({
239
223
  name: 'Datastore',
@@ -260,12 +244,8 @@ const dataReadyView = computed<UI_I_DetailsItem>(() =>
260
244
  const onHideAlert = (stepId: number): void => {
261
245
  emits('hide-alert', stepId)
262
246
  }
263
- const onHideModal = (): void => {
264
- emits('hide')
265
- }
266
- const onFinish = (): void => {
267
- emits('finish', form.value)
268
- }
247
+ const onHideModal = (): void => emits('hide')
248
+ const onCreateDatastore = (): void => emits('submit')
269
249
  </script>
270
250
 
271
251
  <style scoped lang="scss">
@@ -10,7 +10,7 @@
10
10
  test-id="add-datastore-wizard"
11
11
  @change-steps="onChangeSteps"
12
12
  @hide="onHideModal"
13
- @submit="onFinish"
13
+ @submit="onCreateDatastore"
14
14
  >
15
15
  <template #modalBody="{ selectedStep }">
16
16
  <common-wizards-datastore-add-steps-type-mode
@@ -20,9 +20,9 @@
20
20
 
21
21
  <common-wizards-datastore-add-steps-name-and-device
22
22
  v-if="selectedStep.id === dynamicSteps.nameAndDevice"
23
- v-model="form"
23
+ v-model="formModelLocal"
24
24
  :project="props.project"
25
- :alert-messages="alertMessages[selectedStep.id]"
25
+ :alert-messages="props.alertMessages[dynamicSteps.nameAndDevice]"
26
26
  :messages-fields="selectedStep.fields"
27
27
  :hosts="props.nfsHosts"
28
28
  :host-id="props.hostId"
@@ -31,9 +31,27 @@
31
31
  @main-filter="emits('main-filter', $event)"
32
32
  />
33
33
 
34
+ <common-wizards-datastore-add-steps-name-and-configure
35
+ v-if="selectedStep.id === dynamicSteps.nameAndConfigure"
36
+ v-model="formModelLocal"
37
+ :project="props.project"
38
+ :alert-messages="props.alertMessages[dynamicSteps.nameAndConfigure]"
39
+ :messages-fields="selectedStep.fields"
40
+ @hide-alert="(e) => emits('hide-alert', e)"
41
+ />
42
+
43
+
44
+ <common-wizards-datastore-add-steps-host-accessibility
45
+ v-if="selectedStep.id === dynamicSteps.hostAccessibility"
46
+ v-model="formModelLocal.hosts"
47
+ :alert-messages="props.alertMessages[dynamicSteps.hostAccessibility]"
48
+ :hosts="props.nfsHosts"
49
+ @hide-alert="(e) => emits('hide-alert', e)"
50
+ />
51
+
34
52
  <common-wizards-datastore-add-shared-storm
35
- v-show="datastoreType === 'shared-storm'"
36
- v-model="form"
53
+ v-if="datastoreType === 'shared-storm'"
54
+ v-model="formModelLocal"
37
55
  :project="props.project"
38
56
  :step-id="selectedStep.id"
39
57
  :datastore-type="datastoreType"
@@ -47,8 +65,8 @@
47
65
  />
48
66
 
49
67
  <common-wizards-datastore-add-nfs
50
- v-show="datastoreType === 'nfs'"
51
- v-model="form"
68
+ v-if="datastoreType === 'nfs'"
69
+ v-model="formModelLocal"
52
70
  :project="props.project"
53
71
  :step-id="selectedStep.id"
54
72
  :alert-messages="alertMessages[selectedStep.id]"
@@ -92,34 +110,20 @@ const emits = defineEmits<{
92
110
  (event: 'change-steps', value: UI_I_WizardStep[]): void
93
111
  (event: 'hide-alert', value: number): void
94
112
  (event: 'hide'): void
95
- (event: 'finish', value: any): void
113
+ (event: 'submit'): void
96
114
  (event: 'main-filter', value: string): void
97
115
  }>()
98
116
 
99
117
  const localization = computed<UI_I_Localization>(() => useLocal())
100
118
 
101
- // const datastoreType = ref<UI_T_DatastoreTypeCode>(
102
- // props.project === 'procurator' ? 'local' : 'shared-storm'
103
- // )
104
119
  const datastoreType = ref<UI_T_DatastoreTypeCode>(2)
105
- const form = ref<UI_I_CreateDatastoreForm>({
106
- name: 'Datastore',
107
- lunDisk: [],
108
- hosts: props.hostId ? [props?.hostId] : [],
109
- type_code: 2,
110
- nfsVersion: 'nfs-4.1',
111
- readonly: false,
112
- server: '',
113
- folder: '',
114
- })
115
-
116
120
  const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
117
121
  emits('change-steps', value)
118
122
 
119
123
  const dataReadyView = computed<UI_I_DetailsItem>(() =>
120
124
  constructDataReadyViewFunc(
121
125
  localization.value,
122
- form.value,
126
+ formModelLocal.value,
123
127
  props.project,
124
128
  props.nfsHosts
125
129
  )
@@ -128,12 +132,8 @@ const dataReadyView = computed<UI_I_DetailsItem>(() =>
128
132
  const onHideAlert = (stepId: number): void => {
129
133
  emits('hide-alert', stepId)
130
134
  }
131
- const onHideModal = (): void => {
132
- emits('hide')
133
- }
134
- const onFinish = (): void => {
135
- emits('finish', form.value)
136
- }
135
+ const onHideModal = (): void => emits('hide')
136
+ const onCreateDatastore = (): void => emits('submit')
137
137
  </script>
138
138
 
139
139
  <style scoped lang="scss">
@@ -4,11 +4,12 @@ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/inter
4
4
  import { UI_E_WIZARD_STATUS } from '~/components/atoms/wizard/lib/models/enums'
5
5
  import type { UI_I_ChangeStepsSchemes } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
6
6
  import type { UI_T_DatastoreTypeCode } from '~/components/common/wizards/datastore/add/lib/models/types'
7
+
7
8
  export const dynamicSteps = {
8
9
  type: 0,
9
10
  nameAndDevice: 1,
10
- hostSummary: 2,
11
- assignLicense: 3,
11
+ nameAndConfigure: 2,
12
+ hostAccessibility: 3,
12
13
  lockdownMode: 4,
13
14
  vmLocation: 5,
14
15
  readyComplete: 6,
@@ -59,18 +60,19 @@ export const stepsFunc = (
59
60
  testId: 'create-datastore-name-and-device-selection',
60
61
  },
61
62
 
62
- {
63
- id: 3,
64
- title: localization.common.partitionConfiguration,
65
- subTitle: localization.common.partitionConfigurationDesc,
66
- status: UI_E_WIZARD_STATUS.INACTIVE,
67
- fields: {},
68
- isValid: true,
69
- testId: 'create-datastore-partition-configuration',
70
- },
63
+ // { // TODO Этот шаг использовался раньше, сейчас не используется
64
+ // id: dynamicSteps.partitionConfiguration,
65
+ // title: localization.common.partitionConfiguration,
66
+ // subTitle: localization.common.partitionConfigurationDesc,
67
+ // status: UI_E_WIZARD_STATUS.INACTIVE,
68
+ // fields: {},
69
+ // isValid: true,
70
+ // testId: 'create-datastore-partition-configuration',
71
+ // },
71
72
 
72
73
  // {
73
- // id: 4,
74
+ // // TODO Этот шаг использовался раньше, сейчас не используется
75
+ // id: dynamicSteps.nfsVersion,
74
76
  // title: localization.common.nfsVersion,
75
77
  // subTitle: localization.common.selectNfsVersion,
76
78
  // status: UI_E_WIZARD_STATUS.INACTIVE,
@@ -79,7 +81,7 @@ export const stepsFunc = (
79
81
  // testId: 'create-datastore-select-nfs-version',
80
82
  // },
81
83
  {
82
- id: 4,
84
+ id: dynamicSteps.nameAndConfigure,
83
85
  title: localization.common.nameAndConfiguration,
84
86
  subTitle: localization.common.nameAndConfigurationDesc,
85
87
  status: UI_E_WIZARD_STATUS.INACTIVE,
@@ -102,7 +104,7 @@ export const stepsFunc = (
102
104
  },
103
105
 
104
106
  {
105
- id: 5,
107
+ id: dynamicSteps.hostAccessibility,
106
108
  title: localization.common.hostsAccessibility,
107
109
  subTitle: localization.common.hostsAccessibilityDesc,
108
110
  status: UI_E_WIZARD_STATUS.INACTIVE,
@@ -136,17 +138,19 @@ export const stepsFunc = (
136
138
  fields: {},
137
139
  isValid: true,
138
140
  testId: 'create-datastore-ready-complete',
139
- // testId: 'create-datastore-storm-ready-complete',
140
- // testId: 'create-datastore-nfs-ready-complete',
141
- // testId: 'create-datastore-local-ready-complete',
142
141
  },
143
142
  ]
144
143
 
145
144
  export const stepsSchemeInitial: number[][] = [
146
145
  [dynamicSteps.type, dynamicSteps.nameAndDevice, 11], // Procurator Scheme for "shared-storm" type
147
- [dynamicSteps.type, 4, 11], // Procurator Scheme for "nfs" type
146
+ [dynamicSteps.type, dynamicSteps.nameAndConfigure, 11], // Procurator Scheme for "nfs" type
148
147
  [dynamicSteps.type, dynamicSteps.nameAndDevice, 11], // Sphere Scheme for "shared-storm" type
149
- [dynamicSteps.type, 4, 5, 11], // Sphere Scheme for "nfs" type
148
+ [
149
+ dynamicSteps.type,
150
+ dynamicSteps.nameAndConfigure,
151
+ dynamicSteps.hostAccessibility,
152
+ 11,
153
+ ], // Sphere Scheme for "nfs" type (not used from <host Context Menu>)
150
154
  ]
151
155
 
152
156
  export const getStepScheme = (
@@ -1,7 +1,7 @@
1
1
  export type UI_T_DatastoreTypeCode = 2 | 4
2
2
  export type UI_T_NfsType = 'nfs-3' | 'nfs-4.1'
3
- export type UI_T_VmfsType = 'vmfs-6' | 'vmfs-5'
3
+ export type UI_T_VmfsType = 'vmfs-6' | 'vmfs-5' // сейчас этот тип не используется
4
4
  export type UI_T_KerberosAuthentication =
5
5
  | 'dont-use'
6
6
  | 'use-only-krb5'
7
- | 'use-integrity'
7
+ | 'use-integrity' // сейчас этот тип не используется
@@ -1,10 +1,5 @@
1
1
  <template>
2
2
  <div class="nfs-container">
3
- <!-- <common-wizards-datastore-add-nfs-version-->
4
- <!-- v-if="props.stepId === 4"-->
5
- <!-- v-model="model.nfsVersion"-->
6
- <!-- />-->
7
-
8
3
  <common-wizards-datastore-add-nfs-configuration
9
4
  v-show="props.stepId === 4"
10
5
  v-model="model"
@@ -14,12 +14,6 @@
14
14
  @hide-alert="(e) => emits('hide-alert', e)"
15
15
  @main-filter="emits('main-filter', $event)"
16
16
  />
17
-
18
- <common-wizards-datastore-add-shared-storm-partition-configuration
19
- v-show="props.project === 'procurator' && props.stepId === 3"
20
- :vmfs-version="vmfsVersion"
21
- :selected-lun-disk-size="lunDiskTotalCapacity"
22
- />
23
17
  </div>
24
18
  </template>
25
19
 
@@ -57,14 +51,6 @@ const emits = defineEmits<{
57
51
  const localization = computed<UI_I_Localization>(() => useLocal())
58
52
 
59
53
  const vmfsVersion = ref<UI_T_VmfsType>('vmfs-6')
60
-
61
- const lunDiskTotalCapacity = computed<number>(() => {
62
- if (!model.value.lunDisk.length) return 0
63
-
64
- return +model.value.lunDisk
65
- .map((disk: UI_I_CreateStorageLunDiskItem) => disk.capacity_mb)
66
- .reduce((acc, cur) => acc + cur)
67
- })
68
54
  </script>
69
55
 
70
56
  <style lang="scss" scoped>
@@ -1,4 +1,5 @@
1
1
  <template>
2
+ <!-- TODO: если использовать этот компонент, нужно отрефакторить весь код — сейчас всё по-старому -->
2
3
  <div class="kerberos-auth">
3
4
  <atoms-alert
4
5
  v-show="isShowAlert"
@@ -1,6 +1,7 @@
1
1
  <template>
2
+ <!-- TODO: если использовать этот компонент, нужно отрефакторить весь код — сейчас всё по-старому -->
2
3
  <div class="local-step">
3
- <common-wizards-datastore-add-local-create-name
4
+ <common-wizards-datastore-add-steps-local-create-name
4
5
  v-if="isShowCreateLocalNameBlock"
5
6
  v-model="model.name"
6
7
  :alert-messages="props.alertMessages"
@@ -1,4 +1,5 @@
1
1
  <template>
2
+ <!-- TODO: если использовать этот компонент, нужно отрефакторить весь код — сейчас всё по-старому -->
2
3
  <section class="nfs-version">
3
4
  <common-select-radio-group
4
5
  v-model="selectedNfsVersionLocal"
@@ -0,0 +1,245 @@
1
+ <template>
2
+ <!-- TODO: если использовать этот компонент, нужно отрефакторить весь код — сейчас всё по-старому -->
3
+ <div class="partition">
4
+ <div class="clr-form-control clr-row">
5
+ <label class="clr-col-md-4 clr-control-label">
6
+ {{ localization.common.partitionConfiguration }}
7
+ </label>
8
+
9
+ <div class="clr-col-md-8 p-0">
10
+ <div class="clr-select-wrapper">
11
+ <select
12
+ id="host-select"
13
+ v-model="selectedHost"
14
+ data-id="select-partition-configuration"
15
+ class="dropdown-toggle"
16
+ @change="onSelectHost"
17
+ >
18
+ <option
19
+ v-for="(item, index) in partitionConfiguration"
20
+ :key="index"
21
+ :value="item.value"
22
+ :disabled="item.disabled"
23
+ >
24
+ {{ item.text }}
25
+ </option>
26
+ </select>
27
+ </div>
28
+ </div>
29
+ </div>
30
+
31
+ <div class="datastore-size-container clr-flex-row clr-flex">
32
+ <label class="clr-col-md-4 clr-control-label" for="datastore-size">
33
+ {{ localization.common.datastoreSize }}
34
+ </label>
35
+
36
+ <div class="datastore-size-slider-container clr-col-md-8 p-0">
37
+ <div class="clr-col-xl-6 clr-col-md-8 p-0">
38
+ <div
39
+ class="partition__range-input clr-control-container clr-col-md-10 clr-col-12"
40
+ >
41
+ <div class="clr-range-wrapper">
42
+ <input
43
+ id="datastore-size-input-0"
44
+ v-model="datastoreSize"
45
+ data-id="select-storm-storage-size-range-field"
46
+ type="range"
47
+ min="0"
48
+ :max="countDatastoreSizeToGb"
49
+ step="0.01"
50
+ class="ng-valid clr-range ng-dirty ng-touched"
51
+ />
52
+ </div>
53
+ </div>
54
+ </div>
55
+
56
+ <input
57
+ id="datastore-size-input-1"
58
+ v-model="datastoreSize"
59
+ data-id="select-storm-storage-size-input-field"
60
+ type="number"
61
+ min="0"
62
+ :max="countDatastoreSizeToGb"
63
+ step="0.01"
64
+ class="show-arrow"
65
+ />
66
+ <span>{{ localization.common.gb }}</span>
67
+ </div>
68
+ </div>
69
+
70
+ <template v-if="props.vmfsVersion === 'vmfs-6'">
71
+ <div class="clr-form-control clr-row">
72
+ <label class="clr-col-md-4 clr-control-label">
73
+ {{ localization.common.blockSize }}
74
+ </label>
75
+
76
+ <div>
77
+ <div class="clr-select-wrapper">
78
+ <select
79
+ id="storm-configuration-block-size"
80
+ v-model="selectedSize"
81
+ data-id="storm-configuration-block-size"
82
+ class="dropdown-toggle"
83
+ @change="onSelectHost"
84
+ >
85
+ <option
86
+ v-for="(item, index) in blockSize"
87
+ :key="index"
88
+ :value="item.value"
89
+ :disabled="item.disabled"
90
+ >
91
+ {{ item.text }}
92
+ </option>
93
+ </select>
94
+ </div>
95
+ </div>
96
+ </div>
97
+
98
+ <div class="clr-form-control clr-row">
99
+ <label class="clr-col-md-4 clr-control-label">
100
+ {{ localization.common.spaceReclamationGranularity }}
101
+ </label>
102
+
103
+ <div>
104
+ <div class="clr-select-wrapper">
105
+ <select
106
+ id="granularity-select"
107
+ v-model="selectedGranularity"
108
+ data-id="storm-configuration-space-granularity"
109
+ class="dropdown-toggle"
110
+ @change="onSelectHost"
111
+ >
112
+ <option
113
+ v-for="(item, index) in spaceGranularity"
114
+ :key="index"
115
+ :value="item.value"
116
+ :disabled="item.disabled"
117
+ >
118
+ {{ item.text }}
119
+ </option>
120
+ </select>
121
+ </div>
122
+ </div>
123
+ </div>
124
+
125
+ <div class="clr-form-control clr-row">
126
+ <label class="clr-col-md-4 clr-control-label">
127
+ {{ localization.common.spaceReclamationPriority }}
128
+ </label>
129
+
130
+ <div>
131
+ <div class="clr-select-wrapper">
132
+ <select
133
+ id="priority-select"
134
+ v-model="selectedPriority"
135
+ data-id="storm-configuration-space-priority"
136
+ class="dropdown-toggle"
137
+ @change="onSelectHost"
138
+ >
139
+ <option
140
+ v-for="(item, index) in spacePriority"
141
+ :key="index"
142
+ :value="item.value"
143
+ :disabled="item.disabled"
144
+ >
145
+ {{ item.text }}
146
+ </option>
147
+ </select>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </template>
152
+
153
+ <common-wizards-datastore-add-shared-storm-partition-configuration-size-graphic
154
+ :selected-size="+datastoreSize"
155
+ :capacity="countDatastoreSizeToGb"
156
+ />
157
+ </div>
158
+ </template>
159
+
160
+ <script lang="ts" setup>
161
+ import { UI_I_Localization } from '~/lib/models/interfaces'
162
+ import { UI_T_VmfsType } from '~/components/common/wizards/datastore/add/lib/models/types'
163
+ import { UI_I_SelectHostOptions } from '~/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces'
164
+ import {
165
+ partitionConfigurationFunc,
166
+ spacePriorityFunc,
167
+ spaceGranularityFunc,
168
+ blockSizeFunc,
169
+ } from '~/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/lib/config/selectOptions'
170
+
171
+ const props = withDefaults(
172
+ defineProps<{
173
+ vmfsVersion: UI_T_VmfsType
174
+ selectedLunDiskSize: number
175
+ }>(),
176
+ {
177
+ selectedLunDiskSize: 0,
178
+ }
179
+ )
180
+ const localization = computed<UI_I_Localization>(() => useLocal())
181
+ const { $binary } = useNuxtApp()
182
+
183
+ const selectedHost = ref<string>('all-partitions')
184
+ const partitionConfiguration = computed<UI_I_SelectHostOptions[]>(() =>
185
+ partitionConfigurationFunc(localization.value)
186
+ )
187
+
188
+ const selectedSize = ref<string>('1')
189
+ const blockSize = computed<UI_I_SelectHostOptions[]>(() =>
190
+ blockSizeFunc(localization.value)
191
+ )
192
+
193
+ const selectedGranularity = ref<string>('1')
194
+ const spaceGranularity = computed<UI_I_SelectHostOptions[]>(() =>
195
+ spaceGranularityFunc(localization.value)
196
+ )
197
+
198
+ const selectedPriority = ref<string>('low')
199
+ const spacePriority = computed<UI_I_SelectHostOptions[]>(() =>
200
+ spacePriorityFunc(localization.value)
201
+ )
202
+
203
+ const countDatastoreSizeToGb = computed<number>(() => {
204
+ return $binary.mbToGb(props.selectedLunDiskSize)
205
+ })
206
+
207
+ const datastoreSize = ref<number | null>(null)
208
+ watch(
209
+ () => props.selectedLunDiskSize,
210
+ (_val) => {
211
+ datastoreSize.value = countDatastoreSizeToGb.value
212
+ }
213
+ )
214
+
215
+ const onSelectHost = (): void => {}
216
+
217
+ // const lunDiskTotalCapacity = computed<number>(() => { TODO: нужно будет сделать на родительском компоненте
218
+ // if (!model.value.lunDisk.length) return 0
219
+ //
220
+ // return +model.value.lunDisk
221
+ // .map((disk: UI_I_CreateStorageLunDiskItem) => disk.capacity_mb)
222
+ // .reduce((acc, cur) => acc + cur)
223
+ // })
224
+ </script>
225
+
226
+ <style lang="scss" scoped>
227
+ .partition {
228
+ .datastore-size-container {
229
+ display: flex;
230
+ margin-left: -1em;
231
+ margin-top: 1.2rem;
232
+ margin-bottom: 1.2rem;
233
+ }
234
+ .clr-form-control {
235
+ display: flex;
236
+ flex-direction: row;
237
+ }
238
+ &__range-input {
239
+ margin-left: -10px;
240
+ }
241
+ }
242
+ .datastore-size-slider-container {
243
+ display: flex;
244
+ }
245
+ </style>