import _ from 'lodash';
import BaseTable from './BaseTable.jsx';
import { formatLatencySec } from './util/Utils.js';
import React from 'react';
import { Col, Icon, Row } from 'antd';
// https://godoc.org/google.golang.org/grpc/codes#Code
const grpcStatusCodes = {
0: "OK",
1: "Canceled",
2: "Unknown",
3: "InvalidArgument",
4: "DeadlineExceeded",
5: "NotFound",
6: "AlreadyExists",
7: "PermissionDenied",
8: "ResourceExhausted",
9: "FailedPrecondition",
10: "Aborted",
11: "OutOfRange",
12: "Unimplemented",
13: "Internal",
14: "Unavailable",
15: "DataLoss",
16: "Unauthenticated"
};
const grpcStatusCodeFilters = _.map(grpcStatusCodes, (description, code) => {
return { text: `${code}: ${description}`, value: code };
});
const genFilterOptionList = options => _.map(options, (_v, k) => {
return { text: k, value: k };
});
let tapColumns = filterOptions => [
{
title: "ID",
dataIndex: "base.id"
},
{
title: "Direction",
dataIndex: "base.proxyDirection",
filters: [
{ text: "Inbound", value: "INBOUND" },
{ text: "Outbound", value: "OUTBOUND" }
],
onFilter: (value, row) => _.get(row, "base.proxyDirection").includes(value)
},
{
title: "Source",
dataIndex: "base.source.str",
filters: genFilterOptionList(filterOptions.source),
onFilter: (value, row) => row.base.source.str === value
},
{
title: "Destination",
dataIndex: "base.destination.str",
filters: genFilterOptionList(filterOptions.destination),
onFilter: (value, row) => row.base.destination.str === value
},
{
title: "TLS",
dataIndex: "base.tls",
filters: genFilterOptionList(filterOptions.tls),
onFilter: (value, row) => row.tls === value
},
{
title: "Request Init",
children: [
{
title: "Authority",
key: "authority",
dataIndex: "req.http.requestInit",
filters: genFilterOptionList(filterOptions.authority),
onFilter: (value, row) =>
_.get(row, "req.http.requestInit.authority") === value,
render: d => !d ?
Destination Meta
{ _.map(_.get(d, "base.destinationMeta.labels", []), (v, k) => (