1- import React from 'react' ;
1+ import React , { useState } from 'react' ;
22import { useParams } from 'next/navigation' ;
3- import { graphql } from '@/gql' ;
43import {
54 CreateFileResourceInput ,
65 SchemaUpdateInput ,
76 UpdateFileResourceInput ,
87} from '@/gql/generated/graphql' ;
9- import { IconTrash } from '@tabler/icons-react' ;
10- import { useMutation , useQuery , useQueryClient } from '@tanstack/react-query' ;
11- import {
12- parseAsBoolean ,
13- parseAsString ,
14- useQueryState ,
15- } from 'next-usequerystate' ;
8+ import { useMutation , useQuery } from '@tanstack/react-query' ;
9+ import { parseAsString , useQueryState } from 'next-usequerystate' ;
1610import {
1711 Button ,
18- ButtonGroup ,
1912 Checkbox ,
2013 Combobox ,
21- DataTable ,
2214 Dialog ,
2315 Divider ,
2416 DropZone ,
2517 Icon ,
26- IconButton ,
2718 Select ,
2819 Spinner ,
2920 Text ,
@@ -178,10 +169,24 @@ export const EditResource = ({ refetch, list }: EditProps) => {
178169 const [ resourceDesc , setResourceDesc ] = React . useState (
179170 getResourceObject ( resourceId ) ?. description
180171 ) ;
172+ const [ previewEnable , setPreviewEnable ] = useState ( true ) ;
173+
174+ const [ previewDetails , setPreviewDetails ] = useState ( {
175+ startEntry : 0 ,
176+ endEntry : 0 ,
177+ isAllEntries : true ,
178+ } ) ;
181179
182180 React . useEffect ( ( ) => {
183181 setResourceName ( getResourceObject ( resourceId ) ?. label ) ;
184182 setResourceDesc ( getResourceObject ( resourceId ) ?. description ) ;
183+ setPreviewEnable ( getResourceObject ( resourceId ) ?. previewEnable ?? true ) ;
184+ setPreviewDetails ( {
185+ startEntry : getResourceObject ( resourceId ) ?. previewDetails . startEntry ?? 0 ,
186+ endEntry : getResourceObject ( resourceId ) ?. previewDetails . endEntry ?? 0 ,
187+ isAllEntries :
188+ getResourceObject ( resourceId ) ?. previewDetails . isAllEntries ?? true ,
189+ } ) ;
185190
186191 //fix this later
187192 } , [ JSON . stringify ( list ) , resourceId ] ) ;
@@ -230,7 +235,7 @@ export const EditResource = ({ refetch, list }: EditProps) => {
230235 const fileInput = (
231236 < div className = "flex" >
232237 < Text className = "break-all" >
233- { getResourceObject ( resourceId ) ?. fileDetails . file . name . replace (
238+ { getResourceObject ( resourceId ) ?. fileDetails ? .file . name . replace (
234239 'resources/' ,
235240 ''
236241 ) } { ' ' }
@@ -242,12 +247,35 @@ export const EditResource = ({ refetch, list }: EditProps) => {
242247 setResourceId ( '' ) ;
243248 } ;
244249
250+ const handlePreviewDetailsChange = (
251+ field : string ,
252+ value : string | boolean
253+ ) => {
254+ if ( field === 'isAllEntries' && value ) {
255+ setPreviewDetails ( {
256+ startEntry : 0 ,
257+ endEntry : 0 ,
258+ isAllEntries : true ,
259+ } ) ;
260+ } else {
261+ setPreviewDetails ( ( prev ) => ( {
262+ ...prev ,
263+ [ field ] : value ,
264+ } ) ) ;
265+ }
266+ } ;
245267 const saveResource = ( ) => {
246268 updateResourceMutation . mutate ( {
247269 fileResourceInput : {
248270 id : resourceId ,
249271 description : resourceDesc || '' ,
250272 name : resourceName || '' ,
273+ previewEnabled : previewEnable ,
274+ previewDetails : {
275+ startEntry : + previewDetails . startEntry || 0 ,
276+ endEntry : + previewDetails . endEntry || 0 ,
277+ isAllEntries : previewDetails . isAllEntries ,
278+ } ,
251279 } ,
252280 isResetSchema : false ,
253281 } ) ;
@@ -357,6 +385,7 @@ export const EditResource = ({ refetch, list }: EditProps) => {
357385 multiline = { 4 }
358386 />
359387 </ div >
388+
360389 < div className = "flex w-1/5 flex-col justify-between border-1 border-solid border-baseGraySlateSolid7 p-3 " >
361390 { fileInput }
362391
@@ -371,71 +400,55 @@ export const EditResource = ({ refetch, list }: EditProps) => {
371400 </ DropZone >
372401 </ div >
373402 </ div >
374- { /* <div className=" my-8 flex items-center gap-4 border-1 border-solid border-baseGraySlateSolid7 px-7 py-4 ">
375- <div className="flex w-1/6 items-center justify-center gap-1">
376- <Checkbox name="checkbox" onChange={() => console.log('hi')}>
377- Enabel Preview
378- </Checkbox>
379- <Icon source={Icons.info} />
380- </div>
381-
382- <div className="h-[70px] w-[2px] bg-baseGraySlateSolid7"></div>
403+ < div className = "my-8 flex items-center gap-8 align-middle" >
404+ < Checkbox
405+ name = { 'previewEnabled' }
406+ checked = { previewEnable }
407+ onChange = { ( ) => setPreviewEnable ( ! previewEnable ) }
408+ >
409+ Preview Enabled
410+ </ Checkbox >
383411
384- <div className="flex items-center gap-5 px-8">
385- <Text>
386- Select Rows to be <br /> shown in the Preview
387- </Text>
388- <Combobox
389- name="geo_list"
390- label="From Row Number"
391- placeholder="Search Locations"
392- list={[
393- {
394- label:
395- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
396- value:
397- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
398- },
399- {
400- label:
401- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
402- value:
403- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
404- },
405- ]}
406- displaySelected
407- required
408- error="This field is required"
409- />
410- <Combobox
411- name="to_row_number"
412- label="To Row Number"
413- placeholder="Search Locations"
414- list={[
415- {
416- label:
417- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
418- value:
419- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
420- },
421- {
422- label:
423- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
424- value:
425- 'Temperature and Precipitation (2011) Shimla Himachal Pradesh.xls',
426- },
427- ]}
428- displaySelected
429- required
430- error="This field is required"
431- />
432- </div>
433- <div className="h-[70px] w-[2px] bg-baseGraySlateSolid7"></div>
434- <div className="flex w-1/6 justify-center ">
435- <Text>See Preview</Text>
436- </div>
437- </div>*/ }
438- < div className = "my-8" >
412+ { previewEnable && (
413+ < >
414+ < Checkbox
415+ name = { 'isAllEntries' }
416+ checked = { previewDetails . isAllEntries }
417+ onChange = { ( ) =>
418+ handlePreviewDetailsChange (
419+ 'isAllEntries' ,
420+ ! previewDetails . isAllEntries
421+ )
422+ }
423+ >
424+ Show all entries
425+ </ Checkbox >
426+ { ! previewDetails . isAllEntries && (
427+ < >
428+ < TextField
429+ value = { previewDetails . startEntry . toString ( ) }
430+ label = "Start Entry"
431+ name = "startEntry"
432+ onChange = { ( value ) =>
433+ handlePreviewDetailsChange ( 'startEntry' , value )
434+ }
435+ type = "number"
436+ />
437+ < TextField
438+ value = { previewDetails . endEntry . toString ( ) }
439+ label = "End Entry"
440+ name = "endEntry"
441+ onChange = { ( value ) =>
442+ handlePreviewDetailsChange ( 'endEntry' , value )
443+ }
444+ type = "number"
445+ />
446+ </ >
447+ ) }
448+ </ >
449+ ) }
450+ </ div >
451+ < div className = "my-4" >
439452 < div className = "flex flex-wrap justify-between" >
440453 < Text > Fields in the Resource</ Text >
441454 < Button
0 commit comments