Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

saving provisions was inefficient and failing #211

Merged
merged 1 commit into from
May 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@ import { updateDocType } from '../../../common/manage-doc-types';
import { Button } from 'react-bootstrap';

interface EditDocTypeTableProps {
onUpdate: (documentType: Partial<DocType>) => void;
refreshDocTypes: () => void;
}

const EditDocTypeTable: FC<EditDocTypeTableProps> = ({ onUpdate, refreshDocTypes }) => {
const EditDocTypeTable: FC<EditDocTypeTableProps> = ({ refreshDocTypes }) => {
const [isEditing, setIsEditing] = useState<boolean>(false);
const [isLoading, setIsLoading] = useState<boolean>(false);
const dispatch = useDispatch();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
import React, { FC, useEffect, useState } from 'react';
import { DataTable } from '../common/DataTable';
import { ColumnDef, Row, createColumnHelper } from '@tanstack/react-table';
import {
ManageDocTypeProvision,
associateProvisionToDocType,
disassociateProvisionFromDocType,
} from '../../../common/manage-doc-types';
import { ManageDocTypeProvision } from '../../../common/manage-doc-types';
import { ProvisionGroup } from '../../../types/types';
import { DocumentProvisionSearchState } from '../../common/manage-doc-types/DocumentProvisionSearch';

interface ManageDocumentProvisionsTableProps {
documentTypeId: number;
provisions: ManageDocTypeProvision[] | undefined;
provisionGroups: ProvisionGroup[] | undefined;
searchState: DocumentProvisionSearchState;
onUpdate: (manageDocTypeProvisions: ManageDocTypeProvision[]) => void;
}

const ManageDocumentProvisionsTable: React.FC<ManageDocumentProvisionsTableProps> = ({
documentTypeId,
provisions,
provisionGroups,
searchState,
Expand Down
41 changes: 14 additions & 27 deletions frontend/src/app/content/pages/ManageDocumentsPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { FC, useCallback, useEffect, useState } from 'react';
import { FC, useCallback, useEffect, useState } from 'react';
import { Button, Col, Row } from 'react-bootstrap';
import { DocType, ProvisionGroup } from '../../types/types';
import { getDocumentTypes, getGroupMaxByDocTypeId } from '../../common/report';
Expand All @@ -10,7 +10,6 @@ import {
addDocType,
getManageDocumentTypeProvisions,
removeDocType,
updateDocType,
updateManageDocTypeProvisions,
} from '../../common/manage-doc-types';
import EditProvisionGroupsModal from '../../components/modal/manage-doc-types/EditProvisionGroupsModal';
Expand All @@ -22,7 +21,6 @@ import DocumentProvisionSearch, {
import { useDispatch, useSelector } from 'react-redux';
import { RootState } from '../../store/store';
import { setDocType } from '../../store/reducers/docTypeSlice';
// import TestProvisionTable from '../../components/table/manage-doc-types/TestProvisionTable';

const ManageDocumentsPage: FC = () => {
const [loading, setLoading] = useState<boolean>(false);
Expand Down Expand Up @@ -52,12 +50,7 @@ const ManageDocumentsPage: FC = () => {
});

const dispatch = useDispatch();
const { selectedDocType, updatedDocType } = useSelector((state: RootState) => state.docType);
const [docTypeEdits, setDocTypeEdits] = useState<DocType>(selectedDocType);

useEffect(() => {
setDocTypeEdits(selectedDocType);
}, [selectedDocType]);
const { selectedDocType } = useSelector((state: RootState) => state.docType);

useEffect(() => {
const getData = async () => {
Expand Down Expand Up @@ -153,13 +146,13 @@ const ManageDocumentsPage: FC = () => {
}
};

// called when a provision is altered in the ManageDocumentProvisionstable
const updateProvisionsState = (newProvisionsState: ManageDocTypeProvision[]) => {
setUpdatedProvisions(newProvisionsState);
};

const saveButtonHandler = async () => {
try {
// await saveDocType();
await saveProvisions();
} catch (err) {
console.log('Error when saving');
Expand All @@ -168,20 +161,20 @@ const ManageDocumentsPage: FC = () => {
}
};

const handleDocTypeEdit = useCallback((newValues: Partial<DocType>) => {
setDocTypeEdits((prev) => ({ ...prev, ...newValues }));
}, []);
const findUpdatedProvisions = (): ManageDocTypeProvision[] => {
const updated = updatedProvisions.filter((updatedProvision) => {
const originalProvision = provisions.find((p) => p.id === updatedProvision.id);
return originalProvision && JSON.stringify(updatedProvision) !== JSON.stringify(originalProvision);
});
return updated;
};

const saveProvisions = async () => {
try {
setLoading(true);
console.log('Saving Provisions...');
for (let prov of updatedProvisions) {
if (prov.associated) {
console.log(prov);
}
}
await updateManageDocTypeProvisions(selectedDocType.id, updatedProvisions);
const updated: ManageDocTypeProvision[] = findUpdatedProvisions();
console.log(updated);
await updateManageDocTypeProvisions(selectedDocType.id, updated);
} catch (err) {
console.log('Error updating provisions');
console.log(err);
Expand Down Expand Up @@ -231,7 +224,7 @@ const ManageDocumentsPage: FC = () => {
<hr />
{/** Doc Type info / edit single row table */}
{/** Document Type Name - Date Created - Created By - Last Updated Date - Last Updated By */}
<EditDocTypeTable refreshDocTypes={refreshDocTypes} onUpdate={handleDocTypeEdit} />
<EditDocTypeTable refreshDocTypes={refreshDocTypes} />
<hr />
<h1>Associate Provisions to {selectedDocType.name}</h1>
<hr />
Expand All @@ -249,17 +242,11 @@ const ManageDocumentsPage: FC = () => {

{/** Global Provisions table */}
<ManageDocumentProvisionsTable
documentTypeId={selectedDocType.id}
provisions={provisions}
provisionGroups={provisionGroups}
searchState={searchState}
onUpdate={updateProvisionsState}
/>
{/* <TestProvisionTable
provisions={provisions}
provisionGroups={provisionGroups}
onUpdate={updateProvisionsState}
/> */}
{/** ID - Type - Group - Seq - Max - Provision Name - Free Text - Category - Associated */}
<EditProvisionGroupsModal
provisionGroups={provisionGroups}
Expand Down
Loading