move validators to shared

This commit is contained in:
arttu
2024-12-08 15:10:56 +02:00
parent a56703ce43
commit 9a2543bec6
28 changed files with 33 additions and 33 deletions
+1 -1
View File
@@ -94,7 +94,7 @@ Docker:
:memo: [Frontend](documentation/components/frontend.md) Explanation of the frontend logic and how to add views
:mag_right: [Validators](frontend/src/validators/) The [readme](frontend/src/validators/README.md) explains how validators are written
:mag_right: [Validators](frontend/src/shared/validators/) The [readme](frontend/src/shared/validators/README.md) explains how validators are written
:mag_right: [Class diagram](documentation/class_diagram.md) See the relations of relevant tables. Notice that it omits some unimportant tables and does not show most columns.
+1 -1
View File
@@ -8,7 +8,7 @@ RUN npm i -g npm
USER node
WORKDIR /usr/src/app
RUN mkdir -p /usr/src/app/frontend/src/validators
RUN mkdir -p /usr/src/app/frontend/src/shared/validators
COPY --chown=node ./backend/package.json backend/
COPY --chown=node ./backend/package-lock.json backend/
+2 -2
View File
@@ -1,7 +1,7 @@
import { EditDataType, EditMetaData, LocalityDetailsType, User } from '../../../frontend/src/shared/types'
import { Role } from '../../../frontend/src/types'
import { validateLocality } from '../../../frontend/src/validators/locality'
import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator'
import { validateLocality } from '../../../frontend/src/shared/validators/locality'
import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator'
import Prisma from '../../prisma/generated/now_test_client'
import { AccessError } from '../middlewares/authorizer'
import { fixBigInt } from '../utils/common'
+2 -2
View File
@@ -1,7 +1,7 @@
import { nowDb } from '../utils/db'
import { EditDataType, ReferenceDetailsType } from '../../../frontend/src/shared/types'
import { ValidationObject } from '../../../frontend/src/validators/validator'
import { validateReference } from '../../../frontend/src/validators/reference'
import { ValidationObject } from '../../../frontend/src/shared/validators/validator'
import { validateReference } from '../../../frontend/src/shared/validators/reference'
import Prisma from '../../prisma/generated/now_test_client'
export const getAllReferences = async () => {
+2 -2
View File
@@ -1,6 +1,6 @@
import { EditDataType, EditMetaData, SpeciesDetailsType } from '../../../frontend/src/shared/types'
import { validateSpecies } from '../../../frontend/src/validators/species'
import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator'
import { validateSpecies } from '../../../frontend/src/shared/validators/species'
import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator'
import Prisma from '../../prisma/generated/now_test_client'
import { fixBigInt } from '../utils/common'
import { logDb, nowDb } from '../utils/db'
+2 -2
View File
@@ -1,8 +1,8 @@
import { logDb, nowDb } from '../utils/db'
import { validateTimeBound } from '../../../frontend/src/validators/timeBound'
import { validateTimeBound } from '../../../frontend/src/shared/validators/timeBound'
import { TimeBoundDetailsType, EditDataType, EditMetaData } from '../../../frontend/src/shared/types'
import Prisma from '../../prisma/generated/now_test_client'
import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator'
import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator'
import { getReferenceDetails } from './reference'
export const getAllTimeBounds = async () => {
+2 -2
View File
@@ -1,7 +1,7 @@
import { logDb, nowDb } from '../utils/db'
import { EditDataType, TimeUnitDetailsType, EditMetaData } from '../../../frontend/src/shared/types'
import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator'
import { validateTimeUnit } from '../../../frontend/src/validators/timeUnit'
import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator'
import { validateTimeUnit } from '../../../frontend/src/shared/validators/timeUnit'
import { getReferenceDetails } from './reference'
export const getAllTimeUnits = async () => {
+1 -1
View File
@@ -67,4 +67,4 @@ This ensures that when multiple components try to update the state at the same t
**Documentation for validators**
[Validators](../../frontend/src/validators/README.md)
[Validators](../../frontend/src/shared/validators/README.md)
@@ -8,6 +8,6 @@ Both editing and creating new entries go via same route in the app. Following th
- A validator and a write functions in [services](../../backend/src/services/species.ts) for the route to call.
- Frontend:
- [Spesific validators](../../frontend/src/validators/species.ts) are defined here.
- [Spesific validators](../../frontend/src/shared/validators/species.ts) are defined here.
- An api-endpoint for edit needs to be defined in [reducers](../../frontend/src/redux/speciesReducer.ts) (this serves for creating a new entry as well)
- An onWrite-function needs to be defined with the help of the api-endpoint and call navigate-function to end up in the [details-view](../../frontend/src/components/Species/SpeciesDetails.tsx) of the edited/created entry. (At the moment there's a 15ms time-out before the navigation for species as sometimes it tried to navigate before knowing where to (no id yet). This could be investigated if this is a more general bug or something weird happening only in species)
@@ -2,7 +2,7 @@
import { ReactNode, createContext, useState, JSX, useEffect, Context, useContext } from 'react'
import { DropdownOption } from '../common/editingComponents'
import { cloneDeep } from 'lodash-es'
import { ValidationObject } from '@/validators/validator'
import { ValidationObject } from '@/shared/validators/validator'
import { EditDataType } from '@/shared/types'
import {
TextFieldOptions,
@@ -14,7 +14,7 @@ import {
import { DetailBrowser } from './DetailBrowser'
import { StagingView } from './StagingView'
import { ErrorBox, ReturnButton, WriteButton } from './components'
import { ValidationObject } from '@/validators/validator'
import { ValidationObject } from '@/shared/validators/validator'
import { EditDataType } from '@/shared/types'
import { usePageContext } from '../Page'
@@ -1,4 +1,4 @@
import { ValidationObject } from '@/validators/validator'
import { ValidationObject } from '@/shared/validators/validator'
import { FieldsWithErrorsType, SetFieldsWithErrorsType } from '../DetailView'
export const checkFieldErrors = (
@@ -7,7 +7,7 @@ import { usePageContext } from '../Page'
import { useDetailContext } from './Context/DetailContext'
import { EditDataType, Editable, Reference } from '@/shared/types'
import { useState, useEffect, Fragment } from 'react'
import { referenceValidator } from '@/validators/validator'
import { referenceValidator } from '@/shared/validators/validator'
export const WriteButton = <T,>({
onWrite,
@@ -17,7 +17,7 @@ import { ProjectTab } from './Tabs/ProjectTab'
import { SpeciesTab } from './Tabs/SpeciesTab'
import { TaphonomyTab } from './Tabs/TaphonomyTab'
import { EditDataType, LocalityDetailsType, ValidationErrors } from '@/shared/types'
import { validateLocality } from '@/validators/locality'
import { validateLocality } from '@/shared/validators/locality'
import { UpdateTab } from '../DetailView/common/UpdateTab'
import { emptyLocality } from '../DetailView/common/defaultValues'
import { useNotify } from '@/hooks/notification'
@@ -10,7 +10,7 @@ import { emptyOption } from '@/components/DetailView/common/misc'
import { CoordinateSelectionMap } from '@/components/Map/CoordinateSelectionMap'
import { useState } from 'react'
import { convertDmsToDec, convertDecToDms } from '@/util/coordinateConversion'
import { validCountries } from '@/validators/countryList'
import { validCountries } from '@/shared/validators/countryList'
export const LocalityTab = () => {
const { textField, radioSelection, dropdown, dropdownWithSearch, mode, bigTextField } =
@@ -9,7 +9,7 @@ import {
} from '@/redux/referenceReducer'
import { EditDataType, ReferenceDetailsType, ValidationErrors } from '@/shared/types'
import { emptyReference } from '../DetailView/common/defaultValues'
import { validateReference } from '@/validators/reference'
import { validateReference } from '@/shared/validators/reference'
import { useNotify } from '@/hooks/notification'
import { useEffect } from 'react'
@@ -12,7 +12,7 @@ import { TaxonomyTab } from './Tabs/TaxonomyTab'
import { TeethTab } from './Tabs/TeethTab'
import { UpdateTab } from '../DetailView/common/UpdateTab'
import { EditDataType, SpeciesDetailsType, ValidationErrors } from '@/shared/types'
import { validateSpecies } from '@/validators/species'
import { validateSpecies } from '@/shared/validators/species'
import { emptySpecies } from '../DetailView/common/defaultValues'
import { useNotify } from '@/hooks/notification'
import { useEffect } from 'react'
@@ -1,4 +1,4 @@
import { EditDataType, TimeBoundDetailsType, ValidationErrors } from '@/shared/types.js'
import { EditDataType, TimeBoundDetailsType, ValidationErrors } from '@/shared/types'
import { useNotify } from '@/hooks/notification.ts'
import { CircularProgress } from '@mui/material'
import { useEffect } from 'react'
@@ -8,12 +8,12 @@ import {
useEditTimeBoundMutation,
useGetTimeBoundDetailsQuery,
} from '../../redux/timeBoundReducer'
import { emptyTimeBound } from '../DetailView/common/defaultValues.ts'
import { UpdateTab } from '../DetailView/common/UpdateTab.tsx'
import { emptyTimeBound } from '../DetailView/common/defaultValues'
import { UpdateTab } from '../DetailView/common/UpdateTab'
import { DetailView, TabType } from '../DetailView/DetailView'
import { BoundTab } from './Tabs/BoundTab'
import { TimeUnitTab } from './Tabs/TimeUnitTab.tsx'
import { validateTimeBound } from '@/validators/timeBound.ts'
import { validateTimeBound } from '@/shared/validators/timeBound'
export const TimeBoundDetails = () => {
const { id } = useParams()
@@ -97,7 +97,7 @@ export const TimeBoundDetails = () => {
]
return (
<DetailView
<DetailView<TimeBoundDetailsType>
tabs={tabs}
data={isNew ? emptyTimeBound : data!}
hasStagingMode
@@ -13,7 +13,7 @@ import { UpdateTab } from '../DetailView/common/UpdateTab'
import { DetailView, TabType } from '../DetailView/DetailView'
import { LocalityTab } from './Tabs/LocalityTab'
import { TimeUnitTab } from './Tabs/TimeUnitTab'
import { validateTimeUnit } from '@/validators/timeUnit'
import { validateTimeUnit } from '@/shared/validators/timeUnit'
import { makeEditData } from '../DetailView/Context/DetailContext'
export const TimeUnitDetails = () => {
@@ -1,4 +1,4 @@
import { EditDataType, LocalityDetailsType } from '../shared/types'
import { EditDataType, LocalityDetailsType } from '../types'
import { Validators, validator } from './validator'
import { validCountries } from './countryList'
@@ -1,4 +1,4 @@
import { EditDataType, ReferenceDetailsType, ReferenceAuthorType, ReferenceJournalType } from '../shared/types'
import { EditDataType, ReferenceDetailsType, ReferenceAuthorType, ReferenceJournalType } from '../types'
import { Validators, validator, ValidationError } from './validator'
const authorCheck: (data: ReferenceAuthorType[]) => ValidationError = (data: ReferenceAuthorType[]) => {
@@ -1,4 +1,4 @@
import { EditDataType, SpeciesDetailsType } from '../shared/types'
import { EditDataType, SpeciesDetailsType } from '../types'
import { Validators, validator } from './validator'
export const validateSpecies = (
@@ -1,4 +1,4 @@
import { EditDataType, TimeBoundDetailsType } from '../shared/types'
import { EditDataType, TimeBoundDetailsType } from '../types'
import { Validators, validator } from './validator'
export const validateTimeBound = (
@@ -1,4 +1,4 @@
import { EditDataType, TimeUnitDetailsType } from '../shared/types'
import { EditDataType, TimeUnitDetailsType } from '../types'
import { Validators, validator } from './validator'
export const validateTimeUnit = (editData: EditDataType<TimeUnitDetailsType>, fieldName: keyof TimeUnitDetailsType) => {