update measurements panel when measurements change (debounced)
This commit is contained in:
parent
f3e783b63e
commit
47f9e1391a
@ -2,6 +2,7 @@ import React, { useEffect, useState } from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { StudySummary, MeasurementTable } from '@ohif/ui';
|
import { StudySummary, MeasurementTable } from '@ohif/ui';
|
||||||
import { DicomMetadataStore } from '@ohif/core';
|
import { DicomMetadataStore } from '@ohif/core';
|
||||||
|
import { useDebounce } from '@hooks';
|
||||||
import ActionButtons from './ActionButtons';
|
import ActionButtons from './ActionButtons';
|
||||||
import { useTrackedMeasurements } from '../../getContextModule';
|
import { useTrackedMeasurements } from '../../getContextModule';
|
||||||
|
|
||||||
@ -13,6 +14,13 @@ const DISPLAY_STUDY_SUMMARY_INITIAL_VALUE = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function PanelMeasurementTableTracking({ servicesManager, commandsManager }) {
|
function PanelMeasurementTableTracking({ servicesManager, commandsManager }) {
|
||||||
|
const [measurementChangeTimestamp, setMeasurementsUpdated] = useState(
|
||||||
|
Date.now().toString()
|
||||||
|
);
|
||||||
|
const debouncedMeasurementChangeTimestamp = useDebounce(
|
||||||
|
measurementChangeTimestamp,
|
||||||
|
200
|
||||||
|
);
|
||||||
const { MeasurementService } = servicesManager.services;
|
const { MeasurementService } = servicesManager.services;
|
||||||
const [
|
const [
|
||||||
trackedMeasurements,
|
trackedMeasurements,
|
||||||
@ -39,6 +47,12 @@ function PanelMeasurementTableTracking({ servicesManager, commandsManager }) {
|
|||||||
setDisplayMeasurements(mappedMeasurements);
|
setDisplayMeasurements(mappedMeasurements);
|
||||||
// eslint-ignore-next-line
|
// eslint-ignore-next-line
|
||||||
}, [MeasurementService, trackedStudy, trackedSeries]);
|
}, [MeasurementService, trackedStudy, trackedSeries]);
|
||||||
|
}, [
|
||||||
|
MeasurementService,
|
||||||
|
trackedStudy,
|
||||||
|
trackedSeries,
|
||||||
|
debouncedMeasurementChangeTimestamp,
|
||||||
|
]);
|
||||||
|
|
||||||
// ~~ DisplayStudySummary
|
// ~~ DisplayStudySummary
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -62,23 +76,30 @@ function PanelMeasurementTableTracking({ servicesManager, commandsManager }) {
|
|||||||
}, [displayStudySummary.key, trackedMeasurements, trackedStudy]);
|
}, [displayStudySummary.key, trackedMeasurements, trackedStudy]);
|
||||||
|
|
||||||
// TODO: Listen for measurement service "adds" and updates
|
// TODO: Listen for measurement service "adds" and updates
|
||||||
|
// TODO: Better way to consolidated, debounce, check on change?
|
||||||
|
// Are we exposing the right API for measurementService?
|
||||||
|
// This watches for ALL MeasurementService changes. It updates a timestamp,
|
||||||
|
// which is debounced. After a brief period of inactivity, this triggers
|
||||||
|
// a re-render where we grab up-to-date measurements.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// const { unsubscribe } = MeasurementService.subscribe(
|
const added = MeasurementService.EVENTS.MEASUREMENT_ADDED;
|
||||||
// MeasurementService.EVENTS.MEASUREMENT_ADDED,
|
const updated = MeasurementService.EVENTS.MEASUREMENT_UPDATED;
|
||||||
// ({ source, measurement }) => {
|
const removed = MeasurementService.EVENTS.MEASUREMENT_REMOVED;
|
||||||
// const {
|
const subscriptions = [];
|
||||||
// referenceSeriesUID: SeriesInstanceUID,
|
|
||||||
// referenceStudyUID: StudyInstanceUID,
|
[added, updated, removed].forEach(evt => {
|
||||||
// } = measurement;
|
subscriptions.push(
|
||||||
// sendTrackedMeasurementsEvent('TRACK_SERIES', {
|
MeasurementService.subscribe(evt, () => {
|
||||||
// StudyInstanceUID,
|
setMeasurementsUpdated(Date.now().toString());
|
||||||
// SeriesInstanceUID,
|
})
|
||||||
// });
|
);
|
||||||
// console.log('PANEL:', measurement);
|
});
|
||||||
// // console.log('Mapped:', annotation);
|
|
||||||
// }
|
return () => {
|
||||||
// );
|
subscriptions.forEach(unsub => {
|
||||||
// return unsubscribe;
|
unsub();
|
||||||
|
});
|
||||||
|
};
|
||||||
}, [MeasurementService, sendTrackedMeasurementsEvent]);
|
}, [MeasurementService, sendTrackedMeasurementsEvent]);
|
||||||
|
|
||||||
const activeMeasurementItem = 0;
|
const activeMeasurementItem = 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user