Skip to content

Commit

Permalink
fix(datasets): Restore file from previous decided affiliations
Browse files Browse the repository at this point in the history
  • Loading branch information
annelhote committed Feb 13, 2025
1 parent cad7840 commit 04677f4
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 46 deletions.
6 changes: 5 additions & 1 deletion client/src/pages/actions/actionsAffiliations.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,12 @@ export default function ActionsAffiliations({
}) {
const { toast } = useToast();
const [searchParams] = useSearchParams();
const decidedAffiliations = allAffiliations?.filter((affiliation) => affiliation.status !== status.tobedecided.id) || [];
const decidedAffiliations = allAffiliations?.filter((affiliation) => affiliation.status !== status.tobedecided.id)?.map((affiliation) => {
delete affiliation.id;
return affiliation;
}) || [];
const [isModalOpen, setIsModalOpen] = useState(false);

const onExport = () => {
export2json({ data: decidedAffiliations, label: 'affiliations', searchParams });
toast({
Expand Down
46 changes: 26 additions & 20 deletions client/src/pages/datasets/results.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,33 @@ export default function Affiliations() {
};

const tagAffiliations = (_affiliations, action) => {
if (action !== status.excluded.id) {
const worksIds = _affiliations
.map((affiliation) => affiliation.works)
.flat();
data?.datasets?.results
?.filter((dataset) => worksIds.includes(dataset.id))
.map((dataset) => (dataset.status = action));
if (_affiliations.length > 0) {
// If no affiliationIds, it means it comes from a restored file so d o a match on affiliation key
if (_affiliations?.[0]?.id === undefined) {
const affiliationKeys = _affiliations.map((affiliation) => affiliation?.key).filter((key) => !!key);
// eslint-disable-next-line no-param-reassign
_affiliations = affiliations.filter((aff) => affiliationKeys.includes(aff.key));
}
if (action !== status.excluded.id) {
const worksIds = _affiliations
.map((affiliation) => affiliation.works)
.flat();
data?.datasets?.results
?.filter((dataset) => worksIds.includes(dataset.id))
.map((dataset) => (dataset.status = action));
}
// Filter non existing ids
const affiliationIds = _affiliations.map((affiliation) => affiliation.id).filter((id) => !!id);
setAffiliations(
affiliations
.map((affiliation) => {
if (affiliationIds.includes(affiliation.id)) {
affiliation.status = action;
}
return affiliation;
}),
);
}
const affiliationIds = _affiliations.map((affiliation) => affiliation.id);
setAffiliations(
affiliations
.map((affiliation) => {
if (affiliationIds.includes(affiliation.id)) {
return ({
...affiliation,
status: action,
});
}
return affiliation;
}),
);
setSelectedAffiliations([]);
};

Expand Down
43 changes: 26 additions & 17 deletions client/src/pages/publications/results.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,33 @@ export default function Affiliations() {
});

const tagAffiliations = (_affiliations, action) => {
if (action !== status.excluded.id) {
const worksIds = _affiliations
.map((affiliation) => affiliation.works)
.flat();
data?.publications?.results
?.filter((publication) => worksIds.includes(publication.id))
.map((publication) => (publication.status = action));
if (_affiliations.length > 0) {
// If no affiliationIds, it means it comes from a restored file so d o a match on affiliation key
if (_affiliations?.[0]?.id === undefined) {
const affiliationKeys = _affiliations.map((affiliation) => affiliation?.key).filter((key) => !!key);
// eslint-disable-next-line no-param-reassign
_affiliations = affiliations.filter((aff) => affiliationKeys.includes(aff.key));
}
if (action !== status.excluded.id) {
const worksIds = _affiliations
.map((affiliation) => affiliation.works)
.flat();
data?.publications?.results
?.filter((publication) => worksIds.includes(publication.id))
.map((publication) => (publication.status = action));
}
// Filter non existing ids
const affiliationIds = _affiliations.map((affiliation) => affiliation?.id).filter((id) => !!id);
setAffiliations(
affiliations
.map((affiliation) => {
if (affiliationIds.includes(affiliation.id)) {
affiliation.status = action;
}
return affiliation;
}),
);
}
const affiliationIds = _affiliations.map((affiliation) => affiliation.id);
setAffiliations(
affiliations
.map((affiliation) => {
if (affiliationIds.includes(affiliation.id)) {
affiliation.status = action;
}
return affiliation;
}),
);
setSelectedAffiliations([]);
};

Expand Down
13 changes: 5 additions & 8 deletions client/src/utils/files.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,11 @@ const importJson = (e, tagAffiliations) => {
const fileReader = new FileReader();
fileReader.readAsText(e.target.files[0], 'UTF-8');
fileReader.onload = (f) => {
const allAffiliations = JSON.parse(f.target.result);
const decidedAffiliations = allAffiliations?.filter((affiliation) => affiliation.status !== status.tobedecided.id) || [];
if (decidedAffiliations) {
const validatedAffiliations = decidedAffiliations.filter((decidedAffiliation) => decidedAffiliation.status === status.validated.id);
tagAffiliations(validatedAffiliations, status.validated.id);
const excludedAffiliations = decidedAffiliations.filter((decidedAffiliation) => decidedAffiliation.status === status.excluded.id);
tagAffiliations(excludedAffiliations, status.excluded.id);
}
const affiliations = JSON.parse(f.target.result);
const validatedAffiliations = affiliations.filter((decidedAffiliation) => decidedAffiliation.status === status.validated.id);
if (validatedAffiliations.length > 0) tagAffiliations(validatedAffiliations, status.validated.id);
const excludedAffiliations = affiliations.filter((decidedAffiliation) => decidedAffiliation.status === status.excluded.id);
if (excludedAffiliations.length > 0) tagAffiliations(excludedAffiliations, status.excluded.id);
};
};

Expand Down

0 comments on commit 04677f4

Please sign in to comment.