/* eslint react/jsx-no-bind: "off", no-multi-comp: "off" */ import React from 'react'; import { connect } from 'react-redux'; import { List as makeList, Map as makeMap } from 'immutable'; import NodeDetailsTable from '../components/node-details/node-details-table'; import { clickNode, sortOrderChanged } from '../actions/app-actions'; import { shownNodesSelector } from '../selectors/node-filters'; import { trackMixpanelEvent } from '../utils/tracking-utils'; import { TABLE_VIEW_MODE } from '../constants/naming'; import { canvasMarginsSelector, canvasHeightSelector } from '../selectors/canvas'; import { searchNodeMatchesSelector } from '../selectors/search'; import { getNodeColor } from '../utils/color-utils'; const IGNORED_COLUMNS = ['docker_container_ports', 'docker_container_id', 'docker_image_id', 'docker_container_command', 'docker_container_networks']; function getColumns(nodes) { const metricColumns = nodes .toList() .flatMap((n) => { const metrics = (n.get('metrics') || makeList()) .map(m => makeMap({ id: m.get('id'), label: m.get('label'), dataType: 'number' })); return metrics; }) .toSet() .toList() .sortBy(m => m.get('label')); const metadataColumns = nodes .toList() .flatMap((n) => { const metadata = (n.get('metadata') || makeList()) .map(m => makeMap({ id: m.get('id'), label: m.get('label'), dataType: m.get('dataType') })); return metadata; }) .toSet() .filter(n => !IGNORED_COLUMNS.includes(n.get('id'))) .toList() .sortBy(m => m.get('label')); const relativesColumns = nodes .toList() .flatMap((n) => { const metadata = (n.get('parents') || makeList()) .map(m => makeMap({ id: m.get('topologyId'), label: m.get('topologyId') })); return metadata; }) .toSet() .toList() .sortBy(m => m.get('label')); return relativesColumns.concat(metadataColumns, metricColumns).toJS(); } function renderIdCell({ rank, label, labelMinor, pseudo }) { const showSubLabel = Boolean(pseudo) && labelMinor; const title = showSubLabel ? `${label} (${labelMinor})` : label; const iconStyle = { width: 16, flex: 'none', color: getNodeColor(rank, label) }; return (