bfg-common 1.6.49 → 1.6.50

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 (134) hide show
  1. package/assets/localization/local_be.json +255 -9
  2. package/assets/localization/local_en.json +264 -17
  3. package/assets/localization/local_hy.json +257 -11
  4. package/assets/localization/local_kk.json +255 -9
  5. package/assets/localization/local_ru.json +264 -18
  6. package/assets/localization/local_zh.json +255 -9
  7. package/assets/scss/common/global.scss +11 -0
  8. package/assets/scss/common/theme.scss +2 -2
  9. package/components/atoms/stack/StackBlock.vue +1 -1
  10. package/components/atoms/tooltip/TooltipError.vue +3 -0
  11. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +1 -1
  12. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +0 -1
  13. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +1 -0
  14. package/components/common/certificate/CertificateInfo.vue +7 -1
  15. package/components/common/configure/physicalAdapters/PhysicalAdapters.vue +6 -0
  16. package/components/common/configure/physicalAdapters/PhysicalAdaptersNew.vue +219 -192
  17. package/components/common/configure/physicalAdapters/PhysicalAdaptersOld.vue +6 -4
  18. package/components/common/configure/physicalAdapters/buttons/Buttons.vue +1 -0
  19. package/components/common/configure/physicalAdapters/modals/edit/Edit.vue +26 -1
  20. package/components/common/configure/physicalAdapters/modals/edit/EditNew.vue +30 -1
  21. package/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces.ts +5 -0
  22. package/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations.ts +19 -0
  23. package/components/common/configure/physicalAdapters/tableView/TableViewNew.vue +12 -1
  24. package/components/common/configure/physicalAdapters/tableView/lib/config/physicalAdaptersTableConfigNew.ts +21 -21
  25. package/components/common/configure/physicalAdapters/tableView/lib/config/settings.ts +12 -5
  26. package/components/common/configure/physicalAdapters/tableView/lib/models/interfaces.ts +4 -1
  27. package/components/common/diagramMain/Diagram.vue +167 -85
  28. package/components/common/diagramMain/DiagramMain.vue +34 -10
  29. package/components/common/diagramMain/header/Header.vue +49 -0
  30. package/components/common/diagramMain/header/HeaderNew.vue +155 -0
  31. package/components/common/diagramMain/{Header.vue → header/HeaderOld.vue} +78 -67
  32. package/components/common/diagramMain/modals/Modals.vue +4 -0
  33. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +2 -2
  34. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +43 -2
  35. package/components/common/diagramMain/modals/lib/config/index.ts +2 -1
  36. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +1 -1
  37. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +2 -2
  38. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +1 -1
  39. package/components/common/diagramMain/skeleton/Header.vue +31 -0
  40. package/components/common/diagramMain/skeleton/Switch.vue +75 -0
  41. package/components/common/layout/theHeader/ThemeSwitch.vue +1 -1
  42. package/components/common/layout/theHeader/modals/reconnect/New.vue +38 -30
  43. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +8 -9
  44. package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +4 -0
  45. package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +9 -2
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +11 -7
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +7 -1
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/lib/config/consoleOptions.ts +8 -5
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +9 -5
  50. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/lib/config/formatOptions.ts +1 -1
  51. package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +5 -9
  52. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +9 -6
  53. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +3 -1
  54. package/components/common/monitor/advanced/tools/Tools.vue +10 -9
  55. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +16 -19
  56. package/components/common/monitor/advanced/tools/lib/config/advancedToolbar.ts +62 -9
  57. package/components/common/noDataProvided/NoDataProvidedNew.vue +1 -1
  58. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +4 -4
  59. package/components/common/pages/backups/modals/createBackup/datastores/tableView/old/lib/config/table.ts +4 -4
  60. package/components/common/pages/hardwareHealth/HardwareHealth.vue +4 -0
  61. package/components/common/pages/hardwareHealth/HardwareHealthNew.vue +12 -3
  62. package/components/common/pages/hardwareHealth/HardwareHealthOld.vue +3 -0
  63. package/components/common/pages/hardwareHealth/historyTestimony/Graph.vue +4 -4
  64. package/components/common/pages/hardwareHealth/historyTestimony/GraphNew.vue +4 -3
  65. package/components/common/pages/hardwareHealth/historyTestimony/GraphOld.vue +3 -2
  66. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +32 -8
  67. package/components/common/pages/hardwareHealth/historyTestimony/tools/ToolsNew.vue +11 -18
  68. package/components/common/pages/hardwareHealth/historyTestimony/tools/ToolsOld.vue +10 -19
  69. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +19 -7
  70. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/ActionsNew.vue +1 -1
  71. package/components/common/pages/hardwareHealth/historyTestimony/tools/lib/config/toolbar.ts +68 -5
  72. package/components/common/pages/scheduledTasks/table/lib/models/enums.ts +9 -0
  73. package/components/common/pages/scheduledTasks/table/new/New.vue +12 -10
  74. package/components/common/pages/tasks/Tasks.vue +4 -1
  75. package/components/common/pages/tasks/table/Table.vue +25 -23
  76. package/components/common/readyToComplete/New.vue +1 -0
  77. package/components/common/split/vertical/New.vue +42 -8
  78. package/components/common/split/vertical/Old.vue +31 -2
  79. package/components/common/split/vertical/Vertical.vue +4 -0
  80. package/components/common/vm/actions/add/New.vue +21 -6
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +14 -1
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/New.vue +5 -0
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Old.vue +1 -0
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/New.vue +1 -0
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/New.vue +2 -0
  86. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +13 -15
  87. package/components/common/vm/actions/confirm/Confirm.vue +3 -0
  88. package/components/common/vm/snapshots/DetailView.vue +6 -6
  89. package/components/common/wizards/datastore/add/New.vue +6 -0
  90. package/components/common/wizards/datastore/add/lib/config/steps.ts +1 -1
  91. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
  92. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +1 -1
  93. package/components/common/wizards/network/add/Add.vue +13 -2
  94. package/components/common/wizards/network/add/AddNew.vue +22 -26
  95. package/components/common/wizards/network/add/lib/config/initialData.ts +6 -4
  96. package/components/common/wizards/network/add/lib/config/steps.ts +1 -1
  97. package/components/common/wizards/network/add/lib/models/interfaces.ts +1 -0
  98. package/components/common/wizards/network/add/lib/utils/utils.ts +1 -1
  99. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettingsOld.vue +5 -1
  100. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +2 -8
  101. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsOld.vue +3 -0
  102. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +2 -8
  103. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesOld.vue +6 -2
  104. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +10 -3
  105. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceOld.vue +4 -0
  106. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +5 -1
  107. package/components/common/wizards/network/add/validations/common.ts +1 -1
  108. package/components/common/wizards/vm/migrate/New.vue +13 -3
  109. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +5 -0
  110. package/components/common/wizards/vm/migrate/lib/config/steps.ts +3 -2
  111. package/components/common/wizards/vm/migrate/steps/computeResource/New.vue +2 -1
  112. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/New.vue +40 -21
  113. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/clusterTable.ts +340 -0
  114. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/hostTable.ts +44 -14
  115. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/models/enums.ts +4 -0
  116. package/components/common/wizards/vm/migrate/steps/priority/New.vue +7 -2
  117. package/components/common/wizards/vm/migrate/steps/selectStorage/New.vue +22 -7
  118. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/New.vue +6 -0
  119. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/New.vue +4 -1
  120. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/lib/config/datastoreTable.ts +12 -16
  121. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/New.vue +10 -5
  122. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +16 -11
  123. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +7 -1
  124. package/components/common/wizards/vm/migrate/steps/selectStorage/selectedPerDisk/New.vue +17 -10
  125. package/components/common/wizards/vm/migrate/steps/type/TypeNew.vue +1 -0
  126. package/components/common/wizards/vm/migrate/vmOrigin/New.vue +35 -15
  127. package/lib/models/store/tasks/enums.ts +3 -0
  128. package/lib/models/store/tasks/types.ts +7 -6
  129. package/package.json +2 -2
  130. package/plugins/directives.ts +3 -5
  131. package/public/spice-console/application/agent.js +18 -17
  132. package/store/tasks/actions.ts +26 -8
  133. package/store/tasks/mappers/recentTasks.ts +1 -0
  134. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/SaveOptionsModal.vue +0 -81
@@ -83,6 +83,7 @@
83
83
  :valid-date-end="props.validDateEnd"
84
84
  :format-date="props.formatDate"
85
85
  :selected-host-name="props.selectedHostName"
86
+ :project="props.project"
86
87
  @hide="emits('hide-chart-modal')"
87
88
  @select-metric-local="emits('select-metric-local', $event)"
88
89
  @power-selected-rows-local="emits('power-selected-rows-local', $event)"
@@ -91,21 +92,19 @@
91
92
  "
92
93
  @update-period-type="emits('update-period-type', $event)"
93
94
  @delete-option="emits('delete-option')"
94
- @save-option-name="onSaveOptionName"
95
+ @save-option-name="emits('save-option-name')"
95
96
  @submit-options="emits('submit-options', $event)"
96
97
  />
97
98
  </template>
98
99
 
99
100
  <script setup lang="ts">
100
101
  import type { UI_I_Localization } from '~/lib/models/interfaces'
102
+ import type { UI_T_Project } from '~/lib/models/types'
101
103
  import type { UI_I_HardwareHealthSensorsGraph } from '~/components/common/pages/hardwareHealth/historyTestimony/lib/models/interfaces'
102
104
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
103
105
  import type { UI_I_OptionsForm } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/interfaces'
104
106
  import type { UI_T_Chart } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/lib/models/types'
105
- import {
106
- getCurrentOptionsStorageFunc,
107
- viewFunc,
108
- } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/lib/config/toolbar'
107
+ import { viewFunc } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/lib/config/toolbar'
109
108
 
110
109
  const selectedView = defineModel<string>('selectedView', { required: true })
111
110
  const selectedPeriod = defineModel<string>('selectedPeriod', { required: true })
@@ -135,6 +134,8 @@ const props = defineProps<{
135
134
  chartTitleDate: string
136
135
  periodOptions: UI_I_OptionItem[]
137
136
  selectedHostName: string
137
+ optionsNames: string[]
138
+ project: UI_T_Project
138
139
  }>()
139
140
 
140
141
  const emits = defineEmits<{
@@ -151,16 +152,15 @@ const emits = defineEmits<{
151
152
  value: UI_I_HardwareHealthSensorsGraph[]
152
153
  ): void
153
154
  (event: 'update-period-type', value: string): void
154
- (event: 'delete-option'): void
155
155
  (event: 'submit-options', value: UI_I_OptionsForm): void
156
+ (event: 'save-option-name'): void
157
+ (event: 'delete-option'): void
156
158
  }>()
157
159
 
158
160
  const localization = computed<UI_I_Localization>(() => useLocal())
159
161
 
160
- const optionsNames = ref<string[]>([])
161
-
162
162
  const viewOptions = computed<UI_I_OptionItem[]>(() =>
163
- viewFunc(localization.value, optionsNames.value)
163
+ viewFunc(localization.value, props.optionsNames)
164
164
  )
165
165
 
166
166
  watch(
@@ -170,7 +170,7 @@ watch(
170
170
  if (newValue) currentValue = newValue
171
171
  else if (
172
172
  selectedView.value &&
173
- optionsNames.value.includes(selectedView.value)
173
+ props.optionsNames.includes(selectedView.value)
174
174
  )
175
175
  currentValue = selectedView.value
176
176
  else currentValue = selectedView.value || viewOptions.value[0]?.value
@@ -179,15 +179,6 @@ watch(
179
179
  },
180
180
  { immediate: true }
181
181
  )
182
-
183
- const onSaveOptionName = (): void => {
184
- optionsNames.value = getCurrentOptionsStorageFunc()
185
- }
186
-
187
- onMounted(() => {
188
- optionsNames.value = getCurrentOptionsStorageFunc()
189
- emits('update-tools')
190
- })
191
182
  </script>
192
183
 
193
184
  <style scoped lang="scss">
@@ -87,6 +87,7 @@
87
87
 
88
88
  <script setup lang="ts">
89
89
  import type { UI_I_Localization } from '~/lib/models/interfaces'
90
+ import type { UI_T_Project } from '~/lib/models/types'
90
91
  import type { UI_I_VerticalTabs } from '~/components/atoms/tabs/lib/models/interfaces'
91
92
  import type { UI_T_Chart } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/lib/models/types'
92
93
  import type { UI_I_OptionsForm } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/lib/models/interfaces'
@@ -94,7 +95,11 @@ import type { UI_I_HardwareHealthSensorsGraph } from '~/components/common/pages/
94
95
  import { metricsFunc } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/lib/config/optionsMetrics'
95
96
  import { checkDateFunc } from '~/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker'
96
97
  import { getValidDateByOptionFunc } from '~/components/common/monitor/lib/config/getValidDateByOption'
97
- import { getCurrentOptionsStorageFunc } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/lib/config/toolbar'
98
+ import {
99
+ getCurrentOptionsStorageFunc,
100
+ removeSelectedOptionsFromStorageFunc,
101
+ getSelectedOptionsValueFromStorageFunc,
102
+ } from '~/components/common/pages/hardwareHealth/historyTestimony/tools/lib/config/toolbar'
98
103
 
99
104
  const props = defineProps<{
100
105
  selectedChartOptionName: string
@@ -117,6 +122,7 @@ const props = defineProps<{
117
122
  validDateEnd: number
118
123
  formatDate: string
119
124
  selectedHostName: string
125
+ project: UI_T_Project
120
126
  }>()
121
127
 
122
128
  const emits = defineEmits<{
@@ -141,6 +147,7 @@ const { $store }: any = useNuxtApp()
141
147
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
142
148
 
143
149
  const routeType = '' + useRoute().params.type
150
+ const routeId = '' + useRoute().params.id
144
151
 
145
152
  const localization = computed<UI_I_Localization>(() => useLocal())
146
153
 
@@ -389,6 +396,8 @@ const onSaveOptions = (name: string): void => {
389
396
  chartType,
390
397
  counters,
391
398
  metric: selectedMetric.value,
399
+ validShowName: name,
400
+ nodeId: routeId,
392
401
  timespan: {
393
402
  periodType: localTimespanPeriodType.value,
394
403
  units: localCustomTime.value,
@@ -396,8 +405,8 @@ const onSaveOptions = (name: string): void => {
396
405
  type: timespanType.value,
397
406
  },
398
407
  }
399
- useLocalStorage(`${name}ChartOptionsSensors`, saveOptionsData)
400
- optionsNames.value = getCurrentOptionsStorageFunc()
408
+ useLocalStorage(`ChartOptionsSensors${name}`, saveOptionsData)
409
+ optionsNames.value = getCurrentOptionsStorageFunc(props.project)
401
410
  localSelectedChartOptionName.value = name
402
411
  emits('save-option-name')
403
412
  }
@@ -418,7 +427,10 @@ const setDefaultOptions = (): void => {
418
427
  }
419
428
 
420
429
  const setCustomOptions = (name: string): void => {
421
- const selectedValue = useLocalStorage(name + 'ChartOptionsSensors', undefined)
430
+ const selectedValue = getSelectedOptionsValueFromStorageFunc(
431
+ name,
432
+ props.project
433
+ )
422
434
 
423
435
  if (selectedValue.routeType !== routeType) return
424
436
 
@@ -462,8 +474,8 @@ watch(
462
474
  )
463
475
 
464
476
  const onDeleteChartName = (name: string): void => {
465
- window.localStorage.removeItem(name + 'ChartOptionsSensors')
466
- optionsNames.value = getCurrentOptionsStorageFunc()
477
+ removeSelectedOptionsFromStorageFunc(name, props.project)
478
+ optionsNames.value = getCurrentOptionsStorageFunc(props.project)
467
479
  setSelectOptions()
468
480
  emits('delete-option')
469
481
  }
@@ -481,7 +493,7 @@ watch(
481
493
  )
482
494
 
483
495
  onMounted(() => {
484
- optionsNames.value = getCurrentOptionsStorageFunc()
496
+ optionsNames.value = getCurrentOptionsStorageFunc(props.project)
485
497
  })
486
498
  </script>
487
499
 
@@ -135,7 +135,7 @@ const onSaveNewName = (): void => {
135
135
  &:disabled {
136
136
  color: var(--chart-options-name-actions-delete-disabled-text-color);
137
137
 
138
- :deep(.button-icon) {
138
+ :deep(span) {
139
139
  color: #bdc3c7;
140
140
  opacity: 0.44;
141
141
  }
@@ -1,4 +1,5 @@
1
1
  import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_T_Project } from '~/lib/models/types'
2
3
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
3
4
 
4
5
  export const periodFunc = (
@@ -69,14 +70,76 @@ export const viewFunc = (
69
70
  return result
70
71
  }
71
72
 
72
- export const getCurrentOptionsStorageFunc = (): string[] => {
73
+ export const getCurrentOptionsStorageFunc = (
74
+ project: UI_T_Project
75
+ ): string[] => {
76
+ const routeId = useRoute().params.id
77
+ const routeType = useRoute().params.type
78
+ const localStoragePrefix = project === 'sphere' ? getLocalStoragePrefix() : ''
79
+
73
80
  const optionsNames = []
74
81
  for (const key of Object.entries(localStorage)) {
75
- if (key[0].includes('ChartOptionsSensors')) {
76
- if (key[0].includes('ChartOptionsSensors')) {
77
- optionsNames.push(key[0].replace('ChartOptionsSensors', ''))
78
- }
82
+ if (
83
+ key[0].includes('ChartOptionsSensors') &&
84
+ key[0].includes(localStoragePrefix)
85
+ ) {
86
+ const values = JSON.parse(key[1])
87
+
88
+ if (
89
+ values.value.routeType === routeType &&
90
+ values.value.nodeId === routeId
91
+ )
92
+ optionsNames.push(values.value.validShowName)
79
93
  }
80
94
  }
81
95
  return optionsNames
82
96
  }
97
+
98
+ export const removeSelectedOptionsFromStorageFunc = (
99
+ selectedName: string,
100
+ project: UI_T_Project
101
+ ): void => {
102
+ const routeId = useRoute().params.id
103
+ const localStoragePrefix = project === 'sphere' ? getLocalStoragePrefix() : ''
104
+
105
+ for (const key of Object.entries(localStorage)) {
106
+ if (
107
+ key[0].includes('ChartOptionsSensors') &&
108
+ key[0].includes(localStoragePrefix)
109
+ ) {
110
+ let values = JSON.parse(key[1])
111
+
112
+ if (
113
+ values.value.validShowName === selectedName &&
114
+ values.value.nodeId === routeId
115
+ )
116
+ window.localStorage.removeItem(key[0])
117
+ }
118
+ }
119
+ }
120
+
121
+ export const getSelectedOptionsValueFromStorageFunc = (
122
+ selectedName: string,
123
+ project: UI_T_Project
124
+ ): any => {
125
+ const routeId = useRoute().params.id
126
+ const localStoragePrefix = project === 'sphere' ? getLocalStoragePrefix() : ''
127
+
128
+ let result = null
129
+
130
+ for (const key of Object.entries(localStorage)) {
131
+ if (
132
+ key[0].includes('ChartOptionsSensors') &&
133
+ key[0].includes(localStoragePrefix)
134
+ ) {
135
+ let values = JSON.parse(key[1])
136
+
137
+ if (
138
+ values.value.validShowName === selectedName &&
139
+ values.value.nodeId === routeId
140
+ )
141
+ result = values.value
142
+ }
143
+ }
144
+ return result
145
+ }
@@ -2,3 +2,12 @@ export enum UI_E_SchedulerRunStatus {
2
2
  RUNNING = 'this task has been started',
3
3
  SUCCESS = 'success',
4
4
  }
5
+
6
+ export enum E_SchedulerFrequencyModeLocale {
7
+ Once = 'once',
8
+ Startup = 'afterVCenterStartup',
9
+ Hourly = 'hourly',
10
+ Daily = 'daily',
11
+ Weekly = 'weekly',
12
+ Monthly = 'monthly',
13
+ }
@@ -82,16 +82,18 @@
82
82
  <ui-icon name="vertical-dotes" width="20" height="20" />
83
83
  </span>
84
84
  </ui-button>
85
- <ui-dropdown
86
- :show="actionsShowId === item.data.id"
87
- :test-id="`event-table-action-dropdown-${item.data.id}`"
88
- :items="schedulerDropActions"
89
- :elem-id="`event-table-action-${item.data.id}`"
90
- width="max-content"
91
- left
92
- @select="onSelectAction"
93
- @hide="onHideActionsDropdown"
94
- />
85
+ <Teleport to="body">
86
+ <ui-dropdown
87
+ :show="actionsShowId === item.data.id"
88
+ :test-id="`event-table-action-dropdown-${item.data.id}`"
89
+ :items="schedulerDropActions"
90
+ :elem-id="`event-table-action-${item.data.id}`"
91
+ width="max-content"
92
+ left
93
+ @select="onSelectAction"
94
+ @hide="onHideActionsDropdown"
95
+ />
96
+ </Teleport>
95
97
  </div>
96
98
  </template>
97
99
 
@@ -58,7 +58,10 @@ const getTasks = async (): Promise<void> => {
58
58
  sortBy: sort.value || '',
59
59
  filter: filter.value || '',
60
60
  }
61
- await $store.dispatch('tasks/A_GET_TASKS', payload)
61
+ await $store.dispatch('tasks/A_GET_TASKS', {
62
+ data: payload,
63
+ project: props.project,
64
+ })
62
65
  }
63
66
  const onUpdatePagination = (event: UI_I_Pagination): void => {
64
67
  pagination.value = event
@@ -67,28 +67,30 @@
67
67
  <ui-icon name="vertical-dotes" width="20" height="20" />
68
68
  </span>
69
69
  </ui-button>
70
- <ui-dropdown
71
- :show="actionsShowId === item.data.id"
72
- :test-id="`data-table-task-dropdown-${item.data.id}`"
73
- :items="actions"
74
- :elem-id="`data-table-task-action-${item.data.id}`"
75
- width="max-content"
76
- left
77
- @select="onSelectAction(item.data.target, $event)"
78
- @hide="onHideActionsDropdown"
79
- >
80
- <template #row="{ item: dropMenu }">
81
- <ui-icon
82
- v-if="dropMenu.iconName === 'hide'"
83
- name="password-hide"
84
- width="16"
85
- height="16"
86
- />
87
- <span class="action-text">
88
- {{ dropMenu.text }}
89
- </span>
90
- </template>
91
- </ui-dropdown>
70
+ <Teleport to="body">
71
+ <ui-dropdown
72
+ :show="actionsShowId === item.data.id"
73
+ :test-id="`data-table-task-dropdown-${item.data.id}`"
74
+ :items="actions"
75
+ :elem-id="`data-table-task-action-${item.data.id}`"
76
+ width="max-content"
77
+ left
78
+ @select="onSelectAction(item.data.target, $event)"
79
+ @hide="onHideActionsDropdown"
80
+ >
81
+ <template #row="{ item: dropMenu }">
82
+ <ui-icon
83
+ v-if="dropMenu.iconName === 'hide'"
84
+ name="password-hide"
85
+ width="16"
86
+ height="16"
87
+ />
88
+ <span class="action-text">
89
+ {{ dropMenu.text }}
90
+ </span>
91
+ </template>
92
+ </ui-dropdown>
93
+ </Teleport>
92
94
  </div>
93
95
  </template>
94
96
 
@@ -162,7 +164,7 @@ const texts = computed<UI_I_TableTexts>(() => ({
162
164
  searchHere: localization.value.common.searchHere,
163
165
  rowsPerPage: localization.value.common.rowsPerPage,
164
166
  of: localization.value.common.of,
165
- selected: localization.value.common.selected,
167
+ selected: localization.value.common.selected2,
166
168
  columns: localization.value.common.columns,
167
169
  previous: localization.value.common.previous,
168
170
  next: localization.value.common.next,
@@ -74,6 +74,7 @@ const dataLocal = computed<UI_I_TableInfoItem[]>(() => {
74
74
  row-gap: 12px;
75
75
  column-gap: 24px;
76
76
  margin-top: 16px;
77
+ padding-bottom: 16px;
77
78
 
78
79
  &.lang-ru {
79
80
  .details-item {
@@ -3,13 +3,22 @@
3
3
  :id="props.elementId"
4
4
  :class="['fill-parent vertical', { dragging: props.isDrag }]"
5
5
  >
6
- <div :style="props.topPanelStyle" class="vui-horizontal-panel firstPanel">
6
+ <div
7
+ :style="props.topPanelStyle"
8
+ :class="[
9
+ 'vui-horizontal-panel firstPanel',
10
+ {
11
+ 'hidden-second': !props.bottomPermission,
12
+ },
13
+ ]"
14
+ >
7
15
  <div class="vui-horizontal-panel sec-nav-container">
8
16
  <slot name="firstPanel" />
9
17
  </div>
10
18
  </div>
11
19
 
12
20
  <div
21
+ v-if="props.bottomPermission"
13
22
  :id="`gutter-${props.elementId}`"
14
23
  class="gutter gutter-vertical"
15
24
  tabindex="0"
@@ -20,7 +29,16 @@
20
29
  <div class="gutter-vertical-handler"></div>
21
30
  </div>
22
31
 
23
- <div :style="props.bottomPanelStyle" class="secondPanel bottom">
32
+ <div
33
+ v-if="props.bottomPermission"
34
+ :style="props.bottomPanelStyle"
35
+ :class="[
36
+ 'secondPanel bottom',
37
+ {
38
+ hidden: !props.bottomPermission,
39
+ },
40
+ ]"
41
+ >
24
42
  <slot name="secondPanel" />
25
43
  </div>
26
44
  </div>
@@ -37,6 +55,7 @@ const props = defineProps<{
37
55
  isDrag: boolean
38
56
  topPanelStyle: UI_I_SplitVerticalStyle
39
57
  bottomPanelStyle: UI_I_SplitVerticalStyle
58
+ bottomPermission: boolean
40
59
  }>()
41
60
  </script>
42
61
 
@@ -52,10 +71,14 @@ const props = defineProps<{
52
71
  </style>
53
72
 
54
73
  <style scoped lang="scss">
55
- .fill-parent {
74
+ .vertical {
56
75
  &.dragging {
57
76
  .gutter-vertical.gutter {
58
- background-color: var(--gutter-active-bg-color);
77
+ background-color: var(--new-gutter-active-bg-color);
78
+
79
+ &::before {
80
+ background-color: var(--new-gutter-active-before-bg-color);
81
+ }
59
82
  }
60
83
  }
61
84
 
@@ -63,6 +86,11 @@ const props = defineProps<{
63
86
  max-height: calc(100% - 36px);
64
87
  height: calc(100vh - 36px);
65
88
 
89
+ &.hidden-second {
90
+ max-height: 100%;
91
+ height: 100% !important;
92
+ }
93
+
66
94
  .sec-nav-container {
67
95
  width: 100%;
68
96
  height: 100%;
@@ -95,11 +123,11 @@ const props = defineProps<{
95
123
  //}
96
124
 
97
125
  &:hover {
98
- background-color: var(--gutter-hover-bg-color);
126
+ background-color: var(--new-gutter-hover-bg-color);
99
127
  cursor: row-resize;
100
128
 
101
129
  &:before {
102
- background-color: var(--gutter-handler-active-bg-color);
130
+ background-color: var(--new-gutter-active-before-bg-color);
103
131
  }
104
132
  }
105
133
 
@@ -112,8 +140,9 @@ const props = defineProps<{
112
140
  transition-duration: 0.25s;
113
141
  width: 24px;
114
142
  height: 2px;
115
- left: calc(50% - 12px);
116
- top: calc(50% - 1px);
143
+ left: 50%;
144
+ top: 50%;
145
+ transform: translate(-50%, -50%);
117
146
  border-radius: 4px;
118
147
  }
119
148
  }
@@ -122,6 +151,11 @@ const props = defineProps<{
122
151
  overflow: hidden;
123
152
  flex: 1;
124
153
  box-shadow: var(--second-panel-box-shadow);
154
+
155
+ &.hidden {
156
+ display: none;
157
+ height: 0;
158
+ }
125
159
  //z-index: calc(var(--z-default) + 1);
126
160
  }
127
161
  }
@@ -3,13 +3,22 @@
3
3
  :id="props.elementId"
4
4
  :class="['fill-parent vertical', { dragging: props.isDrag }]"
5
5
  >
6
- <div :style="props.topPanelStyle" class="vui-horizontal-panel firstPanel">
6
+ <div
7
+ :style="props.topPanelStyle"
8
+ :class="[
9
+ 'vui-horizontal-panel firstPanel',
10
+ {
11
+ 'hidden-second': !props.bottomPermission,
12
+ },
13
+ ]"
14
+ >
7
15
  <div class="vui-horizontal-panel sec-nav-container">
8
16
  <slot name="firstPanel" />
9
17
  </div>
10
18
  </div>
11
19
 
12
20
  <div
21
+ v-if="props.bottomPermission"
13
22
  :id="`gutter-${props.elementId}`"
14
23
  class="gutter gutter-vertical"
15
24
  tabindex="0"
@@ -20,7 +29,16 @@
20
29
  <div class="gutter-vertical-handler"></div>
21
30
  </div>
22
31
 
23
- <div :style="props.bottomPanelStyle" class="secondPanel bottom">
32
+ <div
33
+ v-if="props.bottomPermission"
34
+ :style="props.bottomPanelStyle"
35
+ :class="[
36
+ 'secondPanel bottom',
37
+ {
38
+ hidden: !props.bottomPermission,
39
+ },
40
+ ]"
41
+ >
24
42
  <slot name="secondPanel" />
25
43
  </div>
26
44
  </div>
@@ -37,6 +55,7 @@ const props = defineProps<{
37
55
  isDrag: boolean
38
56
  topPanelStyle: UI_I_SplitVerticalStyle
39
57
  bottomPanelStyle: UI_I_SplitVerticalStyle
58
+ bottomPermission: boolean
40
59
  }>()
41
60
  </script>
42
61
 
@@ -52,6 +71,11 @@ const props = defineProps<{
52
71
  max-height: calc(100% - 36px);
53
72
  height: calc(100vh - 36px);
54
73
 
74
+ &.hidden-second {
75
+ max-height: 100%;
76
+ height: 100% !important;
77
+ }
78
+
55
79
  .sec-nav-container {
56
80
  width: 100%;
57
81
  height: 100%;
@@ -109,6 +133,11 @@ const props = defineProps<{
109
133
  height: auto;
110
134
  overflow: hidden;
111
135
  flex: 1;
136
+
137
+ &.hidden {
138
+ display: none;
139
+ height: 0;
140
+ }
112
141
  }
113
142
  }
114
143
  </style>
@@ -7,6 +7,7 @@
7
7
  :is-drag="isDrag"
8
8
  :top-panel-style="topPanelStyle"
9
9
  :bottom-panel-style="bottomPanelStyle"
10
+ :bottom-permission="props.bottomPermission"
10
11
  >
11
12
  <template #firstPanel>
12
13
  <slot name="firstPanel" />
@@ -25,6 +26,7 @@
25
26
  :is-drag="isDrag"
26
27
  :top-panel-style="topPanelStyle"
27
28
  :bottom-panel-style="bottomPanelStyle"
29
+ :bottom-permission="props.bottomPermission"
28
30
  >
29
31
  <template #firstPanel>
30
32
  <slot name="firstPanel" />
@@ -46,12 +48,14 @@ const props = withDefaults(
46
48
  topPanelH?: number
47
49
  topPanelMinHeight?: number
48
50
  bottomPanelMinHeight?: number
51
+ bottomPermission?: boolean
49
52
  }>(),
50
53
  {
51
54
  topPanelMinHeight: 200, // 200px
52
55
  bottomPanelMinHeight: 200, // 200px
53
56
  topPanelHForce: '',
54
57
  topPanelH: undefined,
58
+ bottomPermission: true,
55
59
  }
56
60
  )
57
61
  const emits = defineEmits<{
@@ -55,13 +55,13 @@
55
55
  <div ref="subTitleBlockName">
56
56
  <div class="subtitle-block">
57
57
  <div
58
- id="name-alert-wrapper"
59
- :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
58
+ id="name-alert-wrapper"
59
+ :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
60
60
  ></div>
61
61
  <ui-wizard-subtitle
62
- :sub-title="
63
- localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
64
- "
62
+ :sub-title="
63
+ localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
64
+ "
65
65
  />
66
66
  </div>
67
67
  </div>
@@ -153,7 +153,8 @@
153
153
  :datastore="props.datastore"
154
154
  :is-datastore-loading="props.isDatastoreLoading"
155
155
  :get-datastore-table-func="props.getDatastoreTableFunc"
156
- :storage="props.vmtSettings?.storage"
156
+ :storage="storageLocal"
157
+ @change-storage="setSelectedStorageIdLocal"
157
158
  @submit="emits('change-storage', $event)"
158
159
  @has-errors="isStorageAlertWrapperEmpty = $event"
159
160
  />
@@ -593,6 +594,20 @@ const isNameAlertWrapperEmpty = ref<boolean>(false)
593
594
  // const isComputeResourceAlertWrapperEmpty = ref<boolean>(false)
594
595
  const isStorageAlertWrapperEmpty = ref<boolean>(false)
595
596
  const isCompatibilityAlertWrapperEmpty = ref<boolean>(false)
597
+
598
+ const storageLocal = computed<UI_I_DatastoreTableItem | undefined>(() => {
599
+ return selectedStorageLocal.value ?? props.vmtSettings?.storage
600
+ })
601
+
602
+ /* TODO: В дальнейшем необходимо вынести все данные наружу и передавать его через v-model */
603
+ // рефакторинг. При возврате на шаг выбора хранилища ранее выбранное хранилище не отображается как выбранное.
604
+ // Для хранилища в v-model необходимо сохранять ID хранилища, а не ключ индекса.
605
+ const selectedStorageLocal = ref<UI_I_DatastoreTableItem | null>(null)
606
+ const setSelectedStorageIdLocal = (datastore: UI_I_DatastoreTableItem) => {
607
+ selectedStorageLocal.value = {
608
+ id: datastore.id,
609
+ } as UI_I_DatastoreTableItem
610
+ }
596
611
  </script>
597
612
 
598
613
  <style>