bfg-common 1.5.632 → 1.5.633

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 (86) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  14. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  15. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  16. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  17. package/components/common/diagramMain/port/Port.vue +580 -580
  18. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  19. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  20. package/components/common/monitor/overview/filters/Filters.vue +169 -170
  21. package/components/common/pages/backups/DetailView.vue +52 -52
  22. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  23. package/components/common/pages/backups/modals/Modals.vue +243 -243
  24. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  25. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  26. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  27. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  28. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  29. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  30. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  31. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  32. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  33. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  34. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  35. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  36. package/components/common/select/radio/RadioGroup.vue +137 -137
  37. package/components/common/spiceConsole/Drawer.vue +420 -420
  38. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  39. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  40. package/components/common/tools/Actions.vue +207 -207
  41. package/components/common/treeView/TreeView.vue +52 -52
  42. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  43. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  44. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  45. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  46. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  47. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  48. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  49. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  50. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  51. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  52. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  53. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  54. package/components/common/wizards/common/compatibility/New.vue +99 -99
  55. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  56. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  57. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  58. package/components/common/wizards/common/steps/name/New.vue +221 -221
  59. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  60. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  61. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  62. package/components/common/wizards/datastore/add/Add.vue +228 -228
  63. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  64. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  65. package/composables/useAppVersion.ts +21 -21
  66. package/composables/useLocal.ts +6 -6
  67. package/composables/useLocalCommon.ts +39 -39
  68. package/package.json +1 -1
  69. package/plugins/console.ts +21 -21
  70. package/plugins/mouse.ts +21 -21
  71. package/plugins/panelStates.ts +70 -70
  72. package/plugins/text.ts +59 -59
  73. package/public/spice-console/application/clientgui.js +854 -854
  74. package/public/spice-console/application/packetfactory.js +211 -211
  75. package/public/spice-console/application/virtualmouse.js +147 -147
  76. package/public/spice-console/lib/images/bitmap.js +203 -203
  77. package/public/spice-console/network/spicechannel.js +440 -440
  78. package/public/spice-console/process/cursorprocess.js +128 -128
  79. package/public/spice-console/process/inputprocess.js +227 -227
  80. package/public/spice-console/process/mainprocess.js +212 -212
  81. package/public/spice-console/run.js +210 -210
  82. package/store/main/mutations.ts +7 -7
  83. package/store/main/state.ts +7 -7
  84. package/store/tasks/actions.ts +165 -165
  85. package/store/tasks/mappers/recentTasks.ts +118 -118
  86. package/store/tasks/mutations.ts +82 -82
@@ -1,79 +1,79 @@
1
- <template>
2
- <Teleport to="body">
3
- <common-layout-the-header-help-menu-about-new
4
- v-if="isNewView"
5
- :title="title"
6
- :subtitle="subtitle"
7
- :about-heading-text="aboutHeadingText"
8
- :about-desc-one="aboutDesc1"
9
- :about-desc-second="aboutDesc2"
10
- :project-name="props.projectName"
11
- :url="companyWebSitePath"
12
- @hide="emits('hide')"
13
- />
14
-
15
- <common-layout-the-header-help-menu-about-old
16
- v-else
17
- :title="title"
18
- :subtitle="subtitle"
19
- :about-heading-text="aboutHeadingText"
20
- :about-desc-one="aboutDesc1"
21
- :about-desc-second="aboutDesc2"
22
- :project-name="props.projectName"
23
- :url="companyWebSitePath"
24
- @hide="emits('hide')"
25
- />
26
- </Teleport>
27
- </template>
28
-
29
- <script lang="ts" setup>
30
- import type { UI_I_Localization } from '~/lib/models/interfaces'
31
-
32
- const props = defineProps<{
33
- version: string
34
- projectName: string
35
- }>()
36
- const emits = defineEmits<{
37
- (event: 'hide'): void
38
- }>()
39
-
40
- const localization = computed<UI_I_Localization>(() => useLocal())
41
- const { $store }: any = useNuxtApp()
42
- const config = useRuntimeConfig()
43
-
44
- const companyName = computed<string>(
45
- () => config.public[`COMPANY_NAME_${useEnvLanguage()}`]
46
- )
47
- const brandName = computed<string>(
48
- () => config.public[`TRADEMARK_${useEnvLanguage()}`]
49
- )
50
-
51
- const companyWebSitePath = ref<string>(config.public.SUPPORT_SITE)
52
-
53
- const title = computed<string>(() => `${brandName.value}® ${props.projectName}`)
54
- const subtitle = computed<string>(() =>
55
- localization.value.layout.aboutWebClientVersion
56
- .replace('{0}', props.projectName)
57
- .replace('{1}', props.version)
58
- )
59
-
60
- const aboutHeadingText = computed<string>(() =>
61
- localization.value.layout.aboutHeading.replace(
62
- '{companyName}',
63
- companyName.value
64
- ).replace(
65
- '{year}',
66
- new Date().getFullYear() + ''
67
- )
68
- )
69
-
70
- const aboutDesc = computed<string[]>(() =>
71
- localization.value.layout.aboutDesc
72
- .replaceAll('{companyName}', companyName.value)
73
- .replaceAll('{trademark}', brandName.value).split('{url}')
74
- )
75
- const aboutDesc1 = computed<string>(() => aboutDesc.value[0])
76
- const aboutDesc2 = computed<string>(() => aboutDesc.value[1])
77
-
78
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
79
- </script>
1
+ <template>
2
+ <Teleport to="body">
3
+ <common-layout-the-header-help-menu-about-new
4
+ v-if="isNewView"
5
+ :title="title"
6
+ :subtitle="subtitle"
7
+ :about-heading-text="aboutHeadingText"
8
+ :about-desc-one="aboutDesc1"
9
+ :about-desc-second="aboutDesc2"
10
+ :project-name="props.projectName"
11
+ :url="companyWebSitePath"
12
+ @hide="emits('hide')"
13
+ />
14
+
15
+ <common-layout-the-header-help-menu-about-old
16
+ v-else
17
+ :title="title"
18
+ :subtitle="subtitle"
19
+ :about-heading-text="aboutHeadingText"
20
+ :about-desc-one="aboutDesc1"
21
+ :about-desc-second="aboutDesc2"
22
+ :project-name="props.projectName"
23
+ :url="companyWebSitePath"
24
+ @hide="emits('hide')"
25
+ />
26
+ </Teleport>
27
+ </template>
28
+
29
+ <script lang="ts" setup>
30
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+
32
+ const props = defineProps<{
33
+ version: string
34
+ projectName: string
35
+ }>()
36
+ const emits = defineEmits<{
37
+ (event: 'hide'): void
38
+ }>()
39
+
40
+ const localization = computed<UI_I_Localization>(() => useLocal())
41
+ const { $store }: any = useNuxtApp()
42
+ const config = useRuntimeConfig()
43
+
44
+ const companyName = computed<string>(
45
+ () => config.public[`COMPANY_NAME_${useEnvLanguage()}`]
46
+ )
47
+ const brandName = computed<string>(
48
+ () => config.public[`TRADEMARK_${useEnvLanguage()}`]
49
+ )
50
+
51
+ const companyWebSitePath = ref<string>(config.public.SUPPORT_SITE)
52
+
53
+ const title = computed<string>(() => `${brandName.value}® ${props.projectName}`)
54
+ const subtitle = computed<string>(() =>
55
+ localization.value.layout.aboutWebClientVersion
56
+ .replace('{0}', props.projectName)
57
+ .replace('{1}', props.version)
58
+ )
59
+
60
+ const aboutHeadingText = computed<string>(() =>
61
+ localization.value.layout.aboutHeading.replace(
62
+ '{companyName}',
63
+ companyName.value
64
+ ).replace(
65
+ '{year}',
66
+ new Date().getFullYear() + ''
67
+ )
68
+ )
69
+
70
+ const aboutDesc = computed<string[]>(() =>
71
+ localization.value.layout.aboutDesc
72
+ .replaceAll('{companyName}', companyName.value)
73
+ .replaceAll('{trademark}', brandName.value).split('{url}')
74
+ )
75
+ const aboutDesc1 = computed<string>(() => aboutDesc.value[0])
76
+ const aboutDesc2 = computed<string>(() => aboutDesc.value[1])
77
+
78
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
79
+ </script>
@@ -1,79 +1,79 @@
1
- <template>
2
- <Teleport to="body">
3
- <atoms-modal :title="props.title" show width="864px" test-id="about-modal">
4
- <template #modalHeader>
5
- <div class="flex-align-center">
6
- <h3 class="modal-title">{{ brandName }}® {{ props.projectName }}</h3>
7
- <span class="separator" />
8
- <h4 class="secondary-title">
9
- {{ props.subtitle }}
10
- </h4>
11
- </div>
12
- <button id="about-modal-button-close" class="close">
13
- <atoms-the-icon
14
- data-id="about-modal-button-close-icon"
15
- class="close-icon"
16
- name="close"
17
- @click="() => emits('hide')"
18
- />
19
- </button>
20
- </template>
21
-
22
- <template #modalBody>
23
- <div class="about-vsphere-dialog-legal-section">
24
- <p>{{ props.aboutHeadingText }}</p>
25
- <p>{{ localization.layout.aboutSubtitle }}</p>
26
- </div>
27
-
28
- <div class="about-vsphere-dialog-legal-section description">
29
- {{ props.aboutDescOne }}<a
30
- id="about-description-link"
31
- :href="url"
32
- data-id="about-description-link"
33
- target="_blank"
34
- >{{ props.url }}</a
35
- >{{ props.aboutDescSecond }}
36
- </div>
37
- </template>
38
-
39
- <template #modalFooter>
40
- <span></span>
41
- </template>
42
- </atoms-modal>
43
- </Teleport>
44
- </template>
45
-
46
- <script lang="ts" setup>
47
- import type { UI_I_Localization } from '~/lib/models/interfaces'
48
-
49
- const props = defineProps<{
50
- title: string
51
- subtitle: string
52
- aboutHeadingText: string
53
- aboutDescOne: string
54
- aboutDescSecond: string
55
- projectName: string
56
- url: string
57
- }>()
58
- const emits = defineEmits<{
59
- (event: 'hide'): void
60
- }>()
61
-
62
- const localization = computed<UI_I_Localization>(() => useLocal())
63
- const config = useRuntimeConfig()
64
-
65
- const brandName = computed<string>(
66
- () => config.public[`TRADEMARK_${useEnvLanguage()}`]
67
- )
68
- </script>
69
-
70
- <style lang="scss" scoped>
71
- .modal-title {
72
- color: var(--main-color-mode);
73
- }
74
- .description {
75
- padding-top: 10px;
76
- font-size: 13px;
77
- line-height: 19px;
78
- }
79
- </style>
1
+ <template>
2
+ <Teleport to="body">
3
+ <atoms-modal :title="props.title" show width="864px" test-id="about-modal">
4
+ <template #modalHeader>
5
+ <div class="flex-align-center">
6
+ <h3 class="modal-title">{{ brandName }}® {{ props.projectName }}</h3>
7
+ <span class="separator" />
8
+ <h4 class="secondary-title">
9
+ {{ props.subtitle }}
10
+ </h4>
11
+ </div>
12
+ <button id="about-modal-button-close" class="close">
13
+ <atoms-the-icon
14
+ data-id="about-modal-button-close-icon"
15
+ class="close-icon"
16
+ name="close"
17
+ @click="() => emits('hide')"
18
+ />
19
+ </button>
20
+ </template>
21
+
22
+ <template #modalBody>
23
+ <div class="about-vsphere-dialog-legal-section">
24
+ <p>{{ props.aboutHeadingText }}</p>
25
+ <p>{{ localization.layout.aboutSubtitle }}</p>
26
+ </div>
27
+
28
+ <div class="about-vsphere-dialog-legal-section description">
29
+ {{ props.aboutDescOne }}<a
30
+ id="about-description-link"
31
+ :href="url"
32
+ data-id="about-description-link"
33
+ target="_blank"
34
+ >{{ props.url }}</a
35
+ >{{ props.aboutDescSecond }}
36
+ </div>
37
+ </template>
38
+
39
+ <template #modalFooter>
40
+ <span></span>
41
+ </template>
42
+ </atoms-modal>
43
+ </Teleport>
44
+ </template>
45
+
46
+ <script lang="ts" setup>
47
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
48
+
49
+ const props = defineProps<{
50
+ title: string
51
+ subtitle: string
52
+ aboutHeadingText: string
53
+ aboutDescOne: string
54
+ aboutDescSecond: string
55
+ projectName: string
56
+ url: string
57
+ }>()
58
+ const emits = defineEmits<{
59
+ (event: 'hide'): void
60
+ }>()
61
+
62
+ const localization = computed<UI_I_Localization>(() => useLocal())
63
+ const config = useRuntimeConfig()
64
+
65
+ const brandName = computed<string>(
66
+ () => config.public[`TRADEMARK_${useEnvLanguage()}`]
67
+ )
68
+ </script>
69
+
70
+ <style lang="scss" scoped>
71
+ .modal-title {
72
+ color: var(--main-color-mode);
73
+ }
74
+ .description {
75
+ padding-top: 10px;
76
+ font-size: 13px;
77
+ line-height: 19px;
78
+ }
79
+ </style>
@@ -1,170 +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
- { immediate: true }
167
- )
168
- </script>
169
-
170
- <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>