diff --git a/projects/laji/src/app/+observation/form/observation-form-query.interface.ts b/projects/laji/src/app/+observation/form/observation-form-query.interface.ts index 6e2b1d9dfc..9b99264ee4 100644 --- a/projects/laji/src/app/+observation/form/observation-form-query.interface.ts +++ b/projects/laji/src/app/+observation/form/observation-form-query.interface.ts @@ -23,4 +23,5 @@ export interface ObservationFormQuery { coordinatesInSource?: boolean; taxonAdminFiltersOperator?: 'AND' | 'OR'; zeroObservations?: boolean; + hasSequenceText?: boolean; } diff --git a/projects/laji/src/app/+observation/form/observation-form.component.html b/projects/laji/src/app/+observation/form/observation-form.component.html index d18bb6f81d..6160ff9ecf 100644 --- a/projects/laji/src/app/+observation/form/observation-form.component.html +++ b/projects/laji/src/app/+observation/form/observation-form.component.html @@ -805,6 +805,14 @@ > + +
+
+ + {{ 'observation.info.hasSequenceText' | translate }} +
+
+
; invasive?: Array; image: Array; + dna: Array; secure: Array; } @@ -102,6 +103,7 @@ export class ObservationFormComponent implements OnInit, OnDestroy { 'invasive', 'finnish', 'sensitive'], invasive: [], image: ['hasUnitMedia', 'hasGatheringMedia', 'hasDocumentMedia', 'hasUnitImages', 'hasUnitAudio', 'hasUnitModel'], + dna: ['hasSequenceText'], secure: ['secured', 'secureLevel'], }; @@ -492,7 +494,8 @@ export class ObservationFormComponent implements OnInit, OnDestroy { taxonIncludeLower: typeof query.includeSubTaxa !== 'undefined' ? query.includeSubTaxa : true, taxonUseAnnotated: typeof query.useIdentificationAnnotations !== 'undefined' ? query.useIdentificationAnnotations : true, coordinatesInSource: query.sourceOfCoordinates && query.sourceOfCoordinates.includes('REPORTED_VALUE'), - taxonAdminFiltersOperator: query.taxonAdminFiltersOperator === 'OR' ? 'OR' : undefined + taxonAdminFiltersOperator: query.taxonAdminFiltersOperator === 'OR' ? 'OR' : undefined, + hasSequenceText: query.hasSequenceText ? true : false }; } @@ -527,6 +530,7 @@ export class ObservationFormComponent implements OnInit, OnDestroy { query.editorOrObserverIsNotPersonToken = formQuery.asNotEditorOrObserver ? ObservationFacade.PERSON_TOKEN : undefined; query.includeSubTaxa = formQuery.taxonIncludeLower ? undefined : false; query.useIdentificationAnnotations = formQuery.taxonUseAnnotated ? undefined : false; + query.hasSequenceText = formQuery.hasSequenceText ? true : undefined; query.sourceOfCoordinates = formQuery.coordinatesInSource ? ['REPORTED_VALUE'] : undefined; query.taxonAdminFiltersOperator = formQuery.taxonAdminFiltersOperator === 'OR' ? 'OR' : undefined; this.invasiveStatuses diff --git a/projects/laji/src/app/+observation/search-query.service.ts b/projects/laji/src/app/+observation/search-query.service.ts index c2a7d5c433..c4e7e8cc84 100644 --- a/projects/laji/src/app/+observation/search-query.service.ts +++ b/projects/laji/src/app/+observation/search-query.service.ts @@ -138,7 +138,8 @@ export class SearchQueryService implements SearchQueryInterface { 'local', 'alive', 'higherTaxon', - 'sensitive' + 'sensitive', + 'hasSequenceText' ]; // noinspection JSUnusedLocalSymbols diff --git a/projects/laji/src/app/shared-modules/datatable/service/observation-table-column.service.ts b/projects/laji/src/app/shared-modules/datatable/service/observation-table-column.service.ts index df209b836e..2d27a3f5f8 100644 --- a/projects/laji/src/app/shared-modules/datatable/service/observation-table-column.service.ts +++ b/projects/laji/src/app/shared-modules/datatable/service/observation-table-column.service.ts @@ -39,6 +39,7 @@ export interface IColumns extends IGenericColumn { 'unit.media.mediaType': ObservationTableColumn; 'document.collectionId': ObservationTableColumn; 'unit.notes': ObservationTableColumn; + 'unit.sequenceText': ObservationTableColumn; 'gathering.notes': ObservationTableColumn; 'unit.facts.fact': ObservationTableColumn; 'unit.facts.value': ObservationTableColumn; @@ -283,6 +284,7 @@ export const COLUMNS: IColumns = { }, 'document.collectionId': {name: 'document.collectionId', cellTemplate: 'label', width: 300, sortable: false, required: true}, 'unit.notes': {name: 'unit.notes', sortable: false, label: 'result.unit.notes'}, + 'unit.sequenceText': {name: 'unit.sequenceText', sortable: false, label: 'result.unit.sequenceText', width: 300}, 'gathering.notes': {name: 'gathering.notes', sortable: false, label: 'result.gathering.notes'}, 'document.documentId': {name: 'document.documentId', required: environment.type === Global.type.vir}, 'unit.unitId': {name: 'unit.unitId'}, @@ -574,6 +576,7 @@ export class ObservationTableColumnService extends TableColumnService environment.type === Global.type.vir ? true : field !== 'document.dataSource') } ].filter(set => environment.type === Global.type.vir ? true : set.header !== lajiGISSectionHeader) diff --git a/projects/laji/src/app/shared/model/WarehouseQueryInterface.ts b/projects/laji/src/app/shared/model/WarehouseQueryInterface.ts index b60df87e12..195c75b0e7 100644 --- a/projects/laji/src/app/shared/model/WarehouseQueryInterface.ts +++ b/projects/laji/src/app/shared/model/WarehouseQueryInterface.ts @@ -257,6 +257,7 @@ export interface WarehouseQueryInterface { sensitive?: boolean; primarySpecimen?: boolean; hasValue?: string; + hasSequenceText?: boolean; } diff --git a/projects/laji/src/i18n/en.json b/projects/laji/src/i18n/en.json index 9db93f9be1..4d2bc7f687 100644 --- a/projects/laji/src/i18n/en.json +++ b/projects/laji/src/i18n/en.json @@ -1250,6 +1250,7 @@ "observation.active.unidentified": "Unidentified", "observation.active.useIdentificationAnnotations": "No annotated identifications", "observation.active.wild": "Native occurrence", + "observation.active.hasSequenceText": "DNA Sequence", "observation.changedNames": "Corrected identifications", "observation.commonness": "Commonness & Rarity", "observation.count": "Number of observations", @@ -1313,6 +1314,7 @@ "observation.form.datasetSelected": "Sources selected", "observation.form.datasetTitle": "Sources", "observation.form.date": "Date", + "observation.form.dnaTitle": "DNA", "observation.form.documentId": "ID", "observation.form.effectiveTag": "Laji.fi quality control tags", "observation.form.empty": "Clear all filters", @@ -1325,6 +1327,7 @@ "observation.form.hasMedia": "With images", "observation.form.hasNotMedia": "Do not have observation media", "observation.form.hasUnitMedia": "Observation images", + "observation.form.hasSequenceText": "Has DNA Sequence", "observation.form.higherTaxon": "Species or higher level", "observation.form.higherTaxonFalse": "Linked to species, species group or lower", "observation.form.higherTaxonTrue": "Linked only to higher taxa", @@ -1491,6 +1494,7 @@ "observation.info.typeOfOccurrenceId": "Filter observations to include only the taxa that have one or more of the statuses that you have selected. You can also filter to include only observations that DO NOT have a certain status. The later you can do by clicking the status twice.", "observation.info.typeSpecimen": "Include only type specimen. A type specimen is an object in collections, which is used to describe the definition of a species or subspecies. Type specimen are especially valuable, because they stabilize concepts of scientific names.", "observation.info.unidentified": "Read more here.", + "observation.info.hasSequenceText": "Rajaa havaintoihin/näytteisiin, joista on tallenenttu DNA-sekvenssi (FASTA muodossa)", "observation.intro": "FinBIF is a compilation of nature observations, museum collections and other scientific datasets from many sources. These data have been collected by academics, public authorities and citizen scientists. Browse sources", "observation.intro.adminStatus": "Observations that match all selected features are displayed.", "observation.intro.images": "Filter to those observations that have", @@ -1695,6 +1699,7 @@ "result.unit.sensitive.true": "Tämän havainnon laji on Lajitietokeskuksen sensitiivisten lajien luettelolla.", "result.unit.taxonVerbatim": "Species", "result.unit.unitId": "Observation identifier", + "result.unit.sequenceText": "DNA-seequence", "route.nro": "Route number", "Sat": "Sat", "save": "Save", diff --git a/projects/laji/src/i18n/fi.json b/projects/laji/src/i18n/fi.json index e5b70087ac..af94069d85 100644 --- a/projects/laji/src/i18n/fi.json +++ b/projects/laji/src/i18n/fi.json @@ -1250,6 +1250,7 @@ "observation.active.unidentified": "Tarvitseeko määrityksen?", "observation.active.useIdentificationAnnotations": "Ei laadunvalvonnan määrityksiä", "observation.active.wild": "Luonnonvaraisuus", + "observation.active.hasSequenceText": "DNA-sekvenssi", "observation.changedNames": "Käytä laadunvalvonnassa annettuja määrityksiä", "observation.commonness": "Yleisyys", "observation.count": "Havaintojen määrä", @@ -1313,6 +1314,7 @@ "observation.form.datasetSelected": "Valitut aineistot", "observation.form.datasetTitle": "Aineistot", "observation.form.date": "Aika", + "observation.form.dnaTitle": "DNA", "observation.form.documentId": "Näytteen tai havaintoerän tunniste", "observation.form.effectiveTag": "Laji.fi laadunvalvontatagit", "observation.form.empty": "Tyhjennä kaikki rajaukset", @@ -1325,6 +1327,7 @@ "observation.form.hasMedia": "Kuvalliset", "observation.form.hasNotMedia": "Ei ole media havainnosta", "observation.form.hasUnitMedia": "Kuvia havainnosta", + "observation.form.hasSequenceText": "On DNA-sekvenssi", "observation.form.higherTaxon": "Lajitaso vai ylempi", "observation.form.higherTaxonFalse": "Vain lajitasolle, lajiryhmään tai alempaan tasoon linkitetyt", "observation.form.higherTaxonTrue": "Vain ylempiin taksoneihin linkitetyt", @@ -1491,6 +1494,7 @@ "observation.info.typeOfOccurrenceId": "Rajaa havainnot koskemaan lajeja, joille on määritelty yksi tai useampi valitsemistasi asemista. Voit myös rajata havainnot lajeihin, joilla EI ole tiettyjä asemia. Jälkimmäinen tapahtuu klikkaamalla aseman edessä olevaa ruutua kahdesti.", "observation.info.typeSpecimen": "Näytä vain tyyppinäytteet. Tyyppinäyte on näyte, johon kyseisen lajin tai esimerkiksi alalajin tieteellinen nimi ja kuvaus perustuvat. Tyyppinäytteet ovat erityisen arvokkaita, koska niiden avulla tieteellisten nimien käyttö saadaan vakinnutettua. Katso esimerkiksi tieteen termipankki.", "observation.info.unidentified": "Lue lisää määrityspalvelun toiminnasta.", + "observation.info.hasSequenceText": "Rajaa havaintoihin/näytteisiin, joista on tallenenttu DNA-sekvenssi (FASTA muodossa)", "observation.intro": "Lajitietokeskukseen on koottuna havaintoja monista suomalaisista lajitietokannoista. Havaintoja kertyy yksittäisiltä harrastajilta, kansalaistiedehankkeissa, viranomaisilta ja tieteellisen työn tuloksena. Havainnot sisältävät myös tieteellisiä kokoelma-aineistoja. Selaa aineistojen tietoja", "observation.intro.adminStatus": "Haku näyttää havainnot, jotka täsmäävät kaikkiin antamiisi ehtoihin.", "observation.intro.images": "Rajaa niihin havaintoihin, joissa on", @@ -1695,6 +1699,7 @@ "result.unit.sensitive.true": "Tämän havainnon laji on Lajitietokeskuksen sensitiivisten lajien luettelossa.", "result.unit.taxonVerbatim": "Laji", "result.unit.unitId": "Havainnon tunniste", + "result.unit.sequenceText": "DNA-sekvenssi", "route.nro": "Reitin numero", "Sat": "la", "save": "Tallenna", diff --git a/projects/laji/src/i18n/sv.json b/projects/laji/src/i18n/sv.json index 4a21ed5f73..5414782f00 100644 --- a/projects/laji/src/i18n/sv.json +++ b/projects/laji/src/i18n/sv.json @@ -1250,6 +1250,7 @@ "observation.active.unidentified": "Oidentifierad", "observation.active.useIdentificationAnnotations": "Använd inte identifiering av kvalitetskontroll", "observation.active.wild": "Vildvuxna", + "observation.active.hasSequenceText": "DNA-sekvens", "observation.changedNames": "Använd identifiering av kvalitetskontroll", "observation.commonness": "Vanlighet", "observation.count": "Antal av observationer", @@ -1313,6 +1314,7 @@ "observation.form.datasetSelected": "Valda dataseten", "observation.form.datasetTitle": "Dataset", "observation.form.date": "Tid", + "observation.form.dnaTitle": "DNA", "observation.form.documentId": "Identifierare av provet eller observationspartiet", "observation.form.effectiveTag": "Laji.fi-taggar för kvalitetskontroll", "observation.form.empty": "Återställ alla", @@ -1325,6 +1327,7 @@ "observation.form.hasMedia": "Med bild", "observation.form.hasNotMedia": "Inte har observationsmedia", "observation.form.hasUnitMedia": "Observationsbilder", + "observation.form.hasSequenceText": "Har DNA-sekvens", "observation.form.higherTaxon": "Artnivå eller högre", "observation.form.higherTaxonFalse": "Endast kopplat till artnivå, artgrupp eller lägre nivå", "observation.form.higherTaxonTrue": "Endast kopplat till högre taxa", @@ -1491,6 +1494,7 @@ "observation.info.typeOfOccurrenceId": "Avgränsa till de observationer för vilka en eller flera av de valda generaliseringsnivåerna har angetts.", "observation.info.typeSpecimen": "Visa endast typprover. Ett typprov är ett prov som exempelvis baseras på det vetenskapliga namnet och beskrivningen av arten eller underarten. Typprover är särskilt värdefulla eftersom de hjälper till att etablera användningen av vetenskapliga namn.", "observation.info.unidentified": "Läs mer om identifieringstjänstens funktion.", + "observation.info.hasSequenceText": "Rajaa havaintoihin/näytteisiin, joista on tallenenttu DNA-sekvenssi (FASTA muodossa)", "observation.intro": "Finlands Artdatacenter samlar observationer från olika finska databaser. Observationerna ackumuleras från utövar, medborgarnaturvetenskapliga projekter, myndigheter och som ett resultat av vetenskapligt arbete. Observationerna består också av data från vetenskapliga samlingar. Bläddra dataseten", "observation.intro.adminStatus": "Observationer som matchar alla valda funktioner visas.", "observation.intro.images": "Filtrera till de observationer som har", @@ -1695,6 +1699,7 @@ "result.unit.sensitive.true": "Denna art finns på FinBIFs lista över känsliga arter.", "result.unit.taxonVerbatim": "Art", "result.unit.unitId": "Observations-id", + "result.unit.sequenceText": "DNA-sekvens", "route.nro": "Ruttnummer", "Sat": "lör", "save": "Spara",