Skip to content

Commit acfcb6d

Browse files
committed
implement UseMapper
1 parent 19b17f1 commit acfcb6d

File tree

3 files changed

+24
-33
lines changed

3 files changed

+24
-33
lines changed

Diff for: @xen-orchestra/web-core/lib/components/ui/task-item/UiTaskItem.vue

+15-14
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ import UiCircleProgressBar, {
4848
import UiInfo from '@core/components/ui/info/UiInfo.vue'
4949
import UiTag from '@core/components/ui/tag/UiTag.vue'
5050
import UiUserLink from '@core/components/ui/user-link/UiUserLink.vue'
51+
import { useMapper } from '@core/composables/mapper.composable.ts'
5152
import { vTooltip } from '@core/directives/tooltip.directive'
52-
import type { Message, Task } from '@core/types/task.type.ts'
53+
import type { Message, Task, TaskStatus } from '@core/types/task.type.ts'
5354
import { faCircleNotch } from '@fortawesome/free-solid-svg-icons'
5455
import { useTimeAgo } from '@vueuse/core'
5556
import { computed } from 'vue'
@@ -68,8 +69,8 @@ const timeAgo = useTimeAgo(taskTimeStatus, {
6869
fullDateFormatter: (date: Date) => date.toLocaleDateString(),
6970
messages: {
7071
justNow: t('just-now'),
71-
past: n => (n.match(/\d/) ? t('ago', [n]) : n),
72-
future: n => (n.match(/\d/) ? t('in', [n]) : n),
72+
past: (n: any) => (n.match(/\d/) ? t('ago', [n]) : n),
73+
future: (n: any) => (n.match(/\d/) ? t('in', [n]) : n),
7374
month: (n, past) =>
7475
n === 1 ? (past ? t('last-month') : t('next-month')) : `${n} ${t(`month${n > 1 ? 's' : ''}`)}`,
7576
year: (n, past) => (n === 1 ? (past ? t('last-year') : t('next-year')) : `${n} ${t(`year${n > 1 ? 's' : ''}`)}`),
@@ -91,7 +92,7 @@ const taskIsComplete = computed(() => {
9192

9293
const taskElapsedMessage = computed(() => {
9394
if (!task.start && !task.end) {
94-
return ''
95+
return
9596
}
9697

9798
if (taskIsComplete.value) {
@@ -124,16 +125,16 @@ const getEffectiveStatus = computed<CircleProgressBarAccent>(() => {
124125
const subtasks = task.subtasks || []
125126

126127
if (subtasks.length === 0) {
127-
switch (task.status) {
128-
case 'failure':
129-
return 'danger'
130-
case 'interrupted':
131-
return 'warning'
132-
case 'success':
133-
return 'info'
134-
default:
135-
return 'info'
136-
}
128+
return useMapper<TaskStatus, CircleProgressBarAccent>(
129+
() => task.status,
130+
{
131+
pending: 'warning',
132+
interrupted: 'warning',
133+
success: 'info',
134+
failure: 'danger',
135+
},
136+
() => 'info'
137+
).value
137138
}
138139

139140
const subStatuses = subtasks.map(evaluate)

Diff for: @xen-orchestra/web/src/composables/task-tree.composable.ts

+8-16
Original file line numberDiff line numberDiff line change
@@ -280,25 +280,17 @@ export function useTaskTree() {
280280
return mockedTasks.map(task => convertTaskToCore(task))
281281
})
282282

283-
// const defineTaskTree = (tasks: Task[]): any => {
284-
// return defineTree(
285-
// tasks,
286-
// {
287-
// getLabel: task => task.name,
288-
// predicate,
289-
// discriminator: 'task',
290-
// },
291-
// task => defineTaskTree(task.subtasks ?? [])
292-
// )
293-
// }
294-
//
295-
// const definitions = computed(() => defineTaskTree(tasks.value))
296-
297283
const defineTaskTree = (tasks: Task[]): TreeNodeDefinition[] => {
298284
return tasks.map(task => {
299-
const hasSubtasks = (task.subtasks?.length ?? 0) > 0
285+
if (!task.subtasks || task.subtasks.length === 0) {
286+
return defineTree([task], {
287+
getLabel: task => task.name,
288+
predicate,
289+
discriminator: 'task',
290+
})[0]
291+
}
300292

301-
const childTreeGetter = hasSubtasks ? () => defineTaskTree(task.subtasks ?? []) : undefined
293+
const childTreeGetter = () => defineTaskTree(task.subtasks ?? [])
302294

303295
return defineTree(
304296
[task],

Diff for: @xen-orchestra/web/src/types/tree.type.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,4 @@ export type HostBranch = Branch<XoHost, VmLeaf, 'host'>
1111

1212
export type PoolBranch = Branch<XoPool, HostBranch | VmLeaf, 'pool'>
1313

14-
export type TaskLeaf = Leaf<Task, 'task'>
15-
16-
export type TaskBranch = Branch<Task, TaskBranch | TaskLeaf, 'task'>
14+
export type TaskBranch = Branch<Task, TaskBranch, 'task'>

0 commit comments

Comments
 (0)