import _ from 'lodash';
import GrafanaLink from './GrafanaLink.jsx';
import React from 'react';
import { Table, Tooltip } from 'antd';
const columnConfig = {
"Pod Status": {
width: 200,
wrapDotsAt: 7, // dots take up more than one line in the table; space them out
dotExplanation: status => {
return status.value === "good" ? "is up and running" : "has not been started";
}
},
"Proxy Status": {
width: 250,
wrapDotsAt: 9,
dotExplanation: pod => {
let addedStatus = !pod.added ? "Not in mesh" : "Added to mesh";
return (
Pod status: {pod.status}
{addedStatus}
);
}
}
};
const StatusDot = ({status, multilineDots, columnName}) => (
{status.name}
{_.get(columnConfig, [columnName, "dotExplanation"])(status)}
}
overlayStyle={{ fontSize: "12px" }}>
);
const columns = {
resourceName: (shouldLink, ConduitLink) => {
return {
title: "Deployment",
key: "name",
render: row => shouldLink && row.added ?
: row.name
};
},
pods: {
title: "Pods",
dataIndex: "numEntities"
},
status: name => {
return {
title: name,
dataIndex: "statuses",
width: columnConfig[name].width,
render: statuses => {
let multilineDots = _.size(statuses) > columnConfig[name].wrapDotsAt;
return _.map(statuses, (status, i) => {
return ();
});
}
};
}
};
export default class StatusTable extends React.Component {
getTableData() {
let tableData = _.map(this.props.data, datum => {
return {
name: datum.name,
statuses: datum.pods,
numEntities: _.size(datum.pods),
added: datum.added
};
});
return _.sortBy(tableData, 'name');
}
render() {
let tableCols = [
columns.resourceName(this.props.shouldLink, this.props.api.ConduitLink),
columns.pods,
columns.status(this.props.statusColumnTitle)
];
let tableData = this.getTableData();
return (
r.name}
size="middle" />);
}
}