bfg-common 1.5.633 → 1.5.634

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.
@@ -4,6 +4,7 @@
4
4
  @include flex($dir: column);
5
5
  height: calc(100vh - 44px);
6
6
  background-color: #fafafa;
7
+ overflow: auto;
7
8
  &__content {
8
9
  display: grid;
9
10
  grid-template-columns: 544px auto;
@@ -1,169 +1,169 @@
1
- <template>
2
- <common-monitor-overview-filters-new
3
- v-if="isNewView"
4
- v-model:selected-period="selectedPeriod"
5
- v-model:selected-view="selectedView"
6
- :disabled-period-options="disabledPeriodOptions"
7
- :period-options="periodOptions"
8
- :is-show-custom-interval-button="isShowCustomIntervalButton"
9
- :chart-title-date="chartTitleDate"
10
- :view-options="viewOptions"
11
- :valid-date-end="props.validDateEnd"
12
- :is-show-interval-modal="isShowIntervalModal"
13
- :selected-periods="props.selectedPeriods"
14
- :current-lang="props.currentLang"
15
- :selected-node-name="props.selectedNodeName"
16
- @submit-interval-modal="onSubmitIntervalModal"
17
- @show-interval-modal="onShowIntervalModal"
18
- @hide-interval-modal="onHideIntervalModal"
19
- />
20
- <common-monitor-overview-filters-old
21
- v-else
22
- v-model:selected-period="selectedPeriod"
23
- v-model:selected-view="selectedView"
24
- :disabled-period-options="disabledPeriodOptions"
25
- :period-options="periodOptions"
26
- :is-show-custom-interval-button="isShowCustomIntervalButton"
27
- :chart-title-date="chartTitleDate"
28
- :view-options="viewOptions"
29
- :valid-date-end="props.validDateEnd"
30
- :is-show-interval-modal="isShowIntervalModal"
31
- :selected-periods="props.selectedPeriods"
32
- :current-lang="props.currentLang"
33
- :selected-node-name="props.selectedNodeName"
34
- @submit-interval-modal="onSubmitIntervalModal"
35
- @show-interval-modal="onShowIntervalModal"
36
- @hide-interval-modal="onHideIntervalModal"
37
- />
38
- </template>
39
-
40
- <script setup lang="ts">
41
- import type { UI_T_Project } from '~/lib/models/types'
42
- import type { UI_I_Localization } from '~/lib/models/interfaces'
43
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
44
- import type { UI_I_MonitorGraphPayload } from '~/components/common/monitor/lib/models/interfaces'
45
- import type { UI_T_OverviewViewType } from '~/components/common/monitor/overview/filters/lib/models/types'
46
- import {
47
- periodFunc,
48
- viewFunc,
49
- } from '~/components/common/monitor/overview/filters/lib/config/filterOptions'
50
- import { getValidDateByOptionFunc } from '~/components/common/monitor/lib/config/getValidDateByOption'
51
-
52
- const { $formattedDatetime, $store }: any = useNuxtApp()
53
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
54
-
55
- const props = withDefaults(
56
- defineProps<{
57
- startDate: number
58
- endDate: number
59
- chartType: 'spline' | 'pie'
60
- view: UI_T_OverviewViewType
61
- selectedPeriods: number[]
62
- currentLang: string
63
- validDateEnd: number
64
- selectedNodeName: string
65
- timeFormat?: string
66
- project?: UI_T_Project
67
- }>(),
68
- {
69
- timeFormat: '',
70
- project: undefined,
71
- }
72
- )
73
-
74
- const emits = defineEmits<{
75
- (event: 'update-filters', value: UI_I_MonitorGraphPayload): void
76
- (event: 'update-custom-date', value: number[]): void
77
- }>()
78
-
79
- const localization = computed<UI_I_Localization>(() => useLocal())
80
-
81
- const selectedPeriod = ref<string>('')
82
- const periodOptions = computed<UI_I_OptionItem[]>(() =>
83
- periodFunc(localization.value)
84
- )
85
- watch(
86
- () => periodOptions.value,
87
- (newValue: UI_I_OptionItem[]) => {
88
- if (newValue) selectedPeriod.value = newValue[0].value
89
- },
90
- { immediate: true }
91
- )
92
-
93
- const isShowCustomIntervalButton = computed<boolean>(
94
- () => selectedPeriod.value === 'custom_interval'
95
- )
96
-
97
- const isShowIntervalModal = ref<boolean>(false)
98
- const onShowIntervalModal = (): void => {
99
- isShowIntervalModal.value = true
100
- }
101
- const onHideIntervalModal = (): void => {
102
- isShowIntervalModal.value = false
103
- }
104
- const onSubmitIntervalModal = (customDates: number[]): void => {
105
- customDatesData.value = customDates
106
- sendUpdatedFilters()
107
- onHideIntervalModal()
108
- emits('update-custom-date', customDates)
109
- }
110
-
111
- const chartTitleDate = computed<string>(() => {
112
- const startValue = props.startDate
113
- const endValue = props.endDate
114
- if (!startValue && !endValue) return ''
115
-
116
- const start = $formattedDatetime(startValue, {
117
- hasSeconds: true,
118
- timeFormat: props.timeFormat,
119
- })
120
-
121
- const end = $formattedDatetime(endValue, {
122
- hasSeconds: true,
123
- timeFormat: props.timeFormat,
124
- })
125
-
126
- return `${start} - ${end}`
127
- })
128
-
129
- // const disabledPeriodOptions = computed<boolean>(
130
- // () => props.chartType === 'pie' || !chartTitleDate.value
131
- // )
132
-
133
- const disabledPeriodOptions = computed<boolean>(() => props.chartType === 'pie')
134
-
135
- const selectedView = ref<string>('')
136
- const viewOptions = computed<UI_I_OptionItem[]>(() =>
137
- viewFunc(localization.value, props.view, props.project)
138
- )
139
- watch(
140
- () => viewOptions.value,
141
- (newValue: UI_I_OptionItem[]) => {
142
- if (newValue) selectedView.value = newValue[0].value
143
- },
144
- { immediate: true }
145
- )
146
-
147
- const customDatesData = ref<number[]>([])
148
- const sendUpdatedFilters = (): void => {
149
- const currentPeriod =
150
- selectedPeriod.value === 'custom_interval'
151
- ? customDatesData.value
152
- : getValidDateByOptionFunc(selectedPeriod.value)
153
- const filters: UI_I_MonitorGraphPayload = {
154
- period: currentPeriod,
155
- view: selectedView.value,
156
- periodName: selectedPeriod.value,
157
- }
158
-
159
- emits('update-filters', filters)
160
- }
161
- watch(
162
- () => [selectedPeriod.value, selectedView.value],
163
- () => {
164
- sendUpdatedFilters()
165
- }
166
- )
167
- </script>
168
-
169
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-monitor-overview-filters-new
3
+ v-if="isNewView"
4
+ v-model:selected-period="selectedPeriod"
5
+ v-model:selected-view="selectedView"
6
+ :disabled-period-options="disabledPeriodOptions"
7
+ :period-options="periodOptions"
8
+ :is-show-custom-interval-button="isShowCustomIntervalButton"
9
+ :chart-title-date="chartTitleDate"
10
+ :view-options="viewOptions"
11
+ :valid-date-end="props.validDateEnd"
12
+ :is-show-interval-modal="isShowIntervalModal"
13
+ :selected-periods="props.selectedPeriods"
14
+ :current-lang="props.currentLang"
15
+ :selected-node-name="props.selectedNodeName"
16
+ @submit-interval-modal="onSubmitIntervalModal"
17
+ @show-interval-modal="onShowIntervalModal"
18
+ @hide-interval-modal="onHideIntervalModal"
19
+ />
20
+ <common-monitor-overview-filters-old
21
+ v-else
22
+ v-model:selected-period="selectedPeriod"
23
+ v-model:selected-view="selectedView"
24
+ :disabled-period-options="disabledPeriodOptions"
25
+ :period-options="periodOptions"
26
+ :is-show-custom-interval-button="isShowCustomIntervalButton"
27
+ :chart-title-date="chartTitleDate"
28
+ :view-options="viewOptions"
29
+ :valid-date-end="props.validDateEnd"
30
+ :is-show-interval-modal="isShowIntervalModal"
31
+ :selected-periods="props.selectedPeriods"
32
+ :current-lang="props.currentLang"
33
+ :selected-node-name="props.selectedNodeName"
34
+ @submit-interval-modal="onSubmitIntervalModal"
35
+ @show-interval-modal="onShowIntervalModal"
36
+ @hide-interval-modal="onHideIntervalModal"
37
+ />
38
+ </template>
39
+
40
+ <script setup lang="ts">
41
+ import type { UI_T_Project } from '~/lib/models/types'
42
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
43
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
44
+ import type { UI_I_MonitorGraphPayload } from '~/components/common/monitor/lib/models/interfaces'
45
+ import type { UI_T_OverviewViewType } from '~/components/common/monitor/overview/filters/lib/models/types'
46
+ import {
47
+ periodFunc,
48
+ viewFunc,
49
+ } from '~/components/common/monitor/overview/filters/lib/config/filterOptions'
50
+ import { getValidDateByOptionFunc } from '~/components/common/monitor/lib/config/getValidDateByOption'
51
+
52
+ const { $formattedDatetime, $store }: any = useNuxtApp()
53
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
54
+
55
+ const props = withDefaults(
56
+ defineProps<{
57
+ startDate: number
58
+ endDate: number
59
+ chartType: 'spline' | 'pie'
60
+ view: UI_T_OverviewViewType
61
+ selectedPeriods: number[]
62
+ currentLang: string
63
+ validDateEnd: number
64
+ selectedNodeName: string
65
+ timeFormat?: string
66
+ project?: UI_T_Project
67
+ }>(),
68
+ {
69
+ timeFormat: '',
70
+ project: undefined,
71
+ }
72
+ )
73
+
74
+ const emits = defineEmits<{
75
+ (event: 'update-filters', value: UI_I_MonitorGraphPayload): void
76
+ (event: 'update-custom-date', value: number[]): void
77
+ }>()
78
+
79
+ const localization = computed<UI_I_Localization>(() => useLocal())
80
+
81
+ const selectedPeriod = ref<string>('')
82
+ const periodOptions = computed<UI_I_OptionItem[]>(() =>
83
+ periodFunc(localization.value)
84
+ )
85
+ watch(
86
+ () => periodOptions.value,
87
+ (newValue: UI_I_OptionItem[]) => {
88
+ if (newValue) selectedPeriod.value = newValue[0].value
89
+ },
90
+ { immediate: true }
91
+ )
92
+
93
+ const isShowCustomIntervalButton = computed<boolean>(
94
+ () => selectedPeriod.value === 'custom_interval'
95
+ )
96
+
97
+ const isShowIntervalModal = ref<boolean>(false)
98
+ const onShowIntervalModal = (): void => {
99
+ isShowIntervalModal.value = true
100
+ }
101
+ const onHideIntervalModal = (): void => {
102
+ isShowIntervalModal.value = false
103
+ }
104
+ const onSubmitIntervalModal = (customDates: number[]): void => {
105
+ customDatesData.value = customDates
106
+ sendUpdatedFilters()
107
+ onHideIntervalModal()
108
+ emits('update-custom-date', customDates)
109
+ }
110
+
111
+ const chartTitleDate = computed<string>(() => {
112
+ const startValue = props.startDate
113
+ const endValue = props.endDate
114
+ if (!startValue && !endValue) return ''
115
+
116
+ const start = $formattedDatetime(startValue, {
117
+ hasSeconds: true,
118
+ timeFormat: props.timeFormat,
119
+ })
120
+
121
+ const end = $formattedDatetime(endValue, {
122
+ hasSeconds: true,
123
+ timeFormat: props.timeFormat,
124
+ })
125
+
126
+ return `${start} - ${end}`
127
+ })
128
+
129
+ // const disabledPeriodOptions = computed<boolean>(
130
+ // () => props.chartType === 'pie' || !chartTitleDate.value
131
+ // )
132
+
133
+ const disabledPeriodOptions = computed<boolean>(() => props.chartType === 'pie')
134
+
135
+ const selectedView = ref<string>('')
136
+ const viewOptions = computed<UI_I_OptionItem[]>(() =>
137
+ viewFunc(localization.value, props.view, props.project)
138
+ )
139
+ watch(
140
+ () => viewOptions.value,
141
+ (newValue: UI_I_OptionItem[]) => {
142
+ if (newValue) selectedView.value = newValue[0].value
143
+ },
144
+ { immediate: true }
145
+ )
146
+
147
+ const customDatesData = ref<number[]>([])
148
+ const sendUpdatedFilters = (): void => {
149
+ const currentPeriod =
150
+ selectedPeriod.value === 'custom_interval'
151
+ ? customDatesData.value
152
+ : getValidDateByOptionFunc(selectedPeriod.value)
153
+ const filters: UI_I_MonitorGraphPayload = {
154
+ period: currentPeriod,
155
+ view: selectedView.value,
156
+ periodName: selectedPeriod.value,
157
+ }
158
+
159
+ emits('update-filters', filters)
160
+ }
161
+ watch(
162
+ () => [selectedPeriod.value, selectedView.value],
163
+ () => {
164
+ sendUpdatedFilters()
165
+ }
166
+ )
167
+ </script>
168
+
169
+ <style scoped lang="scss"></style>
@@ -3,6 +3,7 @@ export enum UI_E_TabsByTypeEnum { // TODO если есть другой так
3
3
  'datacenter' = 'h',
4
4
  'folder' = 'h',
5
5
  'cluster' = 'h',
6
+ 'zonedir' = 'h',
6
7
  // для прокуратор
7
8
  'host' = 'h',
8
9
  'vm' = 'v',
@@ -337,6 +337,7 @@ onUnmounted(() => {
337
337
  background-color: var(--new-gutter-bg-color);
338
338
  transition-delay: 0.25s;
339
339
  transition-duration: 0.25s;
340
+ user-select: none;
340
341
 
341
342
  &-handler {
342
343
  position: absolute;
@@ -289,6 +289,7 @@ onUnmounted(() => {
289
289
  background-color: var(--gutter-bg-color);
290
290
  transition-delay: 0.25s;
291
291
  transition-duration: 0.25s;
292
+ user-select: none;
292
293
 
293
294
  &-handler {
294
295
  position: absolute;
@@ -76,6 +76,7 @@ const props = defineProps<{
76
76
  background-color: var(--gutter-bg-color);
77
77
  transition-delay: 0.25s;
78
78
  transition-duration: 0.25s;
79
+ user-select: none;
79
80
 
80
81
  &-handler {
81
82
  position: absolute;
@@ -65,6 +65,7 @@ const props = defineProps<{
65
65
  background-color: var(--gutter-bg-color);
66
66
  transition-delay: 0.25s;
67
67
  transition-duration: 0.25s;
68
+ user-select: none;
68
69
 
69
70
  &-handler {
70
71
  position: absolute;
@@ -5,6 +5,7 @@
5
5
  :is-loading="props.wizard.wizardLoader.status"
6
6
  :title="localization.common.registerVm"
7
7
  :texts="texts"
8
+ :has-changes="hasChanges"
8
9
  test-id="register-wizard"
9
10
  show
10
11
  @change-steps="emits('change-steps', $event)"
@@ -74,7 +75,7 @@
74
75
  test-id="computed-resource-alert"
75
76
  type="error"
76
77
  size="md"
77
- class="subtitle-block__alert"
78
+ class="subtitle-block__alert mb-4"
78
79
  />
79
80
  <ui-wizard-subtitle
80
81
  :sub-title="
@@ -131,6 +132,7 @@ import type {
131
132
  UI_I_WizardTexts,
132
133
  } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
133
134
  import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
135
+ import { compare } from '~/node_modules/bfg-uikit/lib/utils/compare'
134
136
  import type { UI_I_Localization } from '~/lib/models/interfaces'
135
137
  import type { UI_T_Project } from '~/lib/models/types'
136
138
  import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
@@ -208,8 +210,19 @@ const currentSubtitleSelectNameBlock = ref<string>(
208
210
  ? localization.value.vmWizard.specifyUniqueNameAndTargetLocationForVm
209
211
  : localization.value.common.specifyUniqueNameForVm
210
212
  )
213
+
214
+ const initialCompare = compare(vmForm)
215
+ const hasChanges = computed<boolean>(() => initialCompare.getDiff(vmForm.value))
211
216
  </script>
212
217
 
218
+ <style>
219
+ :root {
220
+ --select-name-border-color: #e9ebed;
221
+ }
222
+ :root.dark-theme {
223
+ --select-name-border-color: #e9ebed1f;
224
+ }
225
+ </style>
213
226
  <style scoped lang="scss">
214
227
  .subtitle-block {
215
228
  display: flex;
@@ -217,6 +230,9 @@ const currentSubtitleSelectNameBlock = ref<string>(
217
230
  border-bottom: 1px solid var(--wizard-line);
218
231
  padding-bottom: 12px;
219
232
  }
233
+ :deep(.select-name .tree-view-wrap) {
234
+ border-color: var(--select-name-border-color);
235
+ }
220
236
  .compute-resource-container {
221
237
  padding-bottom: 40px;
222
238
 
@@ -75,6 +75,7 @@ export interface UI_I_RecentTaskItem<T, E = any> {
75
75
  statusText: string
76
76
  statusDetails: UI_T_TaskStatusDetails
77
77
  target: string
78
+ targetName: string
78
79
  targetType: T
79
80
  taskName: string
80
81
  id: string
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.5.633",
4
+ "version": "1.5.634",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",
@@ -18,7 +18,7 @@
18
18
  "@vueuse/core": "10.1.2",
19
19
  "@vueuse/nuxt": "10.1.2",
20
20
  "bfg-nuxt-3-graph": "1.0.27",
21
- "bfg-uikit": "1.0.531",
21
+ "bfg-uikit": "1.0.533",
22
22
  "eslint-config-prettier": "^8.5.0",
23
23
  "eslint-plugin-myrules": "file:./eslint",
24
24
  "nuxt": "3.11.2",
@@ -45,8 +45,8 @@ export const recentTasks = (
45
45
  execution = '--'
46
46
  queuedFor = 0
47
47
  startTime = Date.now() / 1000 + ''
48
- // Обрабатываем данные когда задачка в работе
49
- } else if (task.status === 1) {
48
+ // Обрабатываем данные когда задачка в работе или когда в статусе retry
49
+ } else if (task.status === 1 || task.status === 5) {
50
50
  completion = '--'
51
51
  execution = '--'
52
52
  }
@@ -86,6 +86,9 @@ export const recentTasks = (
86
86
  break
87
87
  }
88
88
 
89
+ const targetName = task.extra.target_name || '--'
90
+ const targetType = task.extra.target_type || task.target_type
91
+
89
92
  return {
90
93
  args,
91
94
  completion,
@@ -103,7 +106,9 @@ export const recentTasks = (
103
106
  status: task.status,
104
107
  statusDetails: operations,
105
108
  target: task.target,
106
- targetType: task.target_type,
109
+ targetName,
110
+ targetType,
111
+ // targetType: task.target_type,
107
112
  taskName: task.task_name,
108
113
  id: task.id,
109
114
  zone: task.zone,