@xen-orchestra/web-core 0.20.1 → 0.21.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.
- package/lib/components/backup-state/VtsBackupState.vue +20 -17
- package/lib/components/cell-object/VtsCellObject.vue +4 -1
- package/lib/components/console/VtsActionsConsole.vue +7 -4
- package/lib/components/console/VtsClipboardConsole.vue +9 -6
- package/lib/components/copy-button/VtsCopyButton.vue +7 -14
- package/lib/components/dropdown/DropdownTitle.vue +5 -2
- package/lib/components/icon/NewVtsIcon.vue +49 -0
- package/lib/components/input-group/VtsInputGroup.vue +41 -0
- package/lib/components/input-wrapper/VtsInputWrapper.vue +2 -2
- package/lib/components/layout/VtsLayoutSidebar.vue +6 -3
- package/lib/components/linear-chart/VtsLinearChart.vue +4 -0
- package/lib/components/object-icon/VtsObjectIcon.vue +22 -0
- package/lib/components/quick-info-card/VtsQuickInfoCard.vue +4 -1
- package/lib/components/select/VtsOption.vue +10 -6
- package/lib/components/select/VtsSelect.vue +74 -50
- package/lib/components/state-hero/VtsAllDoneHero.vue +4 -1
- package/lib/components/state-hero/VtsAllGoodHero.vue +4 -1
- package/lib/components/state-hero/VtsComingSoonHero.vue +4 -1
- package/lib/components/state-hero/VtsErrorNoDataHero.vue +4 -1
- package/lib/components/state-hero/VtsLoadingHero.vue +4 -1
- package/lib/components/state-hero/VtsNoDataHero.vue +4 -1
- package/lib/components/state-hero/VtsNoSelectionHero.vue +4 -1
- package/lib/components/state-hero/VtsObjectNotFoundHero.vue +4 -1
- package/lib/components/state-hero/VtsOfflineHero.vue +4 -1
- package/lib/components/state-hero/VtsPageNotFoundHero.vue +4 -1
- package/lib/components/table/ColumnTitle.vue +2 -2
- package/lib/components/task/VtsQuickTaskButton.vue +4 -1
- package/lib/components/task/VtsQuickTaskList.vue +5 -2
- package/lib/components/task/VtsQuickTaskTabBar.vue +8 -5
- package/lib/components/ui/card-numbers/UiCardNumbers.vue +4 -1
- package/lib/components/ui/character-limit/UiCharacterLimit.vue +4 -1
- package/lib/components/ui/input/UiInput.vue +2 -2
- package/lib/components/ui/label/UiLabel.vue +4 -1
- package/lib/components/ui/progress-bar/UiProgressBar.vue +5 -2
- package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +9 -6
- package/lib/components/ui/quick-task-item/UiQuickTaskItem.vue +6 -3
- package/lib/components/ui/stacked-bar/StackedBarSegment.vue +4 -1
- package/lib/components/ui/table-pagination/UiTablePagination.vue +6 -3
- package/lib/components/ui/text-area/UiTextarea.vue +4 -1
- package/lib/components/ui/top-bottom-table/UiTopBottomTable.vue +6 -3
- package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +4 -1
- package/lib/composables/local-time-ago.composable.ts +53 -0
- package/lib/composables/locale-time-ago.composable.ts +53 -0
- package/lib/icons/fa-icons.ts +164 -0
- package/lib/icons/index.ts +15 -0
- package/lib/icons/legacy-icons.ts +80 -0
- package/lib/icons/object-icons.ts +187 -0
- package/lib/layouts/CoreLayout.vue +7 -3
- package/lib/locales/cs.json +0 -1
- package/lib/locales/de.json +1 -1
- package/lib/locales/en.json +32 -4
- package/lib/locales/es.json +1 -1
- package/lib/locales/fr.json +31 -3
- package/lib/locales/it.json +1 -1
- package/lib/locales/nl.json +1 -1
- package/lib/locales/ru.json +1 -1
- package/lib/locales/sv.json +1 -2
- package/lib/packages/collection/README.md +23 -18
- package/lib/packages/collection/create-collection.ts +22 -21
- package/lib/packages/collection/create-item.ts +21 -20
- package/lib/packages/collection/create-use-subset.ts +23 -0
- package/lib/packages/collection/guess-item-id.ts +26 -16
- package/lib/packages/collection/index.ts +4 -0
- package/lib/packages/collection/types.ts +65 -37
- package/lib/packages/collection/use-collection.ts +68 -18
- package/lib/packages/collection/use-flag-registry.ts +38 -17
- package/lib/packages/form-select/guess-label.ts +45 -0
- package/lib/packages/form-select/guess-value.ts +23 -0
- package/lib/packages/form-select/index.ts +6 -0
- package/lib/packages/form-select/normalize-search-term.ts +11 -0
- package/lib/packages/form-select/types.ts +90 -42
- package/lib/packages/form-select/use-form-option-controller.ts +7 -3
- package/lib/packages/form-select/use-form-select-controller.ts +38 -27
- package/lib/packages/form-select/use-form-select-keyboard-navigation.ts +1 -1
- package/lib/packages/form-select/use-form-select.ts +308 -130
- package/lib/packages/icon/DisplayIcon.vue +25 -0
- package/lib/packages/icon/DisplayIconAny.vue +16 -0
- package/lib/packages/icon/DisplayIconSingle.vue +35 -0
- package/lib/packages/icon/DisplayIconStack.vue +34 -0
- package/lib/packages/icon/README.md +286 -0
- package/lib/packages/icon/create-icon-bindings.ts +27 -0
- package/lib/packages/icon/define-icon-pack.ts +23 -0
- package/lib/packages/icon/define-icon-single.ts +17 -0
- package/lib/packages/icon/define-icon-stack.ts +20 -0
- package/lib/packages/icon/define-icon.ts +40 -0
- package/lib/packages/icon/generate-icon-variants.ts +17 -0
- package/lib/packages/icon/index.ts +8 -0
- package/lib/packages/icon/is-icon-stack.ts +5 -0
- package/lib/packages/icon/merge-icons.ts +25 -0
- package/lib/packages/icon/merge-transforms.ts +12 -0
- package/lib/packages/icon/normalize-icon.ts +25 -0
- package/lib/packages/icon/to-tuple.ts +7 -0
- package/lib/packages/icon/types.ts +72 -0
- package/lib/packages/job/README.md +2 -2
- package/lib/packages/mapper/README.md +166 -0
- package/lib/packages/mapper/convert-to-map.ts +5 -0
- package/lib/packages/mapper/create-mapper.ts +30 -0
- package/lib/packages/mapper/index.ts +4 -0
- package/lib/packages/mapper/types.ts +1 -0
- package/lib/packages/mapper/use-mapper.ts +31 -0
- package/lib/stores/sidebar.store.ts +1 -1
- package/lib/types/chart.ts +2 -2
- package/lib/types/utility.type.ts +9 -0
- package/lib/utils/object.util.ts +16 -0
- package/lib/utils/size.util.ts +4 -2
- package/package.json +2 -1
- package/lib/components/backup-item/VtsBackupItem.vue +0 -47
- package/lib/composables/mapper.composable.md +0 -74
- package/lib/composables/mapper.composable.ts +0 -18
package/lib/locales/en.json
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
+
"2nd-last": "2nd last",
|
|
3
|
+
"3rd-last": "3rd last",
|
|
2
4
|
"about": "About",
|
|
3
5
|
"access-forum": "Access forum",
|
|
4
6
|
"access-xoa": "Access XOA",
|
|
@@ -22,8 +24,8 @@
|
|
|
22
24
|
"alarm-type.sr_io_throughput_total_per_host": "SR IO throughput total per host exceeds {n}%",
|
|
23
25
|
"alarm-type.unknown": "Unknown alarm type",
|
|
24
26
|
"alarms": "Alarms",
|
|
25
|
-
"all-good": "All good!",
|
|
26
27
|
"all-done": "All done!",
|
|
28
|
+
"all-good": "All good!",
|
|
27
29
|
"allow-self-signed-ssl": "You may need to allow self-signed SSL certificates in your browser",
|
|
28
30
|
"appearance": "Appearance",
|
|
29
31
|
"ascending": "ascending",
|
|
@@ -35,6 +37,7 @@
|
|
|
35
37
|
"back-site-dashboard": "Go back to your site dashboard",
|
|
36
38
|
"backup": "Backup",
|
|
37
39
|
"backup-issues": "Backup issues",
|
|
40
|
+
"backup-network": "Backup network",
|
|
38
41
|
"backup-repository": "Backup repository (local, NFS, SMB)",
|
|
39
42
|
"backups": "Backups",
|
|
40
43
|
"backups.jobs": "Jobs",
|
|
@@ -76,6 +79,7 @@
|
|
|
76
79
|
"confirm-cancel": "Are you sure you want to cancel?",
|
|
77
80
|
"confirm-delete": "You're about to delete {0}",
|
|
78
81
|
"connected": "Connected",
|
|
82
|
+
"connections": "Connections",
|
|
79
83
|
"console": "Console",
|
|
80
84
|
"console-actions": "Console actions",
|
|
81
85
|
"console-clipboard": "Console clipboard",
|
|
@@ -124,7 +128,9 @@
|
|
|
124
128
|
"cpu-usage": "CPU usage",
|
|
125
129
|
"cpu-weight": "CPU weight",
|
|
126
130
|
"cpus": "CPUs",
|
|
131
|
+
"crash-dump-storage-repository": "Crash dump storage repository",
|
|
127
132
|
"create": "Create",
|
|
133
|
+
"created-on": "Created on",
|
|
128
134
|
"custom-config": "Custom config",
|
|
129
135
|
"dark-mode.auto": "Auto dark mode",
|
|
130
136
|
"dark-mode.disable": "Disable dark mode",
|
|
@@ -132,6 +138,7 @@
|
|
|
132
138
|
"dashboard": "Dashboard",
|
|
133
139
|
"default-behavior": "Default behavior",
|
|
134
140
|
"default-locking-mode": "Default locking mode",
|
|
141
|
+
"default-storage-repository": "Default storage repository",
|
|
135
142
|
"delete": "Delete",
|
|
136
143
|
"delete-vms": "Delete 1 VM | Delete {n} VMs",
|
|
137
144
|
"deploy": "Deploy",
|
|
@@ -173,6 +180,7 @@
|
|
|
173
180
|
"export-vm": "Export VM",
|
|
174
181
|
"export-vms": "Export VMs",
|
|
175
182
|
"export-vms-manually-information": "Some VM exports were not able to start automatically, probably due to your browser settings. To export them, you should click on each one. (Alternatively, copy the link as well.)",
|
|
183
|
+
"failure": "Failure",
|
|
176
184
|
"fast-clone": "Fast clone",
|
|
177
185
|
"fetching-fresh-data": "Fetching fresh data",
|
|
178
186
|
"filter.comparison.contains": "Contains",
|
|
@@ -204,6 +212,7 @@
|
|
|
204
212
|
"gzip": "gzip",
|
|
205
213
|
"hardware": "Hardware",
|
|
206
214
|
"hardware-specifications": "Hardware specifications",
|
|
215
|
+
"heartbeat-storage-repository": "Heartbeat storage repository",
|
|
207
216
|
"here": "Here",
|
|
208
217
|
"high-availability": "High availability (HA)",
|
|
209
218
|
"host": "Host",
|
|
@@ -222,10 +231,11 @@
|
|
|
222
231
|
"hosts-status.unknown": "Unknown",
|
|
223
232
|
"hosts-status.unknown.tooltip": "Hosts metrics are unavailable",
|
|
224
233
|
"hyper-threading": "Hyper threading (SMT)",
|
|
225
|
-
"id": "
|
|
234
|
+
"id": "ID",
|
|
226
235
|
"in-last-three-jobs": "In their last three jobs",
|
|
227
236
|
"install-settings": "Install settings",
|
|
228
237
|
"interfaces": "Interface | Interface | Interfaces",
|
|
238
|
+
"interrupted": "Interrupted",
|
|
229
239
|
"invalid-field": "Invalid field",
|
|
230
240
|
"ip-address": "IP address",
|
|
231
241
|
"ip-addresses": "IP addresses",
|
|
@@ -233,6 +243,7 @@
|
|
|
233
243
|
"is-primary-host": "{name} is primary host",
|
|
234
244
|
"iscsi-iqn": "iSCSI IQN",
|
|
235
245
|
"iso-dvd": "ISO/DVD",
|
|
246
|
+
"job-name": "Job name",
|
|
236
247
|
"job.vm-copy.bad-power-state": "VM must be halted",
|
|
237
248
|
"job.vm-copy.in-progress": "Copy in progress…",
|
|
238
249
|
"job.vm-copy.missing-vms": "No VM to copy",
|
|
@@ -280,6 +291,7 @@
|
|
|
280
291
|
"keep-me-logged": "Keep me logged in",
|
|
281
292
|
"keep-page-open": "Do not refresh or quit tab before end of deployment.",
|
|
282
293
|
"language": "Language",
|
|
294
|
+
"last": "Last",
|
|
283
295
|
"last-week": "Last week",
|
|
284
296
|
"learn-more": "Learn more",
|
|
285
297
|
"license-socket": "License socket",
|
|
@@ -308,6 +320,7 @@
|
|
|
308
320
|
"memory-usage": "Memory usage",
|
|
309
321
|
"migrate": "Migrate",
|
|
310
322
|
"migrate-n-vms": "Migrate 1 VM | Migrate {n} VMs",
|
|
323
|
+
"migration-compression": "Migration compression",
|
|
311
324
|
"minimum-cpu-limit": "Minimum CPU limit",
|
|
312
325
|
"minimum-dynamic-memory": "Minimum dynamic memory",
|
|
313
326
|
"minimum-static-memory": "Minimum static memory",
|
|
@@ -357,6 +370,7 @@
|
|
|
357
370
|
"no-vif-detected": "No VIF detected",
|
|
358
371
|
"none": "None",
|
|
359
372
|
"not-found": "Not found",
|
|
373
|
+
"not-running": "Not running",
|
|
360
374
|
"not-yet-available": "Information is not yet available",
|
|
361
375
|
"object": "Object",
|
|
362
376
|
"object-not-found": "Object {id} can't be found…",
|
|
@@ -385,6 +399,7 @@
|
|
|
385
399
|
"please-confirm": "Please confirm",
|
|
386
400
|
"pool": "Pool",
|
|
387
401
|
"pool-cpu-usage": "Pool CPU Usage",
|
|
402
|
+
"pool-management": "Pool management",
|
|
388
403
|
"pool-ram-usage": "Pool RAM Usage",
|
|
389
404
|
"pools": "Pools",
|
|
390
405
|
"pools-status": "Pools status",
|
|
@@ -392,22 +407,24 @@
|
|
|
392
407
|
"pools-status.unknown": "Unknown",
|
|
393
408
|
"pools-status.unknown.tooltip": "Servers currently connecting or in an unknown state",
|
|
394
409
|
"pools-status.unreachable": "Unreachable",
|
|
395
|
-
"pools-status.unreachable.tooltip": "Configured servers that
|
|
410
|
+
"pools-status.unreachable.tooltip": "Configured servers that cannot be reached",
|
|
396
411
|
"power-on-host-for-console": "Power on your host to access its console",
|
|
397
412
|
"power-on-mode": "Power on mode",
|
|
398
413
|
"power-on-vm-for-console": "Power on your VM to access its console",
|
|
399
414
|
"power-state": "Power state",
|
|
400
|
-
"primary-host": "Primary host",
|
|
401
415
|
"professional-support": "Professional support",
|
|
402
416
|
"properties": "Properties",
|
|
403
417
|
"property": "Property",
|
|
404
418
|
"protect-from-accidental-deletion": "Protect from accidental deletion",
|
|
405
419
|
"protect-from-accidental-shutdown": "Protect from accidental shutdown",
|
|
420
|
+
"proxy-url": "Proxy URL",
|
|
406
421
|
"pxe": "PXE",
|
|
407
422
|
"quick-info": "Quick info",
|
|
408
423
|
"ram": "RAM",
|
|
409
424
|
"ram-provisioning": "RAM provisioning",
|
|
410
425
|
"ram-usage": "RAM usage",
|
|
426
|
+
"read": "Read",
|
|
427
|
+
"read-only": "Read-only",
|
|
411
428
|
"reboot": "Reboot",
|
|
412
429
|
"receive": "Receive",
|
|
413
430
|
"reformat": "Reformat",
|
|
@@ -438,6 +455,7 @@
|
|
|
438
455
|
"select.network": "Select a network",
|
|
439
456
|
"select.storage": "Select a storage",
|
|
440
457
|
"selected-vms-in-execution": "Some selected VMs are running",
|
|
458
|
+
"self-signed-certificates": "Self-signed certificates",
|
|
441
459
|
"send": "Send",
|
|
442
460
|
"send-ctrl-alt-del": "Send Ctrl+Alt+Del",
|
|
443
461
|
"send-us-feedback": "Send us feedback",
|
|
@@ -446,6 +464,7 @@
|
|
|
446
464
|
"sidebar.search-tree-view": "Search in treeview",
|
|
447
465
|
"sidebar.vms-treeview": "VMs treeview",
|
|
448
466
|
"size": "Size",
|
|
467
|
+
"skipped": "Skipped",
|
|
449
468
|
"snapshot": "Snapshot",
|
|
450
469
|
"sockets-with-cores-per-socket": "{nSockets} sockets × {nCores} cores/socket",
|
|
451
470
|
"software-tooling": "Software & tooling",
|
|
@@ -473,6 +492,7 @@
|
|
|
473
492
|
"storage-repositories": "Storage repositories",
|
|
474
493
|
"storage-repository": "Storage repository",
|
|
475
494
|
"storage-usage": "Storage usage",
|
|
495
|
+
"success": "Success",
|
|
476
496
|
"summary": "Summary",
|
|
477
497
|
"support": "Support",
|
|
478
498
|
"suspend": "Suspend",
|
|
@@ -518,10 +538,12 @@
|
|
|
518
538
|
"up-to-date": "Up-to-date",
|
|
519
539
|
"used": "Used",
|
|
520
540
|
"user-config": "User config",
|
|
541
|
+
"username": "Username",
|
|
521
542
|
"uuid": "UUID",
|
|
522
543
|
"vcpus": "vCPU | vCPU | vCPUs",
|
|
523
544
|
"vcpus-assigned": "vCPUs assigned",
|
|
524
545
|
"vcpus-used": "vCPUs used",
|
|
546
|
+
"vdi-throughput": "VDI throughput",
|
|
525
547
|
"vdis": "VDI | VDI | VDIs",
|
|
526
548
|
"version": "Version",
|
|
527
549
|
"vga": "VGA",
|
|
@@ -534,12 +556,17 @@
|
|
|
534
556
|
"virtual-tpm": "Virtual TPM (VTPM)",
|
|
535
557
|
"virtualization-boot-settings": "Virtualization & boot settings",
|
|
536
558
|
"virtualization-mode": "Virtualization mode",
|
|
559
|
+
"virtualization-type": "Virtualization type",
|
|
537
560
|
"vlan": "VLAN",
|
|
538
561
|
"vm": "VM",
|
|
539
562
|
"vm-description": "VM description",
|
|
540
563
|
"vm-is-running": "The VM is running",
|
|
541
564
|
"vm-limit-topology": "VM limit topology",
|
|
542
565
|
"vm-management": "VM management",
|
|
566
|
+
"vm-status.halted": "Halted",
|
|
567
|
+
"vm-status.paused": "Paused",
|
|
568
|
+
"vm-status.running": "Running",
|
|
569
|
+
"vm-status.suspended": "Suspended",
|
|
543
570
|
"vm.active": "Active",
|
|
544
571
|
"vm.inactive": "Inactive",
|
|
545
572
|
"vms": "VM | VMs",
|
|
@@ -552,6 +579,7 @@
|
|
|
552
579
|
"vms-status.suspended": "Suspended",
|
|
553
580
|
"vms-status.unknown": "Unknown",
|
|
554
581
|
"vms-status.unknown.tooltip": "For which XO has lost connection to the pool",
|
|
582
|
+
"write": "Write",
|
|
555
583
|
"xo-backups": "XO backups",
|
|
556
584
|
"xo-lite-under-construction": "XOLite is under construction",
|
|
557
585
|
"xo-replications": "XO replications",
|
package/lib/locales/es.json
CHANGED
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
"hosts-status.running": "En marcha",
|
|
204
204
|
"hosts-status.unknown": "Desconocido",
|
|
205
205
|
"hosts-status.unknown.tooltip": "Métricas de servidores no son disponibles",
|
|
206
|
-
"id": "
|
|
206
|
+
"id": "ID",
|
|
207
207
|
"in-last-three-jobs": "En las últimas tres tareas",
|
|
208
208
|
"install-settings": "Parámetros de instalación",
|
|
209
209
|
"interfaces": "Interfaz | Interfaz | Interfaces",
|
package/lib/locales/fr.json
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
+
"2nd-last": "Avant-dernier",
|
|
3
|
+
"3rd-last": "Avant-avant-dernier",
|
|
2
4
|
"about": "À propos",
|
|
3
5
|
"access-forum": "Accès au forum",
|
|
4
6
|
"access-xoa": "Accéder à la XOA",
|
|
@@ -22,8 +24,8 @@
|
|
|
22
24
|
"alarm-type.sr_io_throughput_total_per_host": "Le débit total de l'IO SR par hôte dépasse {n}%",
|
|
23
25
|
"alarm-type.unknown": "Type d'alarme inconnu",
|
|
24
26
|
"alarms": "Alarmes",
|
|
25
|
-
"all-good": "Tout va bien !",
|
|
26
27
|
"all-done": "Tout est terminé !",
|
|
28
|
+
"all-good": "Tout va bien !",
|
|
27
29
|
"allow-self-signed-ssl": "Vous devrez peut-être autoriser les certificats SSL auto-signés depuis votre navigateur",
|
|
28
30
|
"appearance": "Apparence",
|
|
29
31
|
"ascending": "ascendant",
|
|
@@ -35,6 +37,7 @@
|
|
|
35
37
|
"back-site-dashboard": "Revenir au tableau de bord du site",
|
|
36
38
|
"backup": "Sauvegarde",
|
|
37
39
|
"backup-issues": "Problèmes de sauvegarde",
|
|
40
|
+
"backup-network": "Réseau de sauvegarde",
|
|
38
41
|
"backup-repository": "Dépôt de sauvegarde (local, NFS, SMB)",
|
|
39
42
|
"backups": "Sauvegardes",
|
|
40
43
|
"backups.jobs": "Jobs",
|
|
@@ -76,6 +79,7 @@
|
|
|
76
79
|
"confirm-cancel": "Êtes-vous sûr de vouloir annuler ?",
|
|
77
80
|
"confirm-delete": "Vous êtes sur le point de supprimer {0}",
|
|
78
81
|
"connected": "Connecté",
|
|
82
|
+
"connections": "Connexions",
|
|
79
83
|
"console": "Console",
|
|
80
84
|
"console-actions": "Actions de la console",
|
|
81
85
|
"console-clipboard": "Presse-papiers de la console",
|
|
@@ -124,7 +128,9 @@
|
|
|
124
128
|
"cpu-usage": "Utilisation CPU",
|
|
125
129
|
"cpu-weight": "Pondération CPU",
|
|
126
130
|
"cpus": "CPUs",
|
|
131
|
+
"crash-dump-storage-repository": "Dépôt de stockage des log de crash",
|
|
127
132
|
"create": "Créer",
|
|
133
|
+
"created-on": "Créé le",
|
|
128
134
|
"custom-config": "Configuration personnalisée",
|
|
129
135
|
"dark-mode.auto": "Mode sombre automatique",
|
|
130
136
|
"dark-mode.disable": "Désactiver le mode sombre",
|
|
@@ -132,6 +138,7 @@
|
|
|
132
138
|
"dashboard": "Tableau de bord",
|
|
133
139
|
"default-behavior": "Comportement par défaut",
|
|
134
140
|
"default-locking-mode": "Mode de verrouillage par défaut",
|
|
141
|
+
"default-storage-repository": "Dépôt de stockage par défaut",
|
|
135
142
|
"delete": "Supprimer",
|
|
136
143
|
"delete-vms": "Supprimer 1 VM | Supprimer {n} VMs",
|
|
137
144
|
"deploy": "Déployer",
|
|
@@ -173,6 +180,7 @@
|
|
|
173
180
|
"export-vm": "Exporter la VM",
|
|
174
181
|
"export-vms": "Exporter les VMs",
|
|
175
182
|
"export-vms-manually-information": "Certaines exportations de VMs n'ont pas pu démarrer automatiquement, peut-être en raison des paramètres du navigateur. Pour les exporter, vous devrez cliquer sur chacune d'entre elles. (Ou copier le lien.)",
|
|
183
|
+
"failure": "Echec",
|
|
176
184
|
"fast-clone": "Clonage rapide",
|
|
177
185
|
"fetching-fresh-data": "Récupération de données à jour",
|
|
178
186
|
"filter.comparison.contains": "Contient",
|
|
@@ -204,6 +212,7 @@
|
|
|
204
212
|
"gzip": "gzip",
|
|
205
213
|
"hardware": "Matériel",
|
|
206
214
|
"hardware-specifications": "Spécifications matérielles",
|
|
215
|
+
"heartbeat-storage-repository": "Dépôt de stockage pour le heartbeat de la haute disponibilité",
|
|
207
216
|
"here": "Ici",
|
|
208
217
|
"high-availability": "Haute Disponibilité (HA)",
|
|
209
218
|
"host": "Hôte",
|
|
@@ -222,10 +231,11 @@
|
|
|
222
231
|
"hosts-status.unknown": "Inconnu",
|
|
223
232
|
"hosts-status.unknown.tooltip": "Les métriques de l'hôte sont inaccessibles",
|
|
224
233
|
"hyper-threading": "Hyper-threading (SMT)",
|
|
225
|
-
"id": "
|
|
234
|
+
"id": "ID",
|
|
226
235
|
"in-last-three-jobs": "Dans leurs trois derniers jobs",
|
|
227
236
|
"install-settings": "Paramètres d'installation",
|
|
228
237
|
"interfaces": "Interface | Interface | Interfaces",
|
|
238
|
+
"interrupted": "Interrompu",
|
|
229
239
|
"invalid-field": "Champ invalide",
|
|
230
240
|
"ip-address": "Adresse IP",
|
|
231
241
|
"ip-addresses": "Adresses IP",
|
|
@@ -233,6 +243,7 @@
|
|
|
233
243
|
"is-primary-host": "{name} est l'hôte primaire",
|
|
234
244
|
"iscsi-iqn": "iSCSI IQN",
|
|
235
245
|
"iso-dvd": "ISO/DVD",
|
|
246
|
+
"job-name": "Nom du job",
|
|
236
247
|
"job.vm-copy.bad-power-state": "La VM doit être arrêtée",
|
|
237
248
|
"job.vm-copy.in-progress": "Copie en cours…",
|
|
238
249
|
"job.vm-copy.missing-vms": "Aucune VM à copier",
|
|
@@ -280,6 +291,7 @@
|
|
|
280
291
|
"keep-me-logged": "Rester connecté",
|
|
281
292
|
"keep-page-open": "Ne pas rafraichir ou quitter cette page avant la fin du déploiement.",
|
|
282
293
|
"language": "Langue",
|
|
294
|
+
"last": "Dernier",
|
|
283
295
|
"last-week": "Semaine dernière",
|
|
284
296
|
"learn-more": "En savoir plus",
|
|
285
297
|
"license-socket": "Licence socket",
|
|
@@ -308,6 +320,7 @@
|
|
|
308
320
|
"memory-usage": "Utilisation de la mémoire",
|
|
309
321
|
"migrate": "Migrer",
|
|
310
322
|
"migrate-n-vms": "Migrer 1 VM | Migrer {n} VMs",
|
|
323
|
+
"migration-compression": "Compression des migrations",
|
|
311
324
|
"minimum-cpu-limit": "Nombre minimal de CPU",
|
|
312
325
|
"minimum-dynamic-memory": "Mémoire dynamique minimale",
|
|
313
326
|
"minimum-static-memory": "Mémoire statique minimale",
|
|
@@ -357,6 +370,7 @@
|
|
|
357
370
|
"no-vif-detected": "Aucun VIF détecté",
|
|
358
371
|
"none": "Aucun",
|
|
359
372
|
"not-found": "Non trouvé",
|
|
373
|
+
"not-running": "Pas en cours d'exécution",
|
|
360
374
|
"not-yet-available": "Information pas encore disponible",
|
|
361
375
|
"object": "Objet",
|
|
362
376
|
"object-not-found": "L'objet {id} est introuvable…",
|
|
@@ -385,6 +399,7 @@
|
|
|
385
399
|
"please-confirm": "Veuillez confirmer",
|
|
386
400
|
"pool": "Pool",
|
|
387
401
|
"pool-cpu-usage": "Utilisation CPU du Pool",
|
|
402
|
+
"pool-management": "Gestion du Pool",
|
|
388
403
|
"pool-ram-usage": "Utilisation RAM du Pool",
|
|
389
404
|
"pools": "Pools",
|
|
390
405
|
"pools-status": "Statut des pools",
|
|
@@ -397,17 +412,19 @@
|
|
|
397
412
|
"power-on-mode": "Mode d'alimentation",
|
|
398
413
|
"power-on-vm-for-console": "Allumez votre VM pour accéder à sa console",
|
|
399
414
|
"power-state": "État d'alimentation",
|
|
400
|
-
"primary-host": "Hôte primaire",
|
|
401
415
|
"professional-support": "Support professionnel",
|
|
402
416
|
"properties": "Propriétés",
|
|
403
417
|
"property": "Propriété",
|
|
404
418
|
"protect-from-accidental-deletion": "Protection contre les suppressions accidentelles",
|
|
405
419
|
"protect-from-accidental-shutdown": "Protection contre les extinctions accidentelles",
|
|
420
|
+
"proxy-url": "URL du proxy",
|
|
406
421
|
"pxe": "PXE",
|
|
407
422
|
"quick-info": "Informations rapides",
|
|
408
423
|
"ram": "RAM",
|
|
409
424
|
"ram-provisioning": "Provisionnement RAM",
|
|
410
425
|
"ram-usage": "Utilisation de la RAM",
|
|
426
|
+
"read": "Lecture",
|
|
427
|
+
"read-only": "Lecture seule",
|
|
411
428
|
"reboot": "Redémarrer",
|
|
412
429
|
"receive": "Recevoir",
|
|
413
430
|
"reformat": "Reformater",
|
|
@@ -438,6 +455,7 @@
|
|
|
438
455
|
"select.network": "Sélectionner un réseau",
|
|
439
456
|
"select.storage": "Sélectionner un SR",
|
|
440
457
|
"selected-vms-in-execution": "Certaines VMs sélectionnées sont en cours d'exécution",
|
|
458
|
+
"self-signed-certificates": "Certificats auto-signés",
|
|
441
459
|
"send": "Envoyer",
|
|
442
460
|
"send-ctrl-alt-del": "Envoyer Ctrl+Alt+Suppr",
|
|
443
461
|
"send-us-feedback": "Envoyez-nous vos commentaires",
|
|
@@ -446,6 +464,7 @@
|
|
|
446
464
|
"sidebar.search-tree-view": "Rechercher dans l'arborescence",
|
|
447
465
|
"sidebar.vms-treeview": "Arborescence des VMs",
|
|
448
466
|
"size": "Taille",
|
|
467
|
+
"skipped": "Ignoré",
|
|
449
468
|
"snapshot": "Instantané",
|
|
450
469
|
"sockets-with-cores-per-socket": "{nSockets} sockets × {nCores} cœurs/socket",
|
|
451
470
|
"software-tooling": "Logiciels et outils",
|
|
@@ -473,6 +492,7 @@
|
|
|
473
492
|
"storage-repositories": "Dépôts de stockage",
|
|
474
493
|
"storage-repository": "Dépot de stockage",
|
|
475
494
|
"storage-usage": "Utilisation du stockage",
|
|
495
|
+
"success": "Succès",
|
|
476
496
|
"summary": "Résumé",
|
|
477
497
|
"support": "Support",
|
|
478
498
|
"suspend": "Suspendre",
|
|
@@ -518,10 +538,12 @@
|
|
|
518
538
|
"up-to-date": "À jour",
|
|
519
539
|
"used": "Utilisé",
|
|
520
540
|
"user-config": "Configuration utilisateur",
|
|
541
|
+
"username": "Nom d'utilisateur",
|
|
521
542
|
"uuid": "UUID",
|
|
522
543
|
"vcpus": "vCPU | vCPU | vCPUs",
|
|
523
544
|
"vcpus-assigned": "vCPUs assignés",
|
|
524
545
|
"vcpus-used": "vCPUs utilisés",
|
|
546
|
+
"vdi-throughput": "Débit du VDI",
|
|
525
547
|
"vdis": "VDI | VDI | VDIs",
|
|
526
548
|
"version": "Version",
|
|
527
549
|
"vga": "VGA",
|
|
@@ -534,12 +556,17 @@
|
|
|
534
556
|
"virtual-tpm": "TPM virtuel (VTPM)",
|
|
535
557
|
"virtualization-boot-settings": "Virtualisation & paramètres de démarrage",
|
|
536
558
|
"virtualization-mode": "Mode de virtualisation",
|
|
559
|
+
"virtualization-type": "Type de virtualisation",
|
|
537
560
|
"vlan": "VLAN",
|
|
538
561
|
"vm": "VM",
|
|
539
562
|
"vm-description": "Description de la VM",
|
|
540
563
|
"vm-is-running": "La VM est en cours d'exécution",
|
|
541
564
|
"vm-limit-topology": "Limite de topologie physique des VMs",
|
|
542
565
|
"vm-management": "Gestion de la VM",
|
|
566
|
+
"vm-status.halted": "Éteinte",
|
|
567
|
+
"vm-status.paused": "En pause",
|
|
568
|
+
"vm-status.running": "Démarrée",
|
|
569
|
+
"vm-status.suspended": "Suspendue",
|
|
543
570
|
"vm.active": "Active | Active | Actives",
|
|
544
571
|
"vm.inactive": "Inactive | Inactive | Inactives",
|
|
545
572
|
"vms": "VM | VMs",
|
|
@@ -552,6 +579,7 @@
|
|
|
552
579
|
"vms-status.suspended": "Suspendues",
|
|
553
580
|
"vms-status.unknown": "Inconnu",
|
|
554
581
|
"vms-status.unknown.tooltip": "Dont XO a perdu la connexion avec le pool",
|
|
582
|
+
"write": "Écriture",
|
|
555
583
|
"xo-backups": "Sauvegardes XO",
|
|
556
584
|
"xo-lite-under-construction": "XOLite est en construction",
|
|
557
585
|
"xo-replications": "Réplications XO",
|
package/lib/locales/it.json
CHANGED
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
"hosts-status.running": "Acceso",
|
|
198
198
|
"hosts-status.unknown": "Sconosciuto",
|
|
199
199
|
"hosts-status.unknown.tooltip": "Misurazioni dall'host non disponibili",
|
|
200
|
-
"id": "
|
|
200
|
+
"id": "ID",
|
|
201
201
|
"in-last-three-jobs": "Nei loro ultimi tre lavori",
|
|
202
202
|
"install-settings": "Impostazioni di installazione",
|
|
203
203
|
"interfaces": "Interfaccia | Interfaccia | Interfacce",
|
package/lib/locales/nl.json
CHANGED
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
"hosts-status.running": "Draait",
|
|
214
214
|
"hosts-status.unknown": "Onbekend",
|
|
215
215
|
"hosts-status.unknown.tooltip": "Hosts statistieken zijn niet beschikbaar",
|
|
216
|
-
"id": "
|
|
216
|
+
"id": "ID",
|
|
217
217
|
"in-last-three-jobs": "Tijdens hun laatste drie opdrachten",
|
|
218
218
|
"install-settings": "Installatie instellingen",
|
|
219
219
|
"interfaces": "Interface | Interface | Interfaces",
|
package/lib/locales/ru.json
CHANGED
package/lib/locales/sv.json
CHANGED
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"hosts-status.unknown": "Okänt",
|
|
222
222
|
"hosts-status.unknown.tooltip": "Host-data är otillgängligt",
|
|
223
223
|
"hyper-threading": "Multitrådning (SMT)",
|
|
224
|
-
"id": "
|
|
224
|
+
"id": "ID",
|
|
225
225
|
"in-last-three-jobs": "I de senaste tre jobben",
|
|
226
226
|
"install-settings": "Installationsinställningar",
|
|
227
227
|
"interfaces": "Gränssnitt | Gränssnitt | Gränssnitten",
|
|
@@ -395,7 +395,6 @@
|
|
|
395
395
|
"power-on-mode": "Strömpåslagningsläge",
|
|
396
396
|
"power-on-vm-for-console": "Starta din VM för att ansluta till konsolen",
|
|
397
397
|
"power-state": "Strömläge",
|
|
398
|
-
"primary-host": "Primär host",
|
|
399
398
|
"professional-support": "Professionell support",
|
|
400
399
|
"properties": "Egenskaper",
|
|
401
400
|
"property": "Egenskap",
|
|
@@ -6,9 +6,9 @@ The `useCollection` composable helps you manage a collection of items with flags
|
|
|
6
6
|
|
|
7
7
|
```typescript
|
|
8
8
|
const { items, useSubset, useFlag } = useCollection(sources, {
|
|
9
|
+
itemId: source => source.theId, // Required only if TSource doesn't have an `id` property
|
|
9
10
|
flags: ['selected', 'active', { highlighted: { multiple: false } }],
|
|
10
11
|
properties: source => ({
|
|
11
|
-
id: source.theId, // Required if TSource doesn't have an `id` property
|
|
12
12
|
isAvailable: source.status === 'available',
|
|
13
13
|
fullName: `${source.firstName} ${source.lastName}`,
|
|
14
14
|
}),
|
|
@@ -18,8 +18,8 @@ const { items, useSubset, useFlag } = useCollection(sources, {
|
|
|
18
18
|
## Core Concepts
|
|
19
19
|
|
|
20
20
|
- **Collection Item**: An object with a unique identifier, a reference to its source object, flags, computed properties, and methods to manipulate flags
|
|
21
|
-
- **Flags**:
|
|
22
|
-
- **Properties**: Additional custom values
|
|
21
|
+
- **Flags**: Arbitrary `boolean` states attached to items (like `selected`, `active`, `highlighted`, etc.)
|
|
22
|
+
- **Properties**: Additional custom values attached to items, computed from the source object (like `fullName`, `isAvailable`, etc.)
|
|
23
23
|
|
|
24
24
|
## `useCollection` parameters
|
|
25
25
|
|
|
@@ -30,21 +30,22 @@ const { items, useSubset, useFlag } = useCollection(sources, {
|
|
|
30
30
|
|
|
31
31
|
### `options` object
|
|
32
32
|
|
|
33
|
-
| Name | Type | Required | Description
|
|
34
|
-
| ------------ | ---------------------------------------------- | :------: |
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
33
|
+
| Name | Type | Required | Description |
|
|
34
|
+
| ------------ | ---------------------------------------------- | :------: | ----------------------------------------------------------------------------------------------- |
|
|
35
|
+
| `itemId` | `keyof TSource \| ((source: TSource) => TId)` | ~ | Function to retrieve the item ID or property of TSource (if not provided, `TSource.id` is used) |
|
|
36
|
+
| `flags` | `FlagsConfig<TFlag>` | | Flags that can be applied to items in the collection |
|
|
37
|
+
| `properties` | `(source: TSource) => Record<string, unknown>` | | Function that returns additional properties for each item (see below) |
|
|
37
38
|
|
|
38
39
|
### Item ID
|
|
39
40
|
|
|
40
41
|
The item ID will be retrieved automatically from `TSource.id`
|
|
41
42
|
|
|
42
|
-
If `TSource` doesn't provide an `id`, then `options.
|
|
43
|
+
If `TSource` doesn't provide an `id`, then `options.itemId` will be required.
|
|
43
44
|
|
|
44
45
|
### `FlagsConfig` type
|
|
45
46
|
|
|
46
47
|
```typescript
|
|
47
|
-
type FlagsConfig
|
|
48
|
+
type FlagsConfig = string[] | Record<string, { multiple?: MaybeRef<boolean> }>
|
|
48
49
|
```
|
|
49
50
|
|
|
50
51
|
Values for `multiple`:
|
|
@@ -63,13 +64,13 @@ Values for `multiple`:
|
|
|
63
64
|
|
|
64
65
|
### `CollectionItem` object
|
|
65
66
|
|
|
66
|
-
| Name | Type
|
|
67
|
-
| ------------ |
|
|
68
|
-
| `id` | `TId`
|
|
69
|
-
| `source` | `TSource`
|
|
70
|
-
| `flags` | `Record<TFlag, boolean>`
|
|
71
|
-
| `properties` | `TProperties`
|
|
72
|
-
| `toggleFlag` | `(flag,
|
|
67
|
+
| Name | Type | Description |
|
|
68
|
+
| ------------ | ---------------------------------- | --------------------------------------------------------- |
|
|
69
|
+
| `id` | `TId` | Unique identifier for the item (string, number or symbol) |
|
|
70
|
+
| `source` | `TSource` | The original source object |
|
|
71
|
+
| `flags` | `Record<TFlag, boolean>` | Object containing the state of all flags for this item |
|
|
72
|
+
| `properties` | `TProperties` | Object containing all computed properties for this item |
|
|
73
|
+
| `toggleFlag` | `(flag, shouldBeFlagged?) => void` | Method to toggle a flag on this item |
|
|
73
74
|
|
|
74
75
|
### UseFlagReturn object
|
|
75
76
|
|
|
@@ -81,8 +82,8 @@ Values for `multiple`:
|
|
|
81
82
|
| `areAllOn` | `ComputedRef<boolean>` | Whether all items in the collection have this flag set |
|
|
82
83
|
| `areSomeOn` | `ComputedRef<boolean>` | Whether at least one item has this flag set |
|
|
83
84
|
| `areNoneOn` | `ComputedRef<boolean>` | Whether no items have this flag set |
|
|
84
|
-
| `toggle` | `(id,
|
|
85
|
-
| `toggleAll` | `(
|
|
85
|
+
| `toggle` | `(id, shouldBeFlagged?) => void` | Toggle this flag on a specific item |
|
|
86
|
+
| `toggleAll` | `(shouldBeFlagged?) => void` | Toggle this flag on all items in the collection |
|
|
86
87
|
| `useSubset` | `(filter: (item) => boolean) => Collection` | Creates a sub collection matching the filter |
|
|
87
88
|
|
|
88
89
|
## Flag Operations
|
|
@@ -169,4 +170,8 @@ const { items: users, useSubset } = useCollection(rawUsers, {
|
|
|
169
170
|
const { items: admins, useSubset: useAdminSubset } = useSubset(item => item.source.group === 'admin')
|
|
170
171
|
|
|
171
172
|
const { items: activeAdmins } = useAdminSubset(item => item.source.status === 'active')
|
|
173
|
+
|
|
174
|
+
// This would be equivalent to:
|
|
175
|
+
|
|
176
|
+
const { items: activeAdmins } = useSubset(item => item.source.group === 'admin' && item.source.status === 'active')
|
|
172
177
|
```
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
import { createUseSubset } from '@core/packages/collection/create-use-subset.ts'
|
|
1
2
|
import type {
|
|
2
3
|
Collection,
|
|
3
|
-
CollectionConfigProperties,
|
|
4
4
|
CollectionItem,
|
|
5
|
+
CollectionItemId,
|
|
6
|
+
CollectionItemProperties,
|
|
5
7
|
FlagRegistry,
|
|
6
|
-
GuessItemId,
|
|
7
8
|
UseFlagReturn,
|
|
8
|
-
} from '
|
|
9
|
+
} from './types.ts'
|
|
9
10
|
import { useArrayFilter, useArrayMap } from '@vueuse/core'
|
|
10
11
|
import { computed, type ComputedRef } from 'vue'
|
|
11
12
|
|
|
12
|
-
export function createCollection<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
export function createCollection<
|
|
14
|
+
TSource,
|
|
15
|
+
TFlag extends string,
|
|
16
|
+
TProperties extends CollectionItemProperties,
|
|
17
|
+
TId extends CollectionItemId,
|
|
18
|
+
$TItem extends CollectionItem<TSource, TFlag, TProperties, TId>,
|
|
19
|
+
>(items: ComputedRef<$TItem[]>, flagRegistry: FlagRegistry<TId, TFlag>): Collection<TSource, TFlag, TProperties, TId> {
|
|
20
|
+
function useFlag(flag: TFlag): UseFlagReturn<TSource, TFlag, TProperties, TId> {
|
|
17
21
|
flagRegistry.assertFlag(flag)
|
|
18
22
|
|
|
19
23
|
const flaggedItems = useArrayFilter(items, item => item.flags[flag])
|
|
@@ -28,21 +32,17 @@ export function createCollection<TSource, TFlag extends string, TProperties exte
|
|
|
28
32
|
|
|
29
33
|
const areNoneOn = computed(() => count.value === 0)
|
|
30
34
|
|
|
31
|
-
function toggle(id:
|
|
32
|
-
flagRegistry.toggleFlag(id, flag,
|
|
35
|
+
function toggle(id: TId, shouldBeFlagged?: boolean) {
|
|
36
|
+
flagRegistry.toggleFlag(id, flag, shouldBeFlagged)
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
function toggleAll(
|
|
39
|
+
function toggleAll(shouldBeFlagged = !areAllOn.value) {
|
|
36
40
|
for (const item of items.value) {
|
|
37
|
-
flagRegistry.toggleFlag(item.id, flag,
|
|
41
|
+
flagRegistry.toggleFlag(item.id, flag, shouldBeFlagged)
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
filter: (item: CollectionItem<TSource, TFlag, TProperties>) => boolean
|
|
43
|
-
): Collection<TSource, TFlag, TProperties> {
|
|
44
|
-
return createCollection(useArrayFilter(flaggedItems, filter), flagRegistry)
|
|
45
|
-
}
|
|
45
|
+
const useSubset = createUseSubset<TSource, TFlag, TProperties, TId>(flaggedItems, flagRegistry)
|
|
46
46
|
|
|
47
47
|
return {
|
|
48
48
|
items: flaggedItems,
|
|
@@ -57,18 +57,19 @@ export function createCollection<TSource, TFlag extends string, TProperties exte
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
): Collection<TSource, TFlag, TProperties> {
|
|
63
|
-
return createCollection(useArrayFilter(items, filter), flagRegistry)
|
|
60
|
+
function toggleFlag(id: TId, flag: TFlag, shouldBeFlagged?: boolean) {
|
|
61
|
+
flagRegistry.toggleFlag(id, flag, shouldBeFlagged)
|
|
64
62
|
}
|
|
65
63
|
|
|
64
|
+
const useSubset = createUseSubset<TSource, TFlag, TProperties, TId>(items, flagRegistry)
|
|
65
|
+
|
|
66
66
|
const count = computed(() => items.value.length)
|
|
67
67
|
|
|
68
68
|
return {
|
|
69
69
|
items,
|
|
70
70
|
count,
|
|
71
71
|
useFlag,
|
|
72
|
+
toggleFlag,
|
|
72
73
|
useSubset,
|
|
73
74
|
}
|
|
74
75
|
}
|