refactor: move shared code to frontend/src/shared

This commit is contained in:
ShootingStar91
2024-11-25 21:48:40 +02:00
parent 5f337932e7
commit 38c0b47705
130 changed files with 148 additions and 148 deletions
+4 -4
View File
@@ -4,13 +4,13 @@ ENV TZ="Europe/Helsinki"
RUN npm i -g npm RUN npm i -g npm
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN mkdir -p /usr/src/app/frontend/src/validators RUN mkdir -p /usr/src/app/frontend/src/shared/validators
USER node USER node
COPY --chown=node frontend/src/backendTypes.d.ts /usr/src/app/frontend/src/backendTypes.d.ts COPY --chown=node frontend/src/shared/types.d.ts /usr/src/app/frontend/src/shared/types.d.ts
COPY --chown=node frontend/src/types.ts /usr/src/app/frontend/src/types.ts COPY --chown=node frontend/src/types.ts /usr/src/app/frontend/src/types.ts
COPY --chown=node frontend/src/validators /usr/src/app/frontend/src/validators COPY --chown=node frontend/src/validators /usr/src/app/frontend/src/shared/validators
COPY --chown=node backend/package.json backend/ COPY --chown=node backend/package.json backend/
COPY --chown=node backend/package-lock.json backend/ COPY --chown=node backend/package-lock.json backend/
COPY --chown=node backend/prisma/schema.prisma backend COPY --chown=node backend/prisma/schema.prisma backend
@@ -41,7 +41,7 @@ RUN chown node:node /usr/src/app -R
WORKDIR /usr/src/app WORKDIR /usr/src/app
USER node USER node
COPY --from=backend-build --chown=node /usr/src/app/frontend/src/backendTypes.d.ts ../frontend/src/backendTypes.d.ts COPY --from=backend-build --chown=node /usr/src/app/frontend/src/shared/types.d.ts ../frontend/src/shared/types.d.ts
COPY --from=backend-build --chown=node /usr/src/app/frontend/src/types.ts ../frontend/src/types.ts COPY --from=backend-build --chown=node /usr/src/app/frontend/src/types.ts ../frontend/src/types.ts
COPY --from=backend-build --chown=node /usr/src/app/backend/build . COPY --from=backend-build --chown=node /usr/src/app/backend/build .
COPY --from=backend-build --chown=node /usr/src/app/backend/node_modules ./backend/node_modules COPY --from=backend-build --chown=node /usr/src/app/backend/node_modules ./backend/node_modules
+1 -1
View File
@@ -8,7 +8,7 @@ RUN npm i -g npm
USER node USER node
WORKDIR /usr/src/app 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.json backend/
COPY --chown=node ./backend/package-lock.json backend/ COPY --chown=node ./backend/package-lock.json backend/
@@ -1,4 +1,4 @@
import type { CrossSearch } from '../../../../frontend/src/backendTypes' import type { CrossSearch } from '../../../../frontend/src/shared/types'
import { beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { resetDatabase, send, resetDatabaseTimeout, login, logout } from '../utils' import { resetDatabase, send, resetDatabaseTimeout, login, logout } from '../utils'
import { pool } from '../../utils/db' import { pool } from '../../utils/db'
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { LocalityDetailsType } from '../../../../frontend/src/backendTypes' import { LocalityDetailsType } from '../../../../frontend/src/shared/types'
import { editedLocality, newLocalityBasis } from './data' import { editedLocality, newLocalityBasis } from './data'
import { login, resetDatabase, send, resetDatabaseTimeout } from '../utils' import { login, resetDatabase, send, resetDatabaseTimeout } from '../utils'
import { pool } from '../../utils/db' import { pool } from '../../utils/db'
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/backendTypes' import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/shared/types'
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { newLocalityBasis } from './data' import { newLocalityBasis } from './data'
import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils' import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils'
+1 -1
View File
@@ -1,4 +1,4 @@
import { Reference, SpeciesDetailsType } from '../../../../frontend/src/backendTypes' import { Reference, SpeciesDetailsType } from '../../../../frontend/src/shared/types'
export const newLocalityBasis = { export const newLocalityBasis = {
bfa_max: 'bahean', bfa_max: 'bahean',
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/backendTypes' import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/shared/types'
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { editedLocality } from './data' import { editedLocality } from './data'
import { login, resetDatabase, send, testLogRows, resetDatabaseTimeout } from '../utils' import { login, resetDatabase, send, testLogRows, resetDatabaseTimeout } from '../utils'
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { ReferenceDetailsType } from '../../../../frontend/src/backendTypes' import { ReferenceDetailsType } from '../../../../frontend/src/shared/types'
//import { LogRow } from '../../services/write/writeOperations/types' //import { LogRow } from '../../services/write/writeOperations/types'
import { newReferenceBasis, emptyReferenceBasis } from './data' import { newReferenceBasis, emptyReferenceBasis } from './data'
import { login, logout, resetDatabase, send, /*testLogRows,*/ resetDatabaseTimeout, noPermError } from '../utils' import { login, logout, resetDatabase, send, /*testLogRows,*/ resetDatabaseTimeout, noPermError } from '../utils'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, /*EditMetaData, Reference,*/ ReferenceDetailsType } from '../../../../frontend/src/backendTypes' import { EditDataType, /*EditMetaData, Reference,*/ ReferenceDetailsType } from '../../../../frontend/src/shared/types'
/* /*
"ref_type_id": 1, "ref_type": "Journal"' "ref_type_id": 1, "ref_type": "Journal"'
@@ -1,7 +1,7 @@
import { afterAll, beforeAll, beforeEach, describe, expect, it } from '@jest/globals' import { afterAll, beforeAll, beforeEach, describe, expect, it } from '@jest/globals'
import { pool } from '../../utils/db' import { pool } from '../../utils/db'
import { login, logout, resetDatabase, resetDatabaseTimeout, send } from '../utils' import { login, logout, resetDatabase, resetDatabaseTimeout, send } from '../utils'
import { ReferenceDetailsType } from '../../../../frontend/src/backendTypes' import { ReferenceDetailsType } from '../../../../frontend/src/shared/types'
import Prisma from '../../../prisma/generated/now_test_client' import Prisma from '../../../prisma/generated/now_test_client'
import { newReferenceBasis } from './data' import { newReferenceBasis } from './data'
+1 -1
View File
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/backendTypes' import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/shared/types'
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { newSpeciesBasis, newSpeciesWithoutRequiredFields } from './data' import { newSpeciesBasis, newSpeciesWithoutRequiredFields } from './data'
import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils' import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, EditMetaData, Reference, SpeciesDetailsType } from '../../../../frontend/src/backendTypes' import { EditDataType, EditMetaData, Reference, SpeciesDetailsType } from '../../../../frontend/src/shared/types'
export const newSpeciesBasis: EditDataType<SpeciesDetailsType> = { export const newSpeciesBasis: EditDataType<SpeciesDetailsType> = {
class_name: 'Mammalia', class_name: 'Mammalia',
+1 -1
View File
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { EditMetaData, SpeciesDetailsType } from '../../../../frontend/src/backendTypes' import { EditMetaData, SpeciesDetailsType } from '../../../../frontend/src/shared/types'
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { login, resetDatabase, send, testLogRows, resetDatabaseTimeout } from '../utils' import { login, resetDatabase, send, testLogRows, resetDatabaseTimeout } from '../utils'
import { editedSpecies } from './data' import { editedSpecies } from './data'
@@ -2,7 +2,7 @@ import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/glo
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils' import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils'
import { newTimeBoundBasis } from './data' import { newTimeBoundBasis } from './data'
import { TimeBoundDetailsType } from '../../../../frontend/src/backendTypes' import { TimeBoundDetailsType } from '../../../../frontend/src/shared/types'
import { pool } from '../../utils/db' import { pool } from '../../utils/db'
let createdTimeBound: TimeBoundDetailsType | null = null let createdTimeBound: TimeBoundDetailsType | null = null
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, EditMetaData, Reference, TimeBoundDetailsType } from '../../../../frontend/src/backendTypes' import { EditDataType, EditMetaData, Reference, TimeBoundDetailsType } from '../../../../frontend/src/shared/types'
export const newTimeBoundBasis: EditDataType<TimeBoundDetailsType & EditMetaData> = { export const newTimeBoundBasis: EditDataType<TimeBoundDetailsType & EditMetaData> = {
b_name: 'C2N-y', b_name: 'C2N-y',
@@ -1,7 +1,7 @@
import { describe, it, beforeAll, afterAll, beforeEach, expect } from '@jest/globals' import { describe, it, beforeAll, afterAll, beforeEach, expect } from '@jest/globals'
import { editedTimeBound, newTimeBoundBasis } from './data' import { editedTimeBound, newTimeBoundBasis } from './data'
import { send, resetDatabase, login, resetDatabaseTimeout, testLogRows } from '../utils' import { send, resetDatabase, login, resetDatabaseTimeout, testLogRows } from '../utils'
import { TimeBoundDetailsType } from '../../../../frontend/src/backendTypes' import { TimeBoundDetailsType } from '../../../../frontend/src/shared/types'
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { pool } from '../../utils/db' import { pool } from '../../utils/db'
@@ -1,5 +1,5 @@
import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals'
import { TimeUnitDetailsType } from '../../../../frontend/src/backendTypes' import { TimeUnitDetailsType } from '../../../../frontend/src/shared/types'
import { LogRow } from '../../services/write/writeOperations/types' import { LogRow } from '../../services/write/writeOperations/types'
import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils' import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils'
import { newTimeUnitBasis } from './data' import { newTimeUnitBasis } from './data'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, EditMetaData, Reference, TimeUnitDetailsType } from '../../../../frontend/src/backendTypes' import { EditDataType, EditMetaData, Reference, TimeUnitDetailsType } from '../../../../frontend/src/shared/types'
export const newTimeUnitBasis: EditDataType<TimeUnitDetailsType & EditMetaData> = { export const newTimeUnitBasis: EditDataType<TimeUnitDetailsType & EditMetaData> = {
tu_display_name: 'Bahean Test', tu_display_name: 'Bahean Test',
@@ -1,5 +1,5 @@
import { describe, it, beforeEach, beforeAll, afterAll, expect } from '@jest/globals' import { describe, it, beforeEach, beforeAll, afterAll, expect } from '@jest/globals'
import { TimeUnitDetailsType, EditDataType, EditMetaData } from '../../../../frontend/src/backendTypes' import { TimeUnitDetailsType, EditDataType, EditMetaData } from '../../../../frontend/src/shared/types'
import { login, resetDatabase, send, resetDatabaseTimeout, testLogRows } from '../utils' import { login, resetDatabase, send, resetDatabaseTimeout, testLogRows } from '../utils'
import { editedTimeUnit, newTimeUnitBasis, conflictingTimeUnit } from './data' import { editedTimeUnit, newTimeUnitBasis, conflictingTimeUnit } from './data'
import { pool } from '../../utils/db' import { pool } from '../../utils/db'
+1 -1
View File
@@ -1,7 +1,7 @@
import request from 'supertest' import request from 'supertest'
import app from '../app' import app from '../app'
import { expect } from '@jest/globals' import { expect } from '@jest/globals'
import { UpdateLog } from '../../../frontend/src/backendTypes' import { UpdateLog } from '../../../frontend/src/shared/types'
import { LogRow } from '../services/write/writeOperations/types' import { LogRow } from '../services/write/writeOperations/types'
let token: string | null = null let token: string | null = null
+1 -1
View File
@@ -2,7 +2,7 @@ import { Middleware } from '../types'
import { SECRET } from '../utils/config' import { SECRET } from '../utils/config'
import jwt, { Secret, TokenExpiredError } from 'jsonwebtoken' import jwt, { Secret, TokenExpiredError } from 'jsonwebtoken'
import { nowDb } from '../utils/db' import { nowDb } from '../utils/db'
import { User } from '../../../frontend/src/backendTypes' import { User } from '../../../frontend/src/shared/types'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
/* /*
+1 -1
View File
@@ -1,7 +1,7 @@
import { Request, Router } from 'express' import { Request, Router } from 'express'
import { getAllLocalities, getLocalityDetails, validateEntireLocality } from '../services/locality' import { getAllLocalities, getLocalityDetails, validateEntireLocality } from '../services/locality'
import { fixBigInt } from '../utils/common' import { fixBigInt } from '../utils/common'
import { EditDataType, EditMetaData, LocalityDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, EditMetaData, LocalityDetailsType } from '../../../frontend/src/shared/types'
import { requireOneOf } from '../middlewares/authorizer' import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { deleteLocality, writeLocality } from '../services/write/locality' import { deleteLocality, writeLocality } from '../services/write/locality'
+1 -1
View File
@@ -11,7 +11,7 @@ import {
} from '../services/reference' } from '../services/reference'
import { requireOneOf } from '../middlewares/authorizer' import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { EditMetaData, ReferenceDetailsType, EditDataType } from '../../../frontend/src/backendTypes' import { EditMetaData, ReferenceDetailsType, EditDataType } from '../../../frontend/src/shared/types'
import { deleteReference, writeReference } from '../services/write/reference' import { deleteReference, writeReference } from '../services/write/reference'
const router = Router() const router = Router()
+1 -1
View File
@@ -1,7 +1,7 @@
import { Request, Router } from 'express' import { Request, Router } from 'express'
import { getAllSpecies, getSpeciesDetails, validateEntireSpecies } from '../services/species' import { getAllSpecies, getSpeciesDetails, validateEntireSpecies } from '../services/species'
import { fixBigInt } from '../utils/common' import { fixBigInt } from '../utils/common'
import { EditMetaData, SpeciesDetailsType } from '../../../frontend/src/backendTypes' import { EditMetaData, SpeciesDetailsType } from '../../../frontend/src/shared/types'
import { deleteSpecies, writeSpecies } from '../services/write/species' import { deleteSpecies, writeSpecies } from '../services/write/species'
import { requireOneOf } from '../middlewares/authorizer' import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
+1 -1
View File
@@ -1,5 +1,5 @@
import { Request, Router } from 'express' import { Request, Router } from 'express'
import { EditDataType, EditMetaData, TimeBoundDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, EditMetaData, TimeBoundDetailsType } from '../../../frontend/src/shared/types'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { requireOneOf } from '../middlewares/authorizer' import { requireOneOf } from '../middlewares/authorizer'
import { import {
+1 -1
View File
@@ -1,5 +1,5 @@
import { Request, Router } from 'express' import { Request, Router } from 'express'
import { EditDataType, EditMetaData, TimeUnitDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, EditMetaData, TimeUnitDetailsType } from '../../../frontend/src/shared/types'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { requireOneOf } from '../middlewares/authorizer' import { requireOneOf } from '../middlewares/authorizer'
import { getAllSequences } from '../services/sequence' import { getAllSequences } from '../services/sequence'
+1 -1
View File
@@ -1,4 +1,4 @@
import { User, CrossSearch } from '../../../frontend/src/backendTypes' import { User, CrossSearch } from '../../../frontend/src//shared/types'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { nowDb } from '../utils/db' import { nowDb } from '../utils/db'
import { import {
+3 -3
View File
@@ -1,7 +1,7 @@
import { EditDataType, LocalityDetailsType, User } from '../../../frontend/src/backendTypes' import { EditDataType, LocalityDetailsType, User } from '../../../frontend/src/shared/types'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { validateLocality } from '../../../frontend/src/validators/locality' import { validateLocality } from '../../../frontend/src/shared/validators/locality'
import { ValidationObject } from '../../../frontend/src/validators/validator' import { ValidationObject } from '../../../frontend/src/shared/validators/validator'
import Prisma from '../../prisma/generated/now_test_client' import Prisma from '../../prisma/generated/now_test_client'
import { AccessError } from '../middlewares/authorizer' import { AccessError } from '../middlewares/authorizer'
import { fixBigInt } from '../utils/common' import { fixBigInt } from '../utils/common'
@@ -1,5 +1,5 @@
import { PoolConnection } from 'mariadb' import { PoolConnection } from 'mariadb'
import { User } from '../../../frontend/src/backendTypes' import { User } from '../../../frontend/src/shared/types'
import { NOW_DB_NAME } from '../utils/config' import { NOW_DB_NAME } from '../utils/config'
import { Role } from '../../../frontend/src/types' import { Role } from '../../../frontend/src/types'
import { pool } from '../utils/db' import { pool } from '../utils/db'
+3 -3
View File
@@ -1,7 +1,7 @@
import { nowDb } from '../utils/db' import { nowDb } from '../utils/db'
import { EditDataType, ReferenceDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, ReferenceDetailsType } from '../../../frontend/src/shared/types'
import { ValidationObject } from '../../../frontend/src/validators/validator' import { ValidationObject } from '../../../frontend/src/shared/validators/validator'
import { validateReference } from '../../../frontend/src/validators/reference' import { validateReference } from '../../../frontend/src/shared/validators/reference'
import Prisma from '../../prisma/generated/now_test_client' import Prisma from '../../prisma/generated/now_test_client'
export const getAllReferences = async () => { export const getAllReferences = async () => {
+3 -3
View File
@@ -1,6 +1,6 @@
import { EditDataType, SpeciesDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, SpeciesDetailsType } from '../../../frontend/src/shared/types'
import { validateSpecies } from '../../../frontend/src/validators/species' import { validateSpecies } from '../../../frontend/src/shared/validators/species'
import { ValidationObject } from '../../../frontend/src/validators/validator' import { ValidationObject } from '../../../frontend/src/shared/validators/validator'
import Prisma from '../../prisma/generated/now_test_client' import Prisma from '../../prisma/generated/now_test_client'
import { fixBigInt } from '../utils/common' import { fixBigInt } from '../utils/common'
import { logDb, nowDb } from '../utils/db' import { logDb, nowDb } from '../utils/db'
+3 -3
View File
@@ -1,8 +1,8 @@
import { logDb, nowDb } from '../utils/db' import { logDb, nowDb } from '../utils/db'
import { validateTimeBound } from '../../../frontend/src/validators/timeBound' import { validateTimeBound } from '../../../frontend/src/shared/validators/timeBound'
import { TimeBoundDetailsType, EditDataType } from '../../../frontend/src/backendTypes' import { TimeBoundDetailsType, EditDataType } from '../../../frontend/src/shared/types'
import Prisma from '../../prisma/generated/now_test_client' import Prisma from '../../prisma/generated/now_test_client'
import { ValidationObject } from '../../../frontend/src/validators/validator' import { ValidationObject } from '../../../frontend/src/shared/validators/validator'
export const getAllTimeBounds = async () => { export const getAllTimeBounds = async () => {
const result = await nowDb.now_tu_bound.findMany({ const result = await nowDb.now_tu_bound.findMany({
+3 -3
View File
@@ -1,7 +1,7 @@
import { logDb, nowDb } from '../utils/db' import { logDb, nowDb } from '../utils/db'
import { EditDataType, TimeUnitDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, TimeUnitDetailsType } from '../../../frontend/src/shared/types'
import { ValidationObject } from '../../../frontend/src/validators/validator' import { ValidationObject } from '../../../frontend/src/shared/validators/validator'
import { validateTimeUnit } from '../../../frontend/src/validators/timeUnit' import { validateTimeUnit } from '../../../frontend/src/shared/validators/timeUnit'
export const getAllTimeUnits = async () => { export const getAllTimeUnits = async () => {
const result = await nowDb.now_time_unit.findMany({ const result = await nowDb.now_time_unit.findMany({
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, FixBigInt, ReferenceAuthorType } from '../../../../frontend/src/backendTypes' import { EditDataType, FixBigInt, ReferenceAuthorType } from '../../../../frontend/src/shared/types'
import { getFieldsOfTables, nowDb } from '../../utils/db' import { getFieldsOfTables, nowDb } from '../../utils/db'
import { filterAllowedKeys } from './writeOperations/utils' import { filterAllowedKeys } from './writeOperations/utils'
import Prisma from '../../../prisma/generated/now_test_client' import Prisma from '../../../prisma/generated/now_test_client'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, FixBigInt, ReferenceJournalType } from '../../../../frontend/src/backendTypes' import { EditDataType, FixBigInt, ReferenceJournalType } from '../../../../frontend/src/shared/types'
import { getFieldsOfTables, nowDb } from '../../utils/db' import { getFieldsOfTables, nowDb } from '../../utils/db'
import { filterAllowedKeys } from './writeOperations/utils' import { filterAllowedKeys } from './writeOperations/utils'
import Prisma from '../../../prisma/generated/now_test_client' import Prisma from '../../../prisma/generated/now_test_client'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, LocalityDetailsType, Reference, User } from '../../../../frontend/src/backendTypes' import { EditDataType, LocalityDetailsType, Reference, User } from '../../../../frontend/src/shared/types'
import { NOW_DB_NAME } from '../../utils/config' import { NOW_DB_NAME } from '../../utils/config'
import { WriteHandler } from './writeOperations/writeHandler' import { WriteHandler } from './writeOperations/writeHandler'
import { getFieldsOfTables } from '../../utils/db' import { getFieldsOfTables } from '../../utils/db'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, FixBigInt, ReferenceDetailsType } from '../../../../frontend/src/backendTypes' import { EditDataType, FixBigInt, ReferenceDetailsType } from '../../../../frontend/src/shared/types'
import { getFieldsOfTables, nowDb } from '../../utils/db' import { getFieldsOfTables, nowDb } from '../../utils/db'
import { getReferenceDetails } from '../reference' import { getReferenceDetails } from '../reference'
import { filterAllowedKeys, convertToPrismaDate } from './writeOperations/utils' import { filterAllowedKeys, convertToPrismaDate } from './writeOperations/utils'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, FixBigInt, Reference, SpeciesDetailsType, User } from '../../../../frontend/src/backendTypes' import { EditDataType, FixBigInt, Reference, SpeciesDetailsType, User } from '../../../../frontend/src/shared/types'
import { NOW_DB_NAME } from '../../utils/config' import { NOW_DB_NAME } from '../../utils/config'
import { WriteHandler } from './writeOperations/writeHandler' import { WriteHandler } from './writeOperations/writeHandler'
import { getFieldsOfTables } from '../../utils/db' import { getFieldsOfTables } from '../../utils/db'
+1 -1
View File
@@ -5,7 +5,7 @@ import {
LocalityDetailsType, LocalityDetailsType,
TimeUnitDetailsType, TimeUnitDetailsType,
User, User,
} from '../../../../frontend/src/backendTypes' } from '../../../../frontend/src/shared/types'
import { NOW_DB_NAME } from '../../utils/config' import { NOW_DB_NAME } from '../../utils/config'
import { WriteHandler } from './writeOperations/writeHandler' import { WriteHandler } from './writeOperations/writeHandler'
import { getFieldsOfTables } from '../../utils/db' import { getFieldsOfTables } from '../../utils/db'
+1 -1
View File
@@ -4,7 +4,7 @@ import {
TimeUnitDetailsType, TimeUnitDetailsType,
LocalityDetailsType, LocalityDetailsType,
User, User,
} from '../../../../frontend/src/backendTypes' } from '../../../../frontend/src/shared/types'
import { NOW_DB_NAME } from '../../utils/config' import { NOW_DB_NAME } from '../../utils/config'
import { WriteHandler } from './writeOperations/writeHandler' import { WriteHandler } from './writeOperations/writeHandler'
import { getFieldsOfTables } from '../../utils/db' import { getFieldsOfTables } from '../../utils/db'
@@ -1,4 +1,4 @@
import { Reference } from '../../../../../../frontend/src/backendTypes' import { Reference } from '../../../../../../frontend/src/shared/types'
import { COORDINATOR } from '../../../../utils/config' import { COORDINATOR } from '../../../../utils/config'
import { AllowedTables, ActionType, Item, LogRow, PrimaryTables, WriteItem, UpdateEntry } from '../types' import { AllowedTables, ActionType, Item, LogRow, PrimaryTables, WriteItem, UpdateEntry } from '../types'
import { WriteHandler } from '../writeHandler' import { WriteHandler } from '../writeHandler'
@@ -1,4 +1,4 @@
import { Reference } from '../../../../../../frontend/src/backendTypes' import { Reference } from '../../../../../../frontend/src/shared/types'
import { LOG_DB_NAME } from '../../../../utils/config' import { LOG_DB_NAME } from '../../../../utils/config'
import { LogRow, ActionType, AllowedTables, UpdateEntry } from '../types' import { LogRow, ActionType, AllowedTables, UpdateEntry } from '../types'
import { WriteHandler } from '../writeHandler' import { WriteHandler } from '../writeHandler'
@@ -1,4 +1,4 @@
import { Editable } from '../../../../../frontend/src/backendTypes' import { Editable } from '../../../../../frontend/src/shared/types'
import { DbWriteItem } from './databaseHandler' import { DbWriteItem } from './databaseHandler'
import { DbValue } from './types' import { DbValue } from './types'
@@ -1,4 +1,4 @@
import { Reference, RowState } from '../../../../../frontend/src/backendTypes' import { Reference, RowState } from '../../../../../frontend/src/shared/types'
import { logger } from '../../../utils/logger' import { logger } from '../../../utils/logger'
import { logAllUpdates } from './updateLogger/prepareUpdates' import { logAllUpdates } from './updateLogger/prepareUpdates'
import { DatabaseHandler, DbWriteItem } from './databaseHandler' import { DatabaseHandler, DbWriteItem } from './databaseHandler'
+1 -1
View File
@@ -1,4 +1,4 @@
import { EditDataType, TimeUnitDetailsType, TimeBoundDetailsType } from '../../../frontend/src/backendTypes' import { EditDataType, TimeUnitDetailsType, TimeBoundDetailsType } from '../../../frontend/src/shared/types'
import { nowDb } from './db' import { nowDb } from './db'
import { calculateLocalityMaxAge, calculateLocalityMinAge } from './ageCalculator' import { calculateLocalityMaxAge, calculateLocalityMinAge } from './ageCalculator'
+1 -1
View File
@@ -45,7 +45,7 @@ The context can also be used to access, for example, the **setEditData** setter,
**Documentation for validators** **Documentation for validators**
[Validators](../../frontend/src/validators/README.md) [Validators](../../frontend/src/shared/validators/README.md)
**editingComponents** **editingComponents**
+1 -1
View File
@@ -38,7 +38,7 @@ Not possible trough the interface. However if still necessary, here's some thing
* You should create a new entry to the table for all of the connections between the new field & the 14 reference types & set the visibility to true or false depending on if you want the new field to be visible to the reference type * You should create a new entry to the table for all of the connections between the new field & the 14 reference types & set the visibility to true or false depending on if you want the new field to be visible to the reference type
* The field itself is not defined in one specific place and is something more of an emergent entity from all of these connections * The field itself is not defined in one specific place and is something more of an emergent entity from all of these connections
* The new field's field_name needs to match the name of the field in ref_ref where the information will be saved * The new field's field_name needs to match the name of the field in ref_ref where the information will be saved
* Most of the types relating to references need to be edited in forntend/src/backendTypes.ts * Most of the types relating to references need to be edited in forntend/src/shared/types.ts
* You can accomplish the above in testdata/sqlfiles/now_test.sql by adding some rows. Rows 3200+ add the existing fields so looks for help there * You can accomplish the above in testdata/sqlfiles/now_test.sql by adding some rows. Rows 3200+ add the existing fields so looks for help there
@@ -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. - A validator and a write functions in [services](../../backend/src/services/species.ts) for the route to call.
- Frontend: - 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 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) - 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)
@@ -10,7 +10,7 @@ Following things are needed to create a new page with a table (examples are all
- Earlier we used prisma.findMany-function to fetch the data, but with cross search's 90k rows, the GET-call took approx 40s in staging environment. We found out that prisma.rawSQL with LEFT JOIN would reduce time of the call from 10s to 3s in dev environment. This reduced the call time for staging to approx 10s. Could possible be implemented for other tables also for better performance. - Earlier we used prisma.findMany-function to fetch the data, but with cross search's 90k rows, the GET-call took approx 40s in staging environment. We found out that prisma.rawSQL with LEFT JOIN would reduce time of the call from 10s to 3s in dev environment. This reduced the call time for staging to approx 10s. Could possible be implemented for other tables also for better performance.
- Frontend: - Frontend:
- Create necessary types in [backendtypes](../../frontend/src/backendTypes.d.ts) - Create necessary types in [backendtypes](../../frontend/src/shared/types.d.ts)
- Create a button for the component in [navigation bar](../../frontend/src/components/NavBar.tsx) - Create a button for the component in [navigation bar](../../frontend/src/components/NavBar.tsx)
- Create a relevant page-object for [Pages](../../frontend/src/components/pages.tsx) - Create a relevant page-object for [Pages](../../frontend/src/components/pages.tsx)
- Add a route for the component to [App](../../frontend/src/App.tsx) - Add a route for the component to [App](../../frontend/src/App.tsx)
+1 -1
View File
@@ -1,5 +1,5 @@
import { MRT_ColumnDef } from 'material-react-table' import { MRT_ColumnDef } from 'material-react-table'
import { Reference } from './backendTypes' import { Reference } from './shared/types'
import { Cell } from './components/commonComponents' import { Cell } from './components/commonComponents'
export const formatLastLoginDate = (date: Date) => { export const formatLastLoginDate = (date: Date) => {
@@ -1,6 +1,6 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { CrossSearch } from '@/backendTypes' import { CrossSearch } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
import { useGetAllCrossSearchQuery } from '@/redux/crossSearchReducer' import { useGetAllCrossSearchQuery } from '@/redux/crossSearchReducer'
@@ -2,8 +2,8 @@
import { ReactNode, createContext, useState, JSX, useEffect, Context, useContext } from 'react' import { ReactNode, createContext, useState, JSX, useEffect, Context, useContext } from 'react'
import { DropdownOption } from '../common/editingComponents' import { DropdownOption } from '../common/editingComponents'
import { cloneDeep } from 'lodash-es' import { cloneDeep } from 'lodash-es'
import { ValidationObject } from '@/validators/validator' import { ValidationObject } from '@/shared/validators/validator'
import { EditDataType } from '@/backendTypes' import { EditDataType } from '@/shared/types'
import { TextFieldOptions, OptionalRadioSelectionProps } from '../DetailView' import { TextFieldOptions, OptionalRadioSelectionProps } from '../DetailView'
export type ModeOptions = 'read' | 'new' | 'edit' | 'staging-edit' | 'staging-new' export type ModeOptions = 'read' | 'new' | 'edit' | 'staging-edit' | 'staging-new'
@@ -14,8 +14,8 @@ import {
import { DetailBrowser } from './DetailBrowser' import { DetailBrowser } from './DetailBrowser'
import { StagingView } from './StagingView' import { StagingView } from './StagingView'
import { ReturnButton, WriteButton } from './components' import { ReturnButton, WriteButton } from './components'
import { ValidationObject } from '@/validators/validator' import { ValidationObject } from '@/shared/validators/validator'
import { EditDataType } from '@/backendTypes' import { EditDataType } from '@/shared/types'
import { usePageContext } from '../Page' import { usePageContext } from '../Page'
export type TabType = { export type TabType = {
@@ -4,7 +4,7 @@ import { SelectingTable } from './common/SelectingTable'
import { useGetAllReferencesQuery } from '@/redux/referenceReducer' import { useGetAllReferencesQuery } from '@/redux/referenceReducer'
import { referenceTableColumns } from '@/common' import { referenceTableColumns } from '@/common'
import { MRT_RowData } from 'material-react-table' import { MRT_RowData } from 'material-react-table'
import { Editable, Reference } from '@/backendTypes' import { Editable, Reference } from '@/shared/types'
import { EditableTable } from './common/EditableTable' import { EditableTable } from './common/EditableTable'
export const StagingView = <T extends MRT_RowData>() => { export const StagingView = <T extends MRT_RowData>() => {
@@ -1,4 +1,4 @@
import { EditDataType, RowState } from '@/backendTypes' import { EditDataType, RowState } from '@/shared/types'
import { CircularProgress, Box, Button } from '@mui/material' import { CircularProgress, Box, Button } from '@mui/material'
import { import {
type MRT_ColumnDef, type MRT_ColumnDef,
@@ -1,7 +1,7 @@
import { Box, TextField } from '@mui/material' import { Box, TextField } from '@mui/material'
import { EditingModal } from './EditingModal' import { EditingModal } from './EditingModal'
import { useForm } from 'react-hook-form' import { useForm } from 'react-hook-form'
import { EditDataType, Editable } from '@/backendTypes' import { EditDataType, Editable } from '@/shared/types'
import { useDetailContext } from '../Context/DetailContext' import { useDetailContext } from '../Context/DetailContext'
export type EditingFormField = { name: string; label: string; required?: boolean } export type EditingFormField = { name: string; label: string; required?: boolean }
@@ -4,7 +4,7 @@ import { TableView } from '@/components/TableView/TableView'
import { useDetailContext } from '../Context/DetailContext' import { useDetailContext } from '../Context/DetailContext'
import { useMemo } from 'react' import { useMemo } from 'react'
import { Box, CircularProgress } from '@mui/material' import { Box, CircularProgress } from '@mui/material'
import { EditDataType } from '@/backendTypes' import { EditDataType } from '@/shared/types'
/* /*
If editabletable has different type than selectingtable rows, If editabletable has different type than selectingtable rows,
@@ -1,4 +1,4 @@
import { ReferenceOfUpdate, UpdateLog } from '@/backendTypes' import { ReferenceOfUpdate, UpdateLog } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { EditingModal } from '@/components/DetailView/common/EditingModal' import { EditingModal } from '@/components/DetailView/common/EditingModal'
import { SimpleTable } from '@/components/DetailView/common/SimpleTable' import { SimpleTable } from '@/components/DetailView/common/SimpleTable'
@@ -4,7 +4,7 @@ import {
SpeciesDetailsType, SpeciesDetailsType,
TimeBoundDetailsType, TimeBoundDetailsType,
TimeUnitDetailsType, TimeUnitDetailsType,
} from '@/backendTypes' } from '@/shared/types'
export const emptyLocality = { export const emptyLocality = {
bfa_max: '', bfa_max: '',
@@ -19,7 +19,7 @@ import { RegisterOptions, FieldValues, UseFormRegisterReturn, FieldErrors } from
import { useDetailContext } from '../Context/DetailContext' import { useDetailContext } from '../Context/DetailContext'
import { DataValue } from './tabLayoutHelpers' import { DataValue } from './tabLayoutHelpers'
import { modalStyle } from './misc' import { modalStyle } from './misc'
import { EditDataType } from '@/backendTypes' import { EditDataType } from '@/shared/types'
import { calculateLocalityMinAge, calculateLocalityMaxAge } from '@/util/ageCalculator' import { calculateLocalityMinAge, calculateLocalityMaxAge } from '@/util/ageCalculator'
const fieldWidth = '14em' const fieldWidth = '14em'
@@ -1,7 +1,7 @@
import { Card, Typography, Box, Grid, Divider } from '@mui/material' import { Card, Typography, Box, Grid, Divider } from '@mui/material'
import { ReactNode } from 'react' import { ReactNode } from 'react'
import { useDetailContext } from '../Context/DetailContext' import { useDetailContext } from '../Context/DetailContext'
import { EditDataType } from '@/backendTypes' import { EditDataType } from '@/shared/types'
export const ArrayToTable = ({ array, half }: { array: Array<Array<ReactNode>>; half?: boolean }) => { export const ArrayToTable = ({ array, half }: { array: Array<Array<ReactNode>>; half?: boolean }) => {
const maxRowLength = Math.max(...array.map(row => row.length)) const maxRowLength = Math.max(...array.map(row => row.length))
@@ -4,7 +4,7 @@ import ArrowBackIcon from '@mui/icons-material/ArrowBack'
import SaveIcon from '@mui/icons-material/Save' import SaveIcon from '@mui/icons-material/Save'
import { usePageContext } from '../Page' import { usePageContext } from '../Page'
import { useDetailContext } from './Context/DetailContext' import { useDetailContext } from './Context/DetailContext'
import { EditDataType } from '@/backendTypes' import { EditDataType } from '@/shared/types'
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
export const WriteButton = <T,>({ export const WriteButton = <T,>({
@@ -16,8 +16,8 @@ import { MuseumTab } from './Tabs/MuseumTab'
import { ProjectTab } from './Tabs/ProjectTab' import { ProjectTab } from './Tabs/ProjectTab'
import { SpeciesTab } from './Tabs/SpeciesTab' import { SpeciesTab } from './Tabs/SpeciesTab'
import { TaphonomyTab } from './Tabs/TaphonomyTab' import { TaphonomyTab } from './Tabs/TaphonomyTab'
import { EditDataType, LocalityDetailsType, ValidationErrors } from '@/backendTypes' 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 { UpdateTab } from '../DetailView/common/UpdateTab'
import { emptyLocality } from '../DetailView/common/defaultValues' import { emptyLocality } from '../DetailView/common/defaultValues'
import { useNotify } from '@/hooks/notification' import { useNotify } from '@/hooks/notification'
@@ -1,7 +1,7 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { useGetAllLocalitiesQuery, useGetLocalitySpeciesListMutation } from '../../redux/localityReducer' import { useGetAllLocalitiesQuery, useGetLocalitySpeciesListMutation } from '../../redux/localityReducer'
import { Locality } from '@/backendTypes' import { Locality } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
import { useNotify } from '@/hooks/notification' import { useNotify } from '@/hooks/notification'
@@ -1,4 +1,4 @@
import { LocalityDetailsType, TimeUnitDetailsType } from '@/backendTypes' import { LocalityDetailsType, TimeUnitDetailsType } from '@/shared/types'
import { BasisForAgeSelection } from '@/components/DetailView/common/editingComponents' import { BasisForAgeSelection } from '@/components/DetailView/common/editingComponents'
import { emptyOption } from '@/components/DetailView/common/misc' import { emptyOption } from '@/components/DetailView/common/misc'
import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
@@ -1,4 +1,4 @@
import { LocalityDetailsType } from '@/backendTypes' import { LocalityDetailsType } from '@/shared/types'
import { emptyOption } from '@/components/DetailView/common/misc' import { emptyOption } from '@/components/DetailView/common/misc'
import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { LocalityDetailsType } from '@/backendTypes' import { LocalityDetailsType } from '@/shared/types'
import { emptyOption } from '@/components/DetailView/common/misc' import { emptyOption } from '@/components/DetailView/common/misc'
import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { LocalityDetailsType } from '@/backendTypes' import { LocalityDetailsType } from '@/shared/types'
import { ArrayFrame } from '../../DetailView/common/tabLayoutHelpers' import { ArrayFrame } from '../../DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { calculateMeanHypsodonty } from '@/types' import { calculateMeanHypsodonty } from '@/types'
@@ -1,4 +1,4 @@
import { Editable, LocalityDetailsType, SedimentaryStructure, SedimentaryStructureValues } from '@/backendTypes' import { Editable, LocalityDetailsType, SedimentaryStructure, SedimentaryStructureValues } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { emptyOption } from '@/components/DetailView/common/misc' import { emptyOption } from '@/components/DetailView/common/misc'
import { SelectingTable } from '@/components/DetailView/common/SelectingTable' import { SelectingTable } from '@/components/DetailView/common/SelectingTable'
@@ -1,4 +1,4 @@
import { Editable, LocalityDetailsType, LocalitySynonym } from '@/backendTypes' import { Editable, LocalityDetailsType, LocalitySynonym } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { Grouped, ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped, ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { Box, TextField } from '@mui/material' import { Box, TextField } from '@mui/material'
@@ -10,7 +10,7 @@ import { emptyOption } from '@/components/DetailView/common/misc'
import { CoordinateSelectionMap } from '@/components/Map/CoordinateSelectionMap' import { CoordinateSelectionMap } from '@/components/Map/CoordinateSelectionMap'
import { useState } from 'react' import { useState } from 'react'
import { convertDmsToDec, convertDecToDms } from '@/util/coordinateConversion' import { convertDmsToDec, convertDecToDms } from '@/util/coordinateConversion'
import { validCountries } from '@/validators/countryList' import { validCountries } from '@/shared/validators/countryList'
export const LocalityTab = () => { export const LocalityTab = () => {
const { textField, radioSelection, dropdown, dropdownWithSearch, mode, bigTextField } = const { textField, radioSelection, dropdown, dropdownWithSearch, mode, bigTextField } =
@@ -1,4 +1,4 @@
import { Editable, LocalityDetailsType, Museum } from '@/backendTypes' import { Editable, LocalityDetailsType, Museum } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
import { SelectingTable } from '@/components/DetailView/common/SelectingTable' import { SelectingTable } from '@/components/DetailView/common/SelectingTable'
@@ -1,4 +1,4 @@
import { Editable, LocalityDetailsType, Project } from '@/backendTypes' import { Editable, LocalityDetailsType, Project } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
import { SelectingTable } from '@/components/DetailView/common/SelectingTable' import { SelectingTable } from '@/components/DetailView/common/SelectingTable'
@@ -1,4 +1,4 @@
import { LocalityDetailsType, LocalitySpecies, Species, SpeciesDetailsType } from '@/backendTypes' import { LocalityDetailsType, LocalitySpecies, Species, SpeciesDetailsType } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { EditingForm } from '@/components/DetailView/common/EditingForm' import { EditingForm } from '@/components/DetailView/common/EditingForm'
import { SelectingTable } from '@/components/DetailView/common/SelectingTable' import { SelectingTable } from '@/components/DetailView/common/SelectingTable'
@@ -1,4 +1,4 @@
import { Editable, LocalityDetailsType, CollectingMethod } from '@/backendTypes' import { Editable, LocalityDetailsType, CollectingMethod } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { Grouped, ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped, ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { MRT_ColumnDef } from 'material-react-table' import { MRT_ColumnDef } from 'material-react-table'
@@ -4,7 +4,7 @@ import { CircularProgress } from '@mui/material'
import { DetailView, TabType } from '../DetailView/DetailView' import { DetailView, TabType } from '../DetailView/DetailView'
import { PersonTab } from './Tabs/PersonTab' import { PersonTab } from './Tabs/PersonTab'
import { useUser } from '@/hooks/user' import { useUser } from '@/hooks/user'
import { EditDataType, PersonDetailsType } from '@/backendTypes' import { EditDataType, PersonDetailsType } from '@/shared/types'
export const PersonDetails = () => { export const PersonDetails = () => {
const { id: idFromUrl } = useParams() const { id: idFromUrl } = useParams()
@@ -1,7 +1,7 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { useGetAllPersonsQuery } from '../../redux/personReducer' import { useGetAllPersonsQuery } from '../../redux/personReducer'
import { PersonDetailsType } from '@/backendTypes' import { PersonDetailsType } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
import { formatLastLoginDate } from '@/common' import { formatLastLoginDate } from '@/common'
@@ -1,4 +1,4 @@
import { PersonDetailsType } from '@/backendTypes' import { PersonDetailsType } from '@/shared/types'
import { ArrayFrame, Grouped } from '../../DetailView/common/tabLayoutHelpers' import { ArrayFrame, Grouped } from '../../DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { formatLastLoginDate } from '@/common' import { formatLastLoginDate } from '@/common'
@@ -1,7 +1,7 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { useGetAllProjectsQuery } from '../../redux/projectReducer' import { useGetAllProjectsQuery } from '../../redux/projectReducer'
import { Project } from '@/backendTypes' import { Project } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
export const ProjectTable = ({ selectorFn }: { selectorFn?: (id: Project) => void }) => { export const ProjectTable = ({ selectorFn }: { selectorFn?: (id: Project) => void }) => {
@@ -1,4 +1,4 @@
import { ProjectDetailsType, ProjectPeople } from '@/backendTypes' import { ProjectDetailsType, ProjectPeople } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { ArrayFrame, Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
import { MRT_ColumnDef } from 'material-react-table' import { MRT_ColumnDef } from 'material-react-table'
@@ -7,9 +7,9 @@ import {
useGetReferenceDetailsQuery, useGetReferenceDetailsQuery,
useDeleteReferenceMutation, useDeleteReferenceMutation,
} from '@/redux/referenceReducer' } from '@/redux/referenceReducer'
import { EditDataType, ReferenceDetailsType, ValidationErrors } from '@/backendTypes' import { EditDataType, ReferenceDetailsType, ValidationErrors } from '@/shared/types'
import { emptyReference } from '../DetailView/common/defaultValues' import { emptyReference } from '../DetailView/common/defaultValues'
import { validateReference } from '@/validators/reference' import { validateReference } from '@/shared/validators/reference'
import { useNotify } from '@/hooks/notification' import { useNotify } from '@/hooks/notification'
import { useEffect } from 'react' import { useEffect } from 'react'
@@ -1,5 +1,5 @@
import { useGetAllReferencesQuery } from '../../redux/referenceReducer' import { useGetAllReferencesQuery } from '../../redux/referenceReducer'
import { Reference } from '@/backendTypes' import { Reference } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
import { referenceTableColumns } from '@/common' import { referenceTableColumns } from '@/common'
@@ -1,5 +1,5 @@
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import { ReferenceDetailsType, ReferenceAuthorType, RowState, EditDataType } from '@/backendTypes' import { ReferenceDetailsType, ReferenceAuthorType, RowState, EditDataType } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { EditingForm } from '@/components/DetailView/common/EditingForm' import { EditingForm } from '@/components/DetailView/common/EditingForm'
import { SelectingTable } from '@/components/DetailView/common/SelectingTable' import { SelectingTable } from '@/components/DetailView/common/SelectingTable'
@@ -1,5 +1,5 @@
/* eslint-disable react/prop-types */ /* eslint-disable react/prop-types */
import { ReferenceDetailsType, ReferenceJournalType } from '@/backendTypes' import { ReferenceDetailsType, ReferenceJournalType } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { EditingForm } from '@/components/DetailView/common/EditingForm' import { EditingForm } from '@/components/DetailView/common/EditingForm'
import { SelectingTable } from '@/components/DetailView/common/SelectingTable' import { SelectingTable } from '@/components/DetailView/common/SelectingTable'
@@ -1,4 +1,4 @@
import { ReferenceDetailsType } from '@/backendTypes' import { ReferenceDetailsType } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers'
import { useGetReferenceTypesQuery } from '@/redux/referenceReducer' import { useGetReferenceTypesQuery } from '@/redux/referenceReducer'
@@ -1,7 +1,7 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { useGetAllRegionsQuery } from '../../redux/regionReducer' import { useGetAllRegionsQuery } from '../../redux/regionReducer'
import { Region } from '@/backendTypes' import { Region } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
export const RegionTable = ({ selectorFn }: { selectorFn?: (id: Region) => void }) => { export const RegionTable = ({ selectorFn }: { selectorFn?: (id: Region) => void }) => {
@@ -1,4 +1,4 @@
import { RegionDetails, RegionCoordinator, RegionCountry } from '@/backendTypes' import { RegionDetails, RegionCoordinator, RegionCountry } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
import { MRT_ColumnDef } from 'material-react-table' import { MRT_ColumnDef } from 'material-react-table'
@@ -1,7 +1,7 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { useGetSequencesQuery } from '../../redux/timeUnitReducer' import { useGetSequencesQuery } from '../../redux/timeUnitReducer'
import { Sequence } from '@/backendTypes' import { Sequence } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
export const SequenceTable = ({ selectorFn }: { selectorFn?: (id: Sequence) => void }) => { export const SequenceTable = ({ selectorFn }: { selectorFn?: (id: Sequence) => void }) => {
@@ -11,8 +11,8 @@ import { SynonymTab } from './Tabs/SynonymTab'
import { TaxonomyTab } from './Tabs/TaxonomyTab' import { TaxonomyTab } from './Tabs/TaxonomyTab'
import { TeethTab } from './Tabs/TeethTab' import { TeethTab } from './Tabs/TeethTab'
import { UpdateTab } from '../DetailView/common/UpdateTab' import { UpdateTab } from '../DetailView/common/UpdateTab'
import { EditDataType, SpeciesDetailsType, ValidationErrors } from '@/backendTypes' 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 { emptySpecies } from '../DetailView/common/defaultValues'
import { useNotify } from '@/hooks/notification' import { useNotify } from '@/hooks/notification'
import { useEffect } from 'react' import { useEffect } from 'react'
@@ -1,7 +1,7 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import { type MRT_ColumnDef } from 'material-react-table' import { type MRT_ColumnDef } from 'material-react-table'
import { useGetAllSpeciesQuery } from '../../redux/speciesReducer' import { useGetAllSpeciesQuery } from '../../redux/speciesReducer'
import { Species } from '@/backendTypes' import { Species } from '@/shared/types'
import { TableView } from '../TableView/TableView' import { TableView } from '../TableView/TableView'
export const SpeciesTable = ({ selectorFn }: { selectorFn?: (id: Species) => void }) => { export const SpeciesTable = ({ selectorFn }: { selectorFn?: (id: Species) => void }) => {
@@ -1,4 +1,4 @@
import { SpeciesDetailsType } from '@/backendTypes' import { SpeciesDetailsType } from '@/shared/types'
import { emptyOption } from '@/components/DetailView/common/misc' import { emptyOption } from '@/components/DetailView/common/misc'
import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { Editable, SpeciesDetailsType, SpeciesLocality } from '@/backendTypes' import { Editable, SpeciesDetailsType, SpeciesLocality } from '@/shared/types'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { EditingModal } from '@/components/DetailView/common/EditingModal' import { EditingModal } from '@/components/DetailView/common/EditingModal'
import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
@@ -1,4 +1,4 @@
import { Editable, Locality, SpeciesDetailsType } from '@/backendTypes' import { Editable, Locality, SpeciesDetailsType } from '@/shared/types'
import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
import { EditableTable } from '@/components/DetailView/common/EditableTable' import { EditableTable } from '@/components/DetailView/common/EditableTable'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { SpeciesDetailsType } from '@/backendTypes' import { SpeciesDetailsType } from '@/shared/types'
import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { SpeciesDetailsType } from '@/backendTypes' import { SpeciesDetailsType } from '@/shared/types'
import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@components/DetailView/Context/DetailContext' import { useDetailContext } from '@components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { Editable, EditDataType, Species, SpeciesDetailsType, SpeciesSynonym } from '@/backendTypes' import { Editable, EditDataType, Species, SpeciesDetailsType, SpeciesSynonym } from '@/shared/types'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers' import { Grouped } from '@/components/DetailView/common/tabLayoutHelpers'
import { MRT_ColumnDef } from 'material-react-table' import { MRT_ColumnDef } from 'material-react-table'
@@ -1,4 +1,4 @@
import { SpeciesDetailsType } from '@/backendTypes' import { SpeciesDetailsType } from '@/shared/types'
import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { SpeciesDetailsType } from '@/backendTypes' import { SpeciesDetailsType } from '@/shared/types'
import { emptyOption } from '@/components/DetailView/common/misc' import { emptyOption } from '@/components/DetailView/common/misc'
import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame, HalfFrames } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { TimeBoundDetailsType } from '@/backendTypes' import { TimeBoundDetailsType } from '@/shared/types'
import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers' import { ArrayFrame } from '@/components/DetailView/common/tabLayoutHelpers'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { TimeUnit, TimeBoundDetailsType } from '@/backendTypes' import { TimeUnit, TimeBoundDetailsType } from '@/shared/types'
import { useGetTimeBoundTimeUnitsQuery } from '@/redux/timeBoundReducer' import { useGetTimeBoundTimeUnitsQuery } from '@/redux/timeBoundReducer'
import { CircularProgress } from '@mui/material' import { CircularProgress } from '@mui/material'
import { useDetailContext } from '@/components/DetailView/Context/DetailContext' import { useDetailContext } from '@/components/DetailView/Context/DetailContext'
@@ -1,4 +1,4 @@
import { EditDataType, TimeBoundDetailsType, ValidationErrors } from '@/backendTypes.js' import { EditDataType, TimeBoundDetailsType, ValidationErrors } from '@/shared/types.js'
import { useNotify } from '@/hooks/notification.ts' import { useNotify } from '@/hooks/notification.ts'
import { CircularProgress } from '@mui/material' import { CircularProgress } from '@mui/material'
import { useEffect } from 'react' import { useEffect } from 'react'
@@ -13,7 +13,7 @@ import { UpdateTab } from '../DetailView/common/UpdateTab.tsx'
import { DetailView, TabType } from '../DetailView/DetailView' import { DetailView, TabType } from '../DetailView/DetailView'
import { BoundTab } from './Tabs/BoundTab' import { BoundTab } from './Tabs/BoundTab'
import { TimeUnitTab } from './Tabs/TimeUnitTab.tsx' import { TimeUnitTab } from './Tabs/TimeUnitTab.tsx'
import { validateTimeBound } from '@/validators/timeBound.ts' import { validateTimeBound } from '@/shared/validators/timeBound.ts'
export const TimeBoundDetails = () => { export const TimeBoundDetails = () => {
const { id } = useParams() const { id } = useParams()

Some files were not shown because too many files have changed in this diff Show More