bfg-common 1.6.111 → 1.6.113

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 (89) hide show
  1. package/assets/img/icons/icons-sprite-dark-4.svg +17 -38
  2. package/assets/img/icons/icons-sprite-light-4.svg +17 -49
  3. package/assets/localization/local_be.json +4 -33
  4. package/assets/localization/local_en.json +4 -33
  5. package/assets/localization/local_hy.json +4 -33
  6. package/assets/localization/local_kk.json +4 -33
  7. package/assets/localization/local_ru.json +7 -36
  8. package/assets/localization/local_zh.json +4 -33
  9. package/components/common/configure/advancedSystemSettings/AdvancedSystemSettings.vue +17 -25
  10. package/components/common/configure/advancedSystemSettings/modals/edit/Edit.vue +4 -4
  11. package/components/common/configure/advancedSystemSettings/modals/edit/New.vue +23 -42
  12. package/components/common/configure/advancedSystemSettings/modals/edit/Old.vue +3 -5
  13. package/components/common/configure/advancedSystemSettings/tableView/TableView.vue +2 -27
  14. package/components/common/configure/advancedSystemSettings/tableView/new/New.vue +130 -60
  15. package/components/common/configure/advancedSystemSettings/tableView/new/lib/config/hostTable.ts +308 -0
  16. package/components/common/configure/advancedSystemSettings/tableView/old/Old.vue +41 -14
  17. package/components/common/configure/advancedSystemSettings/tableView/{field → old/field}/Field.vue +50 -20
  18. package/components/common/configure/advancedSystemSettings/tableView/old/field/lib/models/enums.ts +14 -0
  19. package/components/common/configure/advancedSystemSettings/tools/New.vue +3 -64
  20. package/components/common/configure/advancedSystemSettings/tools/Old.vue +2 -2
  21. package/components/common/configure/advancedSystemSettings/tools/Tools.vue +2 -2
  22. package/components/common/graph/Graph.vue +8 -19
  23. package/components/common/graph/{new/New.vue → graphNew/GraphNew.vue} +3 -3
  24. package/components/common/graph/lib/utils/renderGraph.ts +393 -0
  25. package/components/common/modals/confirmation/Confirmation.vue +0 -1
  26. package/components/common/monitor/advanced/Advanced.vue +49 -9
  27. package/components/common/monitor/advanced/graphView/GraphView.vue +12 -8
  28. package/components/common/monitor/advanced/graphView/{New.vue → GraphViewNew.vue} +1 -1
  29. package/components/common/monitor/advanced/table/Table.vue +8 -9
  30. package/components/common/monitor/advanced/table/{new/New.vue → tableNew/TableNew.vue} +5 -6
  31. package/components/common/monitor/advanced/table/{new → tableNew}/lib/config/options.ts +1 -1
  32. package/components/common/monitor/advanced/table/{old/Old.vue → tableOld/TableOld.vue} +3 -6
  33. package/components/common/monitor/advanced/tools/Tools.vue +53 -11
  34. package/components/common/monitor/advanced/tools/{New.vue → ToolsNew.vue} +0 -4
  35. package/components/common/monitor/advanced/tools/{Old.vue → ToolsOld.vue} +0 -2
  36. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +569 -569
  37. package/components/common/monitor/advanced/tools/chartOptionsModal/{notification/Notification.vue → Notification.vue} +6 -8
  38. package/components/common/monitor/advanced/tools/chartOptionsModal/{notification/New.vue → NotificationNew.vue} +1 -1
  39. package/components/common/monitor/advanced/tools/chartOptionsModal/{notification/Old.vue → NotificationOld.vue} +5 -1
  40. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/Actions.vue +13 -9
  41. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/{New.vue → ActionsNew.vue} +3 -6
  42. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +44 -12
  43. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/Table.vue +7 -8
  44. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{new/New.vue → tableNew/TableNew.vue} +2 -2
  45. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{new → tableNew}/config/tableData.ts +1 -1
  46. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{old/Old.vue → tableOld/TableOld.vue} +1 -1
  47. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{old → tableOld}/lib/config/tableConfig.ts +1 -1
  48. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +36 -9
  49. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/Object.vue +9 -8
  50. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/{new/New.vue → objectNew/ObjectNew.vue} +2 -2
  51. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/{new → objectNew}/lib/config/tableData.ts +1 -1
  52. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/{old/Old.vue → objectOld/ObjectOld.vue} +2 -1
  53. package/components/common/monitor/advanced/tools/chartOptionsModal/metrics/Metrics.vue +7 -8
  54. package/components/common/monitor/overview/OverviewNew.vue +1 -1
  55. package/components/common/monitor/overview/OverviewOld.vue +1 -1
  56. package/components/common/monitor/overview/filters/FiltersNew.vue +0 -1
  57. package/components/common/monitor/overview/filters/FiltersOld.vue +0 -1
  58. package/components/common/pages/hardwareHealth/historyTestimony/GraphNew.vue +2 -2
  59. package/lib/models/interfaces.ts +0 -1
  60. package/package.json +1 -1
  61. package/components/common/configure/advancedSystemSettings/New.vue +0 -37
  62. package/components/common/configure/advancedSystemSettings/Old.vue +0 -36
  63. package/components/common/configure/advancedSystemSettings/tableView/field/New.vue +0 -88
  64. package/components/common/configure/advancedSystemSettings/tableView/field/Old.vue +0 -73
  65. package/components/common/configure/advancedSystemSettings/tableView/field/lib/config/index.ts +0 -10
  66. package/components/common/configure/advancedSystemSettings/tableView/field/lib/models/enums.ts +0 -14
  67. package/components/common/configure/advancedSystemSettings/tableView/new/lib/config/index.ts +0 -112
  68. /package/components/common/graph/{Old.vue → GraphOld.vue} +0 -0
  69. /package/components/common/graph/{new → graphNew}/EmptyBlock.vue +0 -0
  70. /package/components/common/graph/{new → graphNew}/lib/models/enums.ts +0 -0
  71. /package/components/common/monitor/advanced/{New.vue → AdvancedNew.vue} +0 -0
  72. /package/components/common/monitor/advanced/{Old.vue → AdvancedOld.vue} +0 -0
  73. /package/components/common/monitor/advanced/graphView/{Old.vue → GraphViewOld.vue} +0 -0
  74. /package/components/common/monitor/advanced/table/{new → tableNew}/lib/utils/constructBody.ts +0 -0
  75. /package/components/common/monitor/advanced/table/{old → tableOld}/lib/config/performanceDatatable.ts +0 -0
  76. /package/components/common/monitor/advanced/tools/chartOptionsModal/{New.vue → ChartOptionsModalNew.vue} +0 -0
  77. /package/components/common/monitor/advanced/tools/chartOptionsModal/{Old.vue → ChartOptionsModalOld.vue} +0 -0
  78. /package/components/common/monitor/advanced/tools/chartOptionsModal/actions/{Old.vue → ActionsOld.vue} +0 -0
  79. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/{New.vue → CountersNew.vue} +0 -0
  80. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/{Old.vue → CountersOld.vue} +0 -0
  81. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{new → tableNew}/config/options.ts +0 -0
  82. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{new → tableNew}/utils/constructTable.ts +0 -0
  83. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/{old → tableOld}/lib/models/types.ts +0 -0
  84. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/{New.vue → TimespanNew.vue} +0 -0
  85. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/{Old.vue → TimespanOld.vue} +0 -0
  86. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/{new → objectNew}/lib/config/options.ts +0 -0
  87. /package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/{new → objectNew}/lib/utils/constructTable.ts +0 -0
  88. /package/components/common/monitor/advanced/tools/chartOptionsModal/metrics/{New.vue → MetricsNew.vue} +0 -0
  89. /package/components/common/monitor/advanced/tools/chartOptionsModal/metrics/{Old.vue → MetricsOld.vue} +0 -0
@@ -1,569 +1,569 @@
1
- <template>
2
- <common-monitor-advanced-tools-chart-options-modal-new
3
- v-if="isNewView"
4
- v-model:selected-rows="selectedRows"
5
- v-model:selected-metric-local="selectedMetricLocal"
6
- v-model:local-period-type="localPeriodType"
7
- v-model:local-custom-time="localCustomTime"
8
- v-model:selected-chart-type-local="selectedChartTypeLocal"
9
- v-model:timespan-type="timespanType"
10
- v-model:unit-count="unitCount"
11
- :type="props.type"
12
- :language="props.language"
13
- :options-names="optionsNames"
14
- :local-selected-chart-option-name="localSelectedChartOptionName"
15
- :custom-date-from="props.customDateFrom"
16
- :custom-date-to="props.customDateTo"
17
- :custom-time-from="props.customTimeFrom"
18
- :custom-time-to="props.customTimeTo"
19
- :total-cores="props.totalCores"
20
- :hostId="props.hostId"
21
- :objects-loading="props.objectsLoading"
22
- :objects-data="props.objectsData"
23
- :valid-date-end="props.validDateEnd"
24
- :is-disabled-submit="isDisabledSubmit"
25
- :is-show-alerts="isShowAlerts"
26
- :alerts="alerts"
27
- :metrics-items="metricsItems"
28
- :local-selected-counters-keys="localSelectedCountersKeys"
29
- :local-selected-chart-type="selectedChartTypeLocal"
30
- :local-selected-timespan-type="localSelectedTimespanType"
31
- :local-units-count="localUnitsCount"
32
- :selected-metrics-keys="selectedMetricsKeys"
33
- :error-last-input="errorLastInput"
34
- :error-date-from="errorDateFrom"
35
- :error-time-from="errorTimeFrom"
36
- :error-date-to="errorDateTo"
37
- :error-time-to="errorTimeTo"
38
- :selected-node-name="props.selectedNodeName"
39
- :project="props.project"
40
- :power-data="props.powerData"
41
- :temperature-data="props.temperatureData"
42
- :current-selected-objects="localSelectedObjects"
43
- @hide-main-modal="onHideMainModal"
44
- @submit-main-modal="onSubmitMainModal"
45
- @remove-alerts="onRemoveAlerts"
46
- @save-options="onSaveOptions"
47
- @check-validations="onCheckValidations"
48
- @select-local-option-name="onSelectLocalOptionName"
49
- @delete-chart-name="onDeleteChartName"
50
- @update-custom-date-from="onUpdateCustomDateFrom"
51
- @update-custom-date-to="onUpdateCustomDateTo"
52
- @update-custom-time-from="onUpdateCustomTimeFrom"
53
- @update-custom-time-to="onUpdateCustomTimeTo"
54
- @local-selected-objects="localSelectedObjects = $event"
55
- />
56
- <common-monitor-advanced-tools-chart-options-modal-old
57
- v-else
58
- v-model:selected-rows="selectedRows"
59
- v-model:selected-metric-local="selectedMetricLocal"
60
- v-model:local-period-type="localPeriodType"
61
- v-model:local-custom-time="localCustomTime"
62
- v-model:selected-chart-type-local="selectedChartTypeLocal"
63
- v-model:timespan-type="timespanType"
64
- v-model:unit-count="unitCount"
65
- :type="props.type"
66
- :language="props.language"
67
- :options-names="optionsNames"
68
- :local-selected-chart-option-name="localSelectedChartOptionName"
69
- :custom-date-from="props.customDateFrom"
70
- :custom-date-to="props.customDateTo"
71
- :custom-time-from="props.customTimeFrom"
72
- :custom-time-to="props.customTimeTo"
73
- :total-cores="props.totalCores"
74
- :hostId="props.hostId"
75
- :objects-loading="props.objectsLoading"
76
- :objects-data="props.objectsData"
77
- :valid-date-end="props.validDateEnd"
78
- :is-disabled-submit="isDisabledSubmit"
79
- :is-show-alerts="isShowAlerts"
80
- :alerts="alerts"
81
- :metrics-items="metricsItems"
82
- :local-selected-counters-keys="localSelectedCountersKeys"
83
- :local-selected-chart-type="localSelectedChartType"
84
- :local-selected-timespan-type="localSelectedTimespanType"
85
- :local-units-count="localUnitsCount"
86
- :selected-metrics-keys="selectedMetricsKeys"
87
- :project="props.project"
88
- :power-data="props.powerData"
89
- :temperature-data="props.temperatureData"
90
- :current-selected-objects="localSelectedObjects"
91
- @hide-main-modal="onHideMainModal"
92
- @submit-main-modal="onSubmitMainModal"
93
- @remove-alerts="onRemoveAlerts"
94
- @save-options="onSaveOptions"
95
- @check-validations="onCheckValidations"
96
- @select-local-option-name="onSelectLocalOptionName"
97
- @delete-chart-name="onDeleteChartName"
98
- @update-custom-date-from="onUpdateCustomDateFrom"
99
- @update-custom-date-to="onUpdateCustomDateTo"
100
- @update-custom-time-from="onUpdateCustomTimeFrom"
101
- @update-custom-time-to="onUpdateCustomTimeTo"
102
- @local-selected-objects="localSelectedObjects = $event"
103
- />
104
- </template>
105
-
106
- <script setup lang="ts">
107
- import type { UI_I_Localization } from '~/lib/models/interfaces'
108
- import type { UI_T_AdvancedType } from '~/components/common/monitor/advanced/lib/models/types'
109
- import type { UI_I_VerticalTabs } from '~/components/atoms/tabs/lib/models/interfaces'
110
- import type { UI_I_AdvancedCounterItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/interfaces'
111
- import type {
112
- UI_T_ChartHost,
113
- UI_T_ChartVm,
114
- } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/types'
115
- import type { UI_I_OptionsForm } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/interfaces'
116
- import type { UI_I_ObjectItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/models/interfaces'
117
- import type { UI_T_Project } from '~/lib/models/types'
118
- import { metricsFunc } from '~/components/common/monitor/advanced/tools/chartOptionsModal/metrics/lib/config/optionsMetrics'
119
- import {
120
- getCurrentOptionsStorageFunc,
121
- removeSelectedOptionsFromStorageFunc,
122
- getSelectedOptionsValueFromStorageFunc,
123
- } from '~/components/common/monitor/advanced/tools/lib/config/advancedToolbar'
124
- import { checkDateFunc } from '~/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker'
125
- import { getValidDateByOptionFunc } from '~/components/common/monitor/lib/config/getValidDateByOption'
126
- import { checkIsDisabledSubmit } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/utils/checkSubmit'
127
-
128
- const props = withDefaults(
129
- defineProps<{
130
- type: UI_T_AdvancedType
131
- language: string
132
- selectedCountersKeys: number[]
133
- selectedMetric: UI_T_ChartHost | UI_T_ChartVm
134
- selectedChartType: string
135
- selectedTimespanType: string
136
- unitsCount: number
137
- periodType: string
138
- selectedCustomTime: string
139
- selectedChartOptionName: string
140
- customDateFrom: string
141
- customDateTo: string
142
- customTimeFrom: string
143
- customTimeTo: string
144
- totalCores: number
145
- hostId: string
146
- project: UI_T_Project
147
- objectsLoading: boolean
148
- objectsData: UI_I_ObjectItem[]
149
- validDateEnd: number
150
- formatDate: string
151
- powerData: UI_I_AdvancedCounterItem[]
152
- temperatureData: UI_I_AdvancedCounterItem[]
153
- selectedNodeName?: string
154
- }>(),
155
- {
156
- selectedNodeName: undefined,
157
- }
158
- )
159
-
160
- const emits = defineEmits<{
161
- (event: 'hide'): void
162
- (event: 'select-row', value: UI_I_AdvancedCounterItem[]): void
163
- (event: 'select-metric-local', value: string): void
164
- (event: 'update-chart-type', value: string): void
165
- (event: 'update-timespan-type', value: string): void
166
- (event: 'update-unit-count', value: number): void
167
- (event: 'update-period-type', value: string): void
168
- (event: 'update-custom-time', value: string): void
169
- (event: 'delete-option'): void
170
- (event: 'save-option-name'): void
171
- (event: 'submit-options', value: UI_I_OptionsForm): void
172
- (event: 'select-objects', value: string): void
173
- }>()
174
-
175
- const { $store }: any = useNuxtApp()
176
-
177
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
178
-
179
- const routeType = '' + useRoute().params.type
180
- const routeId = '' + useRoute().params.id
181
-
182
- const localization = computed<UI_I_Localization>(() => useLocal())
183
-
184
- const localCustomDateFrom = ref<string>('')
185
- const onUpdateCustomDateFrom = (value: string): void => {
186
- localCustomDateFrom.value = value
187
- }
188
- const localCustomDateTo = ref<string>('')
189
- const onUpdateCustomDateTo = (value: string): void => {
190
- localCustomDateTo.value = value
191
- }
192
- const localCustomTimeFrom = ref<string>('')
193
- const onUpdateCustomTimeFrom = (value: string): void => {
194
- localCustomTimeFrom.value = value
195
- }
196
- const localCustomTimeTo = ref<string>('')
197
- const onUpdateCustomTimeTo = (value: string): void => {
198
- localCustomTimeTo.value = value
199
- }
200
-
201
- const metricsItems = computed<UI_I_VerticalTabs[]>(() =>
202
- metricsFunc(localization.value, props.type, props.project)
203
- )
204
- const selectedMetricLocal = ref<UI_T_ChartHost | UI_T_ChartVm>(
205
- (props.selectedMetric || '' + metricsItems.value[0]?.value) as
206
- | UI_T_ChartHost
207
- | UI_T_ChartVm
208
- )
209
-
210
- const localSelectedCountersKeys = ref<number[]>([])
211
- watch(
212
- () => props.selectedCountersKeys,
213
- (newValue) => {
214
- localSelectedCountersKeys.value = newValue
215
- },
216
- { immediate: true, deep: true }
217
- )
218
-
219
- const localSelectedChartType = ref<string>('')
220
- watch(
221
- () => props.selectedChartType,
222
- (newValue) => {
223
- localSelectedChartType.value = newValue
224
- },
225
- { immediate: true }
226
- )
227
-
228
- const localSelectedTimespanType = ref<string>('')
229
- watch(
230
- () => props.selectedTimespanType,
231
- (newValue) => {
232
- localSelectedTimespanType.value = newValue
233
- },
234
- { immediate: true }
235
- )
236
-
237
- const localUnitsCount = ref<number>(0)
238
- watch(
239
- () => props.unitsCount,
240
- (newValue) => {
241
- localUnitsCount.value = newValue
242
- },
243
- { immediate: true }
244
- )
245
-
246
- const localPeriodType = ref<string>('')
247
- watch(
248
- () => props.periodType,
249
- (newValue) => {
250
- localPeriodType.value = newValue
251
- },
252
- { immediate: true }
253
- )
254
-
255
- const localCustomTime = ref<string>('')
256
- watch(
257
- () => props.selectedCustomTime,
258
- (newValue) => {
259
- localCustomTime.value = newValue
260
- },
261
- { immediate: true }
262
- )
263
-
264
- const isShowAlerts = ref<boolean>(false)
265
- const alerts = ref<string[]>([])
266
-
267
- const onRemoveAlerts = (): void => {
268
- isShowAlerts.value = false
269
- alerts.value = []
270
- }
271
-
272
- const onHideMainModal = (): void => {
273
- emits('hide')
274
- }
275
-
276
- const selectedRows = ref<UI_I_AdvancedCounterItem[]>([])
277
- const selectedMetricsKeys = computed<number[]>(() =>
278
- selectedRows.value.map((item) => item.id)
279
- )
280
- const selectedChartTypeLocal = ref<string>('')
281
-
282
- const errorLastInput = ref<string>('')
283
- const errorDateFrom = ref<string>('')
284
- const errorTimeFrom = ref<string>('')
285
- const errorDateTo = ref<string>('')
286
- const errorTimeTo = ref<string>('')
287
-
288
- const onCheckValidations = (): boolean => {
289
- // TODO Проверить какой дата будет приходить про пустом значение и добавить тексты для ошибок
290
- // console.log(
291
- // localCustomDateFrom.value,
292
- // localCustomDateTo.value,
293
- // localCustomTimeFrom.value,
294
- // localCustomTimeTo.value,
295
- // )
296
- if (
297
- isNewView.value &&
298
- timespanType.value === 'custom_interval' &&
299
- localPeriodType.value === 'last'
300
- ) {
301
- if (String(unitCount.value) === '') {
302
- errorLastInput.value = localization.value.common.fieldRequired
303
- return false
304
- } else if (!/^\d+$/.test(String(unitCount.value))) {
305
- errorLastInput.value = localization.value.common.fieldRequired
306
- return false
307
- }
308
- }
309
-
310
- const checkDateResult = checkDateFunc(
311
- localization.value,
312
- localCustomDateFrom.value,
313
- localCustomDateTo.value,
314
- localCustomTimeFrom.value,
315
- localCustomTimeTo.value,
316
- props.validDateEnd,
317
- props.formatDate
318
- )
319
-
320
- if (isDisabledSubmit.value) {
321
- alerts.value = [localization.value.inventoryMonitor.noCountersSelected]
322
- isShowAlerts.value = true
323
- return false
324
- } else if (
325
- timespanType.value === 'custom_interval' &&
326
- localPeriodType.value === 'period' &&
327
- checkDateResult !== '' &&
328
- typeof checkDateResult === 'string'
329
- ) {
330
- alerts.value = [checkDateResult]
331
- isShowAlerts.value = true
332
- return false
333
- }
334
-
335
- return true
336
- }
337
-
338
- const localSelectedChartOptionName = ref<string>('')
339
- watch(
340
- () => props.selectedChartOptionName,
341
- (newValue) => {
342
- localSelectedChartOptionName.value = newValue
343
- },
344
- { immediate: true }
345
- )
346
-
347
- const selectedLocalOptionName = ref<string>('')
348
-
349
- const localSelectedObjects = ref<string>('')
350
-
351
- const currentFieldsByArray = (data: UI_I_AdvancedCounterItem[]): string => {
352
- const result: string[] = []
353
-
354
- data.forEach((item) => {
355
- if (props.type === 'vm' && selectedMetricLocal.value === 'network') {
356
- const currentFields = []
357
- const objectArray = localSelectedObjects.value.split(', ')
358
- if (objectArray.length) {
359
- objectArray.forEach((item2) => {
360
- currentFields.push(`${item.nameEn} ${item2}`)
361
- })
362
- } else currentFields.push(item.nameEn)
363
-
364
- result.push(currentFields.join(', '))
365
- } else result.push(item.nameEn)
366
- })
367
-
368
- return result.join(',')
369
- }
370
-
371
- const onSubmitMainModal = (): void => {
372
- if (!onCheckValidations()) return
373
-
374
- if (['select_options', 'default'].includes(selectedLocalOptionName.value))
375
- selectedLocalOptionName.value = 'custom'
376
-
377
- onSaveOptions(selectedLocalOptionName.value)
378
-
379
- // const currentFields =
380
- // localSelectedObjects.value || currentFieldsByArray(selectedRows.value)
381
-
382
- const currentFields = currentFieldsByArray(selectedRows.value)
383
-
384
- const validPeriod = getValidDateByOptionFunc(
385
- timespanType.value,
386
- null,
387
- unitCount.value,
388
- localCustomTime.value
389
- ).map((item) => Math.round(item / 1000))
390
-
391
- if (
392
- timespanType.value === 'custom_interval' &&
393
- localPeriodType.value === 'period'
394
- ) {
395
- const checkDateResult = checkDateFunc(
396
- localization.value,
397
- localCustomDateFrom.value,
398
- localCustomDateTo.value,
399
- localCustomTimeFrom.value,
400
- localCustomTimeTo.value,
401
- props.validDateEnd,
402
- props.formatDate
403
- )
404
- if (Array.isArray(checkDateResult)) {
405
- validPeriod[0] = Math.round(checkDateResult[0] / 1000)
406
- validPeriod[1] = Math.round(checkDateResult[1] / 1000)
407
- }
408
- }
409
-
410
- const savedObject = {
411
- fields: currentFields,
412
- optionName: selectedLocalOptionName.value,
413
- metric: selectedMetricLocal.value,
414
- counters: selectedRows.value,
415
- timespanType: timespanType.value,
416
- periodType: localPeriodType.value,
417
- unitCount: unitCount.value,
418
- localTimespanType: localCustomTime.value,
419
- dateFrom: localCustomDateFrom.value,
420
- timeFrom: localCustomTimeFrom.value,
421
- dateTo: localCustomDateTo.value,
422
- timeTo: localCustomTimeTo.value,
423
- chartType: selectedChartTypeLocal.value,
424
- objects: localSelectedObjects.value,
425
- periodValue: validPeriod,
426
- }
427
-
428
- emits('submit-options', savedObject)
429
- onHideMainModal()
430
- }
431
-
432
- const timespanType = ref<string>('')
433
- const unitCount = ref<number>(1)
434
-
435
- const optionsNames = ref<string[]>([])
436
-
437
- const onSaveOptions = (name: string): void => {
438
- const counters = selectedRows.value.map((item) => {
439
- return {
440
- id: item.id,
441
- name: item.nameEn,
442
- }
443
- })
444
- let chartType = 'line_graph'
445
- if (selectedChartTypeLocal.value === 'spline') chartType = 'line_graph'
446
- else if (selectedChartTypeLocal.value === 'area') chartType = 'stacked_graph'
447
-
448
- const saveOptionsData = {
449
- routeType,
450
- chartType,
451
- counters,
452
- metric: selectedMetricLocal.value,
453
- objects: localSelectedObjects.value,
454
- validShowName: name,
455
- nodeId: routeId,
456
- timespan: {
457
- periodType: localPeriodType.value,
458
- units: localCustomTime.value,
459
- unitsCount: unitCount.value,
460
- type: timespanType.value,
461
- },
462
- }
463
- const prefix = props.project === 'sphere'
464
- useLocalStorage(`ChartOptionsAdvanced${name}`, saveOptionsData, prefix)
465
- optionsNames.value = getCurrentOptionsStorageFunc(props.project)
466
- // localSelectedChartOptionName.value = name
467
- emits('save-option-name')
468
- }
469
-
470
- const setSelectOptions = (): void => {
471
- selectedMetricLocal.value =
472
- props.selectedMetric || metricsItems.value[0]?.value
473
- localSelectedCountersKeys.value = props.selectedCountersKeys
474
- localSelectedChartType.value = props.selectedChartType
475
- localSelectedTimespanType.value = props.selectedTimespanType
476
- localUnitsCount.value = props.unitsCount
477
- localPeriodType.value = props.periodType
478
- localCustomTime.value = props.selectedCustomTime
479
- }
480
-
481
- const setDefaultOptions = (): void => {
482
- selectedMetricLocal.value = metricsItems.value[0]?.value
483
- localSelectedCountersKeys.value = []
484
- localSelectedChartType.value = 'spline'
485
- localSelectedTimespanType.value = ''
486
- localUnitsCount.value = 0
487
- localPeriodType.value = ''
488
- localCustomTime.value = ''
489
- }
490
-
491
- const setCustomOptions = (name: string): void => {
492
- const selectedValue = getSelectedOptionsValueFromStorageFunc(
493
- name,
494
- props.project
495
- )
496
-
497
- if (selectedValue.routeType !== routeType) return
498
-
499
- let currentChartType = ''
500
- if (selectedValue.chartType === 'line_graph') currentChartType = 'spline'
501
- else if (selectedValue.chartType === 'stacked_graph')
502
- currentChartType = 'area'
503
-
504
- selectedMetricLocal.value = selectedValue.metric
505
- localSelectedCountersKeys.value = selectedValue.counters.map(
506
- (item) => item.id
507
- )
508
- localSelectedChartType.value = currentChartType
509
- localSelectedTimespanType.value = selectedValue.timespan.type
510
- localUnitsCount.value = selectedValue.timespan.unitsCount
511
- localPeriodType.value = selectedValue.timespan.periodType
512
- localCustomTime.value = selectedValue.timespan.units
513
- localSelectedObjects.value = selectedValue.objects
514
- }
515
-
516
- const onSelectLocalOptionName = (name: string): void => {
517
- selectedLocalOptionName.value = name
518
-
519
- if (optionsNames.value.includes(name)) setCustomOptions(name)
520
- else if (name === 'default') {
521
- localSelectedObjects.value = ''
522
- setDefaultOptions()
523
- } else if (name === 'select_options') {
524
- localSelectedObjects.value = ''
525
- setSelectOptions()
526
- }
527
- }
528
-
529
- watch(
530
- localSelectedChartOptionName,
531
- (newValue) => {
532
- if (!newValue) return
533
-
534
- setCustomOptions(newValue)
535
- },
536
- { immediate: true }
537
- )
538
-
539
- const onDeleteChartName = (name: string): void => {
540
- removeSelectedOptionsFromStorageFunc(name, props.project)
541
- optionsNames.value = getCurrentOptionsStorageFunc(props.project)
542
- setSelectOptions()
543
- emits('delete-option')
544
- }
545
-
546
- const isDisabledSubmit = computed<boolean>(() =>
547
- checkIsDisabledSubmit(
548
- props.type,
549
- selectedMetricLocal.value,
550
- selectedRows.value,
551
- localSelectedObjects.value,
552
- props.project
553
- )
554
- )
555
-
556
- watch(
557
- selectedMetricLocal,
558
- (newValue) => {
559
- emits('select-metric-local', newValue)
560
- },
561
- { immediate: true }
562
- )
563
-
564
- onMounted(() => {
565
- optionsNames.value = getCurrentOptionsStorageFunc(props.project)
566
- })
567
- </script>
568
-
569
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-monitor-advanced-tools-chart-options-modal-new
3
+ v-if="isNewView"
4
+ v-model:selected-rows="selectedRows"
5
+ v-model:selected-metric-local="selectedMetricLocal"
6
+ v-model:local-period-type="localPeriodType"
7
+ v-model:local-custom-time="localCustomTime"
8
+ v-model:selected-chart-type-local="selectedChartTypeLocal"
9
+ v-model:timespan-type="timespanType"
10
+ v-model:unit-count="unitCount"
11
+ :type="props.type"
12
+ :language="props.language"
13
+ :options-names="optionsNames"
14
+ :local-selected-chart-option-name="localSelectedChartOptionName"
15
+ :custom-date-from="props.customDateFrom"
16
+ :custom-date-to="props.customDateTo"
17
+ :custom-time-from="props.customTimeFrom"
18
+ :custom-time-to="props.customTimeTo"
19
+ :total-cores="props.totalCores"
20
+ :hostId="props.hostId"
21
+ :objects-loading="props.objectsLoading"
22
+ :objects-data="props.objectsData"
23
+ :valid-date-end="props.validDateEnd"
24
+ :is-disabled-submit="isDisabledSubmit"
25
+ :is-show-alerts="isShowAlerts"
26
+ :alerts="alerts"
27
+ :metrics-items="metricsItems"
28
+ :local-selected-counters-keys="localSelectedCountersKeys"
29
+ :local-selected-chart-type="selectedChartTypeLocal"
30
+ :local-selected-timespan-type="localSelectedTimespanType"
31
+ :local-units-count="localUnitsCount"
32
+ :selected-metrics-keys="selectedMetricsKeys"
33
+ :error-last-input="errorLastInput"
34
+ :error-date-from="errorDateFrom"
35
+ :error-time-from="errorTimeFrom"
36
+ :error-date-to="errorDateTo"
37
+ :error-time-to="errorTimeTo"
38
+ :selected-node-name="props.selectedNodeName"
39
+ :project="props.project"
40
+ :power-data="props.powerData"
41
+ :temperature-data="props.temperatureData"
42
+ :current-selected-objects="localSelectedObjects"
43
+ @hide-main-modal="onHideMainModal"
44
+ @submit-main-modal="onSubmitMainModal"
45
+ @remove-alerts="onRemoveAlerts"
46
+ @save-options="onSaveOptions"
47
+ @check-validations="onCheckValidations"
48
+ @select-local-option-name="onSelectLocalOptionName"
49
+ @delete-chart-name="onDeleteChartName"
50
+ @update-custom-date-from="onUpdateCustomDateFrom"
51
+ @update-custom-date-to="onUpdateCustomDateTo"
52
+ @update-custom-time-from="onUpdateCustomTimeFrom"
53
+ @update-custom-time-to="onUpdateCustomTimeTo"
54
+ @local-selected-objects="localSelectedObjects = $event"
55
+ />
56
+ <common-monitor-advanced-tools-chart-options-modal-old
57
+ v-else
58
+ v-model:selected-rows="selectedRows"
59
+ v-model:selected-metric-local="selectedMetricLocal"
60
+ v-model:local-period-type="localPeriodType"
61
+ v-model:local-custom-time="localCustomTime"
62
+ v-model:selected-chart-type-local="selectedChartTypeLocal"
63
+ v-model:timespan-type="timespanType"
64
+ v-model:unit-count="unitCount"
65
+ :type="props.type"
66
+ :language="props.language"
67
+ :options-names="optionsNames"
68
+ :local-selected-chart-option-name="localSelectedChartOptionName"
69
+ :custom-date-from="props.customDateFrom"
70
+ :custom-date-to="props.customDateTo"
71
+ :custom-time-from="props.customTimeFrom"
72
+ :custom-time-to="props.customTimeTo"
73
+ :total-cores="props.totalCores"
74
+ :hostId="props.hostId"
75
+ :objects-loading="props.objectsLoading"
76
+ :objects-data="props.objectsData"
77
+ :valid-date-end="props.validDateEnd"
78
+ :is-disabled-submit="isDisabledSubmit"
79
+ :is-show-alerts="isShowAlerts"
80
+ :alerts="alerts"
81
+ :metrics-items="metricsItems"
82
+ :local-selected-counters-keys="localSelectedCountersKeys"
83
+ :local-selected-chart-type="localSelectedChartType"
84
+ :local-selected-timespan-type="localSelectedTimespanType"
85
+ :local-units-count="localUnitsCount"
86
+ :selected-metrics-keys="selectedMetricsKeys"
87
+ :project="props.project"
88
+ :power-data="props.powerData"
89
+ :temperature-data="props.temperatureData"
90
+ :current-selected-objects="localSelectedObjects"
91
+ @hide-main-modal="onHideMainModal"
92
+ @submit-main-modal="onSubmitMainModal"
93
+ @remove-alerts="onRemoveAlerts"
94
+ @save-options="onSaveOptions"
95
+ @check-validations="onCheckValidations"
96
+ @select-local-option-name="onSelectLocalOptionName"
97
+ @delete-chart-name="onDeleteChartName"
98
+ @update-custom-date-from="onUpdateCustomDateFrom"
99
+ @update-custom-date-to="onUpdateCustomDateTo"
100
+ @update-custom-time-from="onUpdateCustomTimeFrom"
101
+ @update-custom-time-to="onUpdateCustomTimeTo"
102
+ @local-selected-objects="localSelectedObjects = $event"
103
+ />
104
+ </template>
105
+
106
+ <script setup lang="ts">
107
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
108
+ import type { UI_T_AdvancedType } from '~/components/common/monitor/advanced/lib/models/types'
109
+ import type { UI_I_VerticalTabs } from '~/components/atoms/tabs/lib/models/interfaces'
110
+ import type { UI_I_AdvancedCounterItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/interfaces'
111
+ import type {
112
+ UI_T_ChartHost,
113
+ UI_T_ChartVm,
114
+ } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/types'
115
+ import type { UI_I_OptionsForm } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/interfaces'
116
+ import type { UI_I_ObjectItem } from '~/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/lib/models/interfaces'
117
+ import type { UI_T_Project } from '~/lib/models/types'
118
+ import { metricsFunc } from '~/components/common/monitor/advanced/tools/chartOptionsModal/metrics/lib/config/optionsMetrics'
119
+ import {
120
+ getCurrentOptionsStorageFunc,
121
+ removeSelectedOptionsFromStorageFunc,
122
+ getSelectedOptionsValueFromStorageFunc,
123
+ } from '~/components/common/monitor/advanced/tools/lib/config/advancedToolbar'
124
+ import { checkDateFunc } from '~/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker'
125
+ import { getValidDateByOptionFunc } from '~/components/common/monitor/lib/config/getValidDateByOption'
126
+ import { checkIsDisabledSubmit } from '~/components/common/monitor/advanced/tools/chartOptionsModal/lib/utils/checkSubmit'
127
+
128
+ const props = withDefaults(
129
+ defineProps<{
130
+ type: UI_T_AdvancedType
131
+ language: string
132
+ selectedCountersKeys: number[]
133
+ selectedMetric: UI_T_ChartHost | UI_T_ChartVm
134
+ selectedChartType: string
135
+ selectedTimespanType: string
136
+ unitsCount: number
137
+ periodType: string
138
+ selectedCustomTime: string
139
+ selectedChartOptionName: string
140
+ customDateFrom: string
141
+ customDateTo: string
142
+ customTimeFrom: string
143
+ customTimeTo: string
144
+ totalCores: number
145
+ hostId: string
146
+ project: UI_T_Project
147
+ objectsLoading: boolean
148
+ objectsData: UI_I_ObjectItem[]
149
+ validDateEnd: number
150
+ formatDate: string
151
+ powerData: UI_I_AdvancedCounterItem[]
152
+ temperatureData: UI_I_AdvancedCounterItem[]
153
+ selectedNodeName?: string
154
+ }>(),
155
+ {
156
+ selectedNodeName: undefined,
157
+ }
158
+ )
159
+
160
+ const emits = defineEmits<{
161
+ (event: 'hide'): void
162
+ (event: 'select-row', value: UI_I_AdvancedCounterItem[]): void
163
+ (event: 'select-metric-local', value: string): void
164
+ (event: 'update-chart-type', value: string): void
165
+ (event: 'update-timespan-type', value: string): void
166
+ (event: 'update-unit-count', value: number): void
167
+ (event: 'update-period-type', value: string): void
168
+ (event: 'update-custom-time', value: string): void
169
+ (event: 'delete-option'): void
170
+ (event: 'save-option-name'): void
171
+ (event: 'submit-options', value: UI_I_OptionsForm): void
172
+ (event: 'select-objects', value: string): void
173
+ }>()
174
+
175
+ const { $store }: any = useNuxtApp()
176
+
177
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
178
+
179
+ const routeType = '' + useRoute().params.type
180
+ const routeId = '' + useRoute().params.id
181
+
182
+ const localization = computed<UI_I_Localization>(() => useLocal())
183
+
184
+ const localCustomDateFrom = ref<string>('')
185
+ const onUpdateCustomDateFrom = (value: string): void => {
186
+ localCustomDateFrom.value = value
187
+ }
188
+ const localCustomDateTo = ref<string>('')
189
+ const onUpdateCustomDateTo = (value: string): void => {
190
+ localCustomDateTo.value = value
191
+ }
192
+ const localCustomTimeFrom = ref<string>('')
193
+ const onUpdateCustomTimeFrom = (value: string): void => {
194
+ localCustomTimeFrom.value = value
195
+ }
196
+ const localCustomTimeTo = ref<string>('')
197
+ const onUpdateCustomTimeTo = (value: string): void => {
198
+ localCustomTimeTo.value = value
199
+ }
200
+
201
+ const metricsItems = computed<UI_I_VerticalTabs[]>(() =>
202
+ metricsFunc(localization.value, props.type, props.project)
203
+ )
204
+ const selectedMetricLocal = ref<UI_T_ChartHost | UI_T_ChartVm>(
205
+ (props.selectedMetric || '' + metricsItems.value[0]?.value) as
206
+ | UI_T_ChartHost
207
+ | UI_T_ChartVm
208
+ )
209
+
210
+ const localSelectedCountersKeys = ref<number[]>([])
211
+ watch(
212
+ () => props.selectedCountersKeys,
213
+ (newValue) => {
214
+ localSelectedCountersKeys.value = newValue
215
+ },
216
+ { immediate: true, deep: true }
217
+ )
218
+
219
+ const localSelectedChartType = ref<string>('')
220
+ watch(
221
+ () => props.selectedChartType,
222
+ (newValue) => {
223
+ localSelectedChartType.value = newValue
224
+ },
225
+ { immediate: true }
226
+ )
227
+
228
+ const localSelectedTimespanType = ref<string>('')
229
+ watch(
230
+ () => props.selectedTimespanType,
231
+ (newValue) => {
232
+ localSelectedTimespanType.value = newValue
233
+ },
234
+ { immediate: true }
235
+ )
236
+
237
+ const localUnitsCount = ref<number>(0)
238
+ watch(
239
+ () => props.unitsCount,
240
+ (newValue) => {
241
+ localUnitsCount.value = newValue
242
+ },
243
+ { immediate: true }
244
+ )
245
+
246
+ const localPeriodType = ref<string>('')
247
+ watch(
248
+ () => props.periodType,
249
+ (newValue) => {
250
+ localPeriodType.value = newValue
251
+ },
252
+ { immediate: true }
253
+ )
254
+
255
+ const localCustomTime = ref<string>('')
256
+ watch(
257
+ () => props.selectedCustomTime,
258
+ (newValue) => {
259
+ localCustomTime.value = newValue
260
+ },
261
+ { immediate: true }
262
+ )
263
+
264
+ const isShowAlerts = ref<boolean>(false)
265
+ const alerts = ref<string[]>([])
266
+
267
+ const onRemoveAlerts = (): void => {
268
+ isShowAlerts.value = false
269
+ alerts.value = []
270
+ }
271
+
272
+ const onHideMainModal = (): void => {
273
+ emits('hide')
274
+ }
275
+
276
+ const selectedRows = ref<UI_I_AdvancedCounterItem[]>([])
277
+ const selectedMetricsKeys = computed<number[]>(() =>
278
+ selectedRows.value.map((item) => item.id)
279
+ )
280
+ const selectedChartTypeLocal = ref<string>('')
281
+
282
+ const errorLastInput = ref<string>('')
283
+ const errorDateFrom = ref<string>('')
284
+ const errorTimeFrom = ref<string>('')
285
+ const errorDateTo = ref<string>('')
286
+ const errorTimeTo = ref<string>('')
287
+
288
+ const onCheckValidations = (): boolean => {
289
+ // TODO Проверить какой дата будет приходить про пустом значение и добавить тексты для ошибок
290
+ // console.log(
291
+ // localCustomDateFrom.value,
292
+ // localCustomDateTo.value,
293
+ // localCustomTimeFrom.value,
294
+ // localCustomTimeTo.value,
295
+ // )
296
+ if (
297
+ isNewView.value &&
298
+ timespanType.value === 'custom_interval' &&
299
+ localPeriodType.value === 'last'
300
+ ) {
301
+ if (String(unitCount.value) === '') {
302
+ errorLastInput.value = localization.value.common.fieldRequired
303
+ return false
304
+ } else if (!/^\d+$/.test(String(unitCount.value))) {
305
+ errorLastInput.value = localization.value.common.fieldRequired
306
+ return false
307
+ }
308
+ }
309
+
310
+ const checkDateResult = checkDateFunc(
311
+ localization.value,
312
+ localCustomDateFrom.value,
313
+ localCustomDateTo.value,
314
+ localCustomTimeFrom.value,
315
+ localCustomTimeTo.value,
316
+ props.validDateEnd,
317
+ props.formatDate
318
+ )
319
+
320
+ if (isDisabledSubmit.value) {
321
+ alerts.value = [localization.value.inventoryMonitor.noCountersSelected]
322
+ isShowAlerts.value = true
323
+ return false
324
+ } else if (
325
+ timespanType.value === 'custom_interval' &&
326
+ localPeriodType.value === 'period' &&
327
+ checkDateResult !== '' &&
328
+ typeof checkDateResult === 'string'
329
+ ) {
330
+ alerts.value = [checkDateResult]
331
+ isShowAlerts.value = true
332
+ return false
333
+ }
334
+
335
+ return true
336
+ }
337
+
338
+ const localSelectedChartOptionName = ref<string>('')
339
+ watch(
340
+ () => props.selectedChartOptionName,
341
+ (newValue) => {
342
+ localSelectedChartOptionName.value = newValue
343
+ },
344
+ { immediate: true }
345
+ )
346
+
347
+ const selectedLocalOptionName = ref<string>('')
348
+
349
+ const localSelectedObjects = ref<string>('')
350
+
351
+ const currentFieldsByArray = (data: UI_I_AdvancedCounterItem[]): string => {
352
+ const result: string[] = []
353
+
354
+ data.forEach((item) => {
355
+ if (props.type === 'vm' && selectedMetricLocal.value === 'network') {
356
+ const currentFields = []
357
+ const objectArray = localSelectedObjects.value.split(', ')
358
+ if (objectArray.length) {
359
+ objectArray.forEach((item2) => {
360
+ currentFields.push(`${item.nameEn} ${item2}`)
361
+ })
362
+ } else currentFields.push(item.nameEn)
363
+
364
+ result.push(currentFields.join(', '))
365
+ } else result.push(item.nameEn)
366
+ })
367
+
368
+ return result.join(',')
369
+ }
370
+
371
+ const onSubmitMainModal = (): void => {
372
+ if (!onCheckValidations()) return
373
+
374
+ if (['select_options', 'default'].includes(selectedLocalOptionName.value))
375
+ selectedLocalOptionName.value = 'custom'
376
+
377
+ onSaveOptions(selectedLocalOptionName.value)
378
+
379
+ // const currentFields =
380
+ // localSelectedObjects.value || currentFieldsByArray(selectedRows.value)
381
+
382
+ const currentFields = currentFieldsByArray(selectedRows.value)
383
+
384
+ const validPeriod = getValidDateByOptionFunc(
385
+ timespanType.value,
386
+ null,
387
+ unitCount.value,
388
+ localCustomTime.value
389
+ ).map((item) => Math.round(item / 1000))
390
+
391
+ if (
392
+ timespanType.value === 'custom_interval' &&
393
+ localPeriodType.value === 'period'
394
+ ) {
395
+ const checkDateResult = checkDateFunc(
396
+ localization.value,
397
+ localCustomDateFrom.value,
398
+ localCustomDateTo.value,
399
+ localCustomTimeFrom.value,
400
+ localCustomTimeTo.value,
401
+ props.validDateEnd,
402
+ props.formatDate
403
+ )
404
+ if (Array.isArray(checkDateResult)) {
405
+ validPeriod[0] = Math.round(checkDateResult[0] / 1000)
406
+ validPeriod[1] = Math.round(checkDateResult[1] / 1000)
407
+ }
408
+ }
409
+
410
+ const savedObject = {
411
+ fields: currentFields,
412
+ optionName: selectedLocalOptionName.value,
413
+ metric: selectedMetricLocal.value,
414
+ counters: selectedRows.value,
415
+ timespanType: timespanType.value,
416
+ periodType: localPeriodType.value,
417
+ unitCount: unitCount.value,
418
+ localTimespanType: localCustomTime.value,
419
+ dateFrom: localCustomDateFrom.value,
420
+ timeFrom: localCustomTimeFrom.value,
421
+ dateTo: localCustomDateTo.value,
422
+ timeTo: localCustomTimeTo.value,
423
+ chartType: selectedChartTypeLocal.value,
424
+ objects: localSelectedObjects.value,
425
+ periodValue: validPeriod,
426
+ }
427
+
428
+ emits('submit-options', savedObject)
429
+ onHideMainModal()
430
+ }
431
+
432
+ const timespanType = ref<string>('')
433
+ const unitCount = ref<number>(1)
434
+
435
+ const optionsNames = ref<string[]>([])
436
+
437
+ const onSaveOptions = (name: string): void => {
438
+ const counters = selectedRows.value.map((item) => {
439
+ return {
440
+ id: item.id,
441
+ name: item.nameEn,
442
+ }
443
+ })
444
+ let chartType = 'line_graph'
445
+ if (selectedChartTypeLocal.value === 'spline') chartType = 'line_graph'
446
+ else if (selectedChartTypeLocal.value === 'area') chartType = 'stacked_graph'
447
+
448
+ const saveOptionsData = {
449
+ routeType,
450
+ chartType,
451
+ counters,
452
+ metric: selectedMetricLocal.value,
453
+ objects: localSelectedObjects.value,
454
+ validShowName: name,
455
+ nodeId: routeId,
456
+ timespan: {
457
+ periodType: localPeriodType.value,
458
+ units: localCustomTime.value,
459
+ unitsCount: unitCount.value,
460
+ type: timespanType.value,
461
+ },
462
+ }
463
+ const prefix = props.project === 'sphere'
464
+ useLocalStorage(`ChartOptionsAdvanced${name}`, saveOptionsData, prefix)
465
+ optionsNames.value = getCurrentOptionsStorageFunc(props.project)
466
+ // localSelectedChartOptionName.value = name
467
+ emits('save-option-name')
468
+ }
469
+
470
+ const setSelectOptions = (): void => {
471
+ selectedMetricLocal.value =
472
+ props.selectedMetric || metricsItems.value[0]?.value
473
+ localSelectedCountersKeys.value = props.selectedCountersKeys
474
+ localSelectedChartType.value = props.selectedChartType
475
+ localSelectedTimespanType.value = props.selectedTimespanType
476
+ localUnitsCount.value = props.unitsCount
477
+ localPeriodType.value = props.periodType
478
+ localCustomTime.value = props.selectedCustomTime
479
+ }
480
+
481
+ const setDefaultOptions = (): void => {
482
+ selectedMetricLocal.value = metricsItems.value[0]?.value
483
+ localSelectedCountersKeys.value = []
484
+ localSelectedChartType.value = 'spline'
485
+ localSelectedTimespanType.value = ''
486
+ localUnitsCount.value = 0
487
+ localPeriodType.value = ''
488
+ localCustomTime.value = ''
489
+ }
490
+
491
+ const setCustomOptions = (name: string): void => {
492
+ const selectedValue = getSelectedOptionsValueFromStorageFunc(
493
+ name,
494
+ props.project
495
+ )
496
+
497
+ if (selectedValue.routeType !== routeType) return
498
+
499
+ let currentChartType = ''
500
+ if (selectedValue.chartType === 'line_graph') currentChartType = 'spline'
501
+ else if (selectedValue.chartType === 'stacked_graph')
502
+ currentChartType = 'area'
503
+
504
+ selectedMetricLocal.value = selectedValue.metric
505
+ localSelectedCountersKeys.value = selectedValue.counters.map(
506
+ (item) => item.id
507
+ )
508
+ localSelectedChartType.value = currentChartType
509
+ localSelectedTimespanType.value = selectedValue.timespan.type
510
+ localUnitsCount.value = selectedValue.timespan.unitsCount
511
+ localPeriodType.value = selectedValue.timespan.periodType
512
+ localCustomTime.value = selectedValue.timespan.units
513
+ localSelectedObjects.value = selectedValue.objects
514
+ }
515
+
516
+ const onSelectLocalOptionName = (name: string): void => {
517
+ selectedLocalOptionName.value = name
518
+
519
+ if (optionsNames.value.includes(name)) setCustomOptions(name)
520
+ else if (name === 'default') {
521
+ localSelectedObjects.value = ''
522
+ setDefaultOptions()
523
+ } else if (name === 'select_options') {
524
+ localSelectedObjects.value = ''
525
+ setSelectOptions()
526
+ }
527
+ }
528
+
529
+ watch(
530
+ localSelectedChartOptionName,
531
+ (newValue) => {
532
+ if (!newValue) return
533
+
534
+ setCustomOptions(newValue)
535
+ },
536
+ { immediate: true }
537
+ )
538
+
539
+ const onDeleteChartName = (name: string): void => {
540
+ removeSelectedOptionsFromStorageFunc(name, props.project)
541
+ optionsNames.value = getCurrentOptionsStorageFunc(props.project)
542
+ setSelectOptions()
543
+ emits('delete-option')
544
+ }
545
+
546
+ const isDisabledSubmit = computed<boolean>(() =>
547
+ checkIsDisabledSubmit(
548
+ props.type,
549
+ selectedMetricLocal.value,
550
+ selectedRows.value,
551
+ localSelectedObjects.value,
552
+ props.project
553
+ )
554
+ )
555
+
556
+ watch(
557
+ selectedMetricLocal,
558
+ (newValue) => {
559
+ emits('select-metric-local', newValue)
560
+ },
561
+ { immediate: true }
562
+ )
563
+
564
+ onMounted(() => {
565
+ optionsNames.value = getCurrentOptionsStorageFunc(props.project)
566
+ })
567
+ </script>
568
+
569
+ <style scoped lang="scss"></style>