mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
move validators to shared
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
@@ -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) => {
|
||||
Reference in New Issue
Block a user