// Libraries import React, {FunctionComponent, useState} from 'react' // Components import {TableGraph} from './TableGraph' import {TableSidebar} from './TableSidebar' // Utils import {get} from '../../utils/get' // Types import {FluxTable, TableGraphLayerConfig} from '../../types' // Styles import styles from './TableGraphs.scss' interface Props { config: TableGraphLayerConfig } const getNameOfSelectedTable = ( tables: FluxTable[], selectedTableName: string ) => { const isNameInTables = tables.find(t => t.name === selectedTableName) if (!isNameInTables) { return getDefaultTableName(tables) } return selectedTableName } const getDefaultTableName = (tables: FluxTable[]): string => { return get(tables, '0.name', null) } const showSidebar = (tables: FluxTable[]): boolean => { return tables.length > 1 } const hasData = (selectedTable: FluxTable): boolean => { return Array.isArray(selectedTable?.data) && selectedTable?.data?.length > 0 } const isTableVisible = ( tables: FluxTable[], selectedTableName: string ): boolean => { return !!getSelectedTable(tables, selectedTableName) } const getSelectedTable = ( tables: FluxTable[], selectedTableName: string ): FluxTable => { return tables.find( t => t.name === getNameOfSelectedTable(tables, selectedTableName) ) } export const TableGraphLayer: FunctionComponent = (props: Props) => { const { config: {tables, properties, timeZone, tableTheme = 'dark'}, } = props const [selectedTableName, setSelectedTableName] = useState( get(tables, '0.name', null) ) return (
{showSidebar(tables) && ( )} {isTableVisible(tables, selectedTableName) && ( )} {!hasData(getSelectedTable(tables, selectedTableName)) && (

This table has no data

)}
) }