bfg-common 1.6.81 → 1.6.82

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 (175) hide show
  1. package/assets/localization/local_be.json +18 -280
  2. package/assets/localization/local_en.json +36 -299
  3. package/assets/localization/local_hy.json +20 -282
  4. package/assets/localization/local_kk.json +18 -280
  5. package/assets/localization/local_ru.json +32 -294
  6. package/assets/localization/local_zh.json +19 -281
  7. package/assets/scss/common/global.scss +0 -11
  8. package/assets/scss/common/normalize.scss +0 -3
  9. package/assets/scss/common/theme.scss +2 -2
  10. package/components/atoms/stack/StackBlock.vue +1 -1
  11. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +2 -2
  12. package/components/atoms/tooltip/TooltipError.vue +0 -3
  13. package/components/common/adapterManager/AdapterManagerNew.vue +0 -87
  14. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +1 -1
  15. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +1 -0
  16. package/components/common/adapterManager/ui/actions/bar/Bar.vue +0 -2
  17. package/components/common/adapterManager/ui/actions/bar/BarNew.vue +2 -3
  18. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +0 -1
  19. package/components/common/configure/physicalAdapters/PhysicalAdapters.vue +0 -6
  20. package/components/common/configure/physicalAdapters/PhysicalAdaptersNew.vue +192 -219
  21. package/components/common/configure/physicalAdapters/PhysicalAdaptersOld.vue +4 -6
  22. package/components/common/configure/physicalAdapters/buttons/Buttons.vue +0 -1
  23. package/components/common/configure/physicalAdapters/modals/edit/Edit.vue +1 -26
  24. package/components/common/configure/physicalAdapters/modals/edit/EditNew.vue +1 -30
  25. package/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces.ts +0 -5
  26. package/components/common/configure/physicalAdapters/tableView/TableViewNew.vue +1 -12
  27. package/components/common/configure/physicalAdapters/tableView/lib/config/physicalAdaptersTableConfigNew.ts +21 -21
  28. package/components/common/configure/physicalAdapters/tableView/lib/config/settings.ts +32 -39
  29. package/components/common/configure/physicalAdapters/tableView/lib/models/interfaces.ts +1 -4
  30. package/components/common/diagramMain/Diagram.vue +85 -169
  31. package/components/common/diagramMain/DiagramMain.vue +10 -40
  32. package/components/common/diagramMain/{header/HeaderOld.vue → Header.vue} +67 -78
  33. package/components/common/diagramMain/modals/{managePhysicalAdapters/ManagePhysicalAdaptersOld.vue → ManagePhysicalAdaptersModal.vue} +119 -33
  34. package/components/common/diagramMain/modals/Modals.vue +5 -5
  35. package/components/common/diagramMain/modals/editSettings/{confirmTeamingSettingsModal/ConfirmTeamingSettingsModalOld.vue → ConfirmTeamingSettingsModal.vue} +5 -2
  36. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +102 -104
  37. package/components/common/diagramMain/modals/editSettings/{modal/EditSettingsModalOld.vue → EditSettingsModal.vue} +51 -12
  38. package/components/common/diagramMain/modals/editSettings/lib/models/interfaces.ts +0 -6
  39. package/components/common/diagramMain/modals/editSettings/tabs/{networkProperties/NetworkPropertiesOld.vue → NetworkProperties.vue} +113 -12
  40. package/components/common/diagramMain/modals/editSettings/tabs/{security/SecurityOld.vue → Security.vue} +48 -25
  41. package/components/common/diagramMain/modals/editSettings/tabs/{switchProperties/SwitchPropertiesOld.vue → SwitchProperties.vue} +89 -12
  42. package/components/common/diagramMain/modals/editSettings/tabs/{teamingFailover/TeamingFailoverOld.vue → TeamingFailover.vue} +48 -11
  43. package/components/common/diagramMain/modals/editSettings/tabs/{trafficShaping/TrafficShapingOld.vue → TrafficShaping.vue} +134 -12
  44. package/components/common/diagramMain/modals/editSettings/tabs/port/{ipvFourSettings/IpvFourSettingsOld.vue → IpvFourSettings.vue} +152 -11
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/{portProperties/PortPropertiesOld.vue → PortProperties.vue} +103 -12
  46. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +9 -9
  47. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +2 -43
  48. package/components/common/diagramMain/modals/lib/config/index.ts +1 -2
  49. package/components/common/diagramMain/modals/lib/config/networkModal.ts +15 -15
  50. package/components/common/diagramMain/modals/lib/config/portModal.ts +12 -12
  51. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +2 -2
  52. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +1 -1
  53. package/components/common/diagramMain/modals/lib/utils/index.ts +4 -34
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +2 -2
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +1 -1
  56. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +16 -67
  57. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +0 -8
  58. package/components/common/layout/theHeader/ThemeSwitch.vue +1 -1
  59. package/components/common/layout/theHeader/modals/reconnect/New.vue +30 -38
  60. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +9 -8
  61. package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +0 -4
  62. package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +2 -9
  63. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +7 -11
  64. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +1 -7
  65. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/lib/config/consoleOptions.ts +5 -8
  66. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +5 -9
  67. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/lib/config/formatOptions.ts +1 -1
  68. package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +9 -5
  69. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +6 -9
  70. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +1 -3
  71. package/components/common/modals/Rename.vue +1 -3
  72. package/components/common/noDataProvided/NoDataProvidedNew.vue +1 -1
  73. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +4 -4
  74. package/components/common/pages/backups/modals/createBackup/datastores/tableView/old/lib/config/table.ts +4 -4
  75. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +253 -184
  76. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/ActionsNew.vue +1 -1
  77. package/components/common/pages/scheduledTasks/table/lib/models/enums.ts +0 -9
  78. package/components/common/pages/scheduledTasks/table/new/New.vue +10 -12
  79. package/components/common/pages/tasks/Tasks.vue +1 -4
  80. package/components/common/pages/tasks/table/Table.vue +23 -25
  81. package/components/common/readyToComplete/New.vue +0 -1
  82. package/components/common/split/horizontal/New.vue +1 -1
  83. package/components/common/split/horizontal/Old.vue +1 -1
  84. package/components/common/split/vertical/New.vue +8 -42
  85. package/components/common/split/vertical/Old.vue +2 -31
  86. package/components/common/split/vertical/Vertical.vue +0 -4
  87. package/components/common/tools/Actions.vue +3 -7
  88. package/components/common/tools/lib/models/interfaces.ts +0 -1
  89. package/components/common/vm/actions/add/New.vue +6 -21
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +1 -14
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/New.vue +0 -5
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Old.vue +0 -1
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/New.vue +0 -1
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/New.vue +0 -2
  95. package/components/common/vm/actions/common/select/options/New.vue +12 -14
  96. package/components/common/vm/actions/common/select/options/Old.vue +15 -16
  97. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +15 -13
  98. package/components/common/vm/actions/confirm/Confirm.vue +0 -3
  99. package/components/common/vm/actions/rename/Old.vue +0 -1
  100. package/components/common/vm/snapshots/DetailView.vue +6 -6
  101. package/components/common/wizards/datastore/add/New.vue +0 -6
  102. package/components/common/wizards/datastore/add/lib/config/steps.ts +1 -1
  103. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
  104. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +1 -1
  105. package/components/common/wizards/network/add/Add.vue +2 -13
  106. package/components/common/wizards/network/add/AddNew.vue +26 -22
  107. package/components/common/wizards/network/add/lib/config/initialData.ts +4 -6
  108. package/components/common/wizards/network/add/lib/config/steps.ts +1 -1
  109. package/components/common/wizards/network/add/lib/models/interfaces.ts +0 -1
  110. package/components/common/wizards/network/add/lib/utils/utils.ts +1 -1
  111. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettingsOld.vue +1 -5
  112. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +8 -2
  113. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsOld.vue +0 -3
  114. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +8 -2
  115. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesOld.vue +2 -6
  116. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +3 -10
  117. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceOld.vue +0 -4
  118. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +1 -5
  119. package/components/common/wizards/network/add/validations/common.ts +1 -1
  120. package/components/common/wizards/vm/migrate/New.vue +3 -13
  121. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +0 -5
  122. package/components/common/wizards/vm/migrate/lib/config/steps.ts +2 -3
  123. package/components/common/wizards/vm/migrate/steps/computeResource/New.vue +1 -2
  124. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/New.vue +21 -40
  125. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/hostTable.ts +14 -44
  126. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/models/enums.ts +0 -4
  127. package/components/common/wizards/vm/migrate/steps/priority/New.vue +2 -7
  128. package/components/common/wizards/vm/migrate/steps/selectStorage/New.vue +7 -22
  129. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/New.vue +0 -6
  130. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/New.vue +1 -4
  131. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/lib/config/datastoreTable.ts +16 -12
  132. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/New.vue +5 -10
  133. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +11 -16
  134. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +1 -7
  135. package/components/common/wizards/vm/migrate/steps/selectStorage/selectedPerDisk/New.vue +10 -17
  136. package/components/common/wizards/vm/migrate/steps/type/TypeNew.vue +0 -1
  137. package/components/common/wizards/vm/migrate/vmOrigin/New.vue +15 -35
  138. package/lib/models/store/tasks/enums.ts +0 -3
  139. package/lib/models/store/tasks/types.ts +6 -7
  140. package/package.json +1 -1
  141. package/plugins/directives.ts +5 -3
  142. package/public/spice-console/application/agent.js +17 -18
  143. package/store/tasks/actions.ts +8 -26
  144. package/store/tasks/mappers/recentTasks.ts +0 -1
  145. package/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations.ts +0 -19
  146. package/components/common/diagramMain/header/Header.vue +0 -49
  147. package/components/common/diagramMain/header/HeaderNew.vue +0 -155
  148. package/components/common/diagramMain/modals/UnsavedChangesModal.vue +0 -32
  149. package/components/common/diagramMain/modals/editSettings/EditSettingsNew.vue +0 -285
  150. package/components/common/diagramMain/modals/editSettings/EditSettingsOld.vue +0 -254
  151. package/components/common/diagramMain/modals/editSettings/confirmTeamingSettingsModal/ConfirmTeamingSettingsModal.vue +0 -31
  152. package/components/common/diagramMain/modals/editSettings/confirmTeamingSettingsModal/ConfirmTeamingSettingsModalNew.vue +0 -82
  153. package/components/common/diagramMain/modals/editSettings/lib/config/config.ts +0 -15
  154. package/components/common/diagramMain/modals/editSettings/lib/utils/utils.ts +0 -177
  155. package/components/common/diagramMain/modals/editSettings/modal/EditSettingsModal.vue +0 -137
  156. package/components/common/diagramMain/modals/editSettings/modal/EditSettingsModalNew.vue +0 -91
  157. package/components/common/diagramMain/modals/editSettings/tabs/networkProperties/NetworkProperties.vue +0 -158
  158. package/components/common/diagramMain/modals/editSettings/tabs/networkProperties/NetworkPropertiesNew.vue +0 -262
  159. package/components/common/diagramMain/modals/editSettings/tabs/port/ipvFourSettings/IpvFourSettings.vue +0 -192
  160. package/components/common/diagramMain/modals/editSettings/tabs/port/ipvFourSettings/IpvFourSettingsNew.vue +0 -388
  161. package/components/common/diagramMain/modals/editSettings/tabs/port/portProperties/PortProperties.vue +0 -139
  162. package/components/common/diagramMain/modals/editSettings/tabs/port/portProperties/PortPropertiesNew.vue +0 -286
  163. package/components/common/diagramMain/modals/editSettings/tabs/security/Security.vue +0 -209
  164. package/components/common/diagramMain/modals/editSettings/tabs/security/SecurityNew.vue +0 -233
  165. package/components/common/diagramMain/modals/editSettings/tabs/switchProperties/SwitchProperties.vue +0 -128
  166. package/components/common/diagramMain/modals/editSettings/tabs/switchProperties/SwitchPropertiesNew.vue +0 -235
  167. package/components/common/diagramMain/modals/editSettings/tabs/teamingFailover/TeamingFailover.vue +0 -99
  168. package/components/common/diagramMain/modals/editSettings/tabs/teamingFailover/TeamingFailoverNew.vue +0 -319
  169. package/components/common/diagramMain/modals/editSettings/tabs/trafficShaping/TrafficShaping.vue +0 -173
  170. package/components/common/diagramMain/modals/editSettings/tabs/trafficShaping/TrafficShapingNew.vue +0 -348
  171. package/components/common/diagramMain/modals/managePhysicalAdapters/ManagePhysicalAdapters.vue +0 -164
  172. package/components/common/diagramMain/modals/managePhysicalAdapters/ManagePhysicalAdaptersNew.vue +0 -306
  173. package/components/common/diagramMain/skeleton/Header.vue +0 -31
  174. package/components/common/diagramMain/skeleton/Switch.vue +0 -75
  175. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/clusterTable.ts +0 -340
@@ -2,11 +2,11 @@
2
2
  <div class="wizard-content__container">
3
3
  <div class="wizard-content">
4
4
  <atoms-alert
5
- v-if="props.isShowErrorMessage"
5
+ v-if="isShowErrorMessage"
6
6
  :items="validationMessagesArray"
7
7
  status="alert-danger"
8
8
  test-id="network-properties-alert"
9
- @remove="emits('hide-error-message-alert')"
9
+ @remove="onHideErrorMessageAlert"
10
10
  />
11
11
  <form id="network-properties-form">
12
12
  <div class="horizontal-flex-container">
@@ -53,7 +53,7 @@
53
53
  <div class="flex-align-center">
54
54
  <atoms-combobox
55
55
  v-model="fieldsValues.vlanId"
56
- :items="props.vlanIdSelectData"
56
+ :items="vlanIdSelectDataLocal"
57
57
  test-id="vlan-id-select-combobox"
58
58
  @click.stop
59
59
  @select="selectVlanId"
@@ -87,31 +87,132 @@
87
87
  <script setup lang="ts">
88
88
  import type { UI_I_Localization } from '~/lib/models/interfaces'
89
89
  import type {
90
+ UI_I_ModalsInitialData,
90
91
  UI_I_EditSettingsErrorMessage,
91
92
  UI_I_PropertiesFields,
92
93
  } from '~/components/common/diagramMain/lib/models/interfaces'
93
- import type { UI_I_VlanIdData } from '~/components/common/wizards/network/add/lib/models/interfaces'
94
+ import type { UI_T_PropertiesFieldName } from '~/components/common/diagramMain/lib/models/types'
94
95
  import { validationMessagesArrayFunc } from '~/components/common/diagramMain/modals/lib/utils'
96
+ import { vlanIdSelectDataFunc } from '~/components/common/wizards/network/add/lib/config/config'
95
97
 
96
- const props = defineProps<{
97
- isShowErrorMessage: boolean
98
- errorMessages: UI_I_EditSettingsErrorMessage
99
- vlanIdSelectData: UI_I_VlanIdData[]
100
- }>()
98
+ // Props from up
99
+ const props = withDefaults(
100
+ defineProps<{
101
+ isShowErrorMessageAlert: boolean
102
+ errorMessages: UI_I_EditSettingsErrorMessage
103
+ networkAlreadyExists: boolean
104
+ initialData?: UI_I_ModalsInitialData
105
+ hasErrorMessages?: boolean
106
+ }>(),
107
+ {
108
+ initialData: () => ({}),
109
+ hasErrorMessages: undefined,
110
+ }
111
+ )
101
112
 
113
+ // Validation
102
114
  const emits = defineEmits<{
115
+ (
116
+ event: 'change-error-messages',
117
+ errorMessage: string,
118
+ fieldName: keyof UI_I_EditSettingsErrorMessage
119
+ ): void
103
120
  (event: 'hide-error-message-alert'): void
121
+ (
122
+ event: 'change-edit-properties-data',
123
+ propertiesData: UI_I_PropertiesFields
124
+ ): void
104
125
  }>()
105
126
 
127
+ const validationMessagesArray = computed(() =>
128
+ validationMessagesArrayFunc(['networkLabel', 'vlanId'], props.errorMessages)
129
+ )
130
+
131
+ // UI_I_Localization
106
132
  const localization = computed<UI_I_Localization>(() => useLocal())
133
+ const vlanIdSelectDataLocal = computed<UI_I_Localization>(() =>
134
+ vlanIdSelectDataFunc(localization.value)
135
+ )
107
136
 
108
- const fieldsValues = defineModel<UI_I_PropertiesFields>()
137
+ // For showing component validation errors on the top of modal
138
+ const isShowErrorMessage = computed<boolean>(
139
+ () => props.isShowErrorMessageAlert && props.hasErrorMessages
140
+ )
141
+
142
+ const fieldsValues = ref<UI_I_PropertiesFields>(
143
+ useDeepCopy({
144
+ vlanId: props.initialData.vlanId || `${localization.value.common.none} (0)`,
145
+ networkLabel: props.initialData.networkLabel || 'Network',
146
+ })
147
+ )
109
148
 
110
149
  const selectVlanId = (id: string): void => {
111
150
  fieldsValues.value.vlanId = id
112
151
  }
113
152
 
114
- const validationMessagesArray = computed(() =>
115
- validationMessagesArrayFunc(['networkLabel', 'vlanId'], props.errorMessages)
153
+ const onHideErrorMessageAlert = () => emits('hide-error-message-alert')
154
+
155
+ const onChangeData = (data: UI_I_PropertiesFields) =>
156
+ emits('change-edit-properties-data', data)
157
+
158
+ const changeErrorMessage = (
159
+ errorMessage: string,
160
+ fieldName: keyof UI_I_EditSettingsErrorMessage
161
+ ) => emits('change-error-messages', errorMessage, fieldName)
162
+
163
+ const messageTexts = (local: UI_I_Localization) => ({
164
+ vlanId: local.common.vlanIdInvalidMessage,
165
+ networkLabel: local.common.networkLabelInvalidMessage,
166
+ })
167
+
168
+ const isNumberInRange = (value: number | string, down: number, up: number) =>
169
+ isNaN(Number(value)) || Number(value) < down || Number(value) > up
170
+
171
+ const setMessageOnChangedField = (
172
+ values: string | number,
173
+ name: UI_T_PropertiesFieldName,
174
+ text: string
175
+ ) => {
176
+ if (name === 'networkLabel' && !values) {
177
+ changeErrorMessage(text, name)
178
+ return
179
+ } else if (name === 'networkLabel' && props.networkAlreadyExists) return
180
+
181
+ if (
182
+ name === 'vlanId' &&
183
+ values !== `${localization.value.common.none} (0)` &&
184
+ values !== `${localization.value.common.all} (4095)` &&
185
+ (isNumberInRange(values, 0, 4095) || values === '')
186
+ ) {
187
+ changeErrorMessage(text, name)
188
+ return
189
+ }
190
+ changeErrorMessage('', name)
191
+ }
192
+
193
+ watch(
194
+ fieldsValues,
195
+ (newValues: UI_I_PropertiesFields) => {
196
+ setMessageOnChangedField(
197
+ newValues.vlanId,
198
+ 'vlanId',
199
+ messageTexts(localization.value).vlanId
200
+ )
201
+ setMessageOnChangedField(
202
+ newValues.networkLabel,
203
+ 'networkLabel',
204
+ messageTexts(localization.value).networkLabel
205
+ )
206
+ onChangeData(newValues)
207
+ !props.hasErrorMessages && onHideErrorMessageAlert()
208
+ },
209
+ { deep: true }
116
210
  )
211
+
212
+ onMounted(() => {
213
+ onChangeData(fieldsValues.value)
214
+ })
215
+ onUnmounted(() => {
216
+ onHideErrorMessageAlert()
217
+ })
117
218
  </script>
@@ -34,12 +34,11 @@
34
34
  data-id="promiscuous-mode-select"
35
35
  name="selectName"
36
36
  >
37
- <option
38
- v-for="item in selectItems"
39
- :value="item.value"
40
- :label="item.text"
41
- >
42
- {{ item.text }}
37
+ <option :value="2" :label="localization.common.reject">
38
+ {{ localization.common.reject }}
39
+ </option>
40
+ <option :value="1" :label="localization.common.accept">
41
+ {{ localization.common.accept }}
43
42
  </option>
44
43
  </select>
45
44
  </div>
@@ -81,12 +80,11 @@
81
80
  data-id="mac-address-select"
82
81
  name="selectName"
83
82
  >
84
- <option
85
- v-for="item in selectItems"
86
- :value="item.value"
87
- :label="item.text"
88
- >
89
- {{ item.text }}
83
+ <option :value="2" :label="localization.common.reject">
84
+ {{ localization.common.reject }}
85
+ </option>
86
+ <option :value="1" :label="localization.common.accept">
87
+ {{ localization.common.accept }}
90
88
  </option>
91
89
  </select>
92
90
  </div>
@@ -128,12 +126,11 @@
128
126
  data-id="forged-transmits-select"
129
127
  name="selectName"
130
128
  >
131
- <option
132
- v-for="item in selectItems"
133
- :value="item.value"
134
- :label="item.text"
135
- >
136
- {{ item.text }}
129
+ <option :value="2" :label="localization.common.reject">
130
+ {{ localization.common.reject }}
131
+ </option>
132
+ <option :value="1" :label="localization.common.accept">
133
+ {{ localization.common.accept }}
137
134
  </option>
138
135
  </select>
139
136
  </div>
@@ -150,18 +147,44 @@
150
147
 
151
148
  <script setup lang="ts">
152
149
  import type { UI_I_Localization } from '~/lib/models/interfaces'
153
- import type { UI_I_SecurityFields } from '~/components/common/diagramMain/lib/models/interfaces'
154
- import { selectItemFunc } from '~/components/common/diagramMain/modals/editSettings/lib/config/config'
150
+ import type {
151
+ UI_I_ModalsInitialData,
152
+ UI_I_SecurityFields,
153
+ } from '~/components/common/diagramMain/lib/models/interfaces'
154
+ import { securityFieldsInitialFunc } from '~/components/common/diagramMain/modals/lib/config'
155
155
 
156
- const props = defineProps<{
157
- isSwitch: boolean
156
+ // Props from up
157
+ const props = withDefaults(
158
+ defineProps<{
159
+ isSwitch: boolean
160
+ initialData?: UI_I_ModalsInitialData
161
+ }>(),
162
+ {
163
+ isSwitch: false,
164
+ initialData: undefined,
165
+ }
166
+ )
167
+
168
+ const emits = defineEmits<{
169
+ (event: 'change-edit-security-data', securityData: UI_I_SecurityFields): void
158
170
  }>()
159
171
 
172
+ // UI_I_Localization
160
173
  const localization = computed<UI_I_Localization>(() => useLocal())
161
174
 
162
- const fieldsValues = defineModel<UI_I_SecurityFields>()
175
+ const fieldsValues = ref<UI_I_SecurityFields>(
176
+ securityFieldsInitialFunc(props.isSwitch, props.initialData)
177
+ )
178
+
179
+ onMounted(() => {
180
+ emits('change-edit-security-data', fieldsValues.value)
181
+ })
163
182
 
164
- const selectItems = computed<{ text: string; value: number }[]>(() =>
165
- selectItemFunc(localization.value)
183
+ watch(
184
+ fieldsValues,
185
+ (newFieldsValues: UI_I_SecurityFields) => {
186
+ emits('change-edit-security-data', newFieldsValues)
187
+ },
188
+ { deep: true }
166
189
  )
167
190
  </script>
@@ -2,11 +2,11 @@
2
2
  <div class="wizard-content__container">
3
3
  <div class="wizard-content">
4
4
  <atoms-alert
5
- v-if="props.isShowErrorMessage"
5
+ v-if="isShowErrorMessage"
6
6
  :items="validationMessagesArray"
7
7
  status="alert-danger"
8
8
  test-id="switch-properties-alert"
9
- @remove="emits('hide-error-message-alert')"
9
+ @remove="onHideErrorMessageAlert"
10
10
  />
11
11
  <form id="switch-properties-form">
12
12
  <div class="horizontal-flex-container">
@@ -16,7 +16,7 @@
16
16
  <div class="margin-left-property-value-group">
17
17
  <div class="property-value-group">
18
18
  <fieldset>
19
- {{ props.portsNumber }}
19
+ {{ props.initialData.num_ports }}
20
20
  </fieldset>
21
21
  </div>
22
22
  </div>
@@ -63,25 +63,102 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
63
63
  import type {
64
64
  UI_I_SwitchPropertiesFields,
65
65
  UI_I_EditSettingsErrorMessage,
66
+ UI_I_ModalsInitialData,
66
67
  } from '~/components/common/diagramMain/lib/models/interfaces'
68
+ import type { UI_T_PortPropertiesFieldName } from '~/components/common/diagramMain/lib/models/types'
67
69
  import { validationMessagesArrayFunc } from '~/components/common/diagramMain/modals/lib/utils'
68
70
 
69
- const props = defineProps<{
70
- isShowErrorMessage: boolean
71
- validationMessagesArray: string[]
72
- errorMessages: UI_I_EditSettingsErrorMessage
73
- portsNumber: string
74
- }>()
71
+ // Props from up
72
+ const props = withDefaults(
73
+ defineProps<{
74
+ isShowErrorMessageAlert: boolean
75
+ errorMessages: UI_I_EditSettingsErrorMessage
76
+ initialData?: UI_I_ModalsInitialData
77
+ hasErrorMessages?: boolean
78
+ }>(),
79
+ {
80
+ initialData: () => ({}),
81
+ hasErrorMessages: undefined,
82
+ }
83
+ )
75
84
 
85
+ // Validation
76
86
  const emits = defineEmits<{
87
+ (
88
+ event: 'change-error-messages',
89
+ errorMessage: string,
90
+ fieldName: keyof UI_I_EditSettingsErrorMessage
91
+ ): void
77
92
  (event: 'hide-error-message-alert'): void
93
+ (
94
+ event: 'change-edit-properties-data',
95
+ switchPropertiesData: UI_I_SwitchPropertiesFields
96
+ ): void
78
97
  }>()
79
98
 
99
+ const validationMessagesArray = computed(() =>
100
+ validationMessagesArrayFunc(['mtu'], props.errorMessages)
101
+ )
102
+
103
+ // UI_I_Localization
80
104
  const localization = computed<UI_I_Localization>(() => useLocal())
81
105
 
82
- const fieldsValues = defineModel<UI_I_SwitchPropertiesFields>()
106
+ // For showing component validation errors on the top of modal
107
+ const isShowErrorMessage = computed<boolean>(
108
+ () => props.isShowErrorMessageAlert && props.hasErrorMessages
109
+ )
83
110
 
84
- const validationMessagesArray = computed(() =>
85
- validationMessagesArrayFunc(['mtu'], props.errorMessages)
111
+ const fieldsValues = ref<UI_I_SwitchPropertiesFields>({
112
+ mtu: props.initialData.mtu || 0,
113
+ num_ports: props.initialData.num_ports || '',
114
+ })
115
+
116
+ const onHideErrorMessageAlert = () => emits('hide-error-message-alert')
117
+ const onChangeData = (data: UI_I_SwitchPropertiesFields) =>
118
+ emits('change-edit-properties-data', data)
119
+
120
+ const changeErrorMessage = (
121
+ errorMessage: string,
122
+ fieldName: keyof UI_I_EditSettingsErrorMessage
123
+ ) => emits('change-error-messages', errorMessage, fieldName)
124
+
125
+ const messageTexts = (local: UI_I_Localization) => ({
126
+ mtu: local.common.mtuInvalidMessage,
127
+ })
128
+
129
+ const setMessageOnChangedField = (
130
+ values: number,
131
+ name: UI_T_PortPropertiesFieldName,
132
+ text: string
133
+ ) => {
134
+ if (values < 1280 || values > 65535) {
135
+ changeErrorMessage(text, name)
136
+ return
137
+ }
138
+ changeErrorMessage('', name)
139
+ }
140
+
141
+ watch(
142
+ fieldsValues,
143
+ (newValues: UI_I_SwitchPropertiesFields) => {
144
+ setMessageOnChangedField(
145
+ newValues.mtu,
146
+ 'mtu',
147
+ messageTexts(localization.value).mtu
148
+ )
149
+ onChangeData(newValues)
150
+ !props.hasErrorMessages && onHideErrorMessageAlert()
151
+ },
152
+ {
153
+ deep: true,
154
+ }
86
155
  )
156
+
157
+ onMounted(() => {
158
+ onChangeData(fieldsValues.value)
159
+ })
160
+
161
+ onUnmounted(() => {
162
+ onHideErrorMessageAlert()
163
+ })
87
164
  </script>
@@ -4,7 +4,7 @@
4
4
  <form id="teaming-failover">
5
5
  <section class="form-block">
6
6
  <template
7
- v-for="(item, key) in props.teamingAndFailoverTemplate"
7
+ v-for="(item, key) in teamingAndFailoverTemplate"
8
8
  :key="item.key"
9
9
  >
10
10
  <div class="horizontal-flex-container">
@@ -107,28 +107,65 @@ import type {
107
107
  UI_I_TeamingAndFailoverTemplate,
108
108
  UI_I_AdapterStatus,
109
109
  } from '~/components/common/diagramMain/lib/models/interfaces'
110
+ import {
111
+ teamingFailoverFieldsInitialFunc,
112
+ teamingAndFailoverTemplateMakerFunc,
113
+ } from '~/components/common/diagramMain/modals/lib/config'
110
114
 
111
- const props = defineProps<{
112
- teamingAndFailoverTemplate: UI_I_TeamingAndFailoverTemplate[]
113
- isSwitch: boolean
114
- adapters: UI_I_ItemsWithTotalCounts<UI_I_SwitchAdapterItem>
115
- initialData: UI_I_ModalsInitialData
116
- adapterStatus: UI_I_AdapterStatus
117
- isDarkMode: boolean
118
- }>()
115
+ // Props from up
116
+ const props = withDefaults(
117
+ defineProps<{
118
+ adapters: UI_I_ItemsWithTotalCounts<UI_I_SwitchAdapterItem>
119
+ adapterStatus: UI_I_AdapterStatus
120
+ isSwitch: boolean
121
+ initialData?: UI_I_ModalsInitialData
122
+ isDarkMode?: boolean
123
+ }>(),
124
+ {
125
+ initialData: () => ({}),
126
+ isSwitch: false,
127
+ isDarkMode: false,
128
+ }
129
+ )
119
130
 
120
131
  const emits = defineEmits<{
132
+ (
133
+ event: 'change-edit-teaming-failover-data',
134
+ teamingFailoverData: UI_I_TeamingFailoverFields
135
+ ): void
121
136
  (event: 'change-adapter-status', adapterStatus: UI_I_AdapterStatus): void
122
137
  }>()
123
138
 
139
+ // UI_I_Localization
124
140
  const localization = computed<UI_I_Localization>(() => useLocal())
125
141
 
126
- const fieldsValues = defineModel<UI_I_TeamingFailoverFields>()
142
+ // Making fields template
143
+ const teamingAndFailoverTemplate = computed<UI_I_TeamingAndFailoverTemplate[]>(
144
+ () => teamingAndFailoverTemplateMakerFunc(localization.value)
145
+ )
146
+ // Temporary data for this component
147
+ const fieldsValues = ref<UI_I_TeamingFailoverFields>(
148
+ teamingFailoverFieldsInitialFunc(props.isSwitch, props.initialData)
149
+ )
150
+
151
+ const onChangeData = (data: UI_I_TeamingFailoverFields) =>
152
+ emits('change-edit-teaming-failover-data', data)
127
153
 
128
154
  const onChangeAdapterStatus = (adapterStatus: UI_I_AdapterStatus) =>
129
155
  emits('change-adapter-status', adapterStatus)
130
- </script>
131
156
 
157
+ watch(
158
+ fieldsValues,
159
+ (newFieldsValues: UI_I_TeamingFailoverFields) => {
160
+ onChangeData(newFieldsValues)
161
+ },
162
+ { deep: true, immediate: true }
163
+ )
164
+
165
+ onMounted(() => {
166
+ onChangeData(fieldsValues.value)
167
+ })
168
+ </script>
132
169
  <style lang="scss" scoped>
133
170
  :deep(.diagram-action__edit) {
134
171
  .table-fixed-height {
@@ -2,11 +2,11 @@
2
2
  <div class="wizard-content__container">
3
3
  <div class="wizard-content">
4
4
  <atoms-alert
5
- v-if="props.isShowErrorMessage"
5
+ v-if="isShowErrorMessage"
6
6
  :items="validationMessagesArray"
7
7
  status="alert-danger"
8
8
  test-id="traffic-shaping-alert"
9
- @remove="emits('hide-error-message-alert')"
9
+ @remove="onHideErrorMessageAlert"
10
10
  />
11
11
  <form id="traffic-shaping-form" action="">
12
12
  <div class="horizontal-flex-container">
@@ -249,29 +249,151 @@
249
249
  <script setup lang="ts">
250
250
  import type { UI_I_Localization } from '~/lib/models/interfaces'
251
251
  import type {
252
+ UI_I_ModalsInitialData,
252
253
  UI_I_TrafficShapingFields,
253
254
  UI_I_EditSettingsErrorMessage,
254
255
  } from '~/components/common/diagramMain/lib/models/interfaces'
256
+ import type { UI_T_TrafficShapingFieldName } from '~/components/common/diagramMain/lib/models/types'
255
257
  import { validationMessagesArrayFunc } from '~/components/common/diagramMain/modals/lib/utils'
258
+ import { trafficShapingFieldsInitialFunc } from '~/components/common/diagramMain/modals/lib/config'
256
259
 
257
- const props = defineProps<{
258
- isShowErrorMessage: boolean
259
- errorMessages: UI_I_EditSettingsErrorMessage
260
- isSwitch: boolean
261
- }>()
260
+ // Props from up
261
+ const props = withDefaults(
262
+ defineProps<{
263
+ isShowErrorMessageAlert: boolean
264
+ errorMessages: UI_I_EditSettingsErrorMessage
265
+ isSwitch: boolean
266
+ initialData?: UI_I_ModalsInitialData
267
+ hasErrorMessages?: boolean
268
+ }>(),
269
+ {
270
+ initialData: () => ({}),
271
+ isSwitch: false,
272
+ hasErrorMessages: undefined,
273
+ }
274
+ )
262
275
 
276
+ // Validation
263
277
  const emits = defineEmits<{
278
+ (
279
+ event: 'change-error-messages',
280
+ errorMessage: string,
281
+ fieldName: keyof UI_I_EditSettingsErrorMessage
282
+ ): void
264
283
  (event: 'hide-error-message-alert'): void
284
+ (
285
+ event: 'change-edit-traffic-shaping-data',
286
+ trafficShapingData: UI_I_TrafficShapingFields
287
+ ): void
265
288
  }>()
266
289
 
267
- const localization = computed<UI_I_Localization>(() => useLocal())
268
-
269
- const fieldsValues = defineModel<UI_I_TrafficShapingFields>()
270
-
271
- const validationMessagesArray = computed<string[]>(() =>
290
+ const validationMessagesArray = computed(() =>
272
291
  validationMessagesArrayFunc(
273
292
  ['average', 'peak', 'burstSize'],
274
293
  props.errorMessages
275
294
  )
276
295
  )
296
+
297
+ // UI_I_Localization
298
+ const localization = computed<UI_I_Localization>(() => useLocal())
299
+
300
+ // For showing component validation errors on the top of modal
301
+ const isShowErrorMessage = computed<boolean>(
302
+ () => props.isShowErrorMessageAlert && props.hasErrorMessages
303
+ )
304
+
305
+ const fieldsValues = ref<UI_I_TrafficShapingFields>(
306
+ trafficShapingFieldsInitialFunc(props.isSwitch, props.initialData)
307
+ )
308
+
309
+ const onHideErrorMessageAlert = (): void => emits('hide-error-message-alert')
310
+
311
+ const onChangeData = (data: UI_I_TrafficShapingFields) =>
312
+ emits('change-edit-traffic-shaping-data', data)
313
+
314
+ const messageTexts = (local: UI_I_Localization) => ({
315
+ average: local.common.averageInvalidError,
316
+ peak: local.common.peakInvalidError,
317
+ burstSize: local.common.burstSizeInvalidError,
318
+ averageBig: local.common.averageBigInvalidError,
319
+ peakBig: local.common.peakBigInvalidError,
320
+ burstSizeBig: local.common.burstSizeBigInvalidError,
321
+ })
322
+
323
+ const changeErrorMessage = (
324
+ errorMessage: string,
325
+ fieldName: keyof UI_I_EditSettingsErrorMessage
326
+ ) => emits('change-error-messages', errorMessage, fieldName)
327
+
328
+ const MAX_BANDWIDTH = 9_007_199_254_740_991
329
+ const setMessageOnChangedField = (
330
+ values: number[],
331
+ index: number,
332
+ name: UI_T_TrafficShapingFieldName,
333
+ text1: string,
334
+ text2: string
335
+ ): void => {
336
+ if (
337
+ !fieldsValues.value.status.checked ||
338
+ fieldsValues.value.status.selected === 0
339
+ ) {
340
+ changeErrorMessage('', 'average')
341
+ changeErrorMessage('', 'peak')
342
+ changeErrorMessage('', 'burstSize')
343
+ return
344
+ }
345
+
346
+ if (values[index] >= 1 && values[index] <= MAX_BANDWIDTH) {
347
+ changeErrorMessage('', name)
348
+ } else if (values[index] < 1) {
349
+ changeErrorMessage(text1, name)
350
+ } else if (values[index] > MAX_BANDWIDTH) {
351
+ changeErrorMessage(text2, name)
352
+ }
353
+ }
354
+
355
+ watch(
356
+ fieldsValues,
357
+ (newFieldsValues: UI_I_TrafficShapingFields): void => {
358
+ const { average, peak, burstSize } = newFieldsValues
359
+ const arrayValues = [average, peak, burstSize]
360
+
361
+ setMessageOnChangedField(
362
+ arrayValues,
363
+ 0,
364
+ 'average',
365
+ messageTexts(localization.value).average,
366
+ messageTexts(localization.value).averageBig
367
+ )
368
+ setMessageOnChangedField(
369
+ arrayValues,
370
+ 1,
371
+ 'peak',
372
+ messageTexts(localization.value).peak,
373
+ messageTexts(localization.value).peakBig
374
+ )
375
+ setMessageOnChangedField(
376
+ arrayValues,
377
+ 2,
378
+ 'burstSize',
379
+ messageTexts(localization.value).burstSize,
380
+ messageTexts(localization.value).burstSizeBig
381
+ )
382
+
383
+ onChangeData(newFieldsValues)
384
+ !props.hasErrorMessages && onHideErrorMessageAlert()
385
+ },
386
+ {
387
+ deep: true,
388
+ }
389
+ )
390
+
391
+ onMounted(() => {
392
+ onChangeData(fieldsValues.value)
393
+ })
394
+ onUnmounted((): void => {
395
+ onHideErrorMessageAlert()
396
+ })
277
397
  </script>
398
+
399
+ <style scoped lang="scss"></style>