From 5b17779a3257c51d3e83c063bfdad2577f9e6f96 Mon Sep 17 00:00:00 2001 From: Benjamin Kane Date: Fri, 4 Oct 2024 10:34:12 -0400 Subject: [PATCH] fix temporal detections and classifications bubbles --- .../src/elements/common/bubbles.test.ts | 34 +++++++++++++++++++ .../looker/src/elements/common/bubbles.ts | 4 +-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/app/packages/looker/src/elements/common/bubbles.test.ts b/app/packages/looker/src/elements/common/bubbles.test.ts index 40b5dd654f..edac34b194 100644 --- a/app/packages/looker/src/elements/common/bubbles.test.ts +++ b/app/packages/looker/src/elements/common/bubbles.test.ts @@ -1,9 +1,11 @@ import type { Schema } from "@fiftyone/utilities"; import { + CLASSIFICATIONS, DYNAMIC_EMBEDDED_DOCUMENT_PATH, EMBEDDED_DOCUMENT_FIELD, LIST_FIELD, STRING_FIELD, + TEMPORAL_DETECTIONS, } from "@fiftyone/utilities"; import { describe, expect, it } from "vitest"; import { getBubbles, getField, unwind } from "./bubbles"; @@ -195,6 +197,38 @@ describe("text bubble tests", () => { } ) ).toStrictEqual([field.fields.value, ["value"]]); + + const classifications = { + ...FIELD_DATA, + dbField: "classes", + ftype: EMBEDDED_DOCUMENT_FIELD, + embeddedDocType: CLASSIFICATIONS, + fields: {}, + }; + + expect( + getBubbles( + "classes", + { classes: { classifications: [{ label: "label" }] } }, + { classes: classifications } + ) + ); + + const temporalDetections = { + ...FIELD_DATA, + dbField: "temporal", + ftype: EMBEDDED_DOCUMENT_FIELD, + embeddedDocType: TEMPORAL_DETECTIONS, + fields: {}, + }; + + expect( + getBubbles( + "temporal", + { temporal: { detections: [{ label: "label" }] } }, + { temporal: temporalDetections } + ) + ); }); it("getField gets field from a path keys", () => { diff --git a/app/packages/looker/src/elements/common/bubbles.ts b/app/packages/looker/src/elements/common/bubbles.ts index 9b649e8adf..feb9195c93 100644 --- a/app/packages/looker/src/elements/common/bubbles.ts +++ b/app/packages/looker/src/elements/common/bubbles.ts @@ -54,14 +54,14 @@ export const getBubbles = ( } if (field.embeddedDocType === withPath(LABELS_PATH, CLASSIFICATIONS)) { - out.values = out.values.flatMap( + out.values = unwind(field.dbField, out.values).flatMap( (value) => value.classifications || [] ) as Sample[]; break; } if (field.embeddedDocType === withPath(LABELS_PATH, TEMPORAL_DETECTIONS)) { - out.values = out.values.flatMap( + out.values = unwind(field.dbField, out.values).flatMap( (value) => value.detections || [] ) as Sample[]; break;