bfg-common 1.5.673 → 1.5.675

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 (125) 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/vCenterModal.ts +48 -48
  16. package/components/common/diagramMain/port/Port.vue +580 -580
  17. package/components/common/layout/bottomPanel/BottomPanel.vue +84 -0
  18. package/components/common/layout/bottomPanel/New.vue +243 -0
  19. package/components/common/layout/bottomPanel/Old.vue +160 -0
  20. package/components/common/layout/bottomPanel/alarms/Alarms.vue +76 -0
  21. package/components/common/layout/bottomPanel/alarms/lib/models/interfaces.ts +23 -0
  22. package/components/common/layout/bottomPanel/alarms/new/New.vue +212 -0
  23. package/components/common/layout/bottomPanel/alarms/new/lib/config/config.ts +193 -0
  24. package/components/common/layout/bottomPanel/alarms/new/lib/models/enums.ts +10 -0
  25. package/components/common/layout/bottomPanel/alarms/new/lib/models/interfaces.ts +12 -0
  26. package/components/common/layout/bottomPanel/alarms/old/Old.vue +191 -0
  27. package/components/common/layout/bottomPanel/alarms/old/lib/config/alarmTables.ts +89 -0
  28. package/components/common/layout/bottomPanel/alarms/old/lib/config/tableKeys.ts +11 -0
  29. package/components/common/layout/bottomPanel/alarms/old/lib/models/types.ts +8 -0
  30. package/components/common/layout/bottomPanel/lib/config/statusFilter.ts +19 -0
  31. package/components/common/layout/bottomPanel/lib/models/types.ts +1 -0
  32. package/components/common/layout/bottomPanel/recentTasks/RecentTasks.vue +49 -0
  33. package/components/common/layout/bottomPanel/recentTasks/lib/models/interfaces.ts +14 -0
  34. package/components/common/layout/bottomPanel/recentTasks/new/New.vue +430 -0
  35. package/components/common/layout/bottomPanel/recentTasks/new/lib/config/config.ts +259 -0
  36. package/components/common/layout/bottomPanel/recentTasks/old/Old.vue +277 -0
  37. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/recentTaskTable.ts +240 -0
  38. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/tableKeys.ts +15 -0
  39. package/components/common/layout/bottomPanel/recentTasks/old/lib/models/types.ts +14 -0
  40. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  41. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  42. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  43. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  44. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +93 -93
  45. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +216 -216
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +31 -31
  50. package/components/common/pages/backups/DetailView.vue +52 -52
  51. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  52. package/components/common/pages/backups/modals/Modals.vue +243 -243
  53. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  54. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  55. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  56. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  57. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  58. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  59. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  60. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  61. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  62. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  63. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  64. package/components/common/qr/Qr.vue +57 -57
  65. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  66. package/components/common/select/radio/RadioGroup.vue +137 -137
  67. package/components/common/spiceConsole/Drawer.vue +420 -420
  68. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  69. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  70. package/components/common/tools/Actions.vue +207 -207
  71. package/components/common/treeView/TreeView.vue +52 -52
  72. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  73. package/components/common/vm/actions/clone/new/New.vue +438 -438
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  79. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  80. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  81. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  82. package/components/common/vm/actions/common/select/options/Old.vue +110 -110
  83. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  84. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  85. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  86. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  87. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  88. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  89. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  90. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  91. package/components/common/wizards/common/compatibility/New.vue +99 -99
  92. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  93. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  94. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  95. package/components/common/wizards/common/steps/name/New.vue +221 -221
  96. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  97. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  98. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  99. package/components/common/wizards/datastore/add/Add.vue +228 -228
  100. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  101. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  102. package/composables/useAppVersion.ts +21 -21
  103. package/composables/useEnvLanguage.ts +22 -22
  104. package/composables/useLocal.ts +6 -6
  105. package/composables/useLocalCommon.ts +39 -39
  106. package/lib/models/enums.ts +65 -1
  107. package/package.json +1 -1
  108. package/plugins/console.ts +21 -21
  109. package/plugins/mouse.ts +21 -21
  110. package/plugins/panelStates.ts +70 -70
  111. package/plugins/text.ts +59 -59
  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/actions.ts +165 -165
  124. package/store/tasks/mappers/recentTasks.ts +123 -123
  125. package/store/tasks/mutations.ts +82 -82
@@ -1,216 +1,216 @@
1
- <template>
2
- <form id="security-form" class="compact" @submit.prevent>
3
- <div class="description">
4
- {{ localization.myPreferences.twoFactorAuthentication }}
5
- </div>
6
-
7
- <div class="flex-align-center">
8
- <label for="security">{{
9
- localization.myPreferences.securityLabel
10
- }}</label>
11
- <input id="security" v-model="security" type="checkbox" class="switch" />
12
- </div>
13
-
14
- <div
15
- v-if="
16
- props.recovery && security && !initialSecurity && !otpEnabledSuccess
17
- "
18
- class="recovery-codes-wrap"
19
- >
20
- <p>
21
- {{ localization.myPreferences.enterOtpForEnabled }}
22
- </p>
23
-
24
- <div class="recovery-codes">
25
- <common-qr :qr-code-url="props.recovery.qr_code_url" />
26
-
27
- <span>{{ localization.common.or }}</span>
28
-
29
- <ul class="recovery-codes-list">
30
- <li
31
- v-for="item in props.recovery.recovery_codes"
32
- :key="item"
33
- class="recovery-codes-list-item"
34
- >
35
- {{ item }}
36
- </li>
37
- </ul>
38
- </div>
39
- <section class="form-block">
40
- <div class="form-group">
41
- <label for="otp">{{
42
- localization.myPreferences.enterOtpForEnabled
43
- }}</label>
44
- <input id="otp" v-model="otp" type="text" />
45
- <button class="btn btn-sm btn-primary" @click="onConfirm">
46
- {{ localization.common.confirm }}
47
- </button>
48
- <atoms-loader v-if="isOtpLoading" test-id="2fa-enabled-loader" />
49
- </div>
50
- </section>
51
- </div>
52
-
53
- <div v-if="!security && initialSecurity && !otpDisabledSuccess">
54
- <section class="form-block">
55
- <div class="form-group">
56
- <label for="otp">{{
57
- localization.myPreferences.enterOtpForDisabled
58
- }}</label>
59
- <input id="otp" v-model="otp" type="text" />
60
- <button class="btn btn-sm btn-primary" @click="onDisabled">
61
- {{ localization.common.confirm }}
62
- </button>
63
- <atoms-loader v-if="isOtpLoading" test-id="2fa-disabled-loader" />
64
- </div>
65
- </section>
66
- </div>
67
- </form>
68
- </template>
69
-
70
- <script setup lang="ts">
71
- import type { UI_I_Localization } from '~/lib/models/interfaces'
72
- import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces'
73
-
74
- const security = defineModel<boolean>('security')
75
-
76
- const props = defineProps<{
77
- recovery?: UI_I_Recovery
78
- }>()
79
- const emits = defineEmits<{
80
- (event: 'confirm', value: boolean): void
81
- }>()
82
-
83
- const localization = computed<UI_I_Localization>(() => useLocal())
84
-
85
- const initialSecurity = ref<boolean>(security.value || false)
86
-
87
- // TODO refactoring and move to Sphere
88
- const otp = ref<string>('')
89
- const isOtpLoading = ref<boolean>(false)
90
-
91
- const otpEnabledSuccess = ref<boolean>(false)
92
- const onConfirm = async (): Promise<void> => {
93
- isOtpLoading.value = true
94
- const { data } = await useMyFetch<any, any>('ui/auth/2fa/confirm', {
95
- method: 'POST',
96
- body: {
97
- otp: otp.value,
98
- },
99
- })
100
- if (data.value) {
101
- otpEnabledSuccess.value = true
102
- otpDisabledSuccess.value = false
103
- initialSecurity.value = true
104
- otp.value = ''
105
- emits('confirm', true)
106
- }
107
- isOtpLoading.value = false
108
- }
109
-
110
- const otpDisabledSuccess = ref<boolean>(false)
111
- const onDisabled = async (): Promise<void> => {
112
- isOtpLoading.value = true
113
- const { data } = await useMyFetch<any, I_ErrorResponse>(
114
- 'ui/auth/2fa/disable',
115
- {
116
- method: 'POST',
117
- body: {
118
- otp: otp.value,
119
- },
120
- }
121
- )
122
- if (data.value) {
123
- otpDisabledSuccess.value = true
124
- otpEnabledSuccess.value = false
125
- initialSecurity.value = false
126
- otp.value = ''
127
- emits('confirm', false)
128
- }
129
- isOtpLoading.value = false
130
- }
131
- </script>
132
-
133
- <style lang="scss" scoped>
134
- .description {
135
- margin-bottom: 10px;
136
- }
137
-
138
- .recovery-codes-wrap {
139
- margin: 10px 0;
140
-
141
- .recovery-codes {
142
- display: flex;
143
- align-items: center;
144
- justify-content: space-evenly;
145
-
146
- .recovery-codes-list-item {
147
- font-size: 12px;
148
- }
149
- }
150
- }
151
-
152
- label {
153
- margin-right: 6px;
154
- }
155
-
156
- // TODO повторяется в ../view, необходимо вынести глобально
157
- input[type='checkbox'] {
158
- --active: var(--checkbox-value-active-color);
159
- --active-inner: var(--checkbox-mark-color);
160
- --border: var(--checkbox-mark-color);
161
- --background: var(--checkbox-mark-background-color);
162
- -webkit-appearance: none;
163
- -moz-appearance: none;
164
- height: 20px;
165
- outline: none;
166
- display: inline-block;
167
- vertical-align: top;
168
- position: relative;
169
- margin: 0;
170
- cursor: pointer;
171
- border: 1px solid var(--bc, var(--border));
172
- background: var(--b, var(--background));
173
- transition: background 0.3s, border-color 0.3s, box-shadow 0.2s;
174
- &:after {
175
- content: '';
176
- display: block;
177
- left: 0;
178
- top: 0;
179
- position: absolute;
180
- transition: transform var(--d-t, 0.3s) var(--d-t-e, ease),
181
- opacity var(--d-o, 0.2s);
182
- }
183
- &:checked {
184
- --b: var(--active);
185
- --bc: var(--active);
186
- --d-o: 0.3s;
187
- --d-t: 0.6s;
188
- --d-t-e: cubic-bezier(0.2, 0.85, 0.32, 1.2);
189
- }
190
- }
191
- input[type='checkbox'] {
192
- &.switch {
193
- width: 35px;
194
- border-radius: 11px;
195
- &:after {
196
- left: 2px;
197
- top: 2px;
198
- bottom: 2px;
199
- border-radius: 50%;
200
- width: 14px;
201
- height: 14px;
202
- border: 1px solid var(--bc, var(--border));
203
- background: var(--ab, var(--border));
204
- transform: translateX(var(--x, 0));
205
- }
206
- &:checked {
207
- --ab: var(--active-inner);
208
- --x: 14px;
209
- }
210
- &:disabled {
211
- cursor: not-allowed;
212
- opacity: 0.5;
213
- }
214
- }
215
- }
216
- </style>
1
+ <template>
2
+ <form id="security-form" class="compact" @submit.prevent>
3
+ <div class="description">
4
+ {{ localization.myPreferences.twoFactorAuthentication }}
5
+ </div>
6
+
7
+ <div class="flex-align-center">
8
+ <label for="security">{{
9
+ localization.myPreferences.securityLabel
10
+ }}</label>
11
+ <input id="security" v-model="security" type="checkbox" class="switch" />
12
+ </div>
13
+
14
+ <div
15
+ v-if="
16
+ props.recovery && security && !initialSecurity && !otpEnabledSuccess
17
+ "
18
+ class="recovery-codes-wrap"
19
+ >
20
+ <p>
21
+ {{ localization.myPreferences.enterOtpForEnabled }}
22
+ </p>
23
+
24
+ <div class="recovery-codes">
25
+ <common-qr :qr-code-url="props.recovery.qr_code_url" />
26
+
27
+ <span>{{ localization.common.or }}</span>
28
+
29
+ <ul class="recovery-codes-list">
30
+ <li
31
+ v-for="item in props.recovery.recovery_codes"
32
+ :key="item"
33
+ class="recovery-codes-list-item"
34
+ >
35
+ {{ item }}
36
+ </li>
37
+ </ul>
38
+ </div>
39
+ <section class="form-block">
40
+ <div class="form-group">
41
+ <label for="otp">{{
42
+ localization.myPreferences.enterOtpForEnabled
43
+ }}</label>
44
+ <input id="otp" v-model="otp" type="text" />
45
+ <button class="btn btn-sm btn-primary" @click="onConfirm">
46
+ {{ localization.common.confirm }}
47
+ </button>
48
+ <atoms-loader v-if="isOtpLoading" test-id="2fa-enabled-loader" />
49
+ </div>
50
+ </section>
51
+ </div>
52
+
53
+ <div v-if="!security && initialSecurity && !otpDisabledSuccess">
54
+ <section class="form-block">
55
+ <div class="form-group">
56
+ <label for="otp">{{
57
+ localization.myPreferences.enterOtpForDisabled
58
+ }}</label>
59
+ <input id="otp" v-model="otp" type="text" />
60
+ <button class="btn btn-sm btn-primary" @click="onDisabled">
61
+ {{ localization.common.confirm }}
62
+ </button>
63
+ <atoms-loader v-if="isOtpLoading" test-id="2fa-disabled-loader" />
64
+ </div>
65
+ </section>
66
+ </div>
67
+ </form>
68
+ </template>
69
+
70
+ <script setup lang="ts">
71
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
72
+ import type { UI_I_Recovery } from '~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces'
73
+
74
+ const security = defineModel<boolean>('security')
75
+
76
+ const props = defineProps<{
77
+ recovery?: UI_I_Recovery
78
+ }>()
79
+ const emits = defineEmits<{
80
+ (event: 'confirm', value: boolean): void
81
+ }>()
82
+
83
+ const localization = computed<UI_I_Localization>(() => useLocal())
84
+
85
+ const initialSecurity = ref<boolean>(security.value || false)
86
+
87
+ // TODO refactoring and move to Sphere
88
+ const otp = ref<string>('')
89
+ const isOtpLoading = ref<boolean>(false)
90
+
91
+ const otpEnabledSuccess = ref<boolean>(false)
92
+ const onConfirm = async (): Promise<void> => {
93
+ isOtpLoading.value = true
94
+ const { data } = await useMyFetch<any, any>('ui/auth/2fa/confirm', {
95
+ method: 'POST',
96
+ body: {
97
+ otp: otp.value,
98
+ },
99
+ })
100
+ if (data.value) {
101
+ otpEnabledSuccess.value = true
102
+ otpDisabledSuccess.value = false
103
+ initialSecurity.value = true
104
+ otp.value = ''
105
+ emits('confirm', true)
106
+ }
107
+ isOtpLoading.value = false
108
+ }
109
+
110
+ const otpDisabledSuccess = ref<boolean>(false)
111
+ const onDisabled = async (): Promise<void> => {
112
+ isOtpLoading.value = true
113
+ const { data } = await useMyFetch<any, I_ErrorResponse>(
114
+ 'ui/auth/2fa/disable',
115
+ {
116
+ method: 'POST',
117
+ body: {
118
+ otp: otp.value,
119
+ },
120
+ }
121
+ )
122
+ if (data.value) {
123
+ otpDisabledSuccess.value = true
124
+ otpEnabledSuccess.value = false
125
+ initialSecurity.value = false
126
+ otp.value = ''
127
+ emits('confirm', false)
128
+ }
129
+ isOtpLoading.value = false
130
+ }
131
+ </script>
132
+
133
+ <style lang="scss" scoped>
134
+ .description {
135
+ margin-bottom: 10px;
136
+ }
137
+
138
+ .recovery-codes-wrap {
139
+ margin: 10px 0;
140
+
141
+ .recovery-codes {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: space-evenly;
145
+
146
+ .recovery-codes-list-item {
147
+ font-size: 12px;
148
+ }
149
+ }
150
+ }
151
+
152
+ label {
153
+ margin-right: 6px;
154
+ }
155
+
156
+ // TODO повторяется в ../view, необходимо вынести глобально
157
+ input[type='checkbox'] {
158
+ --active: var(--checkbox-value-active-color);
159
+ --active-inner: var(--checkbox-mark-color);
160
+ --border: var(--checkbox-mark-color);
161
+ --background: var(--checkbox-mark-background-color);
162
+ -webkit-appearance: none;
163
+ -moz-appearance: none;
164
+ height: 20px;
165
+ outline: none;
166
+ display: inline-block;
167
+ vertical-align: top;
168
+ position: relative;
169
+ margin: 0;
170
+ cursor: pointer;
171
+ border: 1px solid var(--bc, var(--border));
172
+ background: var(--b, var(--background));
173
+ transition: background 0.3s, border-color 0.3s, box-shadow 0.2s;
174
+ &:after {
175
+ content: '';
176
+ display: block;
177
+ left: 0;
178
+ top: 0;
179
+ position: absolute;
180
+ transition: transform var(--d-t, 0.3s) var(--d-t-e, ease),
181
+ opacity var(--d-o, 0.2s);
182
+ }
183
+ &:checked {
184
+ --b: var(--active);
185
+ --bc: var(--active);
186
+ --d-o: 0.3s;
187
+ --d-t: 0.6s;
188
+ --d-t-e: cubic-bezier(0.2, 0.85, 0.32, 1.2);
189
+ }
190
+ }
191
+ input[type='checkbox'] {
192
+ &.switch {
193
+ width: 35px;
194
+ border-radius: 11px;
195
+ &:after {
196
+ left: 2px;
197
+ top: 2px;
198
+ bottom: 2px;
199
+ border-radius: 50%;
200
+ width: 14px;
201
+ height: 14px;
202
+ border: 1px solid var(--bc, var(--border));
203
+ background: var(--ab, var(--border));
204
+ transform: translateX(var(--x, 0));
205
+ }
206
+ &:checked {
207
+ --ab: var(--active-inner);
208
+ --x: 14px;
209
+ }
210
+ &:disabled {
211
+ cursor: not-allowed;
212
+ opacity: 0.5;
213
+ }
214
+ }
215
+ }
216
+ </style>
@@ -1,31 +1,31 @@
1
- <template>
2
- <component
3
- v-model:security="security"
4
- :is="currentComponent"
5
- :recovery="props.recovery"
6
- @confirm="emits('confirm', $event)"
7
- />
8
- </template>
9
-
10
- <script setup lang="ts">
11
- import type {
12
- UI_I_Recovery
13
- } from "~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces";
14
-
15
- const props = defineProps<{
16
- recovery: UI_I_Recovery | null
17
- }>()
18
- const emits = defineEmits<{
19
- (event: 'confirm', value: boolean): void
20
- }>()
21
-
22
- const security = defineModel<boolean>('security')
23
-
24
- const { $store }: any = useNuxtApp()
25
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
26
- const currentComponent = computed(() =>
27
- isNewView.value
28
- ? defineAsyncComponent(() => import('./New.vue'))
29
- : defineAsyncComponent(() => import('./Old.vue'))
30
- )
31
- </script>
1
+ <template>
2
+ <component
3
+ v-model:security="security"
4
+ :is="currentComponent"
5
+ :recovery="props.recovery"
6
+ @confirm="emits('confirm', $event)"
7
+ />
8
+ </template>
9
+
10
+ <script setup lang="ts">
11
+ import type {
12
+ UI_I_Recovery
13
+ } from "~/components/common/layout/theHeader/userMenu/modals/preferences/security/lib/models/interfaces";
14
+
15
+ const props = defineProps<{
16
+ recovery: UI_I_Recovery | null
17
+ }>()
18
+ const emits = defineEmits<{
19
+ (event: 'confirm', value: boolean): void
20
+ }>()
21
+
22
+ const security = defineModel<boolean>('security')
23
+
24
+ const { $store }: any = useNuxtApp()
25
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
26
+ const currentComponent = computed(() =>
27
+ isNewView.value
28
+ ? defineAsyncComponent(() => import('./New.vue'))
29
+ : defineAsyncComponent(() => import('./Old.vue'))
30
+ )
31
+ </script>
@@ -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
+ }