Skip to content

Commit

Permalink
Merge pull request #4904 from specify/issue-4898
Browse files Browse the repository at this point in the history
Display create RS and Gallery tool only for factious RS with same type
  • Loading branch information
sharadsw authored Jun 7, 2024
2 parents 8070a8f + 15d2cb3 commit 3f3a73e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export function RecordSelectorFromIds<SCHEMA extends AnySchema>({
onClone: handleClone,
onDelete: handleDelete,
onFetch: handleFetch,
hasSeveralResourceType,
...rest
}: Omit<RecordSelectorProps<SCHEMA>, 'index' | 'records'> & {
/*
Expand All @@ -74,6 +75,7 @@ export function RecordSelectorFromIds<SCHEMA extends AnySchema>({
readonly onFetch?: (
index: number
) => Promise<RA<number | undefined> | undefined>;
readonly hasSeveralResourceType?: boolean;
}): JSX.Element | null {
const [records, setRecords] = React.useState<
RA<SpecifyResource<SCHEMA> | undefined>
Expand Down Expand Up @@ -183,8 +185,6 @@ export function RecordSelectorFromIds<SCHEMA extends AnySchema>({

const hasAttachments = tablesWithAttachments().includes(table);

const isNewRecordSet = isInRecordSet && title === undefined;

return (
<>
<ResourceView
Expand Down Expand Up @@ -227,7 +227,9 @@ export function RecordSelectorFromIds<SCHEMA extends AnySchema>({
className={`flex-1 ${dialog === false ? '-ml-2' : '-ml-4'}`}
/>
)}
{hasAttachments && !isNewRecordSet ? (
{hasAttachments &&
!hasSeveralResourceType &&
!resource?.isNew() ? (
<RecordSetAttachments records={records} onFetch={handleFetch} />
) : undefined}
{specifyNetworkBadge}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
} from '../DataModel/resource';
import { serializeResource } from '../DataModel/serializers';
import { tables } from '../DataModel/tables';
import type { RecordSet as RecordSetSchema } from '../DataModel/types';
import type { RecordSet as RecordSetSchema, Tables } from '../DataModel/types';
import { softFail } from '../Errors/Crash';
import { recordSetView } from '../FormParse/webOnlyViews';
import { ResourceView } from '../Forms/ResourceView';
Expand Down Expand Up @@ -290,13 +290,25 @@ function RecordSet<SCHEMA extends AnySchema>({
const [hasDuplicate, handleHasDuplicate, handleDismissDuplicate] =
useBooleanState();

const [hasSeveralResourceType, setHasSeveralResourceType] =
React.useState(false);
const [resourceType, setResourceType] = React.useState<
keyof Tables | undefined
>(undefined);

async function handleAdd(
resources: RA<SpecifyResource<SCHEMA>>,
wasNew: boolean
): Promise<void> {
if (!recordSet.isNew())
await addIdsToRecordSet(resources.map(({ id }) => id));
go(totalCount, resources[0].id, undefined, wasNew);
if (resourceType === undefined) {
setResourceType(resources[0].specifyTable.name);
} else if (resourceType !== resources.at(-1)?.specifyTable.name) {
setHasSeveralResourceType(true);
setResourceType(resources.at(-1)?.specifyTable.name);
}
setIds((oldIds = []) =>
updateIds(
oldIds,
Expand Down Expand Up @@ -336,9 +348,12 @@ function RecordSet<SCHEMA extends AnySchema>({
{...rest}
defaultIndex={currentIndex}
dialog={dialog}
hasSeveralResourceType={hasSeveralResourceType}
headerButtons={
recordSet.isNew() ? (
ids.length > 1 && !currentRecord.isNew() ? (
ids.length > 1 &&
!currentRecord.isNew() &&
!hasSeveralResourceType ? (
<Button.Icon
icon="collection"
title={formsText.createNewRecordSet()}
Expand Down

0 comments on commit 3f3a73e

Please sign in to comment.