@xen-orchestra/web-core 0.27.0 → 0.29.0

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 (81) hide show
  1. package/lib/components/card/VtsCardRowKeyValue.vue +1 -0
  2. package/lib/components/cell-object/VtsCellObject.vue +1 -2
  3. package/lib/components/console/VtsActionsConsole.vue +3 -9
  4. package/lib/components/copy-button/VtsCopyButton.vue +1 -3
  5. package/lib/components/dropdown/DropdownTitle.vue +3 -3
  6. package/lib/components/icon/VtsIcon.vue +32 -76
  7. package/lib/components/input-wrapper/VtsInputWrapper.vue +2 -2
  8. package/lib/components/layout/VtsLayoutSidebar.vue +1 -2
  9. package/lib/components/menu/MenuItem.vue +4 -5
  10. package/lib/components/menu/MenuTrigger.vue +3 -3
  11. package/lib/components/object-icon/VtsObjectIcon.vue +2 -2
  12. package/lib/components/progress-bar/VtsProgressBar.vue +54 -0
  13. package/lib/components/progress-bar-group/VtsProgressBarGroup.vue +76 -0
  14. package/lib/components/resources/VtsResource.vue +3 -3
  15. package/lib/components/select/VtsSelect.vue +4 -5
  16. package/lib/components/table/ColumnTitle.vue +11 -12
  17. package/lib/components/task/VtsQuickTaskButton.vue +1 -2
  18. package/lib/components/tree/VtsTreeLoadingItem.vue +3 -3
  19. package/lib/components/ui/alarm-item/UiAlarmItem.vue +1 -2
  20. package/lib/components/ui/alert/UiAlert.vue +14 -13
  21. package/lib/components/ui/button/UiButton.vue +4 -5
  22. package/lib/components/ui/button-icon/UiButtonIcon.vue +3 -3
  23. package/lib/components/ui/checkbox/UiCheckbox.vue +2 -9
  24. package/lib/components/ui/chip/ChipIcon.vue +3 -3
  25. package/lib/components/ui/chip/ChipRemoveIcon.vue +1 -2
  26. package/lib/components/ui/chip/UiChip.vue +2 -2
  27. package/lib/components/ui/circle-progress-bar/UiCircleProgressBar.vue +7 -4
  28. package/lib/components/ui/data-ruler/UiDataRuler.vue +54 -6
  29. package/lib/components/ui/donut-chart/UiDonutChart.vue +30 -17
  30. package/lib/components/ui/dropdown/UiDropdown.vue +5 -7
  31. package/lib/components/ui/dropdown-button/UiDropdownButton.vue +4 -5
  32. package/lib/components/ui/head-bar/UiHeadBar.vue +6 -11
  33. package/lib/components/ui/info/UiInfo.vue +14 -20
  34. package/lib/components/ui/input/UiInput.vue +6 -7
  35. package/lib/components/ui/label/UiLabel.vue +3 -3
  36. package/lib/components/ui/legend/UiLegend.vue +3 -3
  37. package/lib/components/ui/legend-title/UiLegendTitle.vue +7 -3
  38. package/lib/components/ui/link/UiLink.vue +4 -5
  39. package/lib/components/ui/log-entry-viewer/UiLogEntryViewer.vue +6 -2
  40. package/lib/components/ui/object-link/UiObjectLink.vue +4 -4
  41. package/lib/components/ui/progress-bar/UiProgressBar.vue +14 -70
  42. package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +3 -4
  43. package/lib/components/ui/quick-task-item/UiQuickTaskItem.vue +3 -4
  44. package/lib/components/ui/radio-button/UiRadioButton.vue +1 -2
  45. package/lib/components/ui/table-pagination/PaginationButton.vue +2 -25
  46. package/lib/components/ui/table-pagination/UiTablePagination.vue +41 -20
  47. package/lib/components/ui/tag/UiTag.vue +3 -3
  48. package/lib/components/ui/text-area/UiTextarea.vue +2 -2
  49. package/lib/components/ui/toaster/UiToaster.vue +15 -13
  50. package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +4 -5
  51. package/lib/composables/pagination.composable.ts +5 -0
  52. package/lib/i18n.ts +4 -0
  53. package/lib/icons/fa-icons.ts +48 -2
  54. package/lib/icons/index.ts +4 -0
  55. package/lib/icons/legacy-icons.ts +10 -0
  56. package/lib/icons/object-icons.ts +1 -1
  57. package/lib/layouts/CoreLayout.vue +1 -2
  58. package/lib/locales/cs.json +29 -10
  59. package/lib/locales/de.json +70 -7
  60. package/lib/locales/en.json +23 -0
  61. package/lib/locales/es.json +3 -3
  62. package/lib/locales/fr.json +23 -0
  63. package/lib/locales/it.json +17 -5
  64. package/lib/locales/nl.json +28 -10
  65. package/lib/locales/pt_BR.json +67 -0
  66. package/lib/locales/sv.json +17 -0
  67. package/lib/packages/icon/DisplayIcon.vue +1 -0
  68. package/lib/packages/progress/README.md +62 -0
  69. package/lib/packages/progress/types.ts +19 -0
  70. package/lib/packages/progress/use-progress-group.ts +68 -0
  71. package/lib/packages/progress/use-progress.ts +22 -0
  72. package/lib/packages/threshold/README.md +30 -0
  73. package/lib/packages/threshold/type.ts +3 -0
  74. package/lib/packages/threshold/use-threshold.ts +19 -0
  75. package/lib/types/object-icon.type.ts +0 -40
  76. package/lib/utils/progress.util.ts +72 -0
  77. package/lib/utils/size.util.ts +6 -0
  78. package/package.json +1 -1
  79. package/lib/components/icon/NewVtsIcon.vue +0 -49
  80. package/lib/components/ui/complex-icon/UiComplexIcon.vue +0 -45
  81. package/lib/components/ui/object-icon/UiObjectIcon.vue +0 -251
@@ -1,4 +1,6 @@
1
+ import type { TablePaginationSize } from '@core/components/ui/table-pagination/UiTablePagination.vue'
1
2
  import { useRouteQuery } from '@core/composables/route-query.composable'
3
+ import { useUiStore } from '@core/stores/ui.store.ts'
2
4
  import { clamp, useLocalStorage } from '@vueuse/core'
3
5
  import { computed, type MaybeRefOrGetter, toValue } from 'vue'
4
6
 
@@ -60,7 +62,10 @@ export function usePagination<T>(id: string, _records: MaybeRefOrGetter<T[]>) {
60
62
  startIndex.value = records.value.length - 1
61
63
  }
62
64
 
65
+ const uiStore = useUiStore()
66
+
63
67
  const paginationBindings = computed(() => ({
68
+ size: (uiStore.isMobile ? 'small' : 'medium') as TablePaginationSize,
64
69
  showBy: showBy.value,
65
70
  'onUpdate:showBy': (value: number) => (showBy.value = value),
66
71
  from: Math.max(0, startIndex.value + 1),
package/lib/i18n.ts CHANGED
@@ -53,6 +53,10 @@ export const locales: Locales = {
53
53
  code: 'nl',
54
54
  name: 'Nederlands',
55
55
  },
56
+ pt_BR: {
57
+ code: 'pt_BR',
58
+ name: 'Português (Brasil)',
59
+ },
56
60
  }
57
61
 
58
62
  export default createI18n({
@@ -1,5 +1,12 @@
1
1
  import { defineIconPack } from '@core/packages/icon/define-icon-pack.ts'
2
- import { faBuilding, faFile, faFolderClosed, faFolderOpen, faSquareCheck } from '@fortawesome/free-regular-svg-icons'
2
+ import {
3
+ faBuilding,
4
+ faFile,
5
+ faFolderClosed,
6
+ faFolderOpen,
7
+ faSquareCheck,
8
+ faCopy,
9
+ } from '@fortawesome/free-regular-svg-icons'
3
10
  import {
4
11
  faAlignLeft,
5
12
  faAngleDoubleLeft,
@@ -21,6 +28,9 @@ import {
21
28
  faCaretDown,
22
29
  faCaretUp,
23
30
  faCheck,
31
+ faCheckCircle,
32
+ faChevronDown,
33
+ faChevronUp,
24
34
  faCircle,
25
35
  faCircleCheck,
26
36
  faCircleMinus,
@@ -31,7 +41,6 @@ import {
31
41
  faClose,
32
42
  faCode,
33
43
  faComments,
34
- faCopy,
35
44
  faDatabase,
36
45
  faDesktop,
37
46
  faDisplay,
@@ -41,17 +50,24 @@ import {
41
50
  faEdit,
42
51
  faEllipsis,
43
52
  faEllipsisVertical,
53
+ faEraser,
54
+ faExclamation,
55
+ faExclamationCircle,
44
56
  faExternalLink,
45
57
  faEyeSlash,
46
58
  faFileCsv,
47
59
  faFileExport,
48
60
  faFilter,
61
+ faFloppyDisk,
49
62
  faFont,
50
63
  faGear,
51
64
  faHashtag,
52
65
  faHeadset,
66
+ faInfo,
67
+ faInfoCircle,
53
68
  faKeyboard,
54
69
  faLayerGroup,
70
+ faLink,
55
71
  faList,
56
72
  faLock,
57
73
  faLockOpen,
@@ -74,8 +90,18 @@ import {
74
90
  faSatellite,
75
91
  faServer,
76
92
  faSliders,
93
+ faSquare,
94
+ faSquareCaretDown,
95
+ faStar,
96
+ faStop,
97
+ faTags,
98
+ faThumbTack,
99
+ faThumbTackSlash,
77
100
  faTrash,
101
+ faTriangleExclamation,
78
102
  faUpRightAndDownLeftFromCenter,
103
+ faUpRightFromSquare,
104
+ faWarning,
79
105
  faXmark,
80
106
  } from '@fortawesome/free-solid-svg-icons'
81
107
 
@@ -101,6 +127,9 @@ export const faIcons = defineIconPack({
101
127
  'caret-down': { icon: faCaretDown },
102
128
  'caret-up': { icon: faCaretUp },
103
129
  check: { icon: faCheck },
130
+ 'check-circle': { icon: faCheckCircle },
131
+ 'chevron-down': { icon: faChevronDown },
132
+ 'chevron-up': { icon: faChevronUp },
104
133
  circle: { icon: faCircle },
105
134
  'circle-check': { icon: faCircleCheck },
106
135
  'circle-minus': { icon: faCircleMinus },
@@ -121,20 +150,27 @@ export const faIcons = defineIconPack({
121
150
  edit: { icon: faEdit },
122
151
  ellipsis: { icon: faEllipsis },
123
152
  'ellipsis-vertical': { icon: faEllipsisVertical },
153
+ eraser: { icon: faEraser },
154
+ exclamation: { icon: faExclamation },
155
+ 'exclamation-circle': { icon: faExclamationCircle },
124
156
  'external-link': { icon: faExternalLink },
125
157
  'eye-slash': { icon: faEyeSlash },
126
158
  file: { icon: faFile },
127
159
  'file-csv': { icon: faFileCsv },
128
160
  'file-export': { icon: faFileExport },
129
161
  filter: { icon: faFilter },
162
+ 'floppy-disk': { icon: faFloppyDisk },
130
163
  'folder-closed': { icon: faFolderClosed },
131
164
  'folder-open': { icon: faFolderOpen },
132
165
  font: { icon: faFont },
133
166
  gear: { icon: faGear },
134
167
  hashtag: { icon: faHashtag },
135
168
  headset: { icon: faHeadset },
169
+ info: { icon: faInfo },
170
+ 'info-circle': { icon: faInfoCircle },
136
171
  keyboard: { icon: faKeyboard },
137
172
  'layer-group': { icon: faLayerGroup },
173
+ link: { icon: faLink },
138
174
  list: { icon: faList },
139
175
  lock: { icon: faLock },
140
176
  'lock-open': { icon: faLockOpen },
@@ -157,8 +193,18 @@ export const faIcons = defineIconPack({
157
193
  satellite: { icon: faSatellite },
158
194
  server: { icon: faServer },
159
195
  sliders: { icon: faSliders },
196
+ square: { icon: faSquare },
197
+ 'square-caret-down': { icon: faSquareCaretDown },
160
198
  'square-check': { icon: faSquareCheck },
199
+ star: { icon: faStar },
200
+ stop: { icon: faStop },
201
+ tags: { icon: faTags },
202
+ 'thumb-tack': { icon: faThumbTack },
203
+ 'thumb-tack-slash': { icon: faThumbTackSlash },
161
204
  trash: { icon: faTrash },
205
+ 'triangle-exclamation': { icon: faTriangleExclamation },
162
206
  'up-right-and-down-left-from-center': { icon: faUpRightAndDownLeftFromCenter },
207
+ 'up-right-from-square': { icon: faUpRightFromSquare },
208
+ warning: { icon: faWarning },
163
209
  xmark: { icon: faXmark },
164
210
  })
@@ -13,3 +13,7 @@ export const icons = defineIconPack({
13
13
  export type IconName = Exclude<keyof typeof icons, typeof ICON_SYMBOL>
14
14
 
15
15
  export type ObjectIconName = Extract<IconName, `object:${string}`>
16
+
17
+ export function icon<TName extends IconName>(name: TName): TName {
18
+ return name
19
+ }
@@ -8,6 +8,8 @@ import {
8
8
  faExclamation,
9
9
  faInfo,
10
10
  faMinus,
11
+ faMoon,
12
+ faPause,
11
13
  faPlay,
12
14
  faStar,
13
15
  faStop,
@@ -51,6 +53,10 @@ export const legacyIcons = defineIconPack({
51
53
  color: 'var(--color-info-item-base)',
52
54
  },
53
55
  'legend-circle': { icon: faCircle, size: 8 },
56
+ paused: {
57
+ icon: faPause,
58
+ color: 'var(--color-brand-item-base)',
59
+ },
54
60
  primary: [
55
61
  {
56
62
  icon: faCircle,
@@ -77,4 +83,8 @@ export const legacyIcons = defineIconPack({
77
83
  size: 8,
78
84
  },
79
85
  ]),
86
+ suspended: {
87
+ icon: faMoon,
88
+ color: 'var(--color-info-item-base)',
89
+ },
80
90
  })
@@ -156,7 +156,7 @@ export const objectIcons = defineIconPack({
156
156
  },
157
157
  { icon: getStatusIcon(state) },
158
158
  ]),
159
- host: defineIcon([['running', 'halted', 'disabled', 'muted', 'unknown']], state => [
159
+ host: defineIcon([['running', 'halted', 'disabled', 'muted', 'unknown', 'maintenance']], state => [
160
160
  {
161
161
  icon: faServer,
162
162
  color: getMainColor(state),
@@ -9,7 +9,7 @@
9
9
  }"
10
10
  accent="brand"
11
11
  size="medium"
12
- :icon="faBars"
12
+ icon="fa:bars"
13
13
  class="sidebar-toggle"
14
14
  :target-scale="1.8"
15
15
  @click="sidebarStore.toggleExpand()"
@@ -48,7 +48,6 @@ import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
48
48
  import { vTooltip } from '@core/directives/tooltip.directive'
49
49
  import { useSidebarStore } from '@core/stores/sidebar.store'
50
50
  import { useUiStore } from '@core/stores/ui.store'
51
- import { faBars } from '@fortawesome/free-solid-svg-icons'
52
51
  import { useI18n } from 'vue-i18n'
53
52
 
54
53
  const { t } = useI18n()
@@ -2,6 +2,7 @@
2
2
  "2nd-last": "2. poslední",
3
3
  "3rd-last": "3. poslední",
4
4
  "about": "O aplikaci",
5
+ "accept-self-signed-certificates": "Přijímat samy sebou podepsané certifikáty",
5
6
  "access-forum": "Diskuzní fórum",
6
7
  "access-xoa": "Přistoupit do XOA",
7
8
  "account-organization-more": "Účet, organizace a další…",
@@ -13,15 +14,15 @@
13
14
  "admin-password": "Heslo správce",
14
15
  "admin-password-confirm": "Potvrzení hesla správce",
15
16
  "affinity-host": "Určený hostitel",
16
- "alarm-type.cpu_usage": "Vytížení procesoru překračuje {n}%",
17
- "alarm-type.disk_usage": "Využití disku překračuje {n}%",
18
- "alarm-type.fs_usage": "Využití souborového systému překračuje {n}%",
19
- "alarm-type.log_fs_usage": "Využití souborového systému, uchovávajícího záznamy událostí, překračuje {n}%",
20
- "alarm-type.mem_usage": "Využití operační paměti překračuje {n}%",
21
- "alarm-type.memory_free_kib": "Volná operační paměť padá pod {n}%",
22
- "alarm-type.network_usage": "Vytížení sítě překračuje {n}%",
23
- "alarm-type.physical_utilisation": "Fyzické využití překračuje {n}%",
24
- "alarm-type.sr_io_throughput_total_per_host": "Celkový průtok přes SR IO na hostiteli přesahuje {n}%",
17
+ "alarm-type.cpu_usage": "Vytížení procesoru překračuje @:n-percent",
18
+ "alarm-type.disk_usage": "Využití disku překračuje @:n-percent",
19
+ "alarm-type.fs_usage": "Využití souborového systému překračuje @:n-percent",
20
+ "alarm-type.log_fs_usage": "Využití souborového systému, uchovávajícího záznamy událostí, překračuje @:n-percent",
21
+ "alarm-type.mem_usage": "Využití operační paměti překračuje @:n-percent",
22
+ "alarm-type.memory_free_kib": "Volná operační paměť padá pod @:n-percent",
23
+ "alarm-type.network_usage": "Vytížení sítě překračuje @:n-percent",
24
+ "alarm-type.physical_utilisation": "Fyzické využití překračuje @:n-percent",
25
+ "alarm-type.sr_io_throughput_total_per_host": "Celkový průtok přes SR IO na hostiteli přesahuje @:n-percent",
25
26
  "alarm-type.unknown": "Neznámý typ výstrahy",
26
27
  "alarms": "Výstrahy",
27
28
  "all-done": "Vše dokončeno!",
@@ -79,7 +80,11 @@
79
80
  "configuration": "Nastavení",
80
81
  "confirm-cancel": "Opravdu chcete zrušit?",
81
82
  "confirm-delete": "Chystáte se smazat {0}",
83
+ "connect": "Připojit",
84
+ "connect-another-pool": "Připojit další fond",
85
+ "connect-pool": "Připojit fond",
82
86
  "connected": "Připojeno",
87
+ "connected-to-ip": "Připojeno k {ip}",
83
88
  "connecting": "Připojuje se",
84
89
  "connection": "Připojení",
85
90
  "connection-failed": "Připojení se nezdařilo",
@@ -103,6 +108,7 @@
103
108
  "core.group": "Skupina",
104
109
  "core.hide": "Skrýt",
105
110
  "core.open": "Otevřít",
111
+ "core.open-in-new-tab": "Otevřít v novém panelu",
106
112
  "core.pagination.all": "Vše",
107
113
  "core.pagination.show-by": "Zobrazit podle",
108
114
  "core.query-search-bar.label": "Vyhledávací engine",
@@ -246,6 +252,7 @@
246
252
  "ip-address": "IP adresa",
247
253
  "ip-addresses": "IP adresy",
248
254
  "ip-mode": "Režim IP",
255
+ "ip-port-placeholder": "adresa[:port]",
249
256
  "is-primary-host": "{name} je hlavní hostitel",
250
257
  "iscsi-iqn": "iSCSI IQN název",
251
258
  "iso-dvd": "ISO/DVD",
@@ -340,6 +347,7 @@
340
347
  "n-hosts": "1 hostitel | {n} hostitelů",
341
348
  "n-hosts-awaiting-patch": "{n} hostitel čeká na tuto záplatu | {n} hostitelů čeká na tuto záplatu",
342
349
  "n-missing": "{n} chybí",
350
+ "n-percent": "{n}%",
343
351
  "n-vms": "1 virt. stroj | {n} virt. strojů",
344
352
  "name": "Název",
345
353
  "nested-virtualization": "Vnořená virtualizace",
@@ -387,6 +395,7 @@
387
395
  "on": "Zapnuto",
388
396
  "on-object": "na {object}",
389
397
  "open-console-in-new-tab": "Otevřít konzoli v novém panelu",
398
+ "options": "Možnosti",
390
399
  "or": "Nebo",
391
400
  "os-kernel": "Jádro operačního systému",
392
401
  "os-name": "Název operačního systému",
@@ -405,6 +414,12 @@
405
414
  "pifs-status": "Stav FYZICKÝCH ROZHRANÍ",
406
415
  "please-confirm": "Prosím potvrďte",
407
416
  "pool": "Fond",
417
+ "pool-connection-error-auth-failed": "Při připojování k fondu došlo k chybě. Zdá se, že uživatelské jméno nebo heslo není správné.",
418
+ "pool-connection-error-duplicate": "Při připojování k fondu došlo k chybě. Zdá se, že už je připojený.",
419
+ "pool-connection-error-host-not-found": "Při připojování k fondu došlo k chybě. Zdá se, že adresa tohoto fondu neexistuje. Zadejte jinou a zkuste to znovu.",
420
+ "pool-connection-error-invalid-parameters": "Při připojování k fondu došlo k chybě. Zdá se, že zadané parametry nejsou platné. Zkontrolujte IP adresu a přihlašovací údaje a pak to zkuste znovu.",
421
+ "pool-connection-ip-info": "Zadejte adresu hlavního hostitele fondu, ke kterému se chcete připojit.",
422
+ "pool-connection-success": "Úspěšně jste připojili fond. Naleznete ho ve stromovém pohledu a můžete začít spravovat hostitele a virt. stroje v něm.",
408
423
  "pool-cpu-usage": "Využití fondu procesorů",
409
424
  "pool-management": "Správa fondu",
410
425
  "pool-ram-usage": "Využití fondu operační paměti",
@@ -448,6 +463,7 @@
448
463
  "resource-management": "Správa prostředků",
449
464
  "resources-overview": "Přehled prostředků",
450
465
  "resume": "Navázat v chodu",
466
+ "root-by-default": "Výchozí je „root“.",
451
467
  "running-vm": "Spuštěný virt. stroj | Spuštěné virt. stroje",
452
468
  "s3-backup-repository": "S3 repozitář záloh",
453
469
  "save": "Uložit",
@@ -515,7 +531,7 @@
515
531
  "tasks": "Úkoly",
516
532
  "tasks.n-subtasks": "{n} podúloha | {n} podúloh",
517
533
  "tasks.no-tasks": "Žádné úlohy",
518
- "tasks.quick-view": "Rychlý přehled úlohy",
534
+ "tasks.quick-view": "Rychlý přehled úloh",
519
535
  "tasks.quick-view.all": "Vše",
520
536
  "tasks.quick-view.done": "Hotovo",
521
537
  "tasks.quick-view.failed": "Nezdařilo se",
@@ -538,12 +554,14 @@
538
554
  "total-storage-repository": "Celkové úložiště repozitáře",
539
555
  "total-used": "Celkem využito",
540
556
  "total-used:": "Celkem využito:",
557
+ "unable-to-connect-to": "Nebylo možné se připojit k {ip}",
541
558
  "unable-to-connect-to-the-pool": "Nebylo možné se připojit k fondu",
542
559
  "unknown": "Neznámé",
543
560
  "unlocked": "Odemčeno",
544
561
  "unreachable-hosts": "Nedosažitelní hostitelé",
545
562
  "unreachable-hosts-reload-page": "Hotovo, načtěte stránku znovu",
546
563
  "up-to-date": "Aktuální",
564
+ "update": "Aktualizovat",
547
565
  "used": "Využito",
548
566
  "user-config": "Nastavení uživatele",
549
567
  "username": "Uživatelské jméno",
@@ -564,6 +582,7 @@
564
582
  "virtualization-boot-settings": "Nastavení virtualizace a zavádění systému",
565
583
  "virtualization-mode": "Režim virtualizace",
566
584
  "virtualization-type": "Typ virtualizace",
585
+ "visit-pool-dashboard": "Přejít na přehled fondu",
567
586
  "vlan": "VLAN",
568
587
  "vm": "Virt. stroj",
569
588
  "vm-description": "Popis virt. stroje",