import BaseTable from './BaseTable.jsx'; import PropTypes from 'prop-types'; import React from 'react'; import { processedEdgesPropType } from './util/EdgesUtils.jsx'; import { withContext } from './util/AppContext.jsx'; const edgesColumnDefinitions = (PrefixedLink, namespace, type) => { return [ { title: "Source", dataIndex: "source", isNumeric: false, filter: d => d.src.name, render: d => { // check that the source is a k8s resource with a name we can link to if (namespace && type && d.src && d.src.name) { return ( {d.src.name} ); } else { return d.src.name; } }, sorter: d => d.src.name + d.dst.name }, { title: "Destination", dataIndex: "destination", isNumeric: false, filter: d => d.dst.name, render: d => { // check that the destination is a k8s resource with a name we can link to if (namespace && type && d.dst && d.dst.name) { return ( {d.dst.name} ); } else { return d.dst.name; } }, sorter: d => d.dst.name + d.src.name }, { title: "Client", dataIndex: "client", isNumeric: false, filter: d => d.clientId, render: d => d.clientId.split('.')[0] + '.' + d.clientId.split('.')[1], sorter: d => d.clientId }, { title: "Server", dataIndex: "server", isNumeric: false, filter: d => d.serverId, render: d => d.serverId.split('.')[0] + '.' + d.serverId.split('.')[1], sorter: d => d.serverId }, { title: "Message", dataIndex: "message", isNumeric: false, filter: d => d.noIdentityMsg, render: d => d.noIdentityMsg, sorter: d => d.noIdentityMsg } ]; }; const tooltipText = `Edges show the source, destination name and identity for proxied connections. If no identity is known, a message is displayed.`; class EdgesTable extends React.Component { static propTypes = { api: PropTypes.shape({ prefixedUrl: PropTypes.func.isRequired, }).isRequired, edges: PropTypes.arrayOf(processedEdgesPropType), namespace: PropTypes.string.isRequired, title: PropTypes.string, type: PropTypes.string.isRequired }; static defaultProps = { edges: [], title: "" }; render() { const { edges, title, api, namespace, type } = this.props; let edgesColumns = edgesColumnDefinitions(api.PrefixedLink, namespace, type); return ( ); } } export default withContext(EdgesTable);