Skip to content

Commit

Permalink
Open interaction dialog when adding prep in ExchangeOut
Browse files Browse the repository at this point in the history
Fixes #922
  • Loading branch information
CarolineDenis committed Apr 18, 2024
1 parent 58ab2b2 commit 45c17ae
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 12 deletions.
Expand Up @@ -15,6 +15,7 @@ import { useAllSaveBlockers } from '../DataModel/saveBlockers';
import type { Collection } from '../DataModel/specifyTable';
import type {
DisposalPreparation,
ExchangeOutPrep,
GiftPreparation,
LoanPreparation,
} from '../DataModel/types';
Expand Down Expand Up @@ -101,9 +102,12 @@ export function IntegratedRecordSelector({
typeof relationship === 'object' &&
relationshipIsToMany(relationship) &&
typeof collection.related === 'object' &&
['LoanPreparation', 'GiftPreparation', 'DisposalPreparation'].includes(
relationship.relatedTable.name
);
[
'LoanPreparation',
'GiftPreparation',
'DisposalPreparation',
'ExchangeOutPrep',
].includes(relationship.relatedTable.name);

const [isDialogOpen, handleOpenDialog, handleCloseDialog] = useBooleanState();

Expand Down Expand Up @@ -148,7 +152,10 @@ export function IntegratedRecordSelector({
actionTable={collection.related.specifyTable}
itemCollection={
collection as Collection<
DisposalPreparation | GiftPreparation | LoanPreparation
| DisposalPreparation
| GiftPreparation
| LoanPreparation
| ExchangeOutPrep
>
}
onClose={handleCloseDialog}
Expand Down
Expand Up @@ -32,6 +32,7 @@ import type { Collection, SpecifyTable } from '../DataModel/specifyTable';
import { tables } from '../DataModel/tables';
import type {
DisposalPreparation,
ExchangeOutPrep,
Gift,
GiftPreparation,
LoanPreparation,
Expand All @@ -58,7 +59,7 @@ export function InteractionDialog({
readonly actionTable: SpecifyTable;
readonly isLoanReturn?: boolean;
readonly itemCollection?: Collection<
DisposalPreparation | GiftPreparation | LoanPreparation
DisposalPreparation | GiftPreparation | LoanPreparation | ExchangeOutPrep
>;
}): JSX.Element {
const itemTable = isLoanReturn ? tables.Loan : tables.CollectionObject;
Expand Down
Expand Up @@ -34,8 +34,8 @@ export const interactionWorkflowTables: Partial<
Loan: 'CollectionObject',
Gift: 'CollectionObject',
Disposal: 'CollectionObject',
ExchangeOut: 'Preparation',
/*
* ExchangeOut: 'Preparation',
* InfoRequest: 'CollectionObject',
*/
};
Expand Down
Expand Up @@ -21,6 +21,8 @@ import { strictGetTable, tables } from '../DataModel/tables';
import type {
Disposal,
DisposalPreparation,
ExchangeOut,
ExchangeOutPrep,
Gift,
GiftPreparation,
Loan,
Expand All @@ -38,9 +40,9 @@ export function PrepDialog({
}: {
readonly onClose: () => void;
readonly preparations: RA<PreparationData>;
readonly table: SpecifyTable<Disposal | Gift | Loan>;
readonly table: SpecifyTable<Disposal | Gift | Loan | ExchangeOut>;
readonly itemCollection?: Collection<
DisposalPreparation | GiftPreparation | LoanPreparation
DisposalPreparation | GiftPreparation | LoanPreparation | ExchangeOutPrep
>;
}): JSX.Element {
const preparations = React.useMemo(() => {
Expand Down Expand Up @@ -152,10 +154,15 @@ export function PrepDialog({
<Form
id={id('form')}
onSubmit={(): void => {
const itemTable = strictGetTable(
`${table.name}Preparation`
) as SpecifyTable<
DisposalPreparation | GiftPreparation | LoanPreparation
const tableName =
table.name === 'ExchangeOut'
? `${table.name}Prep`
: `${table.name}Preparation`;
const itemTable = strictGetTable(tableName) as SpecifyTable<
| DisposalPreparation
| GiftPreparation
| LoanPreparation
| ExchangeOutPrep
>;
const items = filterArray(
preparations.map((preparation, index) => {
Expand Down Expand Up @@ -192,6 +199,10 @@ export function PrepDialog({
'disposalPreparations',
items as RA<SpecifyResource<DisposalPreparation>>
);
toTable(interaction, 'ExchangeOut')?.set(
'exchangeOutPreps',
items as RA<SpecifyResource<ExchangeOutPrep>>
);
navigate(getResourceViewUrl(table.name, undefined), {
state: {
type: 'RecordSet',
Expand Down

0 comments on commit 45c17ae

Please sign in to comment.