import { directionColumn, srcDstColumn, tapLink } from './util/TapUtils.jsx'; import { formatLatencySec, numericSort } from './util/Utils.js'; import BaseTable from './BaseTable.jsx'; import PropTypes from 'prop-types'; import React from 'react'; import SuccessRateMiniChart from './util/SuccessRateMiniChart.jsx'; import _ from 'lodash'; import { withContext } from './util/AppContext.jsx'; const topColumns = (resourceType, ResourceLink, PrefixedLink) => [ { title: " ", dataIndex: "direction", render: d => directionColumn(d.direction) }, { title: "Name", key: "src-dst", render: d => srcDstColumn(d, resourceType, ResourceLink) }, { title: "Method", dataIndex: "httpMethod", sorter: (a, b) => a.httpMethod.localeCompare(b.httpMethod) }, { title: "Path", dataIndex: "path", sorter: (a, b) => a.path.localeCompare(b.path) }, { title: "Count", dataIndex: "count", isNumeric: true, defaultSortOrder: "desc", sorter: (a, b) => numericSort(a.count, b.count) }, { title: "Best", dataIndex: "best", isNumeric: true, render: d => formatLatencySec(d.best), sorter: (a, b) => numericSort(a.best, b.best) }, { title: "Worst", dataIndex: "worst", isNumeric: true, defaultSortOrder: "desc", render: d => formatLatencySec(d.worst), sorter: (a, b) => numericSort(a.worst, b.worst) }, { title: "Last", dataIndex: "last", isNumeric: true, render: d => formatLatencySec(d.last), sorter: (a, b) => numericSort(a.last, b.last) }, { title: "Success Rate", dataIndex: "successRate", isNumeric: true, render: d => _.isNil(d) || _.isNil(d.successRate) ? "---" : , sorter: (a, b) => numericSort(a.successRate.get(), b.successRate.get()), }, { title: "Tap", key: "tap", isNumeric: true, render: d => tapLink(d, resourceType, PrefixedLink) } ]; class TopEventTable extends React.Component { static propTypes = { api: PropTypes.shape({ PrefixedLink: PropTypes.func.isRequired, }).isRequired, resourceType: PropTypes.string.isRequired, tableRows: PropTypes.arrayOf(PropTypes.shape({})) }; static defaultProps = { tableRows: [] }; render() { const { tableRows, resourceType, api } = this.props; let columns = topColumns(resourceType, api.ResourceLink, api.PrefixedLink); return ( ); } } export default withContext(TopEventTable);