'use client'; import { useMemo } from 'react'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { useNumber } from '@/hooks/useNumerFormatter'; import type { IChartData } from '@/trpc/client'; import { cn } from '@/utils/cn'; import { DropdownMenuPortal } from '@radix-ui/react-dropdown-menu'; import { round } from '@openpanel/common'; import { NOT_SET_VALUE } from '@openpanel/constants'; import { PreviousDiffIndicator } from '../PreviousDiffIndicator'; import { useChartContext } from './ChartProvider'; import { SerieIcon } from './SerieIcon'; import { SerieName } from './SerieName'; interface ReportBarChartProps { data: IChartData; } export function ReportBarChart({ data }: ReportBarChartProps) { const { editMode, metric, onClick, limit, dropdownMenuContent } = useChartContext(); const number = useNumber(); const series = useMemo( () => (editMode ? data.series : data.series.slice(0, limit || 10)), [data, editMode, limit] ); const maxCount = Math.max(...series.map((serie) => serie.metrics[metric])); return (
{series.map((serie) => { const isClickable = !serie.names.includes(NOT_SET_VALUE) && onClick; const isDropDownEnabled = !serie.names.includes(NOT_SET_VALUE) && (dropdownMenuContent?.(serie) || []).length > 0; return (
onClick?.(serie) } : {})} >
{serie.metrics.previous?.[metric]?.value}
{number.format( round((serie.metrics.sum / data.metrics.sum) * 100, 2) )} %
{number.format(serie.metrics.sum)}
{dropdownMenuContent?.(serie).map((item) => ( {item.icon && } {item.title} ))} ); })}
); // return ( // // // {table.getHeaderGroups().map((headerGroup) => ( // // {headerGroup.headers.map((header) => ( // //
// {flexRender( // header.column.columnDef.header, // header.getContext() // )} // {{ // asc: , // desc: , // }[header.column.getIsSorted() as string] ?? null} //
//
// ))} //
// ))} //
// // {table.getRowModel().rows.map((row) => ( // // {row.getVisibleCells().map((cell) => ( // // {flexRender(cell.column.columnDef.cell, cell.getContext())} // // ))} // // ))} // //
// ); }