@xen-orchestra/web-core 0.45.0 → 0.46.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.
@@ -8,7 +8,6 @@
8
8
  <script lang="ts" setup>
9
9
  import { useDisabled } from '@core/composables/disabled.composable'
10
10
  import { useUiStore } from '@core/stores/ui.store'
11
- import { storeToRefs } from 'pinia'
12
11
  import { computed } from 'vue'
13
12
 
14
13
  const props = withDefaults(
@@ -20,13 +19,13 @@ const props = withDefaults(
20
19
  { tag: 'span' }
21
20
  )
22
21
 
23
- const { isSmall } = storeToRefs(useUiStore())
22
+ const uiStore = useUiStore()
24
23
 
25
24
  const isDisabled = useDisabled(() => props.disabled)
26
25
 
27
26
  const classNames = computed(() => {
28
27
  return [
29
- isSmall.value ? 'typo-caption-small' : 'typo-caption',
28
+ uiStore.isSmall ? 'typo-caption-small' : 'typo-caption',
30
29
  {
31
30
  disabled: isDisabled.value,
32
31
  active: props.active,
@@ -1,6 +1,6 @@
1
1
  <!-- WIP -->
2
2
  <template>
3
- <div :class="{ mobile: isSmall }" class="ui-quick-task-panel">
3
+ <div :class="{ mobile: uiStore.isSmall }" class="ui-quick-task-panel">
4
4
  <VtsQuickTaskTabBar
5
5
  v-model="currentTab"
6
6
  :failure-count="failureTasks.length"
@@ -24,7 +24,7 @@ const props = defineProps<{
24
24
  loading?: boolean
25
25
  }>()
26
26
 
27
- const { isSmall } = useUiStore()
27
+ const uiStore = useUiStore()
28
28
 
29
29
  const currentTab = ref<TaskTab>('pending')
30
30
 
@@ -20,11 +20,11 @@
20
20
  @click="emit('toggle')"
21
21
  />
22
22
  <div v-else class="h-line" />
23
- <a v-tooltip="{ selector: '.text' }" :href class="link typo-body-bold-small" @click="navigate">
23
+ <a :href class="link typo-body-bold-small" @click="navigate">
24
24
  <slot name="icon">
25
25
  <VtsIcon :name="icon" size="medium" class="icon" />
26
26
  </slot>
27
- <div class="text text-ellipsis">
27
+ <div v-tooltip class="text text-ellipsis">
28
28
  <slot />
29
29
  </div>
30
30
  </a>
@@ -48,8 +48,8 @@ export function useTableState(config: {
48
48
 
49
49
  return computed(() => {
50
50
  return (
51
- handleStateInput('busy', config.busy) ??
52
51
  handleStateInput('error', config.error) ??
52
+ handleStateInput('busy', config.busy) ??
53
53
  handleStateInput('no-data', config.empty)
54
54
  )
55
55
  })
@@ -1,7 +1,7 @@
1
1
  import { defineIconPack, type IconSingleConfig } from '@core/packages/icon'
2
2
  import {
3
- faSquare as checkboxEmpty,
4
3
  faCircle as circleEmpty,
4
+ faSquare as checkboxEmpty,
5
5
  type IconDefinition,
6
6
  } from '@fortawesome/free-regular-svg-icons'
7
7
  import {
@@ -51,11 +51,11 @@ export const statusIcons = defineIconPack({
51
51
  'paused-circle': [
52
52
  {
53
53
  icon: faCircle,
54
- color: 'var(--color-brand-item-base)',
54
+ color: 'var(--color-info-item-base)',
55
55
  },
56
56
  {
57
57
  icon: faPause,
58
- color: 'var(--color-brand-txt-item)',
58
+ color: 'var(--color-info-txt-item)',
59
59
  size: 8,
60
60
  },
61
61
  ],
@@ -10,6 +10,7 @@
10
10
  "account-organization-more": "Účet, organizace a další…",
11
11
  "action:add": "Přidat",
12
12
  "action:add-filter": "Přidat filtr",
13
+ "action:add-group": "Přidat skupinu",
13
14
  "action:add-host-internal-network-in-xo-5": "Přidat vnitřní síť hostitele v XO-5",
14
15
  "action:add-network-in-xo-5": "Přidat síť v XO-5",
15
16
  "action:add-sort": "Přidat řazení",
@@ -26,9 +27,12 @@
26
27
  "action:copy-info-json": "Zkopírovat informace do JSON",
27
28
  "action:create": "Vytvořit",
28
29
  "action:delete": "Smazat",
30
+ "action:delete-filter": "Smazat filtr",
31
+ "action:delete-group": "Smazat skupinu",
29
32
  "action:delete-vms": "Smazat 1 virt. stroj | Smazat {n} virt. strojů",
30
33
  "action:deploy": "Nasadit",
31
34
  "action:deploy-xoa": "Nasadit XOA",
35
+ "action:duplicate": "Zduplikovat",
32
36
  "action:edit": "Upravit",
33
37
  "action:edit-config": "Upravit nastavení",
34
38
  "action:enable-light-mode": "Zapnout světlý režim",
@@ -50,10 +54,15 @@
50
54
  "action:log-out": "Odhlásit",
51
55
  "action:migrate": "Přestěhovat",
52
56
  "action:migrate-n-vms": "Přestěhovat 1 virt. stroj | Přestěhovat {n} virt. strojů",
57
+ "action:move-filters-to-parent-group": "Přesunout filtry do nadřazené skupiny",
53
58
  "action:open": "Otevřít",
54
59
  "action:open-app": "Otevřít {name}",
55
60
  "action:open-console-in-new-tab": "Otevřít konzoli v novém panelu",
56
61
  "action:pick-template": "Vybrat šablonu",
62
+ "action:plus-and": "+ @:and",
63
+ "action:plus-or": "+ @:or",
64
+ "action:query-builder:delete-filter": "Smazat filtr",
65
+ "action:query-builder:delete-group": "Smazat skupinu",
57
66
  "action:reboot": "Restartovat",
58
67
  "action:reformat": "Přeformátovat",
59
68
  "action:resume": "Navázat v chodu",
@@ -83,8 +92,10 @@
83
92
  "action:start": "Spustit",
84
93
  "action:start-on-host": "Spustit na konkrétním hostiteli",
85
94
  "action:suspend": "Uspat",
95
+ "action:turn-into-group": "Přeměnit na skupinu",
86
96
  "action:unselect-all": "Zrušit výběr všeho",
87
97
  "action:update": "Aktualizovat",
98
+ "action:use-query-builder": "Použít nástroj pro sestavování dotazů",
88
99
  "action:visit-pool-dashboard": "Přejít na přehled fondu",
89
100
  "add-or": "+NEBO",
90
101
  "admin-login": "Přihlašovací jméno správce",
@@ -108,6 +119,8 @@
108
119
  "all-good!": "Všechno v pořádku!",
109
120
  "all-quiet-launchpad": "Na startovní rampě klid",
110
121
  "allow-self-signed-ssl": "Je možné že bude třeba ve vámi využívaném prohlížeči povolit samy sebou podepsané SSL certifikáty",
122
+ "and": "A",
123
+ "any-property": "Jakákoli vlastnost",
111
124
  "api-error-details": "Podrobnosti o chybě API rozhraní",
112
125
  "api-info-details": "Podrobnosti o informaci z API",
113
126
  "api-warning-details": "Podrobnosti o varování z API",
@@ -174,7 +187,7 @@
174
187
  "checkpoint-snapshot": "Zachycený stav – kontrolní bod",
175
188
  "click-to-display-alarms:": "Kliknutím zobrazíte výstrahy:",
176
189
  "click-to-return-default-pool": "Kliknutím sem se vrátíte na výchozí fond",
177
- "cloud-init-config": "Uživatelsky určené nastavení",
190
+ "cloud-init-config": "Cloud Init config",
178
191
  "color-mode:auto": "Automatický režim",
179
192
  "coming-soon!": "Už brzy!",
180
193
  "community": "Komunita",
@@ -276,6 +289,7 @@
276
289
  "fast-clone": "Rychlý klon",
277
290
  "fetching-fresh-data": "Získávání aktuálních údajů",
278
291
  "field:exceeds-max-characters": "Je třeba, aby zadání v kolonce bylo dlouhé nejvýše {max} znaků.",
292
+ "filter-actions": "Akce filtru",
279
293
  "following-hosts-unreachable": "Následující hostitelé nejsou dosažitelní",
280
294
  "for-backup": "Pro zálohu",
281
295
  "for-replication": "Pro replikaci",
@@ -415,6 +429,7 @@
415
429
  "loading": "Načítání…",
416
430
  "loading-hosts": "Načítání hostitelů…",
417
431
  "local": "Lokální",
432
+ "locked": "Uzamčeno",
418
433
  "locking-mode": "Režim zamykání",
419
434
  "locking-mode-default": "Výchozí režim zamykání",
420
435
  "login": "Přihlášení",
@@ -460,6 +475,7 @@
460
475
  "multi-creation": "Vícenásobné vytvoření",
461
476
  "multi-pathing": "Propojování vícero cestami",
462
477
  "n-cpus": "1 procesor | {n} procesory | {n} procesorů",
478
+ "n-gb": "{n} GB",
463
479
  "n-gb-left": "{n} GB zbývá",
464
480
  "n-gb-required": "{n} GB vyžadováno",
465
481
  "n-hosts": "1 hostitel | {n} hostitelů",
@@ -612,24 +628,34 @@
612
628
  "provisioning": "Přednastavování",
613
629
  "proxy": "Proxy",
614
630
  "proxy-url": "URL proxy",
631
+ "public-key": "Veřejný klíč",
632
+ "public-key-already-exists": "Veřejný klíč už existuje",
633
+ "public-key-mandatory": "Veřejný klíč je třeba zadat",
615
634
  "pxe": "PXE",
635
+ "query-builder": "Nástroj pro sestavování dotazů",
636
+ "query-builder:label": "Vyhledávací engine",
616
637
  "query-builder:operator:contains": "Obsahuje",
638
+ "query-builder:operator:empty": "Je prázdné",
617
639
  "query-builder:operator:ends-with": "Končí na",
618
640
  "query-builder:operator:equals": "Rovno",
619
641
  "query-builder:operator:is": "Je",
620
642
  "query-builder:operator:is-false": "Neplatí",
621
643
  "query-builder:operator:is-not": "Není",
622
644
  "query-builder:operator:is-true": "Platí",
645
+ "query-builder:operator:matches-glob": "Shoduje se glob",
623
646
  "query-builder:operator:matches-regex": "Odpovídá regulárnímu výrazu",
624
647
  "query-builder:operator:not-contain": "Neobsahuje",
648
+ "query-builder:operator:not-empty": "Není prázdné",
625
649
  "query-builder:operator:not-end-with": "Nekončí na",
626
650
  "query-builder:operator:not-equal": "Není rovno",
651
+ "query-builder:operator:not-match-glob": "Neshoduje se glob",
627
652
  "query-builder:operator:not-match-regex": "Neodpovídá regulárnímu výrazu",
628
653
  "query-builder:operator:not-start-with": "Nezačíná na",
629
654
  "query-builder:operator:starts-with": "Začíná na",
630
- "query-search-bar:label": "Vyhledávací engine",
631
- "query-search-bar:placeholder": "Zadejte svůj dotaz…",
632
- "query-search-bar:use-query-builder": "Použít nástroj pro sestavování dotazů",
655
+ "query-builder:placeholder": "Sestavte si svůj dotaz…",
656
+ "query-search-bar:label": "@:query-builder:label",
657
+ "query-search-bar:placeholder": "@:query-builder:placeholder",
658
+ "query-search-bar:use-query-builder": "@:query-builder",
633
659
  "quick-actions": "Rychlé akce",
634
660
  "quick-info": "Stručné informace",
635
661
  "ram": "Operační paměť",
@@ -152,8 +152,8 @@
152
152
  "console-unavailable": "Konsol ikke tilgængelig",
153
153
  "console-unavailable-reason": "Konsollen er i øjeblikket utilgængelig, fordi {type} er slukket.",
154
154
  "copied": "Kopieret",
155
- "core-socket": "Kerne (sokket)",
156
- "cores-with-sockets": "Kerner (stikkontakter)",
155
+ "core-socket": "Kerne (sokkel)",
156
+ "cores-with-sockets": "Kerner (sokler)",
157
157
  "cpu": "CPU",
158
158
  "cpu-model": "CPU model",
159
159
  "cpu-usage": "CPU forbrug",
@@ -136,12 +136,15 @@
136
136
  "backed-up-pools": "Backed up Pools",
137
137
  "backed-up-vms": "Backed up VMs",
138
138
  "backup": "Backup",
139
+ "backup-archive-status": "Backup archive status",
139
140
  "backup-issues": "Backup issues",
140
141
  "backup-job": "Backup job",
141
142
  "backup-jobs": "Backup jobs",
143
+ "backup-jobs:see-all": "See all backup jobs",
142
144
  "backup-network": "Backup network",
143
145
  "backup-repositories": "Backup repositories",
144
- "backup-repository": "Backup repository (local, NFS, SMB)",
146
+ "backup-repository": "Backup repository",
147
+ "backup-repository-type": "Backup repository (local, NFS, SMB)",
145
148
  "backup-targets": "Backup targets",
146
149
  "backup:full": "Full backup",
147
150
  "backup:full-replication": "Full replication",
@@ -163,10 +166,13 @@
163
166
  "backups:jobs:skipped-runs": "Skipped runs, no errors",
164
167
  "backups:jobs:status": "Backup jobs status",
165
168
  "backups:vms-protection": "VMs protection",
166
- "backups:vms-protection:no-job": "In no active job",
167
- "backups:vms-protection:protected": "In at least 1 active job & protected",
169
+ "backups:vms-protection:active-protected": "In at least 1 active job & protected",
170
+ "backups:vms-protection:active-unprotected": "In at least 1 active job but unprotected",
171
+ "backups:vms-protection:no-active-job": "In no active job",
172
+ "backups:vms-protection:no-job": "In no job",
173
+ "backups:vms-protection:protected": "In at least 1 job & protected",
168
174
  "backups:vms-protection:tooltip": "A VM is protected if it's in a backup job, with an enabled schedule, and the last run succeeded",
169
- "backups:vms-protection:unprotected": "In at least 1 active job but unprotected",
175
+ "backups:vms-protection:unprotected": "In at least 1 job but unprotected",
170
176
  "bios-default": "bios (default)",
171
177
  "bios-info": "BIOS info",
172
178
  "bond": "Bond",
@@ -344,6 +350,7 @@
344
350
  "ipv4-addresses": "IPv4 addresses",
345
351
  "ipv6-address": "IPv6 address",
346
352
  "ipv6-addresses": "IPv6 addresses",
353
+ "is-part-of-one-active-job": "This VM is currently part of at least one active job. The last job it participated in will appear here once it has been executed.",
347
354
  "is-primary-host": "{name} is primary host",
348
355
  "iscsi-iqn": "iSCSI IQN",
349
356
  "iso-dvd": "ISO/DVD",
@@ -417,6 +424,8 @@
417
424
  "language": "Language",
418
425
  "language-preferences": "Language preferences",
419
426
  "last": "Last",
427
+ "last-n-backup-archives": "Last backup archive | Last {n} backup archives",
428
+ "last-n-backup-runs": "Last backup run | Last {n} backup runs",
420
429
  "last-n-runs": "Last run | Last {n} runs",
421
430
  "last-run-number": "Last run #{n}",
422
431
  "last-week": "Last week",
@@ -532,9 +541,12 @@
532
541
  "no-data-to-calculate": "No data to calculate",
533
542
  "no-host-attached": "No hosts attached",
534
543
  "no-host-detected": "No hosts detected",
544
+ "no-job-vm": "This VM isn’t part of any running job.",
535
545
  "no-network-detected": "No networks detected",
536
546
  "no-pbd-attached": "No PBDs attached",
537
547
  "no-pif-detected": "No PIFs detected",
548
+ "no-pools-detected": "No pools detected",
549
+ "no-replicated-vm": "This VM isn’t being replicated. Configure a replication job to enable it.",
538
550
  "no-result": "No results",
539
551
  "no-schedule-available": "No schedules available",
540
552
  "no-selected-vm-can-be-exported": "No selected VM can be exported",
@@ -634,6 +646,7 @@
634
646
  "property": "Property",
635
647
  "protect-from-accidental-deletion": "Protect from accidental deletion",
636
648
  "protect-from-accidental-shutdown": "Protect from accidental shutdown",
649
+ "protection-status": "Protection status",
637
650
  "provider-solutions": "{provider} solutions",
638
651
  "provisioning": "Provisioning",
639
652
  "proxy": "Proxy",
@@ -722,6 +735,7 @@
722
735
  "show-by": "Show by",
723
736
  "shutdown-blocked": "Shutdown Blocked",
724
737
  "size": "Size",
738
+ "size-on-disk": "Size on disk",
725
739
  "skipped": "Skipped",
726
740
  "smart-mode": "Smart mode",
727
741
  "snapshot": "Snapshot",
@@ -136,12 +136,15 @@
136
136
  "backed-up-pools": "Pools sauvegardés",
137
137
  "backed-up-vms": "VMs sauvegardées",
138
138
  "backup": "Sauvegarde",
139
+ "backup-archive-status": "Statut de l'archive",
139
140
  "backup-issues": "Problèmes de sauvegarde",
140
141
  "backup-job": "Job de sauvegarde",
141
142
  "backup-jobs": "Jobs de sauvegarde",
143
+ "backup-jobs:see-all": "Voir toutes les sauvegardes",
142
144
  "backup-network": "Réseau de sauvegarde",
143
145
  "backup-repositories": "Dépôts de sauvegarde",
144
- "backup-repository": "Dépôt de sauvegarde (local, NFS, SMB)",
146
+ "backup-repository": "Dépôt de sauvegarde",
147
+ "backup-repository-type": "Dépôt de sauvegarde (local, NFS, SMB)",
145
148
  "backup-targets": "Cibles de sauvegarde",
146
149
  "backup:full": "Sauvegarde complète",
147
150
  "backup:full-replication": "Réplication complète",
@@ -163,10 +166,13 @@
163
166
  "backups:jobs:skipped-runs": "Runs ignorés, pas d'erreurs",
164
167
  "backups:jobs:status": "Statut des sauvegardes",
165
168
  "backups:vms-protection": "Protection des VMs",
166
- "backups:vms-protection:no-job": "Dans aucun job actif",
167
- "backups:vms-protection:protected": "Dans au moins 1 job actif et protégé",
169
+ "backups:vms-protection:active-protected": "Dans au moins 1 job actif et protégé",
170
+ "backups:vms-protection:active-unprotected": "Dans au moins 1 job actif mais non protégé",
171
+ "backups:vms-protection:no-active-job": "Dans aucun job actif",
172
+ "backups:vms-protection:no-job": "Dans aucun job",
173
+ "backups:vms-protection:protected": "Dans au moins 1 job et protégé",
168
174
  "backups:vms-protection:tooltip": "Une VM est protégée si elle se trouve dans un job, avec une planification activée, et si la dernière exécution a réussi",
169
- "backups:vms-protection:unprotected": "Dans au moins 1 job actif mais sans protection",
175
+ "backups:vms-protection:unprotected": "Dans au moins 1 job mais sans protection",
170
176
  "bios-default": "bios (défaut)",
171
177
  "bios-info": "Information du BIOS",
172
178
  "bond": "Bond",
@@ -344,6 +350,7 @@
344
350
  "ipv4-addresses": "Adresses IPv4",
345
351
  "ipv6-address": "Adresse IPv6",
346
352
  "ipv6-addresses": "Adresses IPv6",
353
+ "is-part-of-one-active-job": "Cette VM fait partie d'au moins un job actif. La dernière tâche à laquelle elle a participé apparaîtra ici une fois qu'elle aura été exécutée.",
347
354
  "is-primary-host": "{name} est l'hôte primaire",
348
355
  "iscsi-iqn": "iSCSI IQN",
349
356
  "iso-dvd": "ISO/DVD",
@@ -417,6 +424,8 @@
417
424
  "language": "Langue",
418
425
  "language-preferences": "Choix de la langue",
419
426
  "last": "Dernier",
427
+ "last-n-backup-archives": "Dernier run d'archivage | {n} derniers archivages",
428
+ "last-n-backup-runs": "Dernier run de sauvegarde | {n} dernières sauvegardes",
420
429
  "last-n-runs": "Dernier run | {n} derniers runs",
421
430
  "last-run-number": "Dernière exécution #{n}",
422
431
  "last-week": "Semaine dernière",
@@ -532,9 +541,12 @@
532
541
  "no-data-to-calculate": "Aucune donnée à calculer",
533
542
  "no-host-attached": "Aucun hôte attaché",
534
543
  "no-host-detected": "Aucun hôte détecté",
544
+ "no-job-vm": "Cette VM ne fait partie d'aucun job actif.",
535
545
  "no-network-detected": "Aucun réseau détecté",
536
546
  "no-pbd-attached": "Aucun PBD attaché",
537
547
  "no-pif-detected": "Aucun PIF détecté",
548
+ "no-pools-detected": "Aucun pool détecté",
549
+ "no-replicated-vm": "Cette VM n'est pas répliquée. Configurez une tâche de réplication pour l'activer.",
538
550
  "no-result": "Aucun résultat",
539
551
  "no-schedule-available": "Aucune planification disponible",
540
552
  "no-selected-vm-can-be-exported": "Aucune VM sélectionnée ne peut être exportée",
@@ -634,6 +646,7 @@
634
646
  "property": "Propriété",
635
647
  "protect-from-accidental-deletion": "Protection contre les suppressions accidentelles",
636
648
  "protect-from-accidental-shutdown": "Protection contre les extinctions accidentelles",
649
+ "protection-status": "Statut de la protection",
637
650
  "provider-solutions": "Solutions {provider}",
638
651
  "provisioning": "Provisionnement",
639
652
  "proxy": "Proxy",
@@ -722,6 +735,7 @@
722
735
  "show-by": "Afficher par",
723
736
  "shutdown-blocked": "Arrêt bloqué",
724
737
  "size": "Taille",
738
+ "size-on-disk": "Taille sur le disque",
725
739
  "skipped": "Ignoré",
726
740
  "smart-mode": "Mode intelligent",
727
741
  "snapshot": "Instantané",
@@ -28,7 +28,7 @@ export const useDateColumn = defineColumn((config?: HeaderConfig & DateConfig) =
28
28
  dateStyle: config?.dateStyle,
29
29
  timeStyle: config?.timeStyle,
30
30
  })
31
- })
31
+ }, 'end')
32
32
  },
33
33
  }
34
34
  })
@@ -0,0 +1,15 @@
1
+ import { defineColumns } from '@core/packages/table/define-columns.ts'
2
+ import { useDateColumn } from '@core/tables/column-definitions/date-column'
3
+ import { useLinkColumn } from '@core/tables/column-definitions/link-column'
4
+ import { useNumberColumn } from '@core/tables/column-definitions/number-column'
5
+ import { useI18n } from 'vue-i18n'
6
+
7
+ export const useBackupArchiveColumns = defineColumns(() => {
8
+ const { t } = useI18n()
9
+
10
+ return {
11
+ date: useDateColumn({ headerLabel: () => t('date'), dateStyle: 'short', timeStyle: 'medium' }),
12
+ backupRepository: useLinkColumn({ headerLabel: () => t('backup-repository') }),
13
+ sizeOnDisk: useNumberColumn({ headerLabel: () => t('size-on-disk') }),
14
+ }
15
+ })
@@ -0,0 +1,15 @@
1
+ import { defineColumns } from '@core/packages/table/define-columns.ts'
2
+ import { useDateColumn } from '@core/tables/column-definitions/date-column'
3
+ import { useLinkColumn } from '@core/tables/column-definitions/link-column'
4
+ import { useStatusColumn } from '@core/tables/column-definitions/status-column.ts'
5
+ import { useI18n } from 'vue-i18n'
6
+
7
+ export const useBackupRunColumns = defineColumns(() => {
8
+ const { t } = useI18n()
9
+
10
+ return {
11
+ date: useDateColumn({ headerLabel: () => t('date'), dateStyle: 'short', timeStyle: 'medium' }),
12
+ backupArchiveStatus: useStatusColumn({ headerLabel: () => t('backup-archive-status') }),
13
+ backupJob: useLinkColumn({ headerLabel: () => t('backup-job') }),
14
+ }
15
+ })
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xen-orchestra/web-core",
3
3
  "type": "module",
4
- "version": "0.45.0",
4
+ "version": "0.46.0",
5
5
  "private": false,
6
6
  "exports": {
7
7
  "./*": {