import React from 'react'; import { useTranslation } from 'react-i18next'; import { DataRow, PanelSection } from '../../index'; import { createContext } from '../../lib/createContext'; interface MeasurementTableContext { data?: any[]; onClick?: (uid: string) => void; onDelete?: (uid: string) => void; onToggleVisibility?: (uid: string) => void; onToggleLocked?: (uid: string) => void; onRename?: (uid: string) => void; onColor?: (uid: string) => void; disableEditing?: boolean; } const [MeasurementTableProvider, useMeasurementTableContext] = createContext('MeasurementTable', { data: [] }); interface MeasurementDataProps extends MeasurementTableContext { title: string; children: React.ReactNode; } const MeasurementTable = ({ data = [], onClick, onDelete, onToggleVisibility, onToggleLocked, onRename, onColor, title, children, disableEditing = false, }: MeasurementDataProps) => { const { t } = useTranslation('MeasurementTable'); const amount = data.length; return ( {`${t(title)} (${amount})`} {children} ); }; const Header = ({ children }: { children: React.ReactNode }) => { return
{children}
; }; const Body = () => { const { data } = useMeasurementTableContext('MeasurementTable.Body'); if (!data || data.length === 0) { return (
No tracked measurements
); } return (
{data.map((item, index) => ( ))}
); }; const Footer = ({ children }: { children: React.ReactNode }) => { return
{children}
; }; interface MeasurementItem { uid: string; label: string; colorHex: string; isSelected: boolean; displayText: { primary: string[]; secondary: string[] }; isVisible: boolean; isLocked: boolean; toolName: string; } interface RowProps { item: MeasurementItem; index: number; } const Row = ({ item, index }: RowProps) => { const { onClick, onDelete, onToggleVisibility, onToggleLocked, onRename, onColor, disableEditing, } = useMeasurementTableContext('MeasurementTable.Row'); return ( onClick(item.uid)} onDelete={() => onDelete(item.uid)} disableEditing={disableEditing} isVisible={item.isVisible} isLocked={item.isLocked} onToggleVisibility={() => onToggleVisibility(item.uid)} onToggleLocked={() => onToggleLocked(item.uid)} onRename={() => onRename(item.uid)} // onColor={() => onColor(item.uid)} /> ); }; MeasurementTable.Header = Header; MeasurementTable.Body = Body; MeasurementTable.Footer = Footer; MeasurementTable.Row = Row; export default MeasurementTable;