From 108df7e47d5d2daaca63b5e77ceb6a9c9c837add Mon Sep 17 00:00:00 2001 From: Jim O'Donnell Date: Wed, 17 Jan 2024 15:52:20 +0000 Subject: [PATCH] Data selection feedback for scatter plots Add `feedbackBrushes`, from PH-TESS, to the scatter plot viewer's `Selections` component. Show a green bar for each success, a red bar for each failure. Disable the subject viewer so that annotations can't be edited in the feedback popup. Add a selection feedback story, with mock feedback brushes. --- .../components/Graph2dRangeFeedback.js | 1 + .../ScatterPlotViewer.stories.js | 80 +++++++++++++++++++ .../components/ScatterPlot/ScatterPlot.js | 4 +- .../components/Selections/Selections.js | 28 +++++++ 4 files changed, 111 insertions(+), 2 deletions(-) diff --git a/packages/lib-classifier/src/components/Classifier/components/Feedback/components/Graph2dRangeFeedback.js b/packages/lib-classifier/src/components/Classifier/components/Feedback/components/Graph2dRangeFeedback.js index 24966c74794..90781120cac 100644 --- a/packages/lib-classifier/src/components/Classifier/components/Feedback/components/Graph2dRangeFeedback.js +++ b/packages/lib-classifier/src/components/Classifier/components/Feedback/components/Graph2dRangeFeedback.js @@ -58,6 +58,7 @@ function Graph2dRangeFeedback() { return ( + + + + + + ) +} +SelectedXRanges.store = mockStore({ + subject: superWaspSubject, + workflow: dataSelectionWorkflow +}) diff --git a/packages/lib-classifier/src/components/Classifier/components/SubjectViewer/components/ScatterPlotViewer/components/ScatterPlot/ScatterPlot.js b/packages/lib-classifier/src/components/Classifier/components/SubjectViewer/components/ScatterPlotViewer/components/ScatterPlot/ScatterPlot.js index a1b90213083..936ede1d7b7 100644 --- a/packages/lib-classifier/src/components/Classifier/components/SubjectViewer/components/ScatterPlotViewer/components/ScatterPlot/ScatterPlot.js +++ b/packages/lib-classifier/src/components/Classifier/components/SubjectViewer/components/ScatterPlotViewer/components/ScatterPlot/ScatterPlot.js @@ -46,8 +46,6 @@ const TRANSFORM_MATRIX = { translateY: 0 } - - export default function ScatterPlot({ axisColor = '', backgroundColor = '', @@ -57,6 +55,7 @@ export default function ScatterPlot({ dataPointSize = 25, disabled = false, experimentalSelectionTool = false, + feedbackBrushes = [], highlightedSeries, initialSelections = [], interactionMode = 'annotate', @@ -191,6 +190,7 @@ export default function ScatterPlot({ {children} {experimentalSelectionTool && true function Selections({ disabled = false, + feedbackBrushes=[], height, margin, transformMatrix = TRANSFORM_MATRIX, @@ -203,6 +204,27 @@ function Selections({ eventRoot?.current.focus() } + function FeedbackBrush({ feedbackBrush }) { + const width = feedbackBrush.maxX - feedbackBrush.minX + const x = feedbackBrush.minX + width / 2 + let fill = 'transparent' + if (feedbackBrush.success === true) { + fill = 'green' + } + if (feedbackBrush.success === false) { + fill = 'red' + } + return ( + + ) + } + return ( ))} + {feedbackBrushes?.map(feedbackBrush => ( + + ))} ) }