bfg-common 1.5.757 → 1.5.760

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 (124) 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/assets/localization/local_be.json +10 -5
  7. package/assets/localization/local_en.json +10 -5
  8. package/assets/localization/local_hy.json +10 -5
  9. package/assets/localization/local_kk.json +10 -5
  10. package/assets/localization/local_ru.json +14 -9
  11. package/assets/localization/local_zh.json +9 -4
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  16. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  17. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  18. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  19. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  20. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  21. package/components/common/browse/lib/models/interfaces.ts +5 -5
  22. package/components/common/diagramMain/network/Contents.vue +497 -497
  23. package/components/common/layout/console/Console.vue +70 -70
  24. package/components/common/layout/theHeader/New.vue +2 -0
  25. package/components/common/layout/theHeader/Old.vue +2 -0
  26. package/components/common/layout/theHeader/TheHeader.vue +2 -0
  27. package/components/common/layout/theHeader/modals/reconnect/New.vue +1 -1
  28. package/components/common/layout/theHeader/modals/reconnect/Reconnect.vue +3 -1
  29. package/components/common/layout/theHeader/userMenu/UserMenu.vue +2 -0
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +2 -0
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +2 -0
  32. package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +2 -0
  33. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  34. package/components/common/layout/theHeader/userMenu/modals/preferences/view/New.vue +64 -47
  35. package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +19 -0
  36. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +3 -0
  37. package/components/common/pages/backups/DetailView.vue +52 -52
  38. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  39. package/components/common/pages/backups/modals/Modals.vue +243 -243
  40. package/components/common/pages/backups/modals/createBackup/New.vue +22 -9
  41. package/components/common/pages/backups/modals/createBackup/configuration/ConfigurationNew.vue +17 -3
  42. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  43. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +8 -8
  44. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/TableView.vue +1 -1
  45. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +7 -7
  46. package/components/common/pages/backups/modals/createBackup/general/GeneralNew.vue +1 -1
  47. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +5 -5
  48. package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +1 -1
  49. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +11 -2
  50. package/components/common/pages/backups/modals/createBackup/lib/validation/validations.ts +6 -6
  51. package/components/common/pages/backups/modals/lib/config/restore.ts +116 -116
  52. package/components/common/pages/backups/modals/lib/models/interfaces.ts +187 -187
  53. package/components/common/pages/backups/modals/restore/Restore.vue +302 -302
  54. package/components/common/pages/backups/modals/restore/disks/Disks.vue +50 -50
  55. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +94 -94
  56. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +130 -130
  57. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  58. package/components/common/pages/backups/modals/restore/types/New.vue +95 -95
  59. package/components/common/pages/backups/modals/restore/types/Old.vue +62 -62
  60. package/components/common/pages/backups/modals/restore/types/Types.vue +31 -31
  61. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  62. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  63. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  64. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  65. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  66. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  67. package/components/common/pages/tasks/Tasks.vue +125 -125
  68. package/components/common/pages/tasks/table/Table.vue +373 -373
  69. package/components/common/pages/tasks/table/lib/config/config.ts +279 -279
  70. package/components/common/pages/tasks/table/lib/models/interfaces.ts +9 -9
  71. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  72. package/components/common/select/radio/RadioGroup.vue +137 -137
  73. package/components/common/spiceConsole/Drawer.vue +420 -420
  74. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  75. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  76. package/components/common/tools/Actions.vue +207 -207
  77. package/components/common/treeView/TreeView.vue +52 -52
  78. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  79. package/components/common/vm/actions/clone/new/New.vue +438 -438
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  83. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  84. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  85. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  86. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  87. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  88. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  89. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  90. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  91. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  92. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  93. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  94. package/components/common/wizards/common/steps/name/New.vue +221 -221
  95. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  96. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  97. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  98. package/components/common/wizards/datastore/add/Add.vue +227 -227
  99. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  100. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  101. package/composables/useAppVersion.ts +21 -21
  102. package/composables/useBrowse.ts +24 -24
  103. package/composables/useLocal.ts +6 -6
  104. package/composables/useLocalCommon.ts +39 -39
  105. package/lib/models/types.ts +59 -59
  106. package/package.json +1 -1
  107. package/plugins/console.ts +21 -21
  108. package/plugins/mouse.ts +21 -21
  109. package/plugins/panelStates.ts +70 -70
  110. package/plugins/text.ts +59 -59
  111. package/plugins/time.ts +58 -58
  112. package/public/spice-console/application/clientgui.js +854 -854
  113. package/public/spice-console/application/packetfactory.js +211 -211
  114. package/public/spice-console/application/virtualmouse.js +147 -147
  115. package/public/spice-console/lib/images/bitmap.js +203 -203
  116. package/public/spice-console/network/spicechannel.js +440 -440
  117. package/public/spice-console/process/cursorprocess.js +128 -128
  118. package/public/spice-console/process/inputprocess.js +227 -227
  119. package/public/spice-console/process/mainprocess.js +212 -212
  120. package/public/spice-console/run.js +210 -210
  121. package/store/main/mutations.ts +7 -7
  122. package/store/main/state.ts +7 -7
  123. package/store/tasks/mappers/recentTasks.ts +123 -123
  124. package/store/tasks/mutations.ts +82 -82
@@ -1,70 +1,70 @@
1
- <template>
2
- <atoms-window
3
- v-if="consoleInWindow?.isShow"
4
- :top="consoleInWindow.top"
5
- :left="consoleInWindow.left"
6
- :width="consoleInWindow.width"
7
- :height="consoleInWindow.height"
8
- :title="consoleInWindow.name"
9
- :loading="consoleInWindow.isLoading"
10
- @hide="onHide"
11
- >
12
- <template #header>
13
- <div class="flex-align-center gap-2 overflow-hidden">
14
- <ui-icon name="monitor" width="16" height="16" class="monitor-icon" />
15
- <span class="text-ellipsis">{{ consoleInWindow.name }}</span>
16
- </div>
17
- </template>
18
- <embed
19
- id="embed"
20
- type="text/html"
21
- width="100%"
22
- height="100%"
23
- :src="consoleInWindow.url"
24
- @load="onLoad"
25
- />
26
- </atoms-window>
27
- </template>
28
-
29
- <script setup lang="ts">
30
- import type { UI_I_ConsoleInWindow } from '~/components/common/layout/console/lib/models/interfaces'
31
-
32
- const { $store }: any = useNuxtApp()
33
-
34
- const onLoad = (): void => {
35
- $store.dispatch('main/A_CHANGE_CONSOLE_IN_WINDOW_LOADING', false)
36
- }
37
-
38
- const consoleInWindow = computed<UI_I_ConsoleInWindow | null>(() => {
39
- return $store.getters['main/getConsoleInWindow']
40
- })
41
- watch(
42
- consoleInWindow,
43
- (newValue, oldValue) => {
44
- if (newValue?.url === oldValue?.url) {
45
- $store.dispatch('main/A_CHANGE_CONSOLE_IN_WINDOW_LOADING', false)
46
- }
47
- },
48
- { deep: true }
49
- )
50
-
51
- const onHide = (): void => {
52
- $store.dispatch('main/A_SHOW_CONSOLE_IN_WINDOW', {
53
- width: -1,
54
- height: -1,
55
- top: -1,
56
- left: -1,
57
- name: '',
58
- isShow: false,
59
- isLoading: false,
60
- url: '',
61
- })
62
- }
63
- </script>
64
-
65
- <style scoped lang="scss">
66
- .monitor-icon {
67
- min-width: 16px;
68
- min-height: 16px;
69
- }
70
- </style>
1
+ <template>
2
+ <atoms-window
3
+ v-if="consoleInWindow?.isShow"
4
+ :top="consoleInWindow.top"
5
+ :left="consoleInWindow.left"
6
+ :width="consoleInWindow.width"
7
+ :height="consoleInWindow.height"
8
+ :title="consoleInWindow.name"
9
+ :loading="consoleInWindow.isLoading"
10
+ @hide="onHide"
11
+ >
12
+ <template #header>
13
+ <div class="flex-align-center gap-2 overflow-hidden">
14
+ <ui-icon name="monitor" width="16" height="16" class="monitor-icon" />
15
+ <span class="text-ellipsis">{{ consoleInWindow.name }}</span>
16
+ </div>
17
+ </template>
18
+ <embed
19
+ id="embed"
20
+ type="text/html"
21
+ width="100%"
22
+ height="100%"
23
+ :src="consoleInWindow.url"
24
+ @load="onLoad"
25
+ />
26
+ </atoms-window>
27
+ </template>
28
+
29
+ <script setup lang="ts">
30
+ import type { UI_I_ConsoleInWindow } from '~/components/common/layout/console/lib/models/interfaces'
31
+
32
+ const { $store }: any = useNuxtApp()
33
+
34
+ const onLoad = (): void => {
35
+ $store.dispatch('main/A_CHANGE_CONSOLE_IN_WINDOW_LOADING', false)
36
+ }
37
+
38
+ const consoleInWindow = computed<UI_I_ConsoleInWindow | null>(() => {
39
+ return $store.getters['main/getConsoleInWindow']
40
+ })
41
+ watch(
42
+ consoleInWindow,
43
+ (newValue, oldValue) => {
44
+ if (newValue?.url === oldValue?.url) {
45
+ $store.dispatch('main/A_CHANGE_CONSOLE_IN_WINDOW_LOADING', false)
46
+ }
47
+ },
48
+ { deep: true }
49
+ )
50
+
51
+ const onHide = (): void => {
52
+ $store.dispatch('main/A_SHOW_CONSOLE_IN_WINDOW', {
53
+ width: -1,
54
+ height: -1,
55
+ top: -1,
56
+ left: -1,
57
+ name: '',
58
+ isShow: false,
59
+ isLoading: false,
60
+ url: '',
61
+ })
62
+ }
63
+ </script>
64
+
65
+ <style scoped lang="scss">
66
+ .monitor-icon {
67
+ min-width: 16px;
68
+ min-height: 16px;
69
+ }
70
+ </style>
@@ -99,6 +99,7 @@
99
99
  <div class="container-content user-menu-container">
100
100
  <common-layout-the-header-user-menu
101
101
  v-model:security="security"
102
+ v-model:is-show-notification="isShowNotification"
102
103
  v-model:new-view-local="newViewLocal"
103
104
  v-model:time-format="timeFormat"
104
105
  v-model:console-value="consoleValue"
@@ -134,6 +135,7 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
134
135
  import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces'
135
136
 
136
137
  const security = defineModel<boolean>('security')
138
+ const isShowNotification = defineModel<boolean>('isShowNotification')
137
139
  const newViewLocal = defineModel<boolean>('newViewLocal')
138
140
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
139
141
  const consoleValue = defineModel<string>('consoleValue')
@@ -59,6 +59,7 @@
59
59
 
60
60
  <common-layout-the-header-user-menu
61
61
  v-model:security="security"
62
+ v-model:is-show-notification="isShowNotification"
62
63
  v-model:new-view-local="newViewLocal"
63
64
  v-model:time-format="timeFormat"
64
65
  v-model:console-value="consoleValue"
@@ -106,6 +107,7 @@ import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMen
106
107
  import { findInLocals } from '~/components/common/selectLanguage/lib/utils/utils'
107
108
 
108
109
  const security = defineModel<boolean>('security')
110
+ const isShowNotification = defineModel<boolean>('isShowNotification')
109
111
  const newViewLocal = defineModel<boolean>('newViewLocal')
110
112
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
111
113
  const consoleValue = defineModel<string>('consoleValue')
@@ -2,6 +2,7 @@
2
2
  <component
3
3
  :is="currentComponent"
4
4
  v-model:security="security"
5
+ v-model:is-show-notification="isShowNotification"
5
6
  v-model:new-view-local="newViewLocal"
6
7
  v-model:time-format="timeFormat"
7
8
  v-model:console-value="consoleValue"
@@ -43,6 +44,7 @@ import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMen
43
44
  import { checkIsTokenExpired } from '~/lib/utils/token'
44
45
 
45
46
  const security = defineModel<boolean>('security')
47
+ const isShowNotification = defineModel<boolean>('isShowNotification')
46
48
  const newViewLocal = defineModel<boolean>('newViewLocal')
47
49
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
48
50
  const consoleValue = defineModel<string>('consoleValue')
@@ -57,7 +57,7 @@ const modalTexts = ref<UI_I_ModalTexts>({
57
57
 
58
58
  <style lang="scss" scoped>
59
59
  .reconnect-content {
60
- padding: 16px 32px 8px 32px;
60
+ padding: 8px 32px 8px 32px;
61
61
 
62
62
  .icon-content {
63
63
  .icon-sessions {
@@ -28,7 +28,9 @@ const isShow = computed<boolean>(
28
28
  () => $store.getters['main/isShowReconnectModal']
29
29
  )
30
30
 
31
- const title = ref<string>(localization.value.common.connectionTimeout)
31
+ const title = computed<string>(
32
+ () => localization.value.common.connectionTimeout
33
+ )
32
34
 
33
35
  const timer = ref<NodeJS.Timer | null>(null)
34
36
  const totalTime = ref<number>(60)
@@ -16,6 +16,7 @@
16
16
  <common-layout-the-header-user-menu-modals-preferences
17
17
  v-if="props.isPreference"
18
18
  v-model:security="security"
19
+ v-model:is-show-notification="isShowNotification"
19
20
  v-model:new-view-local="newViewLocal"
20
21
  v-model:time-format="timeFormat"
21
22
  v-model:console-value="consoleValue"
@@ -43,6 +44,7 @@ import type { UI_T_TimeValue } from '~/components/common/layout/theHeader/userMe
43
44
  import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces'
44
45
 
45
46
  const security = defineModel<boolean>('security')
47
+ const isShowNotification = defineModel<boolean>('isShowNotification')
46
48
  const newViewLocal = defineModel<boolean>('newViewLocal')
47
49
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
48
50
  const consoleValue = defineModel<string>('consoleValue')
@@ -53,6 +53,7 @@
53
53
  <ui-modal-block-form-standard without-border-bottom>
54
54
  <common-layout-the-header-user-menu-modals-preferences-view
55
55
  v-model:new-view-local="newViewLocal"
56
+ v-model:is-show-notification="isShowNotification"
56
57
  :new-view="props.newView"
57
58
  />
58
59
  </ui-modal-block-form-standard>
@@ -70,6 +71,7 @@ import type { UI_T_TimeValue } from '~/components/common/layout/theHeader/userMe
70
71
  import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces'
71
72
 
72
73
  const security = defineModel<boolean>('security')
74
+ const isShowNotification = defineModel<boolean>('isShowNotification')
73
75
  const newViewLocal = defineModel<boolean>('newViewLocal')
74
76
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
75
77
  const consoleValue = defineModel<string>('consoleValue')
@@ -52,6 +52,7 @@
52
52
  <common-layout-the-header-user-menu-modals-preferences-view
53
53
  v-if="selectedTab === 'view-tab'"
54
54
  v-model:new-view-local="newViewLocal"
55
+ v-model:is-show-notification="isShowNotification"
55
56
  :new-view="props.newView"
56
57
  />
57
58
  </template>
@@ -87,6 +88,7 @@ import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMen
87
88
  import { preferencesTabs } from '~/components/common/layout/theHeader/userMenu/modals/preferences/lib/config/preferencesTabs'
88
89
 
89
90
  const security = defineModel<boolean>('security')
91
+ const isShowNotification = defineModel<boolean>('isShowNotification')
90
92
  const newViewLocal = defineModel<boolean>('newViewLocal')
91
93
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
92
94
  const consoleValue = defineModel<string>('consoleValue')
@@ -2,6 +2,7 @@
2
2
  <component
3
3
  :is="currentComponent"
4
4
  v-model:security="security"
5
+ v-model:is-show-notification="isShowNotification"
5
6
  v-model:new-view-local="newViewLocal"
6
7
  v-model:time-format="timeFormat"
7
8
  v-model:console-value="consoleValue"
@@ -28,6 +29,7 @@ import type { UI_T_TimeValue } from '~/components/common/layout/theHeader/userMe
28
29
  import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces'
29
30
 
30
31
  const security = defineModel<boolean>('security')
32
+ const isShowNotification = defineModel<boolean>('isShowNotification')
31
33
  const newViewLocal = defineModel<boolean>('newViewLocal')
32
34
  const timeFormat = defineModel<UI_T_TimeValue>('timeFormat')
33
35
  const consoleValue = defineModel<string>('consoleValue')
@@ -1,7 +1,7 @@
1
- export type UI_T_UserPreferenceTab =
2
- | 'time-tab'
3
- | 'language-tab'
4
- | 'console-tab'
5
- | 'inventory-tab'
6
- | 'security-tab'
7
- | 'view-tab'
1
+ export type UI_T_UserPreferenceTab =
2
+ | 'time-tab'
3
+ | 'language-tab'
4
+ | 'console-tab'
5
+ | 'inventory-tab'
6
+ | 'security-tab'
7
+ | 'view-tab'
@@ -1,47 +1,64 @@
1
- <template>
2
- <form id="view-form">
3
- <!-- TODO Shorten code by the new component for the form -->
4
- <div class="flex">
5
- <ui-modal-icon>
6
- <ui-icon-icon3 name="eye-open" width="20" height="20" />
7
- </ui-modal-icon>
8
- <div>
9
- <div class="form-first-title">
10
- {{ localization.common.view }}
11
- </div>
12
- <div class="form-second-title">
13
- {{ props.description }}
14
- </div>
15
-
16
- <div class="flex-align-center new-view-switch-container">
17
- <ui-switch
18
- v-model="newViewLocal"
19
- :label="localization.common.newView"
20
- test-id="view-switch"
21
- />
22
- </div>
23
- </div>
24
- </div>
25
- </form>
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import type { UI_I_Localization } from '~/lib/models/interfaces'
30
-
31
- const newViewLocal = defineModel<boolean>()
32
-
33
- const props = defineProps<{
34
- description: string
35
- }>()
36
-
37
- const localization = computed<UI_I_Localization>(() => useLocal())
38
- </script>
39
-
40
- <style lang="scss" scoped>
41
- .new-view-switch-container {
42
- :deep(.switch-content .switch-label) {
43
- font-size: 13px;
44
- font-weight: 400;
45
- }
46
- }
47
- </style>
1
+ <template>
2
+ <form id="view-form">
3
+ <!-- TODO Shorten code by the new component for the form -->
4
+ <div class="flex">
5
+ <ui-modal-icon>
6
+ <ui-icon-icon3 name="eye-open" width="20" height="20" />
7
+ </ui-modal-icon>
8
+ <div>
9
+ <div class="form-first-title">
10
+ {{ localization.common.view }}
11
+ </div>
12
+ <div class="form-second-title">
13
+ {{ props.description }}
14
+ </div>
15
+
16
+ <div class="flex-align-center new-view-switch-container">
17
+ <ui-switch
18
+ v-model="newViewLocal"
19
+ :label="localization.common.newView"
20
+ test-id="view-switch"
21
+ />
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <div class="flex mt-4">
26
+ <div style="width: 38px" class="mr-3"></div>
27
+ <div>
28
+ <div class="form-second-title">
29
+ {{ localization.myPreferences.showNotificationDescription }}
30
+ </div>
31
+
32
+ <div class="flex-align-center new-view-switch-container">
33
+ <ui-switch
34
+ v-model="isShowNotification"
35
+ :label="localization.myPreferences.showNotification"
36
+ test-id="show-notification-switch"
37
+ />
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </form>
42
+ </template>
43
+
44
+ <script setup lang="ts">
45
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
46
+
47
+ const newViewLocal = defineModel<boolean>()
48
+ const isShowNotification = defineModel<boolean>('isShowNotification')
49
+
50
+ const props = defineProps<{
51
+ description: string
52
+ }>()
53
+
54
+ const localization = computed<UI_I_Localization>(() => useLocal())
55
+ </script>
56
+
57
+ <style lang="scss" scoped>
58
+ .new-view-switch-container {
59
+ :deep(.switch-content .switch-label) {
60
+ font-size: 13px;
61
+ font-weight: 400;
62
+ }
63
+ }
64
+ </style>
@@ -14,6 +14,20 @@
14
14
  class="switch"
15
15
  />
16
16
  </div>
17
+
18
+ <div class="description second-description">
19
+ {{ localization.myPreferences.showNotificationDescription }}
20
+ </div>
21
+
22
+ <div class="flex-align-center">
23
+ <label for="view">{{ localization.myPreferences.showNotification }}</label>
24
+ <input
25
+ id="view"
26
+ v-model="isShowNotification"
27
+ type="checkbox"
28
+ class="switch"
29
+ />
30
+ </div>
17
31
  </form>
18
32
  </template>
19
33
 
@@ -21,6 +35,7 @@
21
35
  import type { UI_I_Localization } from '~/lib/models/interfaces'
22
36
 
23
37
  const newViewLocal = defineModel<boolean>()
38
+ const isShowNotification = defineModel<boolean>('isShowNotification')
24
39
 
25
40
  const props = defineProps<{
26
41
  description: string
@@ -44,6 +59,10 @@ window.tools = new Proxy(
44
59
  <style lang="scss" scoped>
45
60
  .description {
46
61
  margin-bottom: 10px;
62
+
63
+ &.second-description {
64
+ margin-top: 20px;
65
+ }
47
66
  }
48
67
 
49
68
  label {
@@ -2,6 +2,7 @@
2
2
  <component
3
3
  :is="currentComponent"
4
4
  v-model="newViewLocal"
5
+ v-model:is-show-notification="isShowNotification"
5
6
  :description="description"
6
7
  />
7
8
  </template>
@@ -10,6 +11,8 @@
10
11
  import type { UI_I_Localization } from '~/lib/models/interfaces'
11
12
 
12
13
  const newViewLocal = defineModel<boolean>('newViewLocal')
14
+ const isShowNotification = defineModel<boolean>('isShowNotification')
15
+
13
16
  const props = defineProps<{
14
17
  newView: boolean
15
18
  }>()
@@ -1,52 +1,52 @@
1
- <template>
2
- <div class="detail-view overflow-auto py-0 px-6">
3
- <table v-if="detailData" class="table table-noborder">
4
- <tbody>
5
- <tr>
6
- <td class="left">{{ localization.common.name }}</td>
7
- <td class="left backup-name-label">{{ detailData.name }}</td>
8
- </tr>
9
- <tr>
10
- <td class="left">{{ localization.common.description }}</td>
11
- <td class="left backup-name-label">{{ detailData.description }}</td>
12
- </tr>
13
- <tr>
14
- <td class="left">{{ localization.common.timestamp }}</td>
15
- <td class="left backup-name-label">{{ detailData.timestamp }}</td>
16
- </tr>
17
- </tbody>
18
- </table>
19
- </div>
20
- </template>
21
-
22
- <script setup lang="ts">
23
- import type { UI_I_Localization } from '~/lib/models/interfaces'
24
- import type { UI_I_BackupsTreeNode } from '~/components/common/pages/backups/lib/models/interfaces'
25
-
26
- const props = defineProps<{
27
- detail: UI_I_BackupsTreeNode | null
28
- }>()
29
-
30
- const localization = computed<UI_I_Localization>(() => useLocal())
31
-
32
- const detailData = ref<UI_I_BackupsTreeNode | null>(null)
33
- watch(
34
- () => props.detail,
35
- (newValue) => {
36
- detailData.value = newValue
37
- },
38
- { immediate: true, deep: true }
39
- )
40
- </script>
41
-
42
- <style scoped lang="scss">
43
- .detail-view {
44
- width: 50%;
45
-
46
- .table {
47
- .left:not(.backup-name-label) {
48
- width: 320px;
49
- }
50
- }
51
- }
52
- </style>
1
+ <template>
2
+ <div class="detail-view overflow-auto py-0 px-6">
3
+ <table v-if="detailData" class="table table-noborder">
4
+ <tbody>
5
+ <tr>
6
+ <td class="left">{{ localization.common.name }}</td>
7
+ <td class="left backup-name-label">{{ detailData.name }}</td>
8
+ </tr>
9
+ <tr>
10
+ <td class="left">{{ localization.common.description }}</td>
11
+ <td class="left backup-name-label">{{ detailData.description }}</td>
12
+ </tr>
13
+ <tr>
14
+ <td class="left">{{ localization.common.timestamp }}</td>
15
+ <td class="left backup-name-label">{{ detailData.timestamp }}</td>
16
+ </tr>
17
+ </tbody>
18
+ </table>
19
+ </div>
20
+ </template>
21
+
22
+ <script setup lang="ts">
23
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+ import type { UI_I_BackupsTreeNode } from '~/components/common/pages/backups/lib/models/interfaces'
25
+
26
+ const props = defineProps<{
27
+ detail: UI_I_BackupsTreeNode | null
28
+ }>()
29
+
30
+ const localization = computed<UI_I_Localization>(() => useLocal())
31
+
32
+ const detailData = ref<UI_I_BackupsTreeNode | null>(null)
33
+ watch(
34
+ () => props.detail,
35
+ (newValue) => {
36
+ detailData.value = newValue
37
+ },
38
+ { immediate: true, deep: true }
39
+ )
40
+ </script>
41
+
42
+ <style scoped lang="scss">
43
+ .detail-view {
44
+ width: 50%;
45
+
46
+ .table {
47
+ .left:not(.backup-name-label) {
48
+ width: 320px;
49
+ }
50
+ }
51
+ }
52
+ </style>
@@ -1,36 +1,36 @@
1
- import type { API_UI_I_DataTable } from '~/lib/models/table/interfaces'
2
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
3
- import type { UI_T_BackupActionType } from '~/components/common/pages/backups/lib/models/types'
4
-
5
- export interface API_UI_I_Backup {
6
- creation_time: number
7
- creation_type: number
8
- description: string
9
- kind: number // TODO
10
- msg: string
11
- name: string
12
- state: number // TODO
13
- uuid: string
14
- vm_name: string
15
- vmid: string
16
- storage_id: string
17
- storage_name: string
18
- }
19
-
20
- export interface UI_I_Backup extends API_UI_I_Backup {}
21
-
22
- export interface UI_I_BackupsTreeNode
23
- extends UI_I_TreeNode<UI_I_BackupsTreeNode> {
24
- parent_id: string
25
- timestamp: string
26
- description: string
27
- }
28
-
29
- export interface UI_I_BackupAction {
30
- action: UI_T_BackupActionType | ''
31
- id?: string
32
- name?: string
33
- backupId?: string
34
- bucketId?: string
35
- storageId?: string
36
- }
1
+ import type { API_UI_I_DataTable } from '~/lib/models/table/interfaces'
2
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
3
+ import type { UI_T_BackupActionType } from '~/components/common/pages/backups/lib/models/types'
4
+
5
+ export interface API_UI_I_Backup {
6
+ creation_time: number
7
+ creation_type: number
8
+ description: string
9
+ kind: number // TODO
10
+ msg: string
11
+ name: string
12
+ state: number // TODO
13
+ uuid: string
14
+ vm_name: string
15
+ vmid: string
16
+ storage_id: string
17
+ storage_name: string
18
+ }
19
+
20
+ export interface UI_I_Backup extends API_UI_I_Backup {}
21
+
22
+ export interface UI_I_BackupsTreeNode
23
+ extends UI_I_TreeNode<UI_I_BackupsTreeNode> {
24
+ parent_id: string
25
+ timestamp: string
26
+ description: string
27
+ }
28
+
29
+ export interface UI_I_BackupAction {
30
+ action: UI_T_BackupActionType | ''
31
+ id?: string
32
+ name?: string
33
+ backupId?: string
34
+ bucketId?: string
35
+ storageId?: string
36
+ }