import React, { lazy, Suspense } from "react"; import BaseWidget, { WidgetProps, WidgetState } from "./BaseWidget"; import { WidgetType } from "constants/WidgetConstants"; // import ChartComponent from "components/designSystems/appsmith/ChartComponent"; import { WidgetPropertyValidationType } from "utils/ValidationFactory"; import { VALIDATION_TYPES } from "constants/WidgetValidation"; import Skeleton from "components/utils/Skeleton"; const ChartComponent = lazy(() => import( /* webpackPrefetch: true, webpackChunkName: "charts" */ "components/designSystems/appsmith/ChartComponent" ), ); class ChartWidget extends BaseWidget { static getPropertyValidationMap(): WidgetPropertyValidationType { return { xAxisName: VALIDATION_TYPES.TEXT, yAxisName: VALIDATION_TYPES.TEXT, chartName: VALIDATION_TYPES.TEXT, isVisible: VALIDATION_TYPES.BOOLEAN, chartData: VALIDATION_TYPES.CHART_DATA, singleChartData: VALIDATION_TYPES.SINGLE_CHART_DATA, }; } getPageView() { let chartData: ChartData[] = this.props.chartData; if (this.props.singleChartData) { chartData = [ { seriesName: this.props.chartName, data: this.props.singleChartData, }, ]; } return ( }> ); } getWidgetType(): WidgetType { return "CHART_WIDGET"; } } export type ChartType = | "LINE_CHART" | "BAR_CHART" | "PIE_CHART" | "COLUMN_CHART" | "AREA_CHART" | "SCATTER_CHART"; export interface ChartDataPoint { x: any; y: any; } export interface ChartData { seriesName?: string; data: ChartDataPoint[]; } export interface ChartWidgetProps extends WidgetProps { chartType: ChartType; chartData: ChartData[]; singleChartData: ChartDataPoint[]; xAxisName: string; yAxisName: string; chartName: string; isVisible?: boolean; allowHorizontalScroll: boolean; } export default ChartWidget;