import React, { PureComponent } from 'react'; import TableModel from 'app/core/table_model'; const EMPTY_TABLE = new TableModel(); interface TableProps { className?: string; data: TableModel; loading: boolean; onClickCell?: (columnKey: string, rowValue: string) => void; } interface SFCCellProps { columnIndex: number; onClickCell?: (columnKey: string, rowValue: string, columnIndex: number, rowIndex: number, table: TableModel) => void; rowIndex: number; table: TableModel; value: string; } function Cell(props: SFCCellProps) { const { columnIndex, rowIndex, table, value, onClickCell } = props; const column = table.columns[columnIndex]; if (column && column.filterable && onClickCell) { const onClick = event => { event.preventDefault(); onClickCell(column.text, value, columnIndex, rowIndex, table); }; return ( {value} ); } return {value}; } export default class Table extends PureComponent { render() { const { className = '', data, loading, onClickCell } = this.props; const tableModel = data || EMPTY_TABLE; if (!loading && data && data.rows.length === 0) { return (
Table
The queries returned no data for a table.
); } return ( {tableModel.columns.map(col => )} {tableModel.rows.map((row, i) => ( {row.map((value, j) => ( ))} ))}
{col.text}
); } }