bfg-common 1.4.619 → 1.4.621
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.
|
@@ -2295,7 +2295,7 @@
|
|
|
2295
2295
|
"useWindowsSessionAuthentication": "Использовать проверку подлинности сеанса Windows",
|
|
2296
2296
|
"authBgTextSphere": "Легко контролируйте узлы виртуализации $*и$ управляйте ими",
|
|
2297
2297
|
"logout": "Выйти",
|
|
2298
|
-
"loginErrorText": "
|
|
2298
|
+
"loginErrorText": "Неверное имя пользователя или пароль"
|
|
2299
2299
|
},
|
|
2300
2300
|
"home": {
|
|
2301
2301
|
"objectsWithMostAlerts": " Объекты с большим количестом оповещений",
|
|
@@ -26,12 +26,12 @@ export const getHeaderDataFunc = (
|
|
|
26
26
|
col: 1,
|
|
27
27
|
colName: 'alerts',
|
|
28
28
|
text: localization.common.alerts,
|
|
29
|
-
|
|
30
29
|
isSortable: true,
|
|
31
30
|
sort: 'asc',
|
|
32
31
|
width: '33.3%',
|
|
33
32
|
show: true,
|
|
34
33
|
filter: true,
|
|
34
|
+
icon: 'error-outline',
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
col: 2,
|
|
@@ -42,6 +42,8 @@ export const getHeaderDataFunc = (
|
|
|
42
42
|
width: '33.3%',
|
|
43
43
|
show: true,
|
|
44
44
|
filter: true,
|
|
45
|
+
icon: 'warning-outline',
|
|
46
|
+
iconColor: '#fbce28',
|
|
45
47
|
},
|
|
46
48
|
]
|
|
47
49
|
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue
CHANGED
|
@@ -1,216 +1,220 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<common-vm-actions-common-customize-hardware-virtual-hardware-limit-new
|
|
3
|
-
v-if="isNewView"
|
|
4
|
-
v-model:limit="limitLocalByLocalization"
|
|
5
|
-
v-model:limit-type="limitTypeLocal"
|
|
6
|
-
:limit-errors-texts="limitLocalAndApiErrorsTexts"
|
|
7
|
-
:component-type="props.componentType"
|
|
8
|
-
:limit-options="limitOptionsLocal"
|
|
9
|
-
:limit-type-options="limitTypeOptions"
|
|
10
|
-
:disabled="props.disabled"
|
|
11
|
-
@select-limit="onSelectLimit"
|
|
12
|
-
@remove-error="onRemoveValidationError"
|
|
13
|
-
/>
|
|
14
|
-
<common-vm-actions-common-customize-hardware-virtual-hardware-limit-old
|
|
15
|
-
v-else
|
|
16
|
-
v-model:limit="limitLocalByLocalization"
|
|
17
|
-
v-model:limit-type="limitTypeLocal"
|
|
18
|
-
:limit-errors-texts="limitLocalAndApiErrorsTexts"
|
|
19
|
-
:component-type="props.componentType"
|
|
20
|
-
:limit-options="limitOptionsLocal"
|
|
21
|
-
:limit-type-options="limitTypeOptions"
|
|
22
|
-
:disabled="props.disabled"
|
|
23
|
-
@select-limit="onSelectLimit"
|
|
24
|
-
@remove-error="onRemoveValidationError"
|
|
25
|
-
/>
|
|
26
|
-
</template>
|
|
27
|
-
|
|
28
|
-
<script setup lang="ts">
|
|
29
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
30
|
-
import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
31
|
-
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
32
|
-
import {
|
|
33
|
-
limitOptionsFunc,
|
|
34
|
-
limitTypeOptionsFunc,
|
|
35
|
-
} from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/lib/config/options'
|
|
36
|
-
|
|
37
|
-
const props = withDefaults(
|
|
38
|
-
defineProps<{
|
|
39
|
-
limit: string
|
|
40
|
-
limitType: string
|
|
41
|
-
type: 'mb' | 'mhz'
|
|
42
|
-
componentType: string
|
|
43
|
-
errorValidationFields: UI_I_ErrorValidationField<string>[]
|
|
44
|
-
disabled?: boolean
|
|
45
|
-
limitOptions?: UI_I_OptionItem[]
|
|
46
|
-
multiply?: number
|
|
47
|
-
}>(),
|
|
48
|
-
{
|
|
49
|
-
limitOptions: undefined,
|
|
50
|
-
multiply: 1,
|
|
51
|
-
}
|
|
52
|
-
)
|
|
53
|
-
const emits = defineEmits<{
|
|
54
|
-
(event: 'update:limit', value: string): void
|
|
55
|
-
(event: 'update:limit-type', value: string): void
|
|
56
|
-
(event: 'invalid', value: boolean): void
|
|
57
|
-
(event: 'remove-error-by-title', value: string): void
|
|
58
|
-
}>()
|
|
59
|
-
|
|
60
|
-
const { $store }: any = useNuxtApp()
|
|
61
|
-
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
62
|
-
|
|
63
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
64
|
-
|
|
65
|
-
const typeError = computed<string>(() => `${props.componentType}.limit_mb`)
|
|
66
|
-
|
|
67
|
-
const apiErrorLocal = computed<string>(() => {
|
|
68
|
-
return (
|
|
69
|
-
props.errorValidationFields?.find(
|
|
70
|
-
(message) => message.field === typeError.value
|
|
71
|
-
)?.error_message || ''
|
|
72
|
-
)
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
const binaryKeys: [string, string] =
|
|
76
|
-
props.type === 'mb' ? ['mb', 'gb'] : ['mhz', 'ghz']
|
|
77
|
-
|
|
78
|
-
const limitOptionsLocal = computed<UI_I_OptionItem[]>(
|
|
79
|
-
() => props.limitOptions || limitOptionsFunc(localization.value, binaryKeys)
|
|
80
|
-
)
|
|
81
|
-
const limitTypeOptions = ref<UI_I_OptionItem[]>(
|
|
82
|
-
limitTypeOptionsFunc(localization.value, binaryKeys)
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
const limitLocalByLocalization = computed<string>({
|
|
86
|
-
get() {
|
|
87
|
-
return limitLocal.value === 'Unlimited'
|
|
88
|
-
? localization.value.common.unlimited
|
|
89
|
-
: limitLocal.value
|
|
90
|
-
},
|
|
91
|
-
set(newValue) {
|
|
92
|
-
limitLocal.value =
|
|
93
|
-
newValue === localization.value.common.unlimited ? 'Unlimited' : newValue
|
|
94
|
-
},
|
|
95
|
-
})
|
|
96
|
-
const limitLocal = computed<string>({
|
|
97
|
-
get() {
|
|
98
|
-
return props.limit
|
|
99
|
-
},
|
|
100
|
-
set(newValue) {
|
|
101
|
-
emits('update:limit', '' + newValue)
|
|
102
|
-
},
|
|
103
|
-
})
|
|
104
|
-
const limitTypeLocal = computed<string>({
|
|
105
|
-
get() {
|
|
106
|
-
return props.limitType
|
|
107
|
-
},
|
|
108
|
-
set(newValue) {
|
|
109
|
-
emits('update:limit-type', newValue)
|
|
110
|
-
},
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
const { $binary } = useNuxtApp()
|
|
114
|
-
const onSelectLimit = ({
|
|
115
|
-
value,
|
|
116
|
-
type,
|
|
117
|
-
}: {
|
|
118
|
-
value: number | 'Unlimited'
|
|
119
|
-
type: string
|
|
120
|
-
}): void => {
|
|
121
|
-
limitLocal.value = '' + value
|
|
122
|
-
if (limitTypeLocal.value !== type) {
|
|
123
|
-
limitTypeLocal.value = type
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// if (limitTypeLocal.value === binaryKeys[0] || value === 'Unlimited') {
|
|
127
|
-
// limitLocal.value = '' + value
|
|
128
|
-
// return
|
|
129
|
-
// }
|
|
130
|
-
//
|
|
131
|
-
// limitLocal.value =
|
|
132
|
-
// '' + $binary.universalFromTo(value, binaryKeys[0], binaryKeys[1], 8)
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const limitErrorLocalText = computed<string>(() => {
|
|
136
|
-
const valueForMin = $binary.universalFromTo(
|
|
137
|
-
+limitLocal.value,
|
|
138
|
-
limitTypeLocal.value,
|
|
139
|
-
limitOptionsLocal.value[0].value.type,
|
|
140
|
-
0
|
|
141
|
-
)
|
|
142
|
-
const valueForMax = $binary.universalFromTo(
|
|
143
|
-
+limitLocal.value,
|
|
144
|
-
limitTypeLocal.value,
|
|
145
|
-
limitOptionsLocal.value[1].value.type,
|
|
146
|
-
0
|
|
147
|
-
)
|
|
148
|
-
const minValue = limitOptionsLocal.value[0].value.value
|
|
149
|
-
const maxValue = limitOptionsLocal.value[1].value.value
|
|
150
|
-
if (valueForMin < minValue) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-limit-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model:limit="limitLocalByLocalization"
|
|
5
|
+
v-model:limit-type="limitTypeLocal"
|
|
6
|
+
:limit-errors-texts="limitLocalAndApiErrorsTexts"
|
|
7
|
+
:component-type="props.componentType"
|
|
8
|
+
:limit-options="limitOptionsLocal"
|
|
9
|
+
:limit-type-options="limitTypeOptions"
|
|
10
|
+
:disabled="props.disabled"
|
|
11
|
+
@select-limit="onSelectLimit"
|
|
12
|
+
@remove-error="onRemoveValidationError"
|
|
13
|
+
/>
|
|
14
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-limit-old
|
|
15
|
+
v-else
|
|
16
|
+
v-model:limit="limitLocalByLocalization"
|
|
17
|
+
v-model:limit-type="limitTypeLocal"
|
|
18
|
+
:limit-errors-texts="limitLocalAndApiErrorsTexts"
|
|
19
|
+
:component-type="props.componentType"
|
|
20
|
+
:limit-options="limitOptionsLocal"
|
|
21
|
+
:limit-type-options="limitTypeOptions"
|
|
22
|
+
:disabled="props.disabled"
|
|
23
|
+
@select-limit="onSelectLimit"
|
|
24
|
+
@remove-error="onRemoveValidationError"
|
|
25
|
+
/>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script setup lang="ts">
|
|
29
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
30
|
+
import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
31
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
32
|
+
import {
|
|
33
|
+
limitOptionsFunc,
|
|
34
|
+
limitTypeOptionsFunc,
|
|
35
|
+
} from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/lib/config/options'
|
|
36
|
+
|
|
37
|
+
const props = withDefaults(
|
|
38
|
+
defineProps<{
|
|
39
|
+
limit: string
|
|
40
|
+
limitType: string
|
|
41
|
+
type: 'mb' | 'mhz'
|
|
42
|
+
componentType: string
|
|
43
|
+
errorValidationFields: UI_I_ErrorValidationField<string>[]
|
|
44
|
+
disabled?: boolean
|
|
45
|
+
limitOptions?: UI_I_OptionItem[]
|
|
46
|
+
multiply?: number
|
|
47
|
+
}>(),
|
|
48
|
+
{
|
|
49
|
+
limitOptions: undefined,
|
|
50
|
+
multiply: 1,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
const emits = defineEmits<{
|
|
54
|
+
(event: 'update:limit', value: string): void
|
|
55
|
+
(event: 'update:limit-type', value: string): void
|
|
56
|
+
(event: 'invalid', value: boolean): void
|
|
57
|
+
(event: 'remove-error-by-title', value: string): void
|
|
58
|
+
}>()
|
|
59
|
+
|
|
60
|
+
const { $store }: any = useNuxtApp()
|
|
61
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
62
|
+
|
|
63
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
64
|
+
|
|
65
|
+
const typeError = computed<string>(() => `${props.componentType}.limit_mb`)
|
|
66
|
+
|
|
67
|
+
const apiErrorLocal = computed<string>(() => {
|
|
68
|
+
return (
|
|
69
|
+
props.errorValidationFields?.find(
|
|
70
|
+
(message) => message.field === typeError.value
|
|
71
|
+
)?.error_message || ''
|
|
72
|
+
)
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
const binaryKeys: [string, string] =
|
|
76
|
+
props.type === 'mb' ? ['mb', 'gb'] : ['mhz', 'ghz']
|
|
77
|
+
|
|
78
|
+
const limitOptionsLocal = computed<UI_I_OptionItem[]>(
|
|
79
|
+
() => props.limitOptions || limitOptionsFunc(localization.value, binaryKeys)
|
|
80
|
+
)
|
|
81
|
+
const limitTypeOptions = ref<UI_I_OptionItem[]>(
|
|
82
|
+
limitTypeOptionsFunc(localization.value, binaryKeys)
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
const limitLocalByLocalization = computed<string>({
|
|
86
|
+
get() {
|
|
87
|
+
return limitLocal.value === 'Unlimited'
|
|
88
|
+
? localization.value.common.unlimited
|
|
89
|
+
: limitLocal.value
|
|
90
|
+
},
|
|
91
|
+
set(newValue) {
|
|
92
|
+
limitLocal.value =
|
|
93
|
+
newValue === localization.value.common.unlimited ? 'Unlimited' : newValue
|
|
94
|
+
},
|
|
95
|
+
})
|
|
96
|
+
const limitLocal = computed<string>({
|
|
97
|
+
get() {
|
|
98
|
+
return props.limit
|
|
99
|
+
},
|
|
100
|
+
set(newValue) {
|
|
101
|
+
emits('update:limit', '' + newValue)
|
|
102
|
+
},
|
|
103
|
+
})
|
|
104
|
+
const limitTypeLocal = computed<string>({
|
|
105
|
+
get() {
|
|
106
|
+
return props.limitType
|
|
107
|
+
},
|
|
108
|
+
set(newValue) {
|
|
109
|
+
emits('update:limit-type', newValue)
|
|
110
|
+
},
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
const { $binary } = useNuxtApp()
|
|
114
|
+
const onSelectLimit = ({
|
|
115
|
+
value,
|
|
116
|
+
type,
|
|
117
|
+
}: {
|
|
118
|
+
value: number | 'Unlimited'
|
|
119
|
+
type: string
|
|
120
|
+
}): void => {
|
|
121
|
+
limitLocal.value = '' + value
|
|
122
|
+
if (limitTypeLocal.value !== type) {
|
|
123
|
+
limitTypeLocal.value = type
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// if (limitTypeLocal.value === binaryKeys[0] || value === 'Unlimited') {
|
|
127
|
+
// limitLocal.value = '' + value
|
|
128
|
+
// return
|
|
129
|
+
// }
|
|
130
|
+
//
|
|
131
|
+
// limitLocal.value =
|
|
132
|
+
// '' + $binary.universalFromTo(value, binaryKeys[0], binaryKeys[1], 8)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const limitErrorLocalText = computed<string>(() => {
|
|
136
|
+
const valueForMin = $binary.universalFromTo(
|
|
137
|
+
+limitLocal.value,
|
|
138
|
+
limitTypeLocal.value,
|
|
139
|
+
limitOptionsLocal.value[0].value.type,
|
|
140
|
+
0
|
|
141
|
+
)
|
|
142
|
+
const valueForMax = $binary.universalFromTo(
|
|
143
|
+
+limitLocal.value,
|
|
144
|
+
limitTypeLocal.value,
|
|
145
|
+
limitOptionsLocal.value[1].value.type,
|
|
146
|
+
0
|
|
147
|
+
)
|
|
148
|
+
const minValue = limitOptionsLocal.value[0].value.value
|
|
149
|
+
const maxValue = limitOptionsLocal.value[1].value.value
|
|
150
|
+
if (valueForMin < minValue) {
|
|
151
|
+
const minUnit =
|
|
152
|
+
localization.value.common[limitOptionsLocal.value[0].value.type]
|
|
153
|
+
return localization.value.common.limitMustBe.replace(
|
|
154
|
+
'{0}',
|
|
155
|
+
`${minValue} ${minUnit}`
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
if (props.limitOptions && valueForMax > maxValue) {
|
|
159
|
+
const maxUnit =
|
|
160
|
+
localization.value.common[limitOptionsLocal.value[1].value.type]
|
|
161
|
+
return localization.value.common.limitMustBeMax.replace(
|
|
162
|
+
'{0}',
|
|
163
|
+
`${maxValue} ${maxUnit}`
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const validValue = /^\d+(\.\d+)?$/.test(limitLocal.value)
|
|
168
|
+
if (
|
|
169
|
+
!validValue &&
|
|
170
|
+
(limitLocal.value !== limitOptionsLocal.value[1].value.value ||
|
|
171
|
+
props.limitOptions)
|
|
172
|
+
) {
|
|
173
|
+
return localization.value.common.inputContainsInvalidCharacters
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (limitLocal.value !== 'Unlimited') {
|
|
177
|
+
const value = $binary.universalFromTo(
|
|
178
|
+
+limitLocal.value,
|
|
179
|
+
limitTypeLocal.value,
|
|
180
|
+
binaryKeys[0],
|
|
181
|
+
0
|
|
182
|
+
)
|
|
183
|
+
if (value % props.multiply !== 0) {
|
|
184
|
+
return localization.value.common.valueShouldMultiple.replace(
|
|
185
|
+
'{0}',
|
|
186
|
+
`${props.multiply} ${binaryKeys[0].toUpperCase()}`
|
|
187
|
+
)
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return ''
|
|
192
|
+
})
|
|
193
|
+
const limitInvalid = computed<boolean>(() => !!limitErrorLocalText.value)
|
|
194
|
+
watch(
|
|
195
|
+
limitInvalid,
|
|
196
|
+
(newValue) => {
|
|
197
|
+
emits('invalid', newValue)
|
|
198
|
+
},
|
|
199
|
+
{ immediate: true }
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
const limitLocalAndApiErrorsTexts = computed<string>(() => {
|
|
203
|
+
const localError = limitErrorLocalText.value
|
|
204
|
+
const apiError = apiErrorLocal.value
|
|
205
|
+
|
|
206
|
+
let result = ''
|
|
207
|
+
if (localError && !apiError) result = localError
|
|
208
|
+
if (!localError && apiError) result = apiError
|
|
209
|
+
if (localError && apiError) result = localError + ', ' + apiError
|
|
210
|
+
if (!localError && apiError) result = apiError
|
|
211
|
+
|
|
212
|
+
return result
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
const onRemoveValidationError = (): void => {
|
|
216
|
+
emits('remove-error-by-title', typeError.value)
|
|
217
|
+
}
|
|
218
|
+
</script>
|
|
219
|
+
|
|
220
|
+
<style scoped></style>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bfg-common",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.621",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "nuxt build",
|
|
7
7
|
"dev": "nuxt dev --port=3002",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@vueuse/components": "^10.1.2",
|
|
36
36
|
"date-fns": "^2.29.3",
|
|
37
37
|
"bfg-nuxt-3-graph": "1.0.15",
|
|
38
|
-
"bfg-uikit": "1.0.
|
|
38
|
+
"bfg-uikit": "1.0.272",
|
|
39
39
|
"html2canvas": "^1.4.1",
|
|
40
40
|
"prettier-eslint": "^15.0.1"
|
|
41
41
|
}
|