diff --git a/ui/src/data-services/models/occurrence-details.ts b/ui/src/data-services/models/occurrence-details.ts
index 90654984f..797eb75e3 100644
--- a/ui/src/data-services/models/occurrence-details.ts
+++ b/ui/src/data-services/models/occurrence-details.ts
@@ -56,7 +56,8 @@ export class OccurrenceDetails extends Occurrence {
.map((i: any) => {
const taxon = new Taxon(i.taxon)
const overridden = i.withdrawn
- const applied = taxon.id === this.determinationTaxon.id
+ const applied =
+ !!this.determinationTaxon && taxon.id === this.determinationTaxon.id
const identification: HumanIdentification = {
id: `${i.id}`,
@@ -82,8 +83,10 @@ export class OccurrenceDetails extends Occurrence {
.sort(sortByDate)
.map((p: any) => {
const taxon = new Taxon(p.taxon)
- const overridden = taxon.id !== this.determinationTaxon.id
- const applied = taxon.id === this.determinationTaxon.id
+ const overridden =
+ !this.determinationTaxon || taxon.id !== this.determinationTaxon.id
+ const applied =
+ !!this.determinationTaxon && taxon.id === this.determinationTaxon.id
const prediction: MachinePrediction = {
id: `${p.id}`,
diff --git a/ui/src/data-services/models/occurrence.ts b/ui/src/data-services/models/occurrence.ts
index 8482c5bc9..40b31c814 100644
--- a/ui/src/data-services/models/occurrence.ts
+++ b/ui/src/data-services/models/occurrence.ts
@@ -8,13 +8,15 @@ export type ServerOccurrence = any // TODO: Update this type
export class Occurrence {
protected readonly _occurrence: ServerOccurrence
- private readonly _determinationTaxon: Taxon
+ private readonly _determinationTaxon: Taxon | undefined
private readonly _images: { src: string }[] = []
public constructor(occurrence: ServerOccurrence) {
this._occurrence = occurrence
- this._determinationTaxon = new Taxon(occurrence.determination_details.taxon)
+ this._determinationTaxon = occurrence.determination_details?.taxon
+ ? new Taxon(occurrence.determination_details.taxon)
+ : undefined
this._images = occurrence.detection_images
.filter((src: string) => !!src.length)
@@ -49,8 +51,10 @@ export class Occurrence {
return this._occurrence.deployment?.name
}
- get determinationId(): string {
- return `${this._occurrence.determination.id}`
+ get determinationId(): string | undefined {
+ return this._occurrence.determination
+ ? `${this._occurrence.determination.id}`
+ : undefined
}
get determinationIdentificationId(): string | undefined {
@@ -70,7 +74,7 @@ export class Occurrence {
}
get determinationScore(): number | undefined {
- const score = this._occurrence.determination_details.score
+ const score = this._occurrence.determination_details?.score
if (score || score === 0) {
return score
@@ -89,17 +93,17 @@ export class Occurrence {
return undefined
}
- get determinationTaxon(): Taxon {
+ get determinationTaxon(): Taxon | undefined {
return this._determinationTaxon
}
get determinationVerified(): boolean {
- return !!this._occurrence.determination_details.identification
+ return !!this._occurrence.determination_details?.identification
}
get determinationVerifiedBy() {
const verifiedBy =
- this._occurrence.determination_details.identification?.user
+ this._occurrence.determination_details?.identification?.user
return verifiedBy
? {
@@ -116,7 +120,8 @@ export class Occurrence {
}
get displayName(): string {
- return `${this.determinationTaxon.name} #${this.id}`
+ const name = this.determinationTaxon?.name ?? 'Unknown'
+ return `${name} #${this.id}`
}
get firstAppearanceTimestamp(): string {
@@ -180,6 +185,10 @@ export class Occurrence {
return false
}
+ if (!this.determinationTaxon) {
+ return false
+ }
+
return (
identificationTaxonId === this.determinationTaxon.id &&
identificationUserId === userId
diff --git a/ui/src/pages/occurrence-details/identification-card/machine-prediction.tsx b/ui/src/pages/occurrence-details/identification-card/machine-prediction.tsx
index 11a1d824c..7f14c6e1c 100644
--- a/ui/src/pages/occurrence-details/identification-card/machine-prediction.tsx
+++ b/ui/src/pages/occurrence-details/identification-card/machine-prediction.tsx
@@ -111,7 +111,9 @@ export const MachinePrediction = ({
isLoading={isLoading}
/>
{topN?.map(({ score, taxon }) => {
- const applied = taxon.id === occurrence.determinationTaxon.id
+ const applied =
+ !!occurrence.determinationTaxon &&
+ taxon.id === occurrence.determinationTaxon.id
return (