@xen-orchestra/web-core 0.33.0 → 0.34.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.
@@ -0,0 +1,46 @@
1
+ <template>
2
+ <template v-for="(value, label) in fields" :key="label">
3
+ <VtsCardRowKeyValue v-if="isPrimitiveOrBooleanString(value)">
4
+ <template #key>
5
+ <span class="label">{{ label }}</span>
6
+ </template>
7
+ <template #value>
8
+ <template v-if="isBooleanLike(value)">
9
+ <VtsEnabledState :enabled="toBoolean(value)" />
10
+ </template>
11
+ <template v-else>
12
+ {{ value }}
13
+ </template>
14
+ </template>
15
+ <template v-if="!isBooleanLike(value)" #addons>
16
+ <VtsCopyButton :value="String(value)" />
17
+ </template>
18
+ </VtsCardRowKeyValue>
19
+ <VtsLabelValueList v-else :fields="value" />
20
+ </template>
21
+ </template>
22
+
23
+ <script lang="ts" setup>
24
+ import VtsCardRowKeyValue from '@core/components/card/VtsCardRowKeyValue.vue'
25
+ import VtsCopyButton from '@core/components/copy-button/VtsCopyButton.vue'
26
+ import VtsEnabledState from '@core/components/enabled-state/VtsEnabledState.vue'
27
+
28
+ defineProps<{
29
+ fields: Record<string, unknown> | unknown
30
+ }>()
31
+
32
+ const isBooleanString = (value: unknown): value is string => value === 'true' || value === 'false'
33
+
34
+ const isBooleanLike = (value: unknown): boolean => typeof value === 'boolean' || isBooleanString(value)
35
+
36
+ const toBoolean = (value: unknown): boolean => value === true || value === 'true'
37
+
38
+ const isPrimitiveOrBooleanString = (value: unknown): boolean =>
39
+ ['number', 'string'].includes(typeof value) || isBooleanString(value)
40
+ </script>
41
+
42
+ <style lang="postcss" scoped>
43
+ .label {
44
+ text-transform: capitalize;
45
+ }
46
+ </style>
@@ -93,6 +93,7 @@ const open = (event: MouseEvent) => {
93
93
  border-radius: 0.4rem;
94
94
  background-color: var(--color-neutral-background-primary);
95
95
  z-index: 1010;
96
+ overflow: scroll;
96
97
 
97
98
  &.horizontal {
98
99
  flex-direction: row;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="vts-progress-bar">
3
- <UiDataRuler :max="percentageCap" :warning="threshold.payload" />
3
+ <UiDataRuler v-if="!noruler" :max="percentageCap" :warning="threshold.payload" />
4
4
  <UiProgressBar :accent="threshold.payload.accent ?? 'info'" :fill-width :legend />
5
5
  </div>
6
6
  </template>
@@ -28,9 +28,10 @@ const {
28
28
  } = defineProps<{
29
29
  current: number
30
30
  total: number
31
- label: string
31
+ label?: string
32
32
  legendType?: ProgressBarLegendType
33
33
  thresholds?: ProgressBarThresholdConfig
34
+ noruler?: boolean
34
35
  }>()
35
36
 
36
37
  const progress = useProgress(
@@ -40,7 +41,11 @@ const progress = useProgress(
40
41
 
41
42
  const { percentageCap, percentage, fillWidth } = progress
42
43
 
43
- const legend = useProgressToLegend(() => legendType, label, progress)
44
+ const legend = useProgressToLegend(
45
+ () => legendType,
46
+ () => label,
47
+ progress
48
+ )
44
49
 
45
50
  const threshold = useThreshold(percentage, () => thresholds)
46
51
  </script>
@@ -1,7 +1,6 @@
1
1
  <!-- v5 -->
2
2
  <template>
3
3
  <div :class="toVariants({ accent, disabled })" class="ui-input" @click.self="focus()">
4
- <VtsIcon :name="icon" size="medium" class="left-icon" />
5
4
  <input
6
5
  :id="wrapperController?.id ?? id"
7
6
  ref="inputRef"
@@ -114,14 +113,9 @@ defineExpose({ focus })
114
113
  min-width: 15rem;
115
114
  padding-inline: 1.6rem;
116
115
 
117
- .left-icon,
118
116
  .right-icon {
119
117
  pointer-events: none;
120
- color: var(--color-neutral-txt-secondary);
121
- }
122
-
123
- &:not(.disabled) .right-icon {
124
- color: var(--color-brand-item-base);
118
+ color: var(--color-brand-txt-base);
125
119
  }
126
120
 
127
121
  .input {
@@ -133,6 +127,10 @@ defineExpose({ focus })
133
127
  &::placeholder {
134
128
  color: var(--color-neutral-txt-secondary);
135
129
  }
130
+
131
+ &::-webkit-search-cancel-button {
132
+ -webkit-appearance: none;
133
+ }
136
134
  }
137
135
 
138
136
  /* VARIANT */
@@ -5,7 +5,9 @@
5
5
  <slot name="icon">
6
6
  <VtsIcon :name="icon" size="medium" />
7
7
  </slot>
8
- <span class="text-ellipsis"><slot /></span>
8
+ <span class="text-ellipsis">
9
+ <slot />
10
+ </span>
9
11
  </span>
10
12
  </template>
11
13
 
@@ -1,14 +1,24 @@
1
1
  <!-- v1 -->
2
2
  <template>
3
- <div class="ui-tags-list">
3
+ <div class="ui-tags-list" :class="{ nowrap }">
4
4
  <slot />
5
5
  </div>
6
6
  </template>
7
7
 
8
+ <script lang="ts" setup>
9
+ defineProps<{
10
+ nowrap?: boolean
11
+ }>()
12
+ </script>
13
+
8
14
  <style lang="postcss" scoped>
9
15
  .ui-tags-list {
10
16
  display: flex;
11
17
  flex-wrap: wrap;
12
18
  gap: 0.4rem;
13
19
  }
20
+
21
+ .nowrap {
22
+ flex-wrap: nowrap;
23
+ }
14
24
  </style>
@@ -65,6 +65,7 @@ import {
65
65
  faFloppyDisk,
66
66
  faFont,
67
67
  faGear,
68
+ faHardDrive,
68
69
  faHashtag,
69
70
  faHeadset,
70
71
  faInfo,
@@ -88,6 +89,7 @@ import {
88
89
  faPlug,
89
90
  faPlus,
90
91
  faPowerOff,
92
+ faPuzzlePiece,
91
93
  faRemove,
92
94
  faRepeat,
93
95
  faRotateLeft,
@@ -174,6 +176,7 @@ export const faIcons = defineIconPack({
174
176
  'folder-open': { icon: faFolderOpen },
175
177
  font: { icon: faFont },
176
178
  gear: { icon: faGear },
179
+ 'hard-drive': { icon: faHardDrive },
177
180
  hashtag: { icon: faHashtag },
178
181
  headset: { icon: faHeadset },
179
182
  info: { icon: faInfo },
@@ -210,6 +213,7 @@ export const faIcons = defineIconPack({
210
213
  star: { icon: faStar },
211
214
  stop: { icon: faStop },
212
215
  tags: { icon: faTags },
216
+ template: { icon: faPuzzlePiece },
213
217
  time: { icon: faClock },
214
218
  'thumb-tack': { icon: faThumbTack },
215
219
  'thumb-tack-slash': { icon: faThumbTackSlash },
@@ -44,10 +44,17 @@ export const legacyIcons = defineIconPack({
44
44
  icon: accent === 'success' ? faCheck : faExclamation,
45
45
  },
46
46
  ]),
47
- halted: {
48
- icon: faStop,
49
- color: 'var(--color-danger-item-base)',
50
- },
47
+ halted: [
48
+ {
49
+ icon: faCircle,
50
+ color: 'var(--color-danger-item-base)',
51
+ },
52
+ {
53
+ icon: faStop,
54
+ color: 'var(--color-danger-txt-item)',
55
+ size: 8,
56
+ },
57
+ ],
51
58
  info: {
52
59
  icon: faCircleInfo,
53
60
  color: 'var(--color-info-item-base)',
@@ -68,10 +75,17 @@ export const legacyIcons = defineIconPack({
68
75
  size: 8,
69
76
  },
70
77
  ],
71
- running: {
72
- icon: faPlay,
73
- color: 'var(--color-success-item-base)',
74
- },
78
+ running: [
79
+ {
80
+ icon: faCircle,
81
+ color: 'var(--color-success-item-base)',
82
+ },
83
+ {
84
+ icon: faPlay,
85
+ color: 'var(--color-success-txt-item)',
86
+ size: 8,
87
+ },
88
+ ],
75
89
  status: defineIcon([['info', 'success', 'warning', 'danger', 'muted']], accent => [
76
90
  {
77
91
  icon: faCircle,
@@ -87,4 +101,15 @@ export const legacyIcons = defineIconPack({
87
101
  icon: faMoon,
88
102
  color: 'var(--color-info-item-base)',
89
103
  },
104
+ checked: [
105
+ {
106
+ icon: faCircle,
107
+ color: 'var(--color-success-item-base)',
108
+ },
109
+ {
110
+ icon: faCheck,
111
+ color: 'var(--color-success-txt-item)',
112
+ size: 8,
113
+ },
114
+ ],
90
115
  })
@@ -50,12 +50,8 @@
50
50
  "backup-repositories": "Repozitáře zálohy",
51
51
  "backup-repository": "Repozitář pro zálohy (místní, NFS, SMB)",
52
52
  "backup-targets": "Cíle zálohování",
53
- "backup.continuous-replication": "Průběžná replikace",
54
- "backup.disaster-recovery": "Obnova po havárii",
55
53
  "backup.full": "Plná záloha",
56
54
  "backup.incremental": "Přírůstková záloha",
57
- "backup.metadata": "Záloha metadat",
58
- "backup.mirror": "Zrcadlení zálohy",
59
55
  "backup.pool-metadata": "Metadata fondu",
60
56
  "backup.rolling-snapshot": "Průběžně zachycovaný stav",
61
57
  "backup.xo-config": "Nastavení XO",
@@ -43,10 +43,8 @@
43
43
  "backup-network": "Backup Netzwerk",
44
44
  "backup-repository": "Backup repository",
45
45
  "backup-targets": "Backup Ziele",
46
- "backup.continuous-replication": "Kontinuierliche Replikation",
47
46
  "backup.full": "Vollbackup",
48
47
  "backup.incremental": "Inkrementelles Backup",
49
- "backup.mirror": "Backup Spiegelung",
50
48
  "backups": "Backups",
51
49
  "backups.jobs": "Jobs",
52
50
  "backups.jobs.at-least-one-skipped": "Mindestens einer wurde ignoriert",
@@ -4,6 +4,7 @@
4
4
  "about": "About",
5
5
  "accept-self-signed-certificates": "Accept self-signed certificates",
6
6
  "access-forum": "Access forum",
7
+ "access-mode": "Access mode",
7
8
  "access-xoa": "Access XOA",
8
9
  "account": "Account",
9
10
  "account-organization-more": "Account, organization & more…",
@@ -51,12 +52,12 @@
51
52
  "backup-repositories": "Backup repositories",
52
53
  "backup-repository": "Backup repository (local, NFS, SMB)",
53
54
  "backup-targets": "Backup targets",
54
- "backup.continuous-replication": "Continuous replication",
55
- "backup.disaster-recovery": "Disaster recovery",
56
55
  "backup.full": "Full backup",
56
+ "backup.full-replication": "Full replication",
57
57
  "backup.incremental": "Incremental backup",
58
- "backup.metadata": "Metadata backup",
59
- "backup.mirror": "Mirror backup",
58
+ "backup.incremental-replication": "Incremental replication",
59
+ "backup.mirror.full": "Mirror full backup",
60
+ "backup.mirror.incremental": "Mirror incremental backup",
60
61
  "backup.pool-metadata": "Pool metadata",
61
62
  "backup.rolling-snapshot": "Rolling snapshot",
62
63
  "backup.xo-config": "XO config",
@@ -95,6 +96,7 @@
95
96
  "click-to-display-alarms": "Click to display alarms:",
96
97
  "click-to-return-default-pool": "Click here to return to the default pool",
97
98
  "close": "Close",
99
+ "color-mode.auto": "Automatic mode",
98
100
  "coming-soon": "Coming soon!",
99
101
  "community": "Community",
100
102
  "community-name": "{name} community",
@@ -169,7 +171,9 @@
169
171
  "created-by": "Created by",
170
172
  "created-on": "Created on",
171
173
  "cron-pattern": "Cron pattern",
174
+ "current-attach": "Current attach",
172
175
  "custom-config": "Custom config",
176
+ "custom-fields": "Custom fields",
173
177
  "dark-mode.auto": "Auto dark mode",
174
178
  "dark-mode.disable": "Disable dark mode",
175
179
  "dark-mode.enable": "Enable dark mode",
@@ -193,12 +197,15 @@
193
197
  "descending": "descending",
194
198
  "description": "Description",
195
199
  "device": "Device",
200
+ "device-config": "Device config",
196
201
  "dhcp": "DHCP",
197
202
  "disabled": "Disabled",
198
203
  "disconnected": "Disconnected",
199
204
  "disconnected-from-physical-device": "Disconnected from physical device",
205
+ "disconnected-pbd-number": "Disconnected PBD #{n}",
200
206
  "disk-name": "Disk name",
201
207
  "disk-size": "Disk size",
208
+ "disk-space": "Disk space",
202
209
  "display": "Display",
203
210
  "dns": "DNS",
204
211
  "do-you-have-needs": "You have needs and/or expectations? Let us know",
@@ -248,6 +255,7 @@
248
255
  "force-reboot": "Force reboot",
249
256
  "force-shutdown": "Force shutdown",
250
257
  "forget": "Forget",
258
+ "free-space": "Free space",
251
259
  "fullscreen": "Fullscreen",
252
260
  "fullscreen-leave": "Leave fullscreen",
253
261
  "gateway": "Gateway",
@@ -286,7 +294,9 @@
286
294
  "in-last-three-jobs": "In their last three jobs",
287
295
  "in-progress": "In progress",
288
296
  "info": "Info | Infos",
297
+ "install-guest-tools": "Install guest tools",
289
298
  "install-settings": "Install settings",
299
+ "installed": "Installed",
290
300
  "interfaces": "Interface | Interface | Interfaces",
291
301
  "interrupted": "Interrupted",
292
302
  "invalid-field": "Invalid field",
@@ -294,6 +304,8 @@
294
304
  "ip-addresses": "IP addresses",
295
305
  "ip-mode": "IP mode",
296
306
  "ip-port-placeholder": "address[:port]",
307
+ "ipv4": "IPv4 address | IPv4 addresses",
308
+ "ipv6": "IPv6 address | IPv6 addresses",
297
309
  "is-primary-host": "{name} is primary host",
298
310
  "iscsi-iqn": "iSCSI IQN",
299
311
  "iso-dvd": "ISO/DVD",
@@ -345,6 +357,7 @@
345
357
  "keep-me-logged": "Keep me logged in",
346
358
  "keep-page-open": "Do not refresh or quit tab before end of deployment.",
347
359
  "language": "Language",
360
+ "language-preferences": "Language preferences",
348
361
  "last": "Last",
349
362
  "last-n-runs": "Last run | Last {n} runs",
350
363
  "last-run-number": "Last run #{n}",
@@ -354,10 +367,12 @@
354
367
  "license-socket": "License socket",
355
368
  "license-type": "License type",
356
369
  "licensing": "Licensing",
370
+ "light-mode.enable": "Enable light mode",
357
371
  "load-average": "Load average",
358
372
  "load-now": "Load now",
359
373
  "loading": "Loading…",
360
374
  "loading-hosts": "Loading hosts…",
375
+ "local": "Local",
361
376
  "locking-mode": "Locking mode",
362
377
  "locking-mode-default": "Default locking mode",
363
378
  "log-out": "Log out",
@@ -367,7 +382,9 @@
367
382
  "mac-addresses": "MAC addresses",
368
383
  "manage-citrix-pv-drivers-via-windows-update": "Manage citrix PV drivers via Windows Update",
369
384
  "management": "Management",
385
+ "management-agent-not-detected": "Management agent not detected",
370
386
  "management-agent-version": "Management agent version",
387
+ "management-ip": "Management IP",
371
388
  "manufacturer-info": "Manufacturer info",
372
389
  "master": "Primary host",
373
390
  "maximum-cpu-limit": "Maximum CPU limit",
@@ -384,7 +401,7 @@
384
401
  "minimum-dynamic-memory": "Minimum dynamic memory",
385
402
  "minimum-static-memory": "Minimum static memory",
386
403
  "missing-patches": "Missing patches",
387
- "mode": "Mode",
404
+ "mode": "Mode | Modes",
388
405
  "more-actions": "More actions",
389
406
  "mtu": "MTU",
390
407
  "multi-creation": "Multi creation",
@@ -426,9 +443,13 @@
426
443
  "no-backup-repositories-detected": "No backup repositories detected",
427
444
  "no-backup-run-available": "No backup run available",
428
445
  "no-config": "No configuration",
446
+ "no-custom-fields-detected": "No custom fields detected",
429
447
  "no-data": "No data",
430
448
  "no-data-to-calculate": "No data to calculate",
449
+ "no-hosts-attached": "No hosts attached",
450
+ "no-hosts-detected": "No hosts detected.",
431
451
  "no-network-detected": "No network detected",
452
+ "no-pbds-attached": "No PBDs attached",
432
453
  "no-pif-detected": "No PIF detected",
433
454
  "no-pools-detected": "No pools detected",
434
455
  "no-result": "No result",
@@ -438,8 +459,10 @@
438
459
  "no-server-detected": "No server detected",
439
460
  "no-storage-repositories-detected": "No storage repositories detected.",
440
461
  "no-tasks": "No tasks",
462
+ "no-vdis-attached": "No VDIs attached",
441
463
  "no-vif-detected": "No VIF detected",
442
464
  "no-vm-detected": "No VM detected",
465
+ "no-xen-tools-detected": "No Xen tools detected",
443
466
  "none": "None",
444
467
  "normal": "Normal",
445
468
  "not-found": "Not found",
@@ -469,6 +492,7 @@
469
492
  "patches": "Patches",
470
493
  "patches-up-to-date": "Patches up to date",
471
494
  "pause": "Pause",
495
+ "pbd-details": "Physical Block Device (PBD) details",
472
496
  "pending": "Pending",
473
497
  "physical-interface-status": "Physical interface status",
474
498
  "pick-template": "Pick template",
@@ -498,11 +522,13 @@
498
522
  "power-on-mode": "Power on mode",
499
523
  "power-on-vm-for-console": "Power on your VM to access its console",
500
524
  "power-state": "Power state",
525
+ "pro-support": "{name} pro support",
501
526
  "professional-support": "Professional support",
502
527
  "properties": "Properties",
503
528
  "property": "Property",
504
529
  "protect-from-accidental-deletion": "Protect from accidental deletion",
505
530
  "protect-from-accidental-shutdown": "Protect from accidental shutdown",
531
+ "provisioning": "Provisioning",
506
532
  "proxy": "Proxy",
507
533
  "proxy-url": "Proxy URL",
508
534
  "pxe": "PXE",
@@ -534,7 +560,9 @@
534
560
  "report-when.skipped-and-failure": "Skipped and failure",
535
561
  "resident-on": "Resident on",
536
562
  "resource-management": "Resource management",
563
+ "resources": "Resources",
537
564
  "resources-overview": "Resources overview",
565
+ "rest-api": "REST API",
538
566
  "resume": "Resume",
539
567
  "root-by-default": "\"root\" by default.",
540
568
  "run": "Run",
@@ -564,6 +592,7 @@
564
592
  "send-us-feedback": "Send us feedback",
565
593
  "settings": "Settings",
566
594
  "settings.missing-translations": "Missing or incorrect translations?",
595
+ "shared": "Shared",
567
596
  "shorter-backup-reports": "Shorter backup reports",
568
597
  "shutdown": "Shutdown",
569
598
  "sidebar.search-tree-view": "Search in treeview",
@@ -573,10 +602,13 @@
573
602
  "smart-mode": "Smart mode",
574
603
  "snapshot": "Snapshot",
575
604
  "snapshot-mode": "Snapshot mode",
605
+ "snapshots": "Snapshots",
576
606
  "sockets-with-cores-per-socket": "{nSockets} sockets × {nCores} cores/socket",
607
+ "software": "Software",
577
608
  "software-tooling": "Software & tooling",
578
609
  "sort-by": "Sort by",
579
610
  "source-backup-repository": "Source backup repository",
611
+ "space": "Space",
580
612
  "speed": "Speed",
581
613
  "speed-limit": "Speed limit",
582
614
  "sr": "SR",
@@ -602,6 +634,7 @@
602
634
  "status": "Status",
603
635
  "storage": "Storage",
604
636
  "storage-configuration": "Storage configuration",
637
+ "storage-format": "Storage format",
605
638
  "storage-repositories": "Storage repositories",
606
639
  "storage-repository": "Storage repository",
607
640
  "storage-usage": "Storage usage",
@@ -646,17 +679,19 @@
646
679
  "total-free:": "Total free:",
647
680
  "total-memory": "Total memory",
648
681
  "total-schedules": "Total schedules",
682
+ "total-space": "Total space",
649
683
  "total-storage-repository": "Total storage repository",
650
684
  "total-used": "Total used",
651
685
  "total-used:": "Total used:",
652
686
  "transfer-size": "Transfer size",
687
+ "translation-tool": "Translation tool",
653
688
  "unable-to-connect-to": "Unable to connect to {ip}",
654
689
  "unable-to-connect-to-the-pool": "Unable to connect to the pool",
655
690
  "unknown": "Unknown",
656
691
  "unlocked": "Unlocked",
657
692
  "unreachable-hosts": "Unreachable hosts",
658
693
  "unreachable-hosts-reload-page": "Done, reload the page",
659
- "untranslated-text-helper": "By default, untranslated texts will be displayed in english.",
694
+ "untranslated-text-helper": "By default, untranslated texts will be presented in english.",
660
695
  "up-to-date": "Up-to-date",
661
696
  "update": "Update",
662
697
  "used": "Used",
@@ -709,11 +744,16 @@
709
744
  "vms-status.unknown.tooltip": "For which XO has lost connection to the pool",
710
745
  "vms-tags": "VMs tags",
711
746
  "warning": "Warning | Warnings",
747
+ "weblate": "Weblate",
712
748
  "with-memory": "With memory",
713
749
  "write": "Write",
750
+ "xcp-ng": "XCP-ng",
751
+ "xen-orchestra": "Xen Orchestra",
752
+ "xo": "XO",
714
753
  "xo-backups": "XO backups",
715
754
  "xo-lite-under-construction": "XOLite is under construction",
716
755
  "xo-replications": "XO replications",
756
+ "xoa": "XOA",
717
757
  "xoa-admin-account": "XOA admin account",
718
758
  "xoa-deploy": "XOA deployment",
719
759
  "xoa-deploy-failed": "Sorry, deployment failed!",
@@ -49,12 +49,8 @@
49
49
  "backup-repositories": "Repositorios de salvaguardas",
50
50
  "backup-repository": "Repositorio de copia de seguridad (local, NFS, SMB)",
51
51
  "backup-targets": "Objetos de salvaguarda",
52
- "backup.continuous-replication": "Replicación contínua",
53
- "backup.disaster-recovery": "Recuperación ante desastres",
54
52
  "backup.full": "Salvaguarda completa",
55
53
  "backup.incremental": "Salvaguarda incremental",
56
- "backup.metadata": "Salvaguarda metadata",
57
- "backup.mirror": "Salvaguarda espejo",
58
54
  "backup.pool-metadata": "Salvaguarda del conjunto de servidores",
59
55
  "backup.rolling-snapshot": "Instantánea contínua (rolling snapshot)",
60
56
  "backup.xo-config": "Configuración XO",
@@ -4,6 +4,7 @@
4
4
  "about": "À propos",
5
5
  "accept-self-signed-certificates": "Accepter les certificats auto-signés",
6
6
  "access-forum": "Accès au forum",
7
+ "access-mode": "Mode d'accès",
7
8
  "access-xoa": "Accéder à la XOA",
8
9
  "account": "Compte",
9
10
  "account-organization-more": "Compte, organisation et plus…",
@@ -51,14 +52,14 @@
51
52
  "backup-repositories": "Dépôts de sauvegarde",
52
53
  "backup-repository": "Dépôt de sauvegarde (local, NFS, SMB)",
53
54
  "backup-targets": "Cibles de sauvegarde",
54
- "backup.continuous-replication": "Réplication continue",
55
- "backup.disaster-recovery": "Disaster recovery",
56
- "backup.full": "Full backup",
57
- "backup.incremental": "Incremental backup",
58
- "backup.metadata": "Metadata backup",
59
- "backup.mirror": "Mirror backup",
55
+ "backup.full": "Sauvegarde complète",
56
+ "backup.full-replication": "Réplication complète",
57
+ "backup.incremental": "Sauvegarde incrémentielle",
58
+ "backup.incremental-replication": "Réplication incrémentielle",
59
+ "backup.mirror.full": "Sauvegarde complète en miroir",
60
+ "backup.mirror.incremental": "Sauvegarde incrémentielle en miroir",
60
61
  "backup.pool-metadata": "Pool metadata",
61
- "backup.rolling-snapshot": "Rolling snapshot",
62
+ "backup.rolling-snapshot": "Instantané continu",
62
63
  "backup.xo-config": "XO config",
63
64
  "backups": "Sauvegardes",
64
65
  "backups.jobs": "Jobs",
@@ -95,6 +96,7 @@
95
96
  "click-to-display-alarms": "Cliquer pour afficher les alarmes :",
96
97
  "click-to-return-default-pool": "Cliquer ici pour revenir au pool par défaut",
97
98
  "close": "Fermer",
99
+ "color-mode.auto": "Mode automatique",
98
100
  "coming-soon": "Bientôt disponible !",
99
101
  "community": "Communauté",
100
102
  "community-name": "Communauté {name}",
@@ -169,7 +171,9 @@
169
171
  "created-by": "Créé par",
170
172
  "created-on": "Créé le",
171
173
  "cron-pattern": "Pattern cron",
174
+ "current-attach": "Attachement actuel",
172
175
  "custom-config": "Configuration personnalisée",
176
+ "custom-fields": "Champs personnalisés",
173
177
  "dark-mode.auto": "Mode sombre automatique",
174
178
  "dark-mode.disable": "Désactiver le mode sombre",
175
179
  "dark-mode.enable": "Activer le mode sombre",
@@ -193,12 +197,15 @@
193
197
  "descending": "descendant",
194
198
  "description": "Description",
195
199
  "device": "Appareil",
200
+ "device-config": "Configuration de l'appareil",
196
201
  "dhcp": "DHCP",
197
202
  "disabled": "Désactivé",
198
203
  "disconnected": "Déconnecté",
199
204
  "disconnected-from-physical-device": "Déconnecté de l'appareil physique",
205
+ "disconnected-pbd-number": "PBD déconnecté #{n}",
200
206
  "disk-name": "Nom du disque",
201
207
  "disk-size": "Taille du disque",
208
+ "disk-space": "Espace disque",
202
209
  "display": "Affichage",
203
210
  "dns": "DNS",
204
211
  "do-you-have-needs": "Vous avez des besoins et/ou des attentes ? Faites le nous savoir",
@@ -248,6 +255,7 @@
248
255
  "force-reboot": "Forcer le redémarrage",
249
256
  "force-shutdown": "Forcer l'arrêt",
250
257
  "forget": "Oublier",
258
+ "free-space": "Espace libre",
251
259
  "fullscreen": "Plein écran",
252
260
  "fullscreen-leave": "Quitter plein écran",
253
261
  "gateway": "Passerelle",
@@ -286,7 +294,9 @@
286
294
  "in-last-three-jobs": "Dans leurs trois derniers jobs",
287
295
  "in-progress": "En cours",
288
296
  "info": "Info | Infos",
297
+ "install-guest-tools": "Installer les guest tools",
289
298
  "install-settings": "Paramètres d'installation",
299
+ "installed": "Installé",
290
300
  "interfaces": "Interface | Interface | Interfaces",
291
301
  "interrupted": "Interrompu",
292
302
  "invalid-field": "Champ invalide",
@@ -294,6 +304,8 @@
294
304
  "ip-addresses": "Adresses IP",
295
305
  "ip-mode": "Mode IP",
296
306
  "ip-port-placeholder": "adresse[:port]",
307
+ "ipv4": "Adresse IPv4 | Adresses IPv4",
308
+ "ipv6": "Adresse IPv6 | Adresses IPv6",
297
309
  "is-primary-host": "{name} est l'hôte primaire",
298
310
  "iscsi-iqn": "iSCSI IQN",
299
311
  "iso-dvd": "ISO/DVD",
@@ -345,6 +357,7 @@
345
357
  "keep-me-logged": "Rester connecté",
346
358
  "keep-page-open": "Ne pas rafraichir ou quitter cette page avant la fin du déploiement.",
347
359
  "language": "Langue",
360
+ "language-preferences": "Choix de la langue",
348
361
  "last": "Dernier",
349
362
  "last-n-runs": "Dernier run | {n} derniers runs",
350
363
  "last-run-number": "Dernière exécution #{n}",
@@ -354,10 +367,12 @@
354
367
  "license-socket": "Licence socket",
355
368
  "license-type": "Type de licence",
356
369
  "licensing": "Licences",
370
+ "light-mode.enable": "Activer le mode clair",
357
371
  "load-average": "Charge système",
358
372
  "load-now": "Charger maintenant",
359
373
  "loading": "Chargement…",
360
374
  "loading-hosts": "Chargement des hôtes…",
375
+ "local": "Local",
361
376
  "locking-mode": "Mode de verrouillage",
362
377
  "locking-mode-default": "Mode de verrouillage par défaut",
363
378
  "log-out": "Se déconnecter",
@@ -367,7 +382,9 @@
367
382
  "mac-addresses": "Adresses MAC",
368
383
  "manage-citrix-pv-drivers-via-windows-update": "Gérer les pilotes Citrix PV via Windows Update",
369
384
  "management": "Gestion",
385
+ "management-agent-not-detected": "Agent de gestion non détecté",
370
386
  "management-agent-version": "Version de l'agent de gestion",
387
+ "management-ip": "IP principale",
371
388
  "manufacturer-info": "Informations sur le fabricant",
372
389
  "master": "Hôte primaire",
373
390
  "maximum-cpu-limit": "Nombre maximal de CPU",
@@ -384,7 +401,7 @@
384
401
  "minimum-dynamic-memory": "Mémoire dynamique minimale",
385
402
  "minimum-static-memory": "Mémoire statique minimale",
386
403
  "missing-patches": "Patches manquants",
387
- "mode": "Mode",
404
+ "mode": "Mode | Modes",
388
405
  "more-actions": "Plus d'actions",
389
406
  "mtu": "MTU",
390
407
  "multi-creation": "Création multiple",
@@ -423,12 +440,16 @@
423
440
  "no-alarms-detected": "Aucune alarme détectée",
424
441
  "no-backed-up-vms-detected": "Aucune VM sauvegardée détectée",
425
442
  "no-backup-available": "Aucune sauvegarde disponible",
426
- "no-backup-run-available": "Aucune exécution de sauvegarde disponible",
427
443
  "no-backup-repositories-detected": "Aucun dépôt de sauvegarde détecté",
444
+ "no-backup-run-available": "Aucune exécution de sauvegarde disponible",
428
445
  "no-config": "Aucune configuration",
446
+ "no-custom-fields-detected": "Aucun champ personnalisé détecté",
429
447
  "no-data": "Aucune donnée",
430
448
  "no-data-to-calculate": "Aucune donnée à calculer",
449
+ "no-hosts-attached": "Aucun hôte attaché",
450
+ "no-hosts-detected": "Aucun hôte détecté",
431
451
  "no-network-detected": "Aucun réseau détecté",
452
+ "no-pbds-attached": "Aucun PBD attaché",
432
453
  "no-pif-detected": "Aucun PIF détecté",
433
454
  "no-pools-detected": "Aucun pool détecté",
434
455
  "no-result": "Aucun résultat",
@@ -438,8 +459,10 @@
438
459
  "no-server-detected": "Aucun serveur détecté",
439
460
  "no-storage-repositories-detected": "Aucun dépôt de stockage détecté",
440
461
  "no-tasks": "Aucune tâche",
462
+ "no-vdis-attached": "Aucun VDI attaché",
441
463
  "no-vif-detected": "Aucun VIF détecté",
442
464
  "no-vm-detected": "Aucune VM détectée",
465
+ "no-xen-tools-detected": "Aucun outil Xen détecté",
443
466
  "none": "Aucun",
444
467
  "normal": "Normal",
445
468
  "not-found": "Non trouvé",
@@ -469,6 +492,7 @@
469
492
  "patches": "Patches",
470
493
  "patches-up-to-date": "Patches à jour",
471
494
  "pause": "Pause",
495
+ "pbd-details": "Détails du périphérique de bloc physique (PBD)",
472
496
  "pending": "En cours",
473
497
  "physical-interface-status": "Statut de l'interface physique",
474
498
  "pick-template": "Choisir un modèle",
@@ -498,11 +522,13 @@
498
522
  "power-on-mode": "Mode d'alimentation",
499
523
  "power-on-vm-for-console": "Allumez votre VM pour accéder à sa console",
500
524
  "power-state": "État d'alimentation",
525
+ "pro-support": "Support pro {name}",
501
526
  "professional-support": "Support professionnel",
502
527
  "properties": "Propriétés",
503
528
  "property": "Propriété",
504
529
  "protect-from-accidental-deletion": "Protection contre les suppressions accidentelles",
505
530
  "protect-from-accidental-shutdown": "Protection contre les extinctions accidentelles",
531
+ "provisioning": "Provisionnement",
506
532
  "proxy": "Proxy",
507
533
  "proxy-url": "URL du Proxy",
508
534
  "pxe": "PXE",
@@ -534,7 +560,9 @@
534
560
  "report-when.skipped-and-failure": "Ignoré et échec",
535
561
  "resident-on": "Résident sur",
536
562
  "resource-management": "Gestion des ressources",
563
+ "resources": "Ressources",
537
564
  "resources-overview": "Vue d'ensemble des ressources",
565
+ "rest-api": "API REST",
538
566
  "resume": "Reprendre",
539
567
  "root-by-default": "\"root\" par défaut.",
540
568
  "run": "Run",
@@ -564,6 +592,7 @@
564
592
  "send-us-feedback": "Envoyez-nous vos commentaires",
565
593
  "settings": "Paramètres",
566
594
  "settings.missing-translations": "Traductions manquantes ou incorrectes ?",
595
+ "shared": "Partagé",
567
596
  "shorter-backup-reports": "Rapports de sauvegarde plus courts",
568
597
  "shutdown": "Arrêter",
569
598
  "sidebar.search-tree-view": "Rechercher dans l'arborescence",
@@ -573,10 +602,13 @@
573
602
  "smart-mode": "Mode intelligent",
574
603
  "snapshot": "Instantané",
575
604
  "snapshot-mode": "Mode de sauvegarde",
605
+ "snapshots": "Instantanés",
576
606
  "sockets-with-cores-per-socket": "{nSockets} sockets × {nCores} cœurs/socket",
607
+ "software": "Logiciel",
577
608
  "software-tooling": "Logiciels et outils",
578
609
  "sort-by": "Trier par",
579
610
  "source-backup-repository": "Dépôt de sauvegarde source",
611
+ "space": "Espace",
580
612
  "speed": "Vitesse",
581
613
  "speed-limit": "Limite de vitesse",
582
614
  "sr": "SR",
@@ -602,6 +634,7 @@
602
634
  "status": "Statut",
603
635
  "storage": "Stockage",
604
636
  "storage-configuration": "Configuration du stockage",
637
+ "storage-format": "Format de stockage",
605
638
  "storage-repositories": "Dépôts de stockage",
606
639
  "storage-repository": "Dépot de stockage",
607
640
  "storage-usage": "Utilisation du stockage",
@@ -646,10 +679,12 @@
646
679
  "total-free:": "Total libre :",
647
680
  "total-memory": "Mémoire totale",
648
681
  "total-schedules": "Nombre total de planifications",
682
+ "total-space": "Espace total",
649
683
  "total-storage-repository": "Total dépot de stockage",
650
684
  "total-used": "Total utilisé",
651
685
  "total-used:": "Total utilisé :",
652
686
  "transfer-size": "Taille transférée",
687
+ "translation-tool": "Outil de traduction",
653
688
  "unable-to-connect-to": "Impossible de se connecter à {ip}",
654
689
  "unable-to-connect-to-the-pool": "Impossible de se connecter au Pool",
655
690
  "unknown": "Inconnu",
@@ -709,11 +744,16 @@
709
744
  "vms-status.unknown.tooltip": "Dont XO a perdu la connexion avec le pool",
710
745
  "vms-tags": "Tags des VMs",
711
746
  "warning": "Avertissement | Avertissements",
747
+ "weblate": "Weblate",
712
748
  "with-memory": "Avec mémoire",
713
749
  "write": "Écriture",
750
+ "xcp-ng": "XCP-ng",
751
+ "xen-orchestra": "Xen Orchestra",
752
+ "xo": "XO",
714
753
  "xo-backups": "Sauvegardes XO",
715
754
  "xo-lite-under-construction": "XOLite est en construction",
716
755
  "xo-replications": "Réplications XO",
756
+ "xoa": "XOA",
717
757
  "xoa-admin-account": "Compte administrateur de la XOA",
718
758
  "xoa-deploy": "Déploiement de la XOA",
719
759
  "xoa-deploy-failed": "Erreur lors du déploiement de la XOA !",
@@ -50,12 +50,8 @@
50
50
  "backup-repositories": "Back-up repositories",
51
51
  "backup-repository": "Back-up opslag repository (lokaal, NFS, SMB)",
52
52
  "backup-targets": "Back-updoelen",
53
- "backup.continuous-replication": "Continue replicatie",
54
- "backup.disaster-recovery": "Rampenherstel",
55
53
  "backup.full": "Volledige back-up",
56
54
  "backup.incremental": "Incrementele back-up",
57
- "backup.metadata": "Back-up van metadata",
58
- "backup.mirror": "Spiegelback-up",
59
55
  "backup.pool-metadata": "Pool metadata",
60
56
  "backup.rolling-snapshot": "Rollende snapshot",
61
57
  "backup.xo-config": "XO-configuratie",
@@ -40,8 +40,6 @@
40
40
  "backup-jobs": "Tarefas de backup",
41
41
  "backup-repository": "Repositório de backup (local, NFS, SMB)",
42
42
  "backup-targets": "Destinos de backup",
43
- "backup.continuous-replication": "Replicação contínua",
44
- "backup.disaster-recovery": "Recuperação de desastres",
45
43
  "backup.full": "Backup completo",
46
44
  "backup.incremental": "Backup incremental",
47
45
  "backup.xo-config": "Configuração XO",
@@ -49,12 +49,8 @@
49
49
  "backup-repositories": "Хранилища резервных копий",
50
50
  "backup-repository": "Хранилище резервных копий (local, NFS, SMB)",
51
51
  "backup-targets": "Назначение для резервной копии",
52
- "backup.continuous-replication": "Постоянная репликация",
53
- "backup.disaster-recovery": "Восстановление после крит. ошибок",
54
52
  "backup.full": "Полная резервная копия",
55
53
  "backup.incremental": "Инкрементальная резервная копия",
56
- "backup.metadata": "Резервная копия метаданныъ",
57
- "backup.mirror": "Зеркальная резервная копия",
58
54
  "backup.pool-metadata": "Метаданные пула",
59
55
  "backup.rolling-snapshot": "Скользящий снимок",
60
56
  "backup.xo-config": "Конфигурация XO",
@@ -47,12 +47,8 @@
47
47
  "backup-repositories": "Säkerhetskopieringsförvaring",
48
48
  "backup-repository": "Säkerhetskopieringsförvaring (lokalt, NFS, SMB)",
49
49
  "backup-targets": "Säkerhetskopieringsmål",
50
- "backup.continuous-replication": "Kontinuerlig replikering",
51
- "backup.disaster-recovery": "Katastrofåterställning",
52
50
  "backup.full": "Fullständig säkerhetskopiering",
53
51
  "backup.incremental": "Inkrementell säkerhetskopiering",
54
- "backup.metadata": "Säkerhetskopiering av metadata",
55
- "backup.mirror": "Speglad säkerhetskopiering",
56
52
  "backup.pool-metadata": "Pool-metadata",
57
53
  "backup.rolling-snapshot": "Rullande ögonblicksbild",
58
54
  "backup.xo-config": "XO-konfig",
@@ -44,12 +44,8 @@
44
44
  "backup-network": "Резервна мережа",
45
45
  "backup-repository": "Сховище резервних копій (local, NFS, SMB)",
46
46
  "backup-targets": "Призначення для резервної копії",
47
- "backup.continuous-replication": "Постійна реплікація",
48
- "backup.disaster-recovery": "Відновлення після критичних помилок",
49
47
  "backup.full": "Повна резервна копія",
50
48
  "backup.incremental": "Інкрементальна резервна копія",
51
- "backup.metadata": "Резервна копія метаданих",
52
- "backup.mirror": "Дзеркальна резервна копія",
53
49
  "backup.pool-metadata": "Метадані пулу",
54
50
  "backup.rolling-snapshot": "Ковзний знімок",
55
51
  "backup.xo-config": "Конфігурація XO",
@@ -19,7 +19,7 @@ import {
19
19
  watch,
20
20
  } from 'vue'
21
21
 
22
- const DEFAULT_CACHE_DURATION_MS = 10_000
22
+ const DEFAULT_CACHE_EXPIRATION_MS = 10_000
23
23
 
24
24
  const DEFAULT_POLLING_INTERVAL_MS = 30_000
25
25
 
@@ -32,8 +32,8 @@ export function defineRemoteResource<
32
32
  initialData: () => TData
33
33
  state?: (data: Ref<NoInfer<TData>>, context: ResourceContext<TArgs>) => TState
34
34
  onDataReceived?: (data: Ref<NoInfer<TData>>, receivedData: any) => void
35
- cacheDurationMs?: number
36
- pollingIntervalMs?: number
35
+ cacheExpirationMs?: number | false
36
+ pollingIntervalMs?: number | false
37
37
  stream?: boolean
38
38
  }): UseRemoteResource<TState, TArgs>
39
39
 
@@ -41,8 +41,8 @@ export function defineRemoteResource<TData, TState extends object, TArgs extends
41
41
  url: string | ((...args: TArgs) => string)
42
42
  state?: (data: Ref<TData | undefined>, context: ResourceContext<TArgs>) => TState
43
43
  onDataReceived?: (data: Ref<TData | undefined>, receivedData: any) => void
44
- cacheDurationMs?: number
45
- pollingIntervalMs?: number
44
+ cacheExpirationMs?: number | false
45
+ pollingIntervalMs?: number | false
46
46
  stream?: boolean
47
47
  }): UseRemoteResource<TState, TArgs>
48
48
 
@@ -55,8 +55,8 @@ export function defineRemoteResource<
55
55
  initialData?: () => TData
56
56
  state?: (data: Ref<TData>, context: ResourceContext<TArgs>) => TState
57
57
  onDataReceived?: (data: Ref<NoInfer<TData>>, receivedData: any) => void
58
- cacheDurationMs?: number
59
- pollingIntervalMs?: number
58
+ cacheExpirationMs?: number | false
59
+ pollingIntervalMs?: number | false
60
60
  stream?: boolean
61
61
  }) {
62
62
  const cache = new Map<
@@ -79,7 +79,7 @@ export function defineRemoteResource<
79
79
 
80
80
  const buildState = config.state ?? ((data: Ref<TData>) => ({ data }))
81
81
 
82
- const cacheDuration = config.cacheDurationMs ?? DEFAULT_CACHE_DURATION_MS
82
+ const cacheExpiration = config.cacheExpirationMs ?? DEFAULT_CACHE_EXPIRATION_MS
83
83
 
84
84
  const pollingInterval = config.pollingIntervalMs ?? DEFAULT_POLLING_INTERVAL_MS
85
85
 
@@ -128,9 +128,11 @@ export function defineRemoteResource<
128
128
 
129
129
  entry.pause()
130
130
 
131
- setTimeout(() => {
132
- cache.delete(url)
133
- }, cacheDuration)
131
+ if (cacheExpiration !== false) {
132
+ setTimeout(() => {
133
+ cache.delete(url)
134
+ }, cacheExpiration)
135
+ }
134
136
  }
135
137
 
136
138
  function registerUrl(url: string, context: ResourceContext<TArgs>) {
@@ -182,7 +184,7 @@ export function defineRemoteResource<
182
184
  let pause: VoidFunction = noop
183
185
  let resume: VoidFunction = execute
184
186
 
185
- if (pollingInterval > 0) {
187
+ if (pollingInterval !== false) {
186
188
  const timeoutPoll = useTimeoutPoll(execute, pollingInterval, {
187
189
  immediateCallback: true,
188
190
  immediate: false,
@@ -28,24 +28,26 @@ export function cpuProgressThresholds(tooltip?: string): ThresholdConfig<Progres
28
28
 
29
29
  export function useProgressToLegend(
30
30
  rawType: MaybeRefOrGetter<ProgressBarLegendType | undefined>
31
- ): (label: string, progress: Progress | Reactive<Progress>) => ProgressBarLegend | undefined
31
+ ): (label: string | undefined, progress: Progress | Reactive<Progress>) => ProgressBarLegend | undefined
32
32
 
33
33
  export function useProgressToLegend(
34
34
  rawType: MaybeRefOrGetter<ProgressBarLegendType | undefined>,
35
- label: string,
35
+ rawLabel: MaybeRefOrGetter<string | undefined>,
36
36
  progress: Progress | Reactive<Progress>
37
37
  ): ComputedRef<ProgressBarLegend | undefined>
38
38
 
39
39
  export function useProgressToLegend(
40
40
  rawType: MaybeRefOrGetter<ProgressBarLegendType | undefined>,
41
- label?: string,
41
+ rawLabel?: MaybeRefOrGetter<string | undefined>,
42
42
  progress?: Progress | Reactive<Progress>
43
43
  ) {
44
44
  const { n } = useI18n()
45
45
 
46
46
  const type = toComputed(rawType)
47
47
 
48
- function toLegend(label: string, progress: Progress | Reactive<Progress>): ProgressBarLegend | undefined {
48
+ const label = toComputed(rawLabel)
49
+
50
+ function toLegend(label: string = '', progress: Progress | Reactive<Progress>): ProgressBarLegend | undefined {
49
51
  switch (type.value) {
50
52
  case 'percent':
51
53
  return { label, value: n(toValue(progress.percentage) / 100, { maximumFractionDigits: 1, style: 'percent' }) }
@@ -66,7 +68,7 @@ export function useProgressToLegend(
66
68
  }
67
69
 
68
70
  if (label && progress) {
69
- return computed(() => toLegend(label, progress))
71
+ return computed(() => toLegend(label.value, progress))
70
72
  }
71
73
 
72
74
  return toLegend
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xen-orchestra/web-core",
3
3
  "type": "module",
4
- "version": "0.33.0",
4
+ "version": "0.34.0",
5
5
  "private": false,
6
6
  "exports": {
7
7
  "./*": {