Skip to content

Commit 1cdd121

Browse files
committed
add preview of data
1 parent ab37cb7 commit 1cdd121

File tree

3 files changed

+112
-77
lines changed

3 files changed

+112
-77
lines changed

app/[locale]/dashboard/[entityType]/[entitySlug]/dataset/[id]/edit/resources/components/EditResource.tsx

Lines changed: 90 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,20 @@
1-
import React from 'react';
1+
import React, { useState } from 'react';
22
import { useParams } from 'next/navigation';
3-
import { graphql } from '@/gql';
43
import {
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';
1610
import {
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

app/[locale]/dashboard/[entityType]/[entitySlug]/dataset/[id]/edit/resources/page-layout.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ export interface TListItem {
1717
description: string;
1818
dataset: any;
1919
fileDetails: any;
20+
previewEnable: boolean
21+
previewDetails: {
22+
startEntry: 0,
23+
endEntry: 0,
24+
isAllEntries: boolean
25+
}
2026
}
2127

2228
export function DistibutionPage({
@@ -48,6 +54,12 @@ export function DistibutionPage({
4854
description: item.description,
4955
dataset: item.dataset?.pk,
5056
fileDetails: item.fileDetails,
57+
previewEnable: item.previewEnable,
58+
previewDetails: {
59+
startEntry: item.previewDetails?.startEntry,
60+
endEntry: item.previewDetails?.endEntry,
61+
isAllEntries: item.previewDetails?.isAllEntries
62+
}
5163
}))) ||
5264
[];
5365

app/[locale]/dashboard/[entityType]/[entitySlug]/dataset/[id]/edit/resources/query.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ export const getReourceDoc = graphql(`
88
dataset {
99
pk
1010
}
11+
previewData {
12+
columns
13+
rows
14+
}
15+
previewDetails {
16+
endEntry
17+
isAllEntries
18+
startEntry
19+
}
20+
previewEnabled
1121
schema {
1222
id
1323
fieldName

0 commit comments

Comments
 (0)