bfg-common 1.3.230 → 1.3.231

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 (57) hide show
  1. package/assets/localization/local_be.json +3 -1
  2. package/assets/localization/local_en.json +3 -1
  3. package/assets/localization/local_hy.json +3 -1
  4. package/assets/localization/local_kk.json +3 -1
  5. package/assets/localization/local_ru.json +3 -1
  6. package/assets/localization/local_zh.json +3 -1
  7. package/components/atoms/alert/Alert.vue +95 -95
  8. package/components/atoms/alert/Notification.vue +170 -170
  9. package/components/atoms/switch/Switch.vue +111 -111
  10. package/components/atoms/table/compact/Compact.vue +526 -526
  11. package/components/atoms/tooltip/Signpost.vue +225 -225
  12. package/components/common/diagramMain/lib/config/index.ts +24 -0
  13. package/components/common/diagramMain/lib/models/interfaces.ts +5 -5
  14. package/components/common/diagramMain/lib/models/types.ts +9 -1
  15. package/components/common/diagramMain/port/Port.vue +1 -1
  16. package/components/common/pages/Tasks.vue +120 -120
  17. package/components/common/recursionTree/RecursionTree.vue +203 -203
  18. package/components/common/vm/actions/add/Add.vue +575 -575
  19. package/components/common/vm/actions/clone/Clone.vue +518 -518
  20. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  23. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  24. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  25. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  26. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  27. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  28. package/components/common/weekSelect/WeekSelect.vue +112 -112
  29. package/components/common/weekSelect/lib/config/options.ts +10 -10
  30. package/components/common/wizards/vm/migrate/Migrate.vue +9 -1
  31. package/components/common/wizards/vm/migrate/lib/models/interfaces.ts +4 -0
  32. package/components/common/wizards/vm/migrate/select/network/Network.vue +79 -6
  33. package/components/common/wizards/vm/migrate/select/network/table/{disk/Disk.vue → network/Network.vue} +19 -12
  34. package/components/common/wizards/vm/migrate/select/network/table/{disk → network}/lib/config/advancedTable.ts +6 -3
  35. package/components/common/wizards/vm/migrate/select/network/table/{disk → network}/lib/config/basicTable.ts +10 -7
  36. package/components/common/wizards/vm/migrate/select/network/table/{disk → network}/lib/config/tableKeys.ts +1 -1
  37. package/components/common/wizards/vm/migrate/select/network/table/{disk → network}/lib/models/types.ts +1 -1
  38. package/components/common/wizards/vm/migrate/select/network/table/useAt/UseAt.vue +53 -0
  39. package/components/common/wizards/vm/migrate/select/network/table/useAt/lib/config/tableKeys.ts +7 -0
  40. package/components/common/wizards/vm/migrate/select/network/table/useAt/lib/config/useAtTable.ts +47 -0
  41. package/components/common/wizards/vm/migrate/select/network/table/useAt/lib/models/interfaces.ts +1 -0
  42. package/components/common/wizards/vm/migrate/select/network/table/useAt/lib/models/types.ts +5 -0
  43. package/composables/useAppVersion.ts +21 -21
  44. package/composables/useEnvLanguage.ts +20 -20
  45. package/lib/utils/sendTask.ts +72 -72
  46. package/minify.js +146 -146
  47. package/package.json +1 -1
  48. package/public/spice-console/application/codec.js +257 -257
  49. package/public/spice-console/lib/rasterEngine.js +907 -907
  50. package/public/spice-console/network/spicechannel.js +369 -369
  51. package/store/main/lib/interfaces.ts +9 -9
  52. package/store/tasks/actions.ts +133 -133
  53. package/store/tasks/getters.ts +25 -25
  54. package/store/tasks/lib/models/interfaces.ts +18 -18
  55. package/store/tasks/mutations.ts +58 -58
  56. package/store/tasks/state.ts +16 -16
  57. /package/components/common/wizards/vm/migrate/select/network/table/{disk → network}/lib/models/interfaces.ts +0 -0
@@ -1,225 +1,225 @@
1
- <template>
2
- <div
3
- id="signpost"
4
- :class="['signpost', signpostClass]"
5
- :style="signpostStyles"
6
- @click.stop
7
- @mouseenter="hovered = true"
8
- @mouseleave="hovered = false"
9
- >
10
- <div class="signpost-wrap">
11
- <div class="popover-pointer" />
12
- <div class="signpost-content-header">
13
- <button
14
- :id="`${props.testId}-close-icon`"
15
- class="signpost-action close"
16
- @click="hide"
17
- >
18
- <atoms-the-icon class="close-icon" name="close" />
19
- </button>
20
- </div>
21
- <div class="signpost-content-body">
22
- <slot />
23
- </div>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import { UI_I_ElPosition } from '~/components/atoms/tooltip/lib/models/interfaces'
30
- const props = withDefaults(
31
- defineProps<{
32
- elemId: string
33
- testId?: string
34
- }>(),
35
- { testId: 'ui-signpost' }
36
- )
37
- const emits = defineEmits<{
38
- (event: 'hide'): void
39
- }>()
40
- const hide = (): void => {
41
- emits('hide')
42
- }
43
-
44
- const signpostStyles = ref<UI_I_ElPosition | null>(null)
45
- watch(
46
- () => props.elemId,
47
- (newValue: string) => {
48
- const element =
49
- (document.getElementById(newValue) as HTMLDivElement) || null
50
- const { width, x, y } = element.getBoundingClientRect()
51
-
52
- signpostStyles.value = {
53
- top: `${y}px`,
54
- left: `${x + width / 2}px`,
55
- }
56
- setTimeout(() => {
57
- setSignpostPosition()
58
- }, 0)
59
- },
60
- { immediate: true }
61
- )
62
- const signpostClass = ref<string[]>([])
63
- const setSignpostPosition = (): void => {
64
- const signpost =
65
- (document.getElementById('signpost') as HTMLDivElement) || null
66
- const signpostRect = (signpost?.getBoundingClientRect() as DOMRect) || null
67
-
68
- type PositionX = 'right' | 'left'
69
- let positionX: PositionX = 'right'
70
-
71
- type PositionY = 'top' | 'middle'
72
- let positionY: PositionY = 'middle'
73
-
74
- const isOutRight = signpostRect.left + signpostRect.width > window.innerWidth
75
- const isOutTop = signpostRect.top < 0
76
-
77
- if (isOutTop) {
78
- positionY = 'top'
79
- }
80
- if (isOutRight) {
81
- positionX = 'left'
82
- }
83
-
84
- signpostClass.value.push(positionY)
85
- signpostClass.value.push(positionX)
86
- signpostClass.value.push('show')
87
- }
88
-
89
- const hovered = ref<boolean>(false)
90
- const windowClick = (): void => {
91
- hide()
92
- }
93
- const windowScroll = (): void => {
94
- if (hovered.value) {
95
- return
96
- }
97
- hide()
98
- }
99
- onMounted(() => {
100
- setTimeout(() => {
101
- window.addEventListener('click', windowClick)
102
- window.addEventListener('scroll', windowScroll, true)
103
- })
104
- })
105
- onUnmounted(() => {
106
- window.removeEventListener('click', windowClick)
107
- window.removeEventListener('scroll', windowScroll, true)
108
- })
109
- </script>
110
-
111
- <style scoped lang="scss">
112
- .signpost {
113
- opacity: 0;
114
- position: fixed;
115
- cursor: default;
116
- transform: translateY(calc(-50% + 14px)) translateX(20px);
117
- z-index: 1000000000;
118
-
119
- &.show {
120
- opacity: 1;
121
- }
122
- &.left {
123
- transform: translateY(calc(-50% + 14px)) translateX(calc(-100% - 20px));
124
-
125
- .signpost-wrap {
126
- .popover-pointer {
127
- left: 100%;
128
- border-right: unset;
129
- border-left: 12px solid var(--signpost-border-color);
130
-
131
- &::before {
132
- border-right: unset;
133
- border-left: 12px solid var(--signpost-bgcolor);
134
- left: unset;
135
- right: 2px;
136
- }
137
- }
138
- }
139
- }
140
- &.top {
141
- transform: translateY(calc(0% + 10px)) translateX(20px);
142
-
143
- &.left {
144
- transform: translateY(calc(0% + 10px)) translateX(calc(-100% - 20px));
145
-
146
- .popover-pointer {
147
- top: 5px;
148
- }
149
- }
150
-
151
- .signpost-wrap {
152
- .popover-pointer {
153
- top: 5px;
154
- }
155
- }
156
- }
157
-
158
- .signpost-wrap {
159
- border-radius: 3px;
160
- border: 1px solid var(--signpost-border-color);
161
- background-color: var(--signpost-bgcolor);
162
- position: relative;
163
-
164
- .popover-pointer {
165
- border-bottom: 12px solid transparent;
166
- top: 50%;
167
- transform: translateY(-50%);
168
- border-right: 12px solid var(--signpost-border-color);
169
- left: -12px;
170
- height: 0;
171
- width: 0;
172
- position: absolute;
173
-
174
- &::before {
175
- border-bottom: 12px solid transparent;
176
- top: 1px;
177
- border-right: 12px solid var(--signpost-bgcolor);
178
- left: 2px;
179
- content: '';
180
- height: 0;
181
- width: 0;
182
- position: absolute;
183
- }
184
- }
185
-
186
- .signpost-content-header {
187
- display: flex;
188
- justify-content: flex-end;
189
- position: absolute;
190
- width: 100%;
191
- background-color: inherit;
192
- top: 0;
193
-
194
- button {
195
- line-height: 24px;
196
-
197
- .close-icon {
198
- width: 16px;
199
- height: 16px;
200
- }
201
- }
202
- }
203
-
204
- .signpost-content-body {
205
- padding: 24px;
206
- max-height: 480px;
207
- overflow-y: auto;
208
- text-transform: none;
209
- }
210
- }
211
- }
212
- </style>
213
-
214
- <style>
215
- :root {
216
- --signpost-bgcolor: #fff;
217
- --signpost-border-color: #b3b3b3;
218
- --signpost-color: #acbac3;
219
- }
220
- :root.dark-theme {
221
- --signpost-bgcolor: #21333b;
222
- --signpost-border-color: #000;
223
- --signpost-color: #acbac3;
224
- }
225
- </style>
1
+ <template>
2
+ <div
3
+ id="signpost"
4
+ :class="['signpost', signpostClass]"
5
+ :style="signpostStyles"
6
+ @click.stop
7
+ @mouseenter="hovered = true"
8
+ @mouseleave="hovered = false"
9
+ >
10
+ <div class="signpost-wrap">
11
+ <div class="popover-pointer" />
12
+ <div class="signpost-content-header">
13
+ <button
14
+ :id="`${props.testId}-close-icon`"
15
+ class="signpost-action close"
16
+ @click="hide"
17
+ >
18
+ <atoms-the-icon class="close-icon" name="close" />
19
+ </button>
20
+ </div>
21
+ <div class="signpost-content-body">
22
+ <slot />
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script setup lang="ts">
29
+ import { UI_I_ElPosition } from '~/components/atoms/tooltip/lib/models/interfaces'
30
+ const props = withDefaults(
31
+ defineProps<{
32
+ elemId: string
33
+ testId?: string
34
+ }>(),
35
+ { testId: 'ui-signpost' }
36
+ )
37
+ const emits = defineEmits<{
38
+ (event: 'hide'): void
39
+ }>()
40
+ const hide = (): void => {
41
+ emits('hide')
42
+ }
43
+
44
+ const signpostStyles = ref<UI_I_ElPosition | null>(null)
45
+ watch(
46
+ () => props.elemId,
47
+ (newValue: string) => {
48
+ const element =
49
+ (document.getElementById(newValue) as HTMLDivElement) || null
50
+ const { width, x, y } = element.getBoundingClientRect()
51
+
52
+ signpostStyles.value = {
53
+ top: `${y}px`,
54
+ left: `${x + width / 2}px`,
55
+ }
56
+ setTimeout(() => {
57
+ setSignpostPosition()
58
+ }, 0)
59
+ },
60
+ { immediate: true }
61
+ )
62
+ const signpostClass = ref<string[]>([])
63
+ const setSignpostPosition = (): void => {
64
+ const signpost =
65
+ (document.getElementById('signpost') as HTMLDivElement) || null
66
+ const signpostRect = (signpost?.getBoundingClientRect() as DOMRect) || null
67
+
68
+ type PositionX = 'right' | 'left'
69
+ let positionX: PositionX = 'right'
70
+
71
+ type PositionY = 'top' | 'middle'
72
+ let positionY: PositionY = 'middle'
73
+
74
+ const isOutRight = signpostRect.left + signpostRect.width > window.innerWidth
75
+ const isOutTop = signpostRect.top < 0
76
+
77
+ if (isOutTop) {
78
+ positionY = 'top'
79
+ }
80
+ if (isOutRight) {
81
+ positionX = 'left'
82
+ }
83
+
84
+ signpostClass.value.push(positionY)
85
+ signpostClass.value.push(positionX)
86
+ signpostClass.value.push('show')
87
+ }
88
+
89
+ const hovered = ref<boolean>(false)
90
+ const windowClick = (): void => {
91
+ hide()
92
+ }
93
+ const windowScroll = (): void => {
94
+ if (hovered.value) {
95
+ return
96
+ }
97
+ hide()
98
+ }
99
+ onMounted(() => {
100
+ setTimeout(() => {
101
+ window.addEventListener('click', windowClick)
102
+ window.addEventListener('scroll', windowScroll, true)
103
+ })
104
+ })
105
+ onUnmounted(() => {
106
+ window.removeEventListener('click', windowClick)
107
+ window.removeEventListener('scroll', windowScroll, true)
108
+ })
109
+ </script>
110
+
111
+ <style scoped lang="scss">
112
+ .signpost {
113
+ opacity: 0;
114
+ position: fixed;
115
+ cursor: default;
116
+ transform: translateY(calc(-50% + 14px)) translateX(20px);
117
+ z-index: 1000000000;
118
+
119
+ &.show {
120
+ opacity: 1;
121
+ }
122
+ &.left {
123
+ transform: translateY(calc(-50% + 14px)) translateX(calc(-100% - 20px));
124
+
125
+ .signpost-wrap {
126
+ .popover-pointer {
127
+ left: 100%;
128
+ border-right: unset;
129
+ border-left: 12px solid var(--signpost-border-color);
130
+
131
+ &::before {
132
+ border-right: unset;
133
+ border-left: 12px solid var(--signpost-bgcolor);
134
+ left: unset;
135
+ right: 2px;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ &.top {
141
+ transform: translateY(calc(0% + 10px)) translateX(20px);
142
+
143
+ &.left {
144
+ transform: translateY(calc(0% + 10px)) translateX(calc(-100% - 20px));
145
+
146
+ .popover-pointer {
147
+ top: 5px;
148
+ }
149
+ }
150
+
151
+ .signpost-wrap {
152
+ .popover-pointer {
153
+ top: 5px;
154
+ }
155
+ }
156
+ }
157
+
158
+ .signpost-wrap {
159
+ border-radius: 3px;
160
+ border: 1px solid var(--signpost-border-color);
161
+ background-color: var(--signpost-bgcolor);
162
+ position: relative;
163
+
164
+ .popover-pointer {
165
+ border-bottom: 12px solid transparent;
166
+ top: 50%;
167
+ transform: translateY(-50%);
168
+ border-right: 12px solid var(--signpost-border-color);
169
+ left: -12px;
170
+ height: 0;
171
+ width: 0;
172
+ position: absolute;
173
+
174
+ &::before {
175
+ border-bottom: 12px solid transparent;
176
+ top: 1px;
177
+ border-right: 12px solid var(--signpost-bgcolor);
178
+ left: 2px;
179
+ content: '';
180
+ height: 0;
181
+ width: 0;
182
+ position: absolute;
183
+ }
184
+ }
185
+
186
+ .signpost-content-header {
187
+ display: flex;
188
+ justify-content: flex-end;
189
+ position: absolute;
190
+ width: 100%;
191
+ background-color: inherit;
192
+ top: 0;
193
+
194
+ button {
195
+ line-height: 24px;
196
+
197
+ .close-icon {
198
+ width: 16px;
199
+ height: 16px;
200
+ }
201
+ }
202
+ }
203
+
204
+ .signpost-content-body {
205
+ padding: 24px;
206
+ max-height: 480px;
207
+ overflow-y: auto;
208
+ text-transform: none;
209
+ }
210
+ }
211
+ }
212
+ </style>
213
+
214
+ <style>
215
+ :root {
216
+ --signpost-bgcolor: #fff;
217
+ --signpost-border-color: #b3b3b3;
218
+ --signpost-color: #acbac3;
219
+ }
220
+ :root.dark-theme {
221
+ --signpost-bgcolor: #21333b;
222
+ --signpost-border-color: #000;
223
+ --signpost-color: #acbac3;
224
+ }
225
+ </style>
@@ -3,6 +3,11 @@ import {
3
3
  UI_I_ModalsInitialData,
4
4
  UI_I_Network,
5
5
  } from '~/components/common/diagramMain/lib/models/interfaces'
6
+ import {
7
+ UI_T_LoadBalancingMode,
8
+ UI_T_IYN,
9
+ UI_T_Carier,
10
+ } from '~/components/common/diagramMain/lib/models/types'
6
11
  import * as initial from '~/components/common/diagramMain/lib/config/initial'
7
12
 
8
13
  export const dataForSelectedNetworkFunc = (
@@ -43,6 +48,25 @@ export const dataForSelectedAdapterFunc = (
43
48
  lldp: adapter.lldp,
44
49
  }
45
50
 
51
+ export const mode: UI_T_LoadBalancingMode[] = [
52
+ 'inherit',
53
+ 'active-backup',
54
+ 'balance-slb',
55
+ 'balance-tcp',
56
+ ]
57
+
58
+ export const iyn: UI_T_IYN[] = [
59
+ 'inherit',
60
+ 'yes',
61
+ 'no',
62
+ ]
63
+
64
+ export const carier: UI_T_Carier[] = [
65
+ 'inherit',
66
+ 'carier',
67
+ 'beakon',
68
+ ]
69
+
46
70
  export const {
47
71
  managePhysicalAdapterStatusInitial,
48
72
  mainRectHeightsInitial,
@@ -134,17 +134,17 @@ export interface UI_I_NetworkSummaryPortletListItem<
134
134
  label: string
135
135
  value: T
136
136
  id: string
137
- initialValue: UI_I_OverrideValue<T>
137
+ initialValue?: UI_I_OverrideValue<T>
138
138
  }
139
139
 
140
- export interface UI_I_NetworkInfo {
140
+ export interface UI_I_NetworkInfo<T = string | number | boolean> {
141
141
  average_bw: number
142
142
  burst_size: number
143
- nicTeamingPolicy: UI_I_NetworkSummaryPortletListItem[]
143
+ nicTeamingPolicy: UI_I_NetworkSummaryPortletListItem<T>[]
144
144
  nics_override: boolean
145
145
  peak_bw: number
146
- securityPolicy: UI_I_NetworkSummaryPortletListItem[]
147
- shapingPolicy: UI_I_NetworkSummaryPortletListItem[]
146
+ securityPolicy: UI_I_NetworkSummaryPortletListItem<T>[]
147
+ shapingPolicy: UI_I_NetworkSummaryPortletListItem<T>[]
148
148
  }
149
149
 
150
150
  export interface UI_I_Network extends UI_I_NetworkInfo {
@@ -5,4 +5,12 @@ export type UI_T_PropertiesFieldName = 'vlanId' | 'networkLabel'
5
5
  export type UI_T_TrafficShapingFieldName = 'average' | 'peak' | 'burstSize'
6
6
  export type UI_T_PortPropertiesFieldName = 'mtu'
7
7
 
8
- export type UI_T_Adapters = UI_I_Adapter & { adapterPosition: number }
8
+ export type UI_T_LoadBalancingMode =
9
+ | 'inherit'
10
+ | 'active-backup'
11
+ | 'balance-slb'
12
+ | 'balance-tcp'
13
+ export type UI_T_IYN = 'inherit' | 'yes' | 'no'
14
+ export type UI_T_Carier = 'inherit' | 'carier' | 'beakon'
15
+
16
+ export type UI_T_Adapters = UI_I_Adapter & { adapterPosition: number }
@@ -271,7 +271,7 @@ const onShowModalWithTypeCheck = (value: string) => {
271
271
  tcpConfig: {
272
272
  ipv4Settings: props.network.sysx?.ipv4_settings.auto ? '0' : '1',
273
273
  ipv4Address: props.network.sysx?.ipv4_settings.ipv4,
274
- subnetMask: props.network.sysx?.ipv4_settings.net_mask,
274
+ subnetMask: props.network.sysx?.ipv4_settings.mask,
275
275
  defaultGateway: {
276
276
  checked: props.network.sysx?.ipv4_settings.gateway_override,
277
277
  value: props.network.sysx?.ipv4_settings.gateway,