@xen-orchestra/web-core 0.49.0 → 0.51.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/delete-button/VtsDeleteButton.vue +27 -0
- package/lib/components/menu/MenuTrigger.vue +1 -0
- package/lib/components/menu/VtsActionsMenu.vue +53 -0
- package/lib/components/modal/VtsErrorModal.vue +36 -0
- package/lib/components/modal/VtsModalList.vue +1 -1
- package/lib/components/status/VtsStatus.vue +4 -0
- package/lib/components/table/cells/VtsActionCell.vue +44 -0
- package/lib/components/table/cells/VtsDoubleLinkCell.vue +53 -0
- package/lib/composables/default-tab.composable.md +17 -11
- package/lib/composables/default-tab.composable.ts +10 -4
- package/lib/icons/fa-icons.ts +2 -0
- package/lib/icons/object-icons.ts +2 -0
- package/lib/locales/cs.json +75 -35
- package/lib/locales/da.json +3 -3
- package/lib/locales/de.json +4 -4
- package/lib/locales/en.json +61 -3
- package/lib/locales/es.json +279 -196
- package/lib/locales/fa.json +4 -4
- package/lib/locales/fi.json +1 -1
- package/lib/locales/fr.json +60 -2
- package/lib/locales/it.json +5 -4
- package/lib/locales/ko.json +3 -1
- package/lib/locales/nb-NO.json +2 -2
- package/lib/locales/nl.json +22 -5
- package/lib/locales/pl.json +2 -2
- package/lib/locales/pt-BR.json +6 -6
- package/lib/locales/pt.json +4 -4
- package/lib/locales/ru.json +60 -13
- package/lib/locales/sk.json +509 -18
- package/lib/locales/sv.json +4 -4
- package/lib/locales/uk.json +1 -1
- package/lib/locales/zh-Hans.json +31 -4
- package/lib/packages/job/define-job.ts +1 -1
- package/lib/packages/table/define-columns.ts +4 -3
- package/lib/tables/column-definitions/action-column.ts +21 -0
- package/lib/tables/column-definitions/button-icon-column.ts +2 -2
- package/lib/tables/column-definitions/double-link-column.ts +14 -0
- package/lib/tables/column-definitions/text-column.ts +1 -1
- package/lib/tables/column-sets/host-columns.ts +1 -1
- package/lib/tables/column-sets/network-columns.ts +3 -1
- package/lib/tables/column-sets/snapshot-columns.ts +2 -2
- package/lib/tables/column-sets/traffic-rules-columns.ts +29 -0
- package/lib/tables/column-sets/vdi-columns.ts +2 -2
- package/lib/tables/column-sets/vif-columns.ts +2 -2
- package/package.json +3 -3
package/lib/locales/sv.json
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"action:delete": "Radera",
|
|
30
30
|
"action:delete-filter": "Radera filter",
|
|
31
31
|
"action:delete-group": "Radera grupp",
|
|
32
|
-
"action:delete-vms": "Radera 1 VM | Radera {n} VMar",
|
|
32
|
+
"action:delete-n-vms": "Radera 1 VM | Radera {n} VMar",
|
|
33
33
|
"action:deploy": "Driftsätt",
|
|
34
34
|
"action:deploy-xoa": "Driftsätt XOA",
|
|
35
35
|
"action:duplicate": "Klona",
|
|
@@ -358,6 +358,7 @@
|
|
|
358
358
|
"job:arg:sr-vdi-required": "SR VDI krävs",
|
|
359
359
|
"job:arg:template-uuid-required": "Mall UUID krävs",
|
|
360
360
|
"job:arg:username-required": "Användarnamn krävs",
|
|
361
|
+
"job:delete:in-progress": "Radering pågår…",
|
|
361
362
|
"job:create:in-progress": "Skapande pågår…",
|
|
362
363
|
"job:vm-copy:bad-power-state": "VMen måste vara stoppad",
|
|
363
364
|
"job:vm-copy:in-progress": "Kopiering pågår…",
|
|
@@ -365,7 +366,6 @@
|
|
|
365
366
|
"job:vm-create:incomplete-install-mode": "Installationsläget är inkomplett",
|
|
366
367
|
"job:vm-delete:bad-power-state": "VMen måste vara stoppad",
|
|
367
368
|
"job:vm-delete:blocked-operation": "VM-radering är blockerad",
|
|
368
|
-
"job:vm-delete:in-progress": "Radering pågår…",
|
|
369
369
|
"job:vm-delete:missing-vm": "Ingen VM att radera",
|
|
370
370
|
"job:vm-export:in-progress": "Export pågår…",
|
|
371
371
|
"job:vm-export:missing-compression": "Komprimering måste anges",
|
|
@@ -427,7 +427,7 @@
|
|
|
427
427
|
"license-type": "Licenstyp",
|
|
428
428
|
"licensing": "Licensiering",
|
|
429
429
|
"load-average": "Genomsnittslast",
|
|
430
|
-
"loading": "Laddning pågår
|
|
430
|
+
"loading": "Laddning pågår",
|
|
431
431
|
"loading-hosts": "Ladda hostar…",
|
|
432
432
|
"local": "Lokal",
|
|
433
433
|
"locked": "Låst",
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
"modal:confirm-vm-force-shutdown": "Bekräftaa tvingad nedstängning av VM",
|
|
466
466
|
"modal:confirm-vm-reboot": "Bekräfta omstart av VM",
|
|
467
467
|
"modal:confirm-vm-shutdown": "Bekräfta nedstängning av VM",
|
|
468
|
-
"modal:vm-force-reboot-message": "Detta kommer omedelbart
|
|
468
|
+
"modal:vm-force-reboot-message": "Detta kommer omedelbart startar om den virtuella maskinen utan en korrekt nedstängning. Dataförlust kan ske och pågående processer kommer att avbrytas.",
|
|
469
469
|
"modal:vm-force-shutdown-message": "Detta kommer omedelbart att stänga av den virtuella maskinen utan en korrekt nedstängning. Dataförlust kan ske och pågående processer kommer att avbrytas.",
|
|
470
470
|
"modal:vm-reboot-message": "Startar om den virtuella maskinen korrekt genom att stänga ned den och starta upp den igen. Processer stängs ner korrekt.",
|
|
471
471
|
"modal:vm-shutdown-message": "Stänger ned den virtuella maskinen korrekt. Alla körande processer stoppas och användare kan kopplas ifrån. Du kan starta om VMen senare från gränssnittet.",
|
package/lib/locales/uk.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"action:copy-info-json": "Копіювати інформацію в JSON",
|
|
22
22
|
"action:create": "Створити",
|
|
23
23
|
"action:delete": "Видалити",
|
|
24
|
-
"action:delete-vms": "Видалено 1 VM | Видалено {n} VMs",
|
|
24
|
+
"action:delete-n-vms": "Видалено 1 VM | Видалено {n} VMs",
|
|
25
25
|
"action:deploy": "Розгорнути",
|
|
26
26
|
"action:deploy-xoa": "Розгорнути XOA",
|
|
27
27
|
"action:edit": "Редагувати",
|
package/lib/locales/zh-Hans.json
CHANGED
|
@@ -26,12 +26,16 @@
|
|
|
26
26
|
"action:copy-id": "复制ID",
|
|
27
27
|
"action:copy-info-json": "复制信息为JSON",
|
|
28
28
|
"action:create": "创建",
|
|
29
|
+
"action:create-bonded-network": "创建绑定网络",
|
|
30
|
+
"action:create-internal-network": "创建内部网络",
|
|
31
|
+
"action:create-network": "创建网络",
|
|
29
32
|
"action:delete": "删除",
|
|
30
33
|
"action:delete-filter": "删除筛选器",
|
|
31
34
|
"action:delete-group": "删除群组",
|
|
32
|
-
"action:delete-vms": "删除1台虚拟机 | 删除{n}台虚拟机",
|
|
35
|
+
"action:delete-n-vms": "删除1台虚拟机 | 删除{n}台虚拟机",
|
|
33
36
|
"action:deploy": "部署",
|
|
34
37
|
"action:deploy-xoa": "部署XOA",
|
|
38
|
+
"action:download-bugtools-archive": "下载 bugtools 压缩包",
|
|
35
39
|
"action:duplicate": "复制",
|
|
36
40
|
"action:edit": "编辑",
|
|
37
41
|
"action:edit-config": "编辑配置",
|
|
@@ -150,6 +154,7 @@
|
|
|
150
154
|
"backup:full-replication": "全量复制",
|
|
151
155
|
"backup:incremental": "增量备份",
|
|
152
156
|
"backup:incremental-replication": "增量复制",
|
|
157
|
+
"backup:last-replication": "最后一次复制",
|
|
153
158
|
"backup:mirror:full": "镜像全量备份",
|
|
154
159
|
"backup:mirror:incremental": "镜像增量备份",
|
|
155
160
|
"backup:pool-metadata": "资源池元数据",
|
|
@@ -162,7 +167,7 @@
|
|
|
162
167
|
"backups:jobs:issues-ran-without-hitch": "所有备份作业均正常运行。",
|
|
163
168
|
"backups:jobs:last-seven-days": "近7天",
|
|
164
169
|
"backups:jobs:no-recent-run": "无近期运行记录",
|
|
165
|
-
"backups:jobs:running-good": "
|
|
170
|
+
"backups:jobs:running-good": "一切运行正常",
|
|
166
171
|
"backups:jobs:skipped-runs": "跳过运行,无错误",
|
|
167
172
|
"backups:jobs:status": "备份作业状态",
|
|
168
173
|
"backups:vms-protection": "虚拟机保护状态",
|
|
@@ -177,6 +182,7 @@
|
|
|
177
182
|
"bios-info": "BIOS信息",
|
|
178
183
|
"bond": "链路聚合",
|
|
179
184
|
"bond-devices": "链路聚合设备",
|
|
185
|
+
"bond-mode": "绑定模式",
|
|
180
186
|
"bond-status": "链路聚合状态",
|
|
181
187
|
"boot-firmware": "启动固件",
|
|
182
188
|
"build-number": "构建号",
|
|
@@ -237,6 +243,8 @@
|
|
|
237
243
|
"crash-dump-storage-repository": "崩溃转储存储库",
|
|
238
244
|
"created-by": "创建者",
|
|
239
245
|
"created-on": "创建时间",
|
|
246
|
+
"creating-new-network": "创建新网络",
|
|
247
|
+
"creation-date": "创建日期",
|
|
240
248
|
"cron-pattern": "Cron表达式",
|
|
241
249
|
"current": "当前",
|
|
242
250
|
"current-attach": "当前挂载",
|
|
@@ -334,6 +342,7 @@
|
|
|
334
342
|
"id": "ID",
|
|
335
343
|
"in-last-three-runs": "最近3次运行",
|
|
336
344
|
"in-progress": "进行中",
|
|
345
|
+
"included": "已包含",
|
|
337
346
|
"info": "信息",
|
|
338
347
|
"infos": "信息",
|
|
339
348
|
"install-settings": "安装设置",
|
|
@@ -356,14 +365,19 @@
|
|
|
356
365
|
"iso-dvd": "ISO/DVD",
|
|
357
366
|
"job": "作业",
|
|
358
367
|
"job-name": "作业名称",
|
|
368
|
+
"job:arg:bond-mode-required": "需要启用绑定模式",
|
|
359
369
|
"job:arg:host-required": "主机为必填项",
|
|
360
370
|
"job:arg:missing-payload": "缺少有效负载",
|
|
361
371
|
"job:arg:name-required": "名称标签为必填项",
|
|
362
372
|
"job:arg:password-required": "密码为必填项",
|
|
373
|
+
"job:arg:pif-id-required": "需要填写 PIF ID",
|
|
374
|
+
"job:arg:pif-ids-required": "至少需要一个PIF ID",
|
|
363
375
|
"job:arg:pool-id-required": "资源池ID为必填项",
|
|
364
376
|
"job:arg:sr-vdi-required": "存储库/虚拟磁盘为必填项",
|
|
365
377
|
"job:arg:template-uuid-required": "模板UUID为必填项",
|
|
366
378
|
"job:arg:username-required": "用户名为必填项",
|
|
379
|
+
"job:arg:vlan-required": "需要配置VLAN",
|
|
380
|
+
"job:delete:in-progress": "删除中.…",
|
|
367
381
|
"job:create:in-progress": "创建中.…",
|
|
368
382
|
"job:vm-copy:bad-power-state": "虚拟机必须处于停止状态",
|
|
369
383
|
"job:vm-copy:in-progress": "复制中.…",
|
|
@@ -371,7 +385,6 @@
|
|
|
371
385
|
"job:vm-create:incomplete-install-mode": "安装模式不完整",
|
|
372
386
|
"job:vm-delete:bad-power-state": "虚拟机必须处于停止状态",
|
|
373
387
|
"job:vm-delete:blocked-operation": "虚拟机删除被阻止",
|
|
374
|
-
"job:vm-delete:in-progress": "删除中.…",
|
|
375
388
|
"job:vm-delete:missing-vm": "无虚拟机可删除",
|
|
376
389
|
"job:vm-export:in-progress": "导出中.…",
|
|
377
390
|
"job:vm-export:missing-compression": "必须指定压缩方式",
|
|
@@ -426,16 +439,19 @@
|
|
|
426
439
|
"last-n-backup-archives": "最后一个备份存档 | 最近 {n} 个备份存档",
|
|
427
440
|
"last-n-backup-runs": "最近一次备份运行 | 最近 {n} 次备份运行",
|
|
428
441
|
"last-n-runs": "最近1次运行 | 最近{n}次运行",
|
|
442
|
+
"last-revert": "最后一次还原",
|
|
429
443
|
"last-run-number": "最近运行 #{n}",
|
|
444
|
+
"last-snapshot": "最后一个快照",
|
|
430
445
|
"last-week": "上周",
|
|
431
446
|
"learn-more": "了解更多",
|
|
447
|
+
"leave-page-safely": "你可以安全地离开此页面。",
|
|
432
448
|
"lets-go!": "开始!",
|
|
433
449
|
"license-name": "{name}许可证",
|
|
434
450
|
"license-socket": "许可证插槽",
|
|
435
451
|
"license-type": "许可证类型",
|
|
436
452
|
"licensing": "许可",
|
|
437
453
|
"load-average": "平均负载",
|
|
438
|
-
"loading": "
|
|
454
|
+
"loading": "加载中",
|
|
439
455
|
"loading-hosts": "加载主机中.…",
|
|
440
456
|
"local": "本地",
|
|
441
457
|
"locked": "已锁定",
|
|
@@ -451,11 +467,13 @@
|
|
|
451
467
|
"management-agent-not-detected": "未检测到管理代理",
|
|
452
468
|
"management-agent-version": "管理代理版本",
|
|
453
469
|
"management-ip": "管理IP",
|
|
470
|
+
"manual": "说明书",
|
|
454
471
|
"manufacturer-info": "厂商信息",
|
|
455
472
|
"master": "主主机",
|
|
456
473
|
"maximum-cpu-limit": "最大CPU限制",
|
|
457
474
|
"maximum-dynamic-memory": "最大动态内存",
|
|
458
475
|
"maximum-static-memory": "最大静态内存",
|
|
476
|
+
"memory": "内存",
|
|
459
477
|
"memory-usage": "内存使用率",
|
|
460
478
|
"merge-backups-synchronously": "同步合并备份",
|
|
461
479
|
"message": "消息",
|
|
@@ -551,6 +569,7 @@
|
|
|
551
569
|
"no-selected-vm-can-be-exported": "所选虚拟机均无法导出",
|
|
552
570
|
"no-selected-vm-can-be-migrated": "所选虚拟机均无法迁移",
|
|
553
571
|
"no-server-detected": "未检测到服务器",
|
|
572
|
+
"no-snapshot-detected": "未检测到快照",
|
|
554
573
|
"no-storage-repository-detected": "未检测到存储库",
|
|
555
574
|
"no-task": "无任务",
|
|
556
575
|
"no-task-detected": "未检测到任务",
|
|
@@ -562,6 +581,7 @@
|
|
|
562
581
|
"none": "无",
|
|
563
582
|
"normal": "正常",
|
|
564
583
|
"not-found": "未找到",
|
|
584
|
+
"not-included": "不包含在内",
|
|
565
585
|
"not-resident-on": "未驻留于",
|
|
566
586
|
"not-running": "未运行",
|
|
567
587
|
"not-yet-available": "信息暂不可用",
|
|
@@ -594,6 +614,7 @@
|
|
|
594
614
|
"other-properties": "其他属性",
|
|
595
615
|
"other-settings": "其他设置",
|
|
596
616
|
"page-not-found": "未找到此页面.…",
|
|
617
|
+
"page-please-wait": "握紧扶手,宇航员!页面即将升空。{newline}我们正在校准推进器、调试系统,很快就好,敬请期待!",
|
|
597
618
|
"pagination:all": "全部",
|
|
598
619
|
"partially-connected": "部分连接",
|
|
599
620
|
"password": "密码",
|
|
@@ -611,6 +632,7 @@
|
|
|
611
632
|
"pifs": "PIF",
|
|
612
633
|
"pifs-status": "PIF状态",
|
|
613
634
|
"please-confirm-to-continue": "此操作不可撤销,确定继续吗?",
|
|
635
|
+
"please-wait": "请稍后",
|
|
614
636
|
"pool": "资源池",
|
|
615
637
|
"pool-connection-error-auth-failed": "连接资源池失败,用户名或密码错误。",
|
|
616
638
|
"pool-connection-error-duplicate": "连接资源池失败,此资源池已连接。",
|
|
@@ -738,6 +760,7 @@
|
|
|
738
760
|
"skipped": "已跳过",
|
|
739
761
|
"smart-mode": "智能模式",
|
|
740
762
|
"snapshot": "快照",
|
|
763
|
+
"snapshot-created-on": "快照创建于",
|
|
741
764
|
"snapshot-mode": "快照模式",
|
|
742
765
|
"snapshots": "快照",
|
|
743
766
|
"sockets-with-cores-per-socket": "{nSockets}个插槽 × {nCores}核/插槽",
|
|
@@ -777,6 +800,7 @@
|
|
|
777
800
|
"status:suspended": "已挂起",
|
|
778
801
|
"status:unknown": "未知",
|
|
779
802
|
"status:unreachable": "不可达",
|
|
803
|
+
"step-n-of": "步骤 {current} / {total}",
|
|
780
804
|
"storage": "存储",
|
|
781
805
|
"storage-configuration": "存储配置",
|
|
782
806
|
"storage-format": "存储格式",
|
|
@@ -839,11 +863,13 @@
|
|
|
839
863
|
"total-used:": "总已用:",
|
|
840
864
|
"transfer-size": "传输大小",
|
|
841
865
|
"translation-tool": "翻译工具",
|
|
866
|
+
"trigger": "触发",
|
|
842
867
|
"unable-to-connect-to": "无法连接到 {ip}",
|
|
843
868
|
"unable-to-connect-to-the-pool": "无法连接资源池",
|
|
844
869
|
"unable-to-connect-to-xo-server": "无法连接到 XO 服务器。",
|
|
845
870
|
"unknown": "未知",
|
|
846
871
|
"unlocked": "已解锁",
|
|
872
|
+
"unnamed": "未命名",
|
|
847
873
|
"unreachable-hosts": "不可达主机",
|
|
848
874
|
"unreachable-hosts-reload-page": "完成,请刷新页面",
|
|
849
875
|
"untitled": "未命名",
|
|
@@ -852,6 +878,7 @@
|
|
|
852
878
|
"used": "已用",
|
|
853
879
|
"used-for-backup": "用于备份",
|
|
854
880
|
"used-space": "已用空间",
|
|
881
|
+
"used-space-on-sr": "SR 上的已用空间",
|
|
855
882
|
"user-config": "用户配置",
|
|
856
883
|
"username": "用户名",
|
|
857
884
|
"uuid": "UUID",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AreAllPropertiesOptional, Columns } from '@core/packages/table/types.ts'
|
|
2
|
-
import { objectOmit } from '@vueuse/shared'
|
|
3
|
-
import { computed, defineComponent, Fragment, h, ref, type
|
|
2
|
+
import { objectOmit, toReactive } from '@vueuse/shared'
|
|
3
|
+
import { type Component, computed, defineComponent, Fragment, h, ref, type Ref, type VNode } from 'vue'
|
|
4
4
|
|
|
5
5
|
export function defineColumns<TSetupArgs extends any[], TColumns extends Columns>(
|
|
6
6
|
setup: (...args: TSetupArgs) => TColumns
|
|
@@ -85,7 +85,8 @@ export function defineColumns<TSetupArgs extends any[], TColumns extends Columns
|
|
|
85
85
|
},
|
|
86
86
|
},
|
|
87
87
|
setup(props) {
|
|
88
|
-
const bodyCellRenderers =
|
|
88
|
+
const bodyCellRenderers =
|
|
89
|
+
config.body(toReactive(computed(() => props.item)) as TBodyItem) ?? ({} as TBodyRenderers)
|
|
89
90
|
|
|
90
91
|
return () =>
|
|
91
92
|
visibleColumnIds.value.map(columnId => {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ActionItem } from '@core/components/menu/VtsActionsMenu.vue'
|
|
2
|
+
import VtsActionCell from '@core/components/table/cells/VtsActionCell.vue'
|
|
3
|
+
import { defineColumn } from '@core/packages/table/define-column'
|
|
4
|
+
import type { ButtonIconConfig } from '@core/tables/column-definitions/button-icon-column.ts'
|
|
5
|
+
import { renderHeadCell } from '@core/tables/helpers/render-head-cell'
|
|
6
|
+
import type { HeaderConfig } from '@core/tables/types.ts'
|
|
7
|
+
import { h, toValue } from 'vue'
|
|
8
|
+
|
|
9
|
+
export type { ActionItem }
|
|
10
|
+
|
|
11
|
+
export const useActionColumn = defineColumn((config: HeaderConfig & Partial<ButtonIconConfig>) => ({
|
|
12
|
+
renderHead: () => renderHeadCell(config.headerIcon, config.headerLabel),
|
|
13
|
+
renderBody: (params: { onClick: () => void; actions?: ActionItem[] }) =>
|
|
14
|
+
h(VtsActionCell, {
|
|
15
|
+
buttonIcon: toValue(config.buttonIcon ?? 'fa:eye'),
|
|
16
|
+
buttonAccent: toValue(config.buttonAccent),
|
|
17
|
+
buttonSize: toValue(config.buttonSize),
|
|
18
|
+
actions: params.actions,
|
|
19
|
+
onClick: params.onClick,
|
|
20
|
+
}),
|
|
21
|
+
}))
|
|
@@ -7,9 +7,9 @@ import type { IconName } from '@core/icons'
|
|
|
7
7
|
import { defineColumn } from '@core/packages/table/define-column'
|
|
8
8
|
import { renderHeadCell } from '@core/tables/helpers/render-head-cell'
|
|
9
9
|
import type { HeaderConfig } from '@core/tables/types.ts'
|
|
10
|
-
import { h,
|
|
10
|
+
import { h, type MaybeRefOrGetter, toValue } from 'vue'
|
|
11
11
|
|
|
12
|
-
type ButtonIconConfig = {
|
|
12
|
+
export type ButtonIconConfig = {
|
|
13
13
|
buttonIcon: MaybeRefOrGetter<IconName>
|
|
14
14
|
buttonSize?: MaybeRefOrGetter<ButtonIconSize>
|
|
15
15
|
buttonAccent?: MaybeRefOrGetter<ButtonIconAccent>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import VtsDoubleLinkCell, { type VtsDoubleLinkCellProps } from '@core/components/table/cells/VtsDoubleLinkCell.vue'
|
|
2
|
+
import { defineColumn } from '@core/packages/table'
|
|
3
|
+
import { renderHeadCell } from '@core/tables/helpers/render-head-cell.ts'
|
|
4
|
+
import type { HeaderConfig } from '@core/tables/types.ts'
|
|
5
|
+
import { h } from 'vue'
|
|
6
|
+
|
|
7
|
+
export const useDoubleLinkColumn = defineColumn((config?: HeaderConfig) => ({
|
|
8
|
+
renderHead: () => renderHeadCell(config?.headerIcon ?? 'fa:a', config?.headerLabel),
|
|
9
|
+
renderBody: (link: { label: string } & VtsDoubleLinkCellProps) => {
|
|
10
|
+
const { label, ...doubleLinkCellProps } = link
|
|
11
|
+
|
|
12
|
+
return h(VtsDoubleLinkCell, doubleLinkCellProps, () => label)
|
|
13
|
+
},
|
|
14
|
+
}))
|
|
@@ -6,6 +6,6 @@ import type { HeaderConfig } from '@core/tables/types.ts'
|
|
|
6
6
|
import { h } from 'vue'
|
|
7
7
|
|
|
8
8
|
export const useTextColumn = defineColumn((config?: HeaderConfig) => ({
|
|
9
|
-
renderHead: () => renderHeadCell(config?.headerIcon, config?.headerLabel),
|
|
9
|
+
renderHead: () => renderHeadCell(config?.headerIcon ?? 'fa:align-left', config?.headerLabel),
|
|
10
10
|
renderBody: (content: string, props?: TextCellProps) => h(VtsTextCell, props, () => content),
|
|
11
11
|
}))
|
|
@@ -12,7 +12,7 @@ export const useHostColumns = defineColumns(() => {
|
|
|
12
12
|
return {
|
|
13
13
|
host: useLinkColumn({ headerLabel: () => t('host') }),
|
|
14
14
|
description: useTruncatedTextColumn({ headerLabel: () => t('description') }),
|
|
15
|
-
ipAddresses: useAddressColumn({ headerLabel: () => t('ip
|
|
15
|
+
ipAddresses: useAddressColumn({ headerLabel: () => t('management-ip') }),
|
|
16
16
|
tags: useTagColumn({ headerLabel: () => t('tags') }),
|
|
17
17
|
selectItem: useSelectItemColumn(),
|
|
18
18
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { defineColumns } from '@core/packages/table/define-columns.ts'
|
|
2
|
+
import { useActionColumn } from '@core/tables/column-definitions/action-column.ts'
|
|
2
3
|
import { useLinkColumn } from '@core/tables/column-definitions/link-column'
|
|
3
4
|
import { useNumberColumn } from '@core/tables/column-definitions/number-column.ts'
|
|
4
|
-
import { useSelectItemColumn } from '@core/tables/column-definitions/select-item-column'
|
|
5
|
+
import { useSelectItemColumn } from '@core/tables/column-definitions/select-item-column.ts'
|
|
5
6
|
import { useStatusColumn } from '@core/tables/column-definitions/status-column.ts'
|
|
6
7
|
import { useTextColumn } from '@core/tables/column-definitions/text-column.ts'
|
|
7
8
|
import { useTruncatedTextColumn } from '@core/tables/column-definitions/truncated-text-column'
|
|
@@ -17,6 +18,7 @@ export const useNetworkColumns = defineColumns(() => {
|
|
|
17
18
|
vlan: useNumberColumn({ headerLabel: () => t('vlan') }),
|
|
18
19
|
mtu: useNumberColumn({ headerLabel: () => t('mtu') }),
|
|
19
20
|
defaultLockingMode: useTextColumn({ headerLabel: () => t('default-locking-mode') }),
|
|
21
|
+
actions: useActionColumn({}),
|
|
20
22
|
selectItem: useSelectItemColumn(),
|
|
21
23
|
}
|
|
22
24
|
})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineColumns } from '@core/packages/table'
|
|
2
|
+
import { useActionColumn } from '@core/tables/column-definitions/action-column.ts'
|
|
2
3
|
import { useDateColumn } from '@core/tables/column-definitions/date-column.ts'
|
|
3
4
|
import { useLinkColumn } from '@core/tables/column-definitions/link-column.ts'
|
|
4
5
|
import { useLinkOrTextColumn } from '@core/tables/column-definitions/link-or-text-column.ts'
|
|
5
|
-
import { useSelectItemColumn } from '@core/tables/column-definitions/select-item-column.ts'
|
|
6
6
|
import { useTruncatedTextColumn } from '@core/tables/column-definitions/truncated-text-column.ts'
|
|
7
7
|
import { useI18n } from 'vue-i18n'
|
|
8
8
|
|
|
@@ -14,6 +14,6 @@ export const useSnapshotColumns = defineColumns(() => {
|
|
|
14
14
|
description: useTruncatedTextColumn({ headerLabel: () => t('description') }),
|
|
15
15
|
creationDate: useDateColumn({ headerLabel: () => t('creation-date'), dateStyle: 'short', timeStyle: 'medium' }),
|
|
16
16
|
trigger: useLinkOrTextColumn({ headerLabel: () => t('trigger'), headerIcon: 'fa:square-caret-down' }),
|
|
17
|
-
|
|
17
|
+
actions: useActionColumn({}),
|
|
18
18
|
}
|
|
19
19
|
})
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { defineColumns } from '@core/packages/table/define-columns.ts'
|
|
2
|
+
import { useDoubleLinkColumn } from '@core/tables/column-definitions/double-link-column.ts'
|
|
3
|
+
import { useNumberColumn } from '@core/tables/column-definitions/number-column.ts'
|
|
4
|
+
import { useSelectItemColumn } from '@core/tables/column-definitions/select-item-column.ts'
|
|
5
|
+
import { useTagColumn } from '@core/tables/column-definitions/tag-column.ts'
|
|
6
|
+
import { useTextColumn } from '@core/tables/column-definitions/text-column.ts'
|
|
7
|
+
import { useTruncatedTextColumn } from '@core/tables/column-definitions/truncated-text-column.ts'
|
|
8
|
+
import { useI18n } from 'vue-i18n'
|
|
9
|
+
|
|
10
|
+
export const useTrafficRulesColumns = defineColumns(() => {
|
|
11
|
+
const { t } = useI18n()
|
|
12
|
+
|
|
13
|
+
return {
|
|
14
|
+
order: useNumberColumn({ headerIcon: 'fa:hashtag' }),
|
|
15
|
+
policy: useTagColumn({ headerLabel: () => t('policy') }),
|
|
16
|
+
protocol: useTextColumn({
|
|
17
|
+
headerLabel: () => t('protocol:port'),
|
|
18
|
+
headerIcon: 'fa:square-caret-down',
|
|
19
|
+
}),
|
|
20
|
+
directionA: useTextColumn({ headerLabel: () => t('direction'), headerIcon: 'fa:square-caret-down' }),
|
|
21
|
+
target: useTruncatedTextColumn({ headerLabel: () => t('target'), headerIcon: 'fa:at' }),
|
|
22
|
+
directionB: useTextColumn({
|
|
23
|
+
headerLabel: () => t('direction'),
|
|
24
|
+
headerIcon: 'fa:square-caret-down',
|
|
25
|
+
}),
|
|
26
|
+
object: useDoubleLinkColumn({ headerLabel: () => t('object') }),
|
|
27
|
+
selectItem: useSelectItemColumn(),
|
|
28
|
+
}
|
|
29
|
+
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { defineColumns } from '@core/packages/table/define-columns.ts'
|
|
2
|
+
import { useActionColumn } from '@core/tables/column-definitions/action-column.ts'
|
|
2
3
|
import { useLinkColumn } from '@core/tables/column-definitions/link-column.ts'
|
|
3
4
|
import { useLiteralColumn } from '@core/tables/column-definitions/literal-column.ts'
|
|
4
5
|
import { useNumberColumn } from '@core/tables/column-definitions/number-column.ts'
|
|
5
6
|
import { useProgressBarColumn } from '@core/tables/column-definitions/progress-bar-column.ts'
|
|
6
|
-
import { useSelectItemColumn } from '@core/tables/column-definitions/select-item-column.ts'
|
|
7
7
|
import { useTruncatedTextColumn } from '@core/tables/column-definitions/truncated-text-column.ts'
|
|
8
8
|
import { useI18n } from 'vue-i18n'
|
|
9
9
|
|
|
@@ -16,6 +16,6 @@ export const useVdiColumns = defineColumns(() => {
|
|
|
16
16
|
usedSpace: useProgressBarColumn({ headerLabel: () => t('used-space') }),
|
|
17
17
|
size: useNumberColumn({ headerLabel: () => t('size') }),
|
|
18
18
|
format: useLiteralColumn({ headerLabel: () => t('format') }),
|
|
19
|
-
|
|
19
|
+
actions: useActionColumn({}),
|
|
20
20
|
}
|
|
21
21
|
})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineColumns } from '@core/packages/table/define-columns.ts'
|
|
2
|
+
import { useActionColumn } from '@core/tables/column-definitions/action-column.ts'
|
|
2
3
|
import { useAddressColumn } from '@core/tables/column-definitions/address-column.ts'
|
|
3
4
|
import { useLinkColumn } from '@core/tables/column-definitions/link-column'
|
|
4
5
|
import { useNumberColumn } from '@core/tables/column-definitions/number-column.ts'
|
|
5
|
-
import { useSelectItemColumn } from '@core/tables/column-definitions/select-item-column'
|
|
6
6
|
import { useStatusColumn } from '@core/tables/column-definitions/status-column.ts'
|
|
7
7
|
import { useTextColumn } from '@core/tables/column-definitions/text-column.ts'
|
|
8
8
|
import { useI18n } from 'vue-i18n'
|
|
@@ -18,6 +18,6 @@ export const useVifColumns = defineColumns(() => {
|
|
|
18
18
|
macAddresses: useAddressColumn({ headerLabel: () => t('mac-addresses') }),
|
|
19
19
|
mtu: useNumberColumn({ headerLabel: () => t('mtu') }),
|
|
20
20
|
lockingMode: useTextColumn({ headerLabel: () => t('locking-mode') }),
|
|
21
|
-
|
|
21
|
+
actions: useActionColumn({}),
|
|
22
22
|
}
|
|
23
23
|
})
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xen-orchestra/web-core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.51.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"exports": {
|
|
7
7
|
"./*": {
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"@vueuse/math": "^13.0.0",
|
|
23
23
|
"@vueuse/router": "^13.0.0",
|
|
24
24
|
"@vueuse/shared": "^13.0.0",
|
|
25
|
-
"complex-matcher": "^1.1.
|
|
25
|
+
"complex-matcher": "^1.1.1",
|
|
26
26
|
"d3-time-format": "^4.1.0",
|
|
27
27
|
"echarts": "^5.6.0",
|
|
28
28
|
"human-format": "^1.2.1",
|
|
29
29
|
"iterable-backoff": "^0.1.0",
|
|
30
|
-
"lodash-es": "^4.
|
|
30
|
+
"lodash-es": "^4.18.0",
|
|
31
31
|
"ndjson-readablestream": "^1.3.0",
|
|
32
32
|
"placement.js": "^1.0.0-beta.5",
|
|
33
33
|
"simple-icons": "^14.14.0",
|