1+ import { UUID } from 'crypto' ;
12import React , { useCallback , useEffect , useRef , useState } from 'react' ;
23import { useParams } from 'next/navigation' ;
34import { renderGeoJSON } from '@/geo_json/render_geojson' ;
@@ -123,6 +124,18 @@ const getResourceChartDetails: any = graphql(`
123124 }
124125` ) ;
125126
127+ const CreateResourceChart : any = graphql ( `
128+ mutation GenerateResourceChart($resource: UUID!) {
129+ addResourceChart(resource: $resource) {
130+ __typename
131+ ... on TypeResourceChart {
132+ id
133+ name
134+ }
135+ }
136+ }
137+ ` ) ;
138+
126139const ChartsVisualize : React . FC < VisualizationProps > = ( {
127140 setType,
128141 chartId,
@@ -153,10 +166,6 @@ const ChartsVisualize: React.FC<VisualizationProps> = ({
153166 } ,
154167 {
155168 chartDetailsId : chartId ,
156-
157- options : {
158- skip : chartId === '' ,
159- } ,
160169 }
161170 ) ,
162171 { }
@@ -179,6 +188,33 @@ const ChartsVisualize: React.FC<VisualizationProps> = ({
179188 )
180189 ) ;
181190
191+ const resourceChart : {
192+ mutate : any ;
193+ isLoading : any ;
194+ } = useMutation (
195+ ( data : { resource : UUID } ) =>
196+ GraphQL (
197+ CreateResourceChart ,
198+ {
199+ [ params . entityType ] : params . entitySlug ,
200+ } ,
201+ data
202+ ) ,
203+ {
204+ onSuccess : ( res : any ) => {
205+ toast ( 'Resource Chart Created Successfully' ) ;
206+ refetch ( ) ;
207+ setIsSheetOpen ( false ) ;
208+ setType ( 'visualize' ) ;
209+ setChartId ( res . addResourceChart . id ) ;
210+ chartsListRefetch ( ) ;
211+ } ,
212+ onError : ( err : any ) => {
213+ toast ( `Received ${ err } while deleting chart ` ) ;
214+ } ,
215+ }
216+ ) ;
217+
182218 const [ isSheetOpen , setIsSheetOpen ] = useState ( false ) ;
183219 const initialChartData = {
184220 chartId : '' ,
@@ -203,15 +239,7 @@ const ChartsVisualize: React.FC<VisualizationProps> = ({
203239
204240 useEffect ( ( ) => {
205241 if ( data ) {
206- if ( ! chartId && data ?. datasetResources . length ) {
207- // Set initial resource schema and chart data
208- const initialResource = data . datasetResources [ 0 ] ;
209- setResourceSchema ( initialResource . schema || [ ] ) ;
210- setChartData ( ( prevData ) => ( {
211- ...prevData ,
212- resource : initialResource . id ,
213- } ) ) ;
214- } else if ( chartData . resource ) {
242+ if ( chartData . resource ) {
215243 const resource = data ?. datasetResources . find (
216244 ( resource : any ) => resource . id === chartData . resource
217245 ) ;
@@ -355,13 +383,11 @@ const ChartsVisualize: React.FC<VisualizationProps> = ({
355383 < Text variant = "bodyLg" > Select Charts</ Text >
356384 < div className = "flex items-center gap-3" >
357385 < Button
358- className = " h-fit w-fit"
359- size = "medium"
360- onClick = { ( e ) => {
361- setChartData ( initialChartData ) ;
362- setChartId ( '' ) ;
363- setIsSheetOpen ( false ) ;
364- } }
386+ onClick = { ( e ) =>
387+ resourceChart . mutate ( {
388+ resource : data ?. datasetResources [ 0 ] . id ,
389+ } )
390+ }
365391 >
366392 Visualize Data
367393 </ Button >
0 commit comments