From f079bbe5ae184589136bec5fadf0295f7c8628e8 Mon Sep 17 00:00:00 2001 From: sanjaypinna Date: Tue, 28 May 2024 10:14:56 +0530 Subject: [PATCH 1/7] add onblur save mechanism --- .../[id]/edit/components/AccessModelForm.tsx | 33 +++++++++++++++---- components/icons.tsx | 4 +++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx index c0b3ef6d..8b3d0ddd 100644 --- a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx +++ b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx @@ -269,7 +269,7 @@ const AccessModelForm: React.FC = ({ GraphQL(editaccessModel, data), { onSuccess: (res: any) => { - toast('Access Model Saved'); + // toast('Access Model Saved'); accessModelDetailsRefetch(); accessModelListRefetch(); setAccessModelId(res?.editAccessModel?.id); @@ -284,6 +284,19 @@ const AccessModelForm: React.FC = ({ const [isSheetOpen, setIsSheetOpen] = useState(false); + const handleSave = (updatedData: any) => { + mutate({ + accessModelInput: { + name: updatedData.name, + dataset: updatedData.dataset, + description: updatedData.description, + type: updatedData.type as AccessTypes, + accessModelId: accessModelId || null, + resources: updatedData.resources, + }, + }); + }; + return (
@@ -363,16 +376,13 @@ const AccessModelForm: React.FC = ({
- {isLoading || - editMutationLoading || - accessModelDetailsLoading || - accessModelListLoading ? ( + {isLoading ? (
) : (
-
+ {/*
+
*/} +
+ Auto Save + {editMutationLoading ? ( + + ) : ( + + )}
@@ -402,6 +420,7 @@ const AccessModelForm: React.FC = ({ name="name" required helpText="To know about best practices for naming Resources go to our User Guide" + onBlur={() => handleSave(accessModelData)} />
= ({ defaultValue={'PUBLIC'} value={accessModelData.type} placeholder="Select" - onChange={(e) => - setAccessModelData({ ...accessModelData, type: e }) - } + onChange={(e) => handleChange('type', e)} onBlur={() => handleSave(accessModelData)} />
- setAccessModelData({ - ...accessModelData, - description: e, - }) - } + onChange={(e) => handleChange('description', e)} + onBlur={() => handleSave(accessModelData)} label="Description" name="description" multiline={4} - onBlur={() => handleSave(accessModelData)} />
@@ -500,6 +499,7 @@ const AccessModelForm: React.FC = ({ handleRemoveResource={handleRemoveResource} accessModelData={accessModelData} setAccessModelData={setAccessModelData} + handleSave={handleSave} /> ); })} diff --git a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx index e1fa9233..a726da62 100644 --- a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx +++ b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx @@ -10,6 +10,7 @@ interface ResourceSelectorProps { handleRemoveResource: (resourceId: string) => void; accessModelData: any; setAccessModelData: (data: any) => void; + handleSave: (updatedData: any) => void; } const ResourceSelector: React.FC = ({ @@ -17,6 +18,7 @@ const ResourceSelector: React.FC = ({ handleRemoveResource, accessModelData, setAccessModelData, + handleSave, }) => { const [selectAllFields, setSelectAllFields] = useState(true); const [options, setOptions] = useState<{ label: string; value: string }[]>( @@ -57,10 +59,10 @@ const ResourceSelector: React.FC = ({ ); } else if (selectAllFields) { setSelectedFields(initialOptions); - setAccessModelData((prevData: any) => ({ - ...prevData, + const updatedData = { + ...accessModelData, resources: [ - ...prevData.resources.filter( + ...accessModelData.resources.filter( (resource: any) => resource.resource !== selectedResource.id ), { @@ -70,9 +72,17 @@ const ResourceSelector: React.FC = ({ ), // Convert to integer }, ], - })); + }; + setAccessModelData(updatedData); + handleSave(updatedData); } - }, [selectedResource, accessModelData, selectAllFields]); + }, [ + selectedResource, + accessModelData, + selectAllFields, + setAccessModelData, + handleSave, + ]); const handleFieldSelection = (selectedOptions: any) => { const updatedFields = selectedOptions.map((option: any) => ({ @@ -82,10 +92,10 @@ const ResourceSelector: React.FC = ({ setSelectedFields(updatedFields); - setAccessModelData((prevData: any) => ({ - ...prevData, + const updatedData = { + ...accessModelData, resources: [ - ...prevData.resources.filter( + ...accessModelData.resources.filter( (resource: any) => resource.resource !== selectedResource.id ), { @@ -93,7 +103,10 @@ const ResourceSelector: React.FC = ({ fields: updatedFields.map((field: any) => parseInt(field.value, 10)), // Convert to integer }, ], - })); + }; + + setAccessModelData(updatedData); + handleSave(updatedData); setSelectAllFields(updatedFields.length === options.length); }; @@ -103,10 +116,10 @@ const ResourceSelector: React.FC = ({ setSelectAllFields(!selectAllFields); setSelectedFields(updatedFields); - setAccessModelData((prevData: any) => ({ - ...prevData, + const updatedData = { + ...accessModelData, resources: [ - ...prevData.resources.filter( + ...accessModelData.resources.filter( (resource: any) => resource.resource !== selectedResource.id ), { @@ -114,7 +127,10 @@ const ResourceSelector: React.FC = ({ fields: updatedFields.map((field: any) => parseInt(field.value, 10)), // Convert to integer }, ], - })); + }; + + setAccessModelData(updatedData); + handleSave(updatedData); }; return ( From 44781ad915db9f5f6c67f7c7b31eeab1d22554ec Mon Sep 17 00:00:00 2001 From: sanjaypinna Date: Tue, 28 May 2024 12:05:52 +0530 Subject: [PATCH 3/7] fix responsiveness --- .../dataset/[id]/edit/components/ResourceSelector.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx index a726da62..6fc50d81 100644 --- a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx +++ b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/ResourceSelector.tsx @@ -148,9 +148,9 @@ const ResourceSelector: React.FC = ({
-
+
-
+
= ({ onChange={(e: any) => handleFieldSelection(e)} />
-
+
Date: Tue, 28 May 2024 14:07:39 +0530 Subject: [PATCH 4/7] add type --- .../dataset/[id]/edit/components/AccessModelForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx index 15d4fd9a..19ca9293 100644 --- a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx +++ b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx @@ -41,7 +41,7 @@ const datasetResourcesQuery: any = graphql(` } `); -const accessModelListQuery = graphql(` +const accessModelListQuery: any = graphql(` query accessModelResources($datasetId: UUID!) { accessModelResources(datasetId: $datasetId) { id From 691b56c7fe2d139dcd88edc7a9456565e25aa517 Mon Sep 17 00:00:00 2001 From: sanjaypinna Date: Tue, 28 May 2024 15:06:34 +0530 Subject: [PATCH 5/7] add type --- .../dataset/[id]/edit/components/AccessModelList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelList.tsx b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelList.tsx index 5add9aa2..bf0f8a59 100644 --- a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelList.tsx +++ b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelList.tsx @@ -16,7 +16,7 @@ interface AccessModelListProps { setAccessModelId: any; } -const accessModelQuery = graphql(` +const accessModelQuery: any = graphql(` query accessModelResources($datasetId: UUID!) { accessModelResources(datasetId: $datasetId) { id From cb80d12564201be2da215dddf541165754581142 Mon Sep 17 00:00:00 2001 From: sanjaypinna Date: Tue, 28 May 2024 15:15:21 +0530 Subject: [PATCH 6/7] remove duplicate icons --- components/icons.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/components/icons.tsx b/components/icons.tsx index 2cd41d33..1aeab126 100644 --- a/components/icons.tsx +++ b/components/icons.tsx @@ -80,11 +80,6 @@ export const Icons: { share: IconShare3, terminal: IconTerminal, twitter: IconBrandTwitterFilled, - facebook: IconBrandFacebookFilled, - linkedin: IconBrandLinkedin, - github: IconBrandGithubFilled, - download: IconDownload, - alert: IconAlertCircleFilled, checkmark: IconCheck, loader: IconLoader, userList: IconUsers, From 966c32e42ddd5aa25e0c7105b70528d351c6706d Mon Sep 17 00:00:00 2001 From: sanjaypinna Date: Tue, 28 May 2024 16:00:42 +0530 Subject: [PATCH 7/7] fix Combobox popover z-index issues --- .../dataset/[id]/edit/components/AccessModelForm.tsx | 4 +++- .../dataset/[id]/edit/components/ResourceSelector.tsx | 2 +- .../[organizationId]/dataset/[id]/edit/edit.module.scss | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx index 19ca9293..e553bfe2 100644 --- a/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx +++ b/app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx @@ -17,7 +17,9 @@ import { } from 'opub-ui'; import { GraphQL } from '@/lib/api'; +import { cn } from '@/lib/utils'; import { Icons } from '@/components/icons'; +import styles from '../edit.module.scss'; import ResourceSelector from './ResourceSelector'; interface AccessModelProps { @@ -456,7 +458,7 @@ const AccessModelForm: React.FC = ({
-
+
= ({
-
+