diff --git a/backend/src/services/write/locality.ts b/backend/src/services/write/locality.ts index 837a4be4..1104dd54 100644 --- a/backend/src/services/write/locality.ts +++ b/backend/src/services/write/locality.ts @@ -2,6 +2,7 @@ import { EditDataType, LocalityDetailsType, Reference } from '../../../../fronte import { NOW_DB_NAME } from '../../utils/config' import { WriteHandler } from '../writeOperations/writeHandler' import { getFieldsOfTables } from '../../utils/db' +import { getHomininSkeletalRemains } from '../../../../frontend/src/types' export const writeLocality = async ( locality: EditDataType, @@ -25,6 +26,8 @@ export const writeLocality = async ( type: locality.lid ? 'update' : 'add', }) + locality.hominin_skeletal_remains = getHomininSkeletalRemains(locality) + try { await writeHandler.start() diff --git a/frontend/src/components/Locality/Tabs/ArchaeologyTab.tsx b/frontend/src/components/Locality/Tabs/ArchaeologyTab.tsx index 76e895ab..259a43a3 100644 --- a/frontend/src/components/Locality/Tabs/ArchaeologyTab.tsx +++ b/frontend/src/components/Locality/Tabs/ArchaeologyTab.tsx @@ -2,6 +2,7 @@ import { LocalityDetailsType } from '@/backendTypes' import { emptyOption } from '@/components/DetailView/common/misc' import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers' import { useDetailContext } from '@/components/DetailView/Context/DetailContext' +import { getHomininSkeletalRemains } from '@/types' export const ArchaeologyTab = () => { const { dropdown, radioSelection, data } = useDetailContext() @@ -41,21 +42,8 @@ export const ArchaeologyTab = () => { { display: 'Tabun B', value: 'tabun_b' }, ] - const hominins = [ - 'sahelanthropus', - 'orrorin', - 'ardipithecus', - 'kenyanthropus', - 'australopithecus', - 'paranthropus', - 'homo', - ] - const archaeology = [ - [ - 'Hominin skeletal remains', - data.now_ls.find(({ com_species }) => hominins.includes(com_species.genus_name.toLowerCase())) ? 'Yes' : 'No', - ], + ['Hominin skeletal remains', getHomininSkeletalRemains(data) ? 'Yes' : 'No'], [ 'Stone tool cut marks on bones', radioSelection( diff --git a/frontend/src/types.ts b/frontend/src/types.ts index dedcf3ea..51ce0e9e 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -8,7 +8,7 @@ export enum Role { ReadOnly = 7, } -import { LocalityDetailsType } from '../src/backendTypes' +import { EditDataType, LocalityDetailsType } from '../src/backendTypes' export const calculateMeanHypsodonty = (locality: LocalityDetailsType) => { // Mean hypsodonty calculation has been made based on html/include/database.php line 2567 onwards @@ -44,3 +44,18 @@ export const calculateMeanHypsodonty = (locality: LocalityDetailsType) => { const meanHypsodonty = species.length > 0 ? sum / (species.length * 1.0) : 0.0 return parseFloat((Math.floor(meanHypsodonty * 100) / 100).toFixed(2)) } + +const hominins = [ + 'sahelanthropus', + 'orrorin', + 'ardipithecus', + 'kenyanthropus', + 'australopithecus', + 'paranthropus', + 'homo', +] + +export const getHomininSkeletalRemains = (locality: EditDataType) => + !!locality.now_ls.find( + ({ com_species }) => com_species?.genus_name && hominins.includes(com_species.genus_name.toLowerCase()) + )