creating new museums works now

This commit is contained in:
juhanikat
2025-07-28 19:54:31 +03:00
parent 296a326c15
commit 436475b461
3 changed files with 18 additions and 8 deletions
+10 -2
View File
@@ -2,15 +2,23 @@ import { Museum, EditDataType } from '../../../../frontend/src/shared/types'
import { getFieldsOfTables, nowDb } from '../../utils/db'
import Prisma from '../../../prisma/generated/now_test_client'
import { filterAllowedKeys, fixRadioSelection } from './writeOperations/utils'
import { getMuseumDetails } from '../museum'
export const writeMuseum = async (museum: EditDataType<Museum>) => {
const allowedColumns = getFieldsOfTables(['com_mlist'])
const filteredMuseum = filterAllowedKeys(museum, allowedColumns) as Prisma.com_mlist
let museumId: string
if (!filteredMuseum.museum) {
const existingMuseum = await getMuseumDetails(filteredMuseum.museum)
if (!existingMuseum) {
const newMuseum = await nowDb.com_mlist.create({
data: filteredMuseum,
data: {
...filteredMuseum,
used_morph: fixRadioSelection(filteredMuseum.used_morph),
used_now: fixRadioSelection(filteredMuseum.used_now),
used_gene: fixRadioSelection(filteredMuseum.used_gene),
},
})
museumId = newMuseum.museum
} else {
@@ -12,7 +12,9 @@ import { useNotify } from '@/hooks/notification'
export const MuseumDetails = () => {
const { id } = useParams()
const isNew = id === 'new'
const { isError, isFetching, data } = useGetMuseumDetailsQuery(id!)
const { isError, isFetching, data } = useGetMuseumDetailsQuery(id!, {
skip: isNew,
})
const [editMuseumRequest, { isLoading: mutationLoading }] = useEditMuseumMutation()
const notify = useNotify()
const navigate = useNavigate()
@@ -20,7 +22,7 @@ export const MuseumDetails = () => {
const tabs: TabType[] = [
{
title: 'Museum',
content: <MuseumInfoTab />,
content: <MuseumInfoTab isNew={isNew} />,
},
{
title: 'Localities',
@@ -48,9 +50,9 @@ export const MuseumDetails = () => {
return (
<DetailView<Museum>
tabs={tabs}
data={!data ? emptyMuseum : data}
data={isNew ? emptyMuseum : data!}
onWrite={onWrite}
isNew={false}
isNew={isNew}
validator={validateMuseum}
deleteFunction={undefined}
hasStagingMode
@@ -2,7 +2,7 @@ import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { Museum } from '@/shared/types'
export const MuseumInfoTab = () => {
export const MuseumInfoTab = ({ isNew }: { isNew?: boolean }) => {
const { textField, radioSelection } = useDetailContext<Museum>()
const museumInfo = [
@@ -45,7 +45,7 @@ export const MuseumInfoTab = () => {
'used-gene'
),
],
['Museum code', textField('museum', { type: 'text', readonly: true })],
['Museum code', textField('museum', { type: 'text', readonly: !isNew })],
]
return (