Skip to content

Commit c7e96e7

Browse files
committed
fix prefill issue
1 parent 06782da commit c7e96e7

2 files changed

Lines changed: 77 additions & 52 deletions

File tree

app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
116116
);
117117
const {
118118
data: accessModelDetails,
119-
refetch,
119+
refetch: accessModelDetailsRefetch,
120120
isLoading: accessModelDetailsLoading,
121121
}: { data: any; isLoading: boolean; refetch: any } = useQuery(
122122
[`accessModelDetails${params.id}`],
@@ -158,7 +158,8 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
158158
if (accessModelDetails && accessModelDetails.accessModel && accessModelId) {
159159
const { name, description, type, modelResources } =
160160
accessModelDetails.accessModel;
161-
refetch();
161+
162+
accessModelDetailsRefetch();
162163
// Update accessModelData with the received data
163164
setAccessModelData({
164165
dataset: params.id,
@@ -196,11 +197,8 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
196197
}
197198
}, [accessModelDetails, accessModelId]);
198199

199-
const [resId, setResId] = useState('');
200-
201200
const handleAddResource = (resourceDetails: any) => {
202201
setSelectedResources(resourceDetails);
203-
setResId('');
204202
setAvailableResources(resourceDetails); // Filter out the selected resource
205203
setSelectedFields(resourceDetails);
206204
const newResources = resourceDetails.map((resource: any) => ({
@@ -272,10 +270,10 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
272270
{
273271
onSuccess: () => {
274272
toast('Access Model Saved');
275-
// refetch();
276-
// accessModelListRefetch();
273+
accessModelDetailsRefetch();
274+
accessModelListRefetch();
277275

278-
setList(true);
276+
// setList(true);
279277
},
280278
onError: (err: any) => {
281279
toast(`Received ${err} during access model saving`);
@@ -373,11 +371,11 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
373371
mutate({
374372
accessModelInput: {
375373
name: accessModelData.name,
376-
resources: accessModelData.resources,
377374
dataset: accessModelData.dataset,
378375
description: accessModelData.description,
379376
type: accessModelData.type as AccessTypes,
380377
accessModelId: accessModelId || null,
378+
resources: accessModelData.resources,
381379
},
382380
})
383381
}

app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx

Lines changed: 70 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,34 @@ const ResourceSelector: React.FC<ResourceSelectorProps> = ({
2929
useEffect(() => {
3030
const initialOptions = selectedResource.schema.map((field: any) => ({
3131
label: field.fieldName,
32-
value: +field.id,
32+
value: field.id.toString(), // Ensure ID is a string for Combobox
3333
}));
3434
setOptions(initialOptions);
35-
if (selectAllFields) {
35+
36+
const selectedResourceData = accessModelData.resources.find(
37+
(resource: any) => resource.resource === selectedResource.id
38+
);
39+
40+
if (selectedResourceData) {
41+
const initialSelectedFields = selectedResourceData.fields
42+
.map((fieldId: any) => {
43+
const field = selectedResource.schema.find(
44+
(f: any) => f.id.toString() === fieldId.toString()
45+
);
46+
return field
47+
? {
48+
label: field.fieldName,
49+
value: field.id.toString(), // Ensure ID is a string for Combobox
50+
}
51+
: null;
52+
})
53+
.filter((field: any) => field !== null); // Filter out null values
54+
setSelectedFields(initialSelectedFields);
55+
setSelectAllFields(
56+
initialSelectedFields.length === initialOptions.length
57+
);
58+
} else if (selectAllFields) {
3659
setSelectedFields(initialOptions);
37-
// Update accessModelData with all options selected
3860
setAccessModelData((prevData: any) => ({
3961
...prevData,
4062
resources: [
@@ -43,33 +65,23 @@ const ResourceSelector: React.FC<ResourceSelectorProps> = ({
4365
),
4466
{
4567
resource: selectedResource.id,
46-
fields: initialOptions.map((option: any) => option.value),
68+
fields: initialOptions.map((option: any) =>
69+
parseInt(option.value, 10)
70+
), // Convert to integer
4771
},
4872
],
4973
}));
50-
} else {
51-
// Update accessModelData to remove this resource
52-
setAccessModelData((prevData: any) => ({
53-
...prevData,
54-
resources: prevData.resources.filter(
55-
(resource: any) => resource.resource !== selectedResource.id
56-
),
57-
}));
5874
}
59-
}, [selectedResource.schema, selectAllFields]);
75+
}, [selectedResource, accessModelData, selectAllFields]);
6076

61-
const handleFieldSelection = (selectedOptions: []) => {
62-
setSelectedFields(
63-
selectedOptions.map((option: any) => ({
64-
label: option?.label || '',
65-
value: option?.value,
66-
}))
67-
);
77+
const handleFieldSelection = (selectedOptions: any) => {
78+
const updatedFields = selectedOptions.map((option: any) => ({
79+
label: option.label,
80+
value: option.value,
81+
}));
6882

69-
// Check if all options are selected
70-
const allOptionsSelected = selectedOptions.length === options.length;
83+
setSelectedFields(updatedFields);
7184

72-
// Update accessModelData with the selected fields
7385
setAccessModelData((prevData: any) => ({
7486
...prevData,
7587
resources: [
@@ -78,18 +90,36 @@ const ResourceSelector: React.FC<ResourceSelectorProps> = ({
7890
),
7991
{
8092
resource: selectedResource.id,
81-
fields: selectedOptions.map((option: any) => option.value),
93+
fields: updatedFields.map((field: any) => parseInt(field.value, 10)), // Convert to integer
8294
},
8395
],
8496
}));
8597

86-
// Update selectAllFields state based on whether all options are selected or not
87-
setSelectAllFields(allOptionsSelected);
98+
setSelectAllFields(updatedFields.length === options.length);
99+
};
100+
101+
const handleSelectAllFields = () => {
102+
const updatedFields = selectAllFields ? [] : options;
103+
setSelectAllFields(!selectAllFields);
104+
setSelectedFields(updatedFields);
105+
106+
setAccessModelData((prevData: any) => ({
107+
...prevData,
108+
resources: [
109+
...prevData.resources.filter(
110+
(resource: any) => resource.resource !== selectedResource.id
111+
),
112+
{
113+
resource: selectedResource.id,
114+
fields: updatedFields.map((field: any) => parseInt(field.value, 10)), // Convert to integer
115+
},
116+
],
117+
}));
88118
};
89119

90120
return (
91121
<div>
92-
<div className=" mb-4">
122+
<div className="mb-4">
93123
<Text>{selectedResource.name}</Text>
94124
</div>
95125
<div className="flex flex-wrap justify-start gap-6 px-8">
@@ -98,47 +128,44 @@ const ResourceSelector: React.FC<ResourceSelectorProps> = ({
98128
<div className="w-full">
99129
<Combobox
100130
displaySelected
101-
label={'Select Fields of the Resource'}
131+
label="Select Fields of the Resource"
102132
list={options}
103133
selectedValue={selectedFields}
104-
name={''}
105-
helpText={'Use the dropdown to add specific fields'}
134+
name=""
135+
helpText="Use the dropdown to add specific fields"
106136
onChange={(e: any) => handleFieldSelection(e)}
107137
/>
108138
</div>
109-
<div className="absolute right-0 top-0 " style={{ top: '-4px' }}>
139+
<div className="absolute right-0" style={{ top: '-4px' }}>
110140
<Checkbox
111-
name={'Select All Fields'}
112-
defaultChecked={true}
141+
name="Select All Fields"
113142
checked={selectAllFields}
114-
onChange={() => setSelectAllFields(!selectAllFields)}
143+
onChange={handleSelectAllFields}
115144
>
116145
Select All
117146
</Checkbox>
118147
</div>
119148
</div>
120149
</div>
121150
<div className="flex gap-6">
122-
<hr className=" m-0" />
151+
<hr className="m-0" />
123152
<div className="flex w-fit flex-col items-center justify-center gap-1">
124-
<div className="flex w-full items-center justify-between gap-2 ">
153+
<div className="flex w-full items-center justify-between gap-2">
125154
<Text>Select Rows of the Resource</Text>
126155
<Checkbox
127-
name={'Select All Rows'}
156+
name="Select All Rows"
128157
defaultChecked={false}
129158
onChange={(e) => console.log(e)}
130159
>
131160
Select All
132161
</Checkbox>
133162
</div>
134-
<div
135-
className={cn('flex flex-wrap gap-6', styles.accessModelEdit)}
136-
>
137-
<TextField type="number" label="From Row Number" name="name" />
138-
<TextField type="number" label="From Row Number" name="name" />
163+
<div className={cn('flex flex-wrap gap-6', styles.accessModelEdit)}>
164+
<TextField type="number" label="From Row Number" name="fromRow" />
165+
<TextField type="number" label="To Row Number" name="toRow" />
139166
</div>
140167
</div>
141-
<hr className=" m-0" />
168+
<hr className="m-0" />
142169
</div>
143170
<Button
144171
className="my-auto h-fit w-fit items-center"

0 commit comments

Comments
 (0)