bfg-common 1.5.679 → 1.5.683

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/theHeader/TheHeaderNew.vue +315 -315
  18. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  19. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  20. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  21. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +93 -93
  22. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
  23. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  24. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  25. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +216 -216
  26. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +31 -31
  27. package/components/common/pages/backups/DetailView.vue +52 -52
  28. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  29. package/components/common/pages/backups/modals/Modals.vue +243 -243
  30. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  31. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  32. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  33. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  34. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  35. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  36. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  37. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  38. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  39. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  40. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  41. package/components/common/qr/Qr.vue +57 -57
  42. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  43. package/components/common/select/radio/RadioGroup.vue +137 -137
  44. package/components/common/spiceConsole/Drawer.vue +420 -420
  45. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  46. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  47. package/components/common/tools/Actions.vue +207 -207
  48. package/components/common/treeView/TreeView.vue +52 -52
  49. package/components/common/vm/actions/add/New.vue +1 -1
  50. package/components/common/vm/actions/add/Old.vue +1 -1
  51. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  52. package/components/common/vm/actions/clone/new/New.vue +438 -438
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  57. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  58. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  59. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  60. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  61. package/components/common/vm/actions/common/select/options/Old.vue +109 -110
  62. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  63. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  64. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  65. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  66. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  67. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  68. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  69. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  70. package/components/common/wizards/common/compatibility/New.vue +99 -99
  71. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  72. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  73. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  74. package/components/common/wizards/common/steps/name/New.vue +221 -221
  75. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  76. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  77. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  78. package/components/common/wizards/datastore/add/Add.vue +228 -228
  79. package/components/common/wizards/datastore/add/lib/config/createDatastore.ts +1 -0
  80. package/components/common/wizards/datastore/add/lib/models/interfaces.ts +1 -0
  81. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  82. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +232 -227
  83. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +231 -226
  84. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +43 -0
  85. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +101 -0
  86. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +101 -0
  87. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/old/Old.vue +2 -3
  88. package/components/common/wizards/datastore/add/steps/readyComplete/lib/config/propertiesDetails.ts +8 -1
  89. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  90. package/composables/useAppVersion.ts +21 -21
  91. package/composables/useEnvLanguage.ts +22 -22
  92. package/composables/useLocal.ts +6 -6
  93. package/composables/useLocalCommon.ts +39 -39
  94. package/lib/models/enums.ts +1 -65
  95. package/package.json +1 -1
  96. package/plugins/console.ts +21 -21
  97. package/plugins/mouse.ts +21 -21
  98. package/plugins/panelStates.ts +70 -70
  99. package/plugins/text.ts +59 -59
  100. package/public/spice-console/application/clientgui.js +854 -854
  101. package/public/spice-console/application/packetfactory.js +211 -211
  102. package/public/spice-console/application/virtualmouse.js +147 -147
  103. package/public/spice-console/lib/images/bitmap.js +203 -203
  104. package/public/spice-console/network/spicechannel.js +440 -440
  105. package/public/spice-console/process/cursorprocess.js +128 -128
  106. package/public/spice-console/process/inputprocess.js +227 -227
  107. package/public/spice-console/process/mainprocess.js +212 -212
  108. package/public/spice-console/run.js +210 -210
  109. package/store/main/mutations.ts +7 -7
  110. package/store/main/state.ts +7 -7
  111. package/store/tasks/mappers/recentTasks.ts +123 -123
  112. package/store/tasks/mutations.ts +82 -82
  113. package/components/common/layout/bottomPanel/BottomPanel.vue +0 -68
  114. package/components/common/layout/bottomPanel/New.vue +0 -227
  115. package/components/common/layout/bottomPanel/Old.vue +0 -144
  116. package/components/common/layout/bottomPanel/lib/config/statusFilter.ts +0 -19
  117. package/components/common/layout/bottomPanel/lib/models/types.ts +0 -1
  118. package/components/common/layout/bottomPanel/recentTasks/RecentTasks.vue +0 -49
  119. package/components/common/layout/bottomPanel/recentTasks/lib/models/interfaces.ts +0 -14
  120. package/components/common/layout/bottomPanel/recentTasks/new/New.vue +0 -428
  121. package/components/common/layout/bottomPanel/recentTasks/new/lib/config/config.ts +0 -259
  122. package/components/common/layout/bottomPanel/recentTasks/old/Old.vue +0 -277
  123. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/recentTaskTable.ts +0 -240
  124. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/tableKeys.ts +0 -15
  125. package/components/common/layout/bottomPanel/recentTasks/old/lib/models/types.ts +0 -14
@@ -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
+ }