fix(workload): display
This commit is contained in:
@@ -23,10 +23,12 @@ import {
|
||||
} from "@tabler/icons-react"
|
||||
import dayjs from "dayjs"
|
||||
import "dayjs/locale/zh-cn"
|
||||
import duration from "dayjs/plugin/duration"
|
||||
import { DataTableColumn, DataTableSortStatus } from "mantine-datatable"
|
||||
import { useEffect, useMemo, useState } from "react"
|
||||
import * as XLSX from "xlsx-js-style"
|
||||
import { DimensionType, GroupedData, MetricColumn } from "./config"
|
||||
dayjs.extend(duration)
|
||||
|
||||
function emptyGroupedData(): GroupedData {
|
||||
return {
|
||||
@@ -159,6 +161,10 @@ export default function WorkloadMetricsTable(props: {
|
||||
return list
|
||||
}, [filteredRecords, sortStatus.columnAccessor, sortStatus.direction])
|
||||
|
||||
const getTime = (time: number) => {
|
||||
return dayjs.duration(time, "seconds").format("HH:mm:ss")
|
||||
}
|
||||
|
||||
const baseColumns = useMemo(() => {
|
||||
const allCols: Record<DimensionType, DataTableColumn<any>[]> = {
|
||||
all: [
|
||||
@@ -190,18 +196,33 @@ export default function WorkloadMetricsTable(props: {
|
||||
const value = Number(item?.[metric.key] ?? 0)
|
||||
return acc + (Number.isFinite(value) ? value : 0)
|
||||
}, 0)
|
||||
return [metric.key, sum]
|
||||
if (["work_time"].includes(metric.key)) {
|
||||
return [metric.key, getTime(sum ?? 0)]
|
||||
} else {
|
||||
return [metric.key, sum]
|
||||
}
|
||||
})
|
||||
) as Record<string, number>
|
||||
|
||||
const metricCols = metrics.map((metric) => {
|
||||
return {
|
||||
accessor: metric.key,
|
||||
title: metric.title,
|
||||
width: 140,
|
||||
sortable: true,
|
||||
footer: totalsByKey[metric.key] ?? 0,
|
||||
} as DataTableColumn<any>
|
||||
if (["work_time"].includes(metric.key)) {
|
||||
return {
|
||||
accessor: metric.key,
|
||||
title: metric.title,
|
||||
width: 140,
|
||||
sortable: true,
|
||||
footer: totalsByKey[metric.key] ?? 0,
|
||||
render: (record) => getTime(record[metric.key] ?? 0),
|
||||
} as DataTableColumn<any>
|
||||
} else {
|
||||
return {
|
||||
accessor: metric.key,
|
||||
title: metric.title,
|
||||
width: 140,
|
||||
sortable: true,
|
||||
footer: totalsByKey[metric.key] ?? 0,
|
||||
} as DataTableColumn<any>
|
||||
}
|
||||
})
|
||||
return [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user