/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from 'react'; import { isEmpty } from 'lodash'; import { VisualizationChart } from './visualization_chart'; import { VisWorkspaceDefault } from '../event_analytics/explorer/visualizations/shared_components'; import { IVisualizationContainerProps } from '../../../common/types/explorer'; import { VIS_CHART_TYPES, VISUALIZATION_ERROR } from '../../../common/constants/shared'; import { AGGREGATIONS, GROUPBY } from '../../../common/constants/explorer'; export const Visualization = ({ visualizations, }: { visualizations: IVisualizationContainerProps; }) => { const isVisDataValid = (vs: IVisualizationContainerProps) => { const { data: { userConfigs: { dataConfig: { span = {}, [GROUPBY]: dimensions = [], [AGGREGATIONS]: series = [] } = {}, } = {}, }, vis = {}, }: IVisualizationContainerProps = vs; // Markdown, it does not depend on if there is data if (vis.id === VIS_CHART_TYPES.Text) return [true, '']; if (isEmpty(series)) return [false, VISUALIZATION_ERROR.INVALID_DATA]; // series is required to any visualization type // bars, pie if (dimensions.length < 1 && isEmpty(span)) return [false, VISUALIZATION_ERROR.INVALID_DATA]; return [true, '']; }; const [isValid, erroInfo] = isVisDataValid(visualizations); return ( <> {isValid ? ( ) : ( )} ); };