import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; import { type PageLayoutWidget } from '@/page-layout/types/PageLayoutWidget'; import { getDefaultWidgetData } from '@/page-layout/utils/getDefaultWidgetData'; import { PageLayoutWidgetNoDataDisplay } from '@/page-layout/widgets/components/PageLayoutWidgetNoDataDisplay'; import { ChartSkeletonLoader } from '@/page-layout/widgets/graph/components/ChartSkeletonLoader'; import { GraphWidgetAggregateChartRenderer } from '@/page-layout/widgets/graph/graphWidgetAggregateChart/components/GraphWidgetAggregateChartRenderer'; import { GraphWidgetBarChartRenderer } from '@/page-layout/widgets/graph/graphWidgetBarChart/components/GraphWidgetBarChartRenderer'; import { GraphWidgetLineChartRenderer } from '@/page-layout/widgets/graph/graphWidgetLineChart/components/GraphWidgetLineChartRenderer'; import { GraphWidgetPieChartRenderer } from '@/page-layout/widgets/graph/graphWidgetPieChart/components/GraphWidgetPieChartRenderer'; import { areChartConfigurationFieldsValidForQuery } from '@/page-layout/widgets/graph/utils/areChartConfigurationFieldsValidForQuery'; import { lazy, Suspense } from 'react'; import { GraphType } from '~/generated/graphql'; const GraphWidgetGaugeChart = lazy(() => import( '@/page-layout/widgets/graph/graphWidgetGaugeChart/components/GraphWidgetGaugeChart' ).then((module) => ({ default: module.GraphWidgetGaugeChart, })), ); export type GraphWidgetProps = { widget: PageLayoutWidget; objectMetadataId: string; graphType: GraphType; }; export const GraphWidget = ({ widget, objectMetadataId, graphType, }: GraphWidgetProps) => { const { objectMetadataItem } = useObjectMetadataItemById({ objectId: objectMetadataId, }); const hasValidConfiguration = areChartConfigurationFieldsValidForQuery( widget.configuration, objectMetadataItem, ); if (!hasValidConfiguration) { return ; } switch (graphType) { case GraphType.AGGREGATE: return ; case GraphType.GAUGE: { const gaugeData: any = getDefaultWidgetData(graphType); if (!gaugeData) { return null; } return ( }> ); } case GraphType.PIE: return ; case GraphType.VERTICAL_BAR: case GraphType.HORIZONTAL_BAR: return ; case GraphType.LINE: return ; default: return null; } };