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 => | {col.text} | )}
{tableModel.rows.map((row, i) => (
{row.map((value, j) => (
|
))}
))}
);
}
}