mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
creating new museums works now
This commit is contained in:
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user