pass servicesManager and extensionManager all the way to our UI prompts; use in exposed createReportAsync call
This commit is contained in:
parent
9fb3fe6dc2
commit
c8f48cf1fe
@ -19,25 +19,33 @@ const useTrackedMeasurements = () => useContext(TrackedMeasurementsContext);
|
|||||||
* @param {*} param0
|
* @param {*} param0
|
||||||
*/
|
*/
|
||||||
function TrackedMeasurementsContextProvider(
|
function TrackedMeasurementsContextProvider(
|
||||||
UIViewportDialogService,
|
{ servicesManager, extensionManager }, // Bound by consumer
|
||||||
{ children }
|
{ children } // Component props
|
||||||
) {
|
) {
|
||||||
const machineOptions = Object.assign({}, defaultOptions);
|
const machineOptions = Object.assign({}, defaultOptions);
|
||||||
machineOptions.services = Object.assign({}, machineOptions.services, {
|
machineOptions.services = Object.assign({}, machineOptions.services, {
|
||||||
promptBeginTracking: promptBeginTracking.bind(
|
promptBeginTracking: promptBeginTracking.bind(null, {
|
||||||
null,
|
servicesManager,
|
||||||
UIViewportDialogService
|
extensionManager,
|
||||||
),
|
}),
|
||||||
promptTrackNewSeries: promptTrackNewSeries.bind(
|
promptTrackNewSeries: promptTrackNewSeries.bind(null, {
|
||||||
null,
|
servicesManager,
|
||||||
UIViewportDialogService
|
extensionManager,
|
||||||
),
|
}),
|
||||||
promptTrackNewStudy: promptTrackNewStudy.bind(
|
promptTrackNewStudy: promptTrackNewStudy.bind(null, {
|
||||||
null,
|
servicesManager,
|
||||||
UIViewportDialogService
|
extensionManager,
|
||||||
),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// TODO: IMPROVE
|
||||||
|
// - Add measurement_updated to cornerstone; debounced? (ext side, or consumption?)
|
||||||
|
// - Friendlier transition/api in front of measurementTracking machine?
|
||||||
|
// - Blocked: viewport overlay shouldn't clip when resized
|
||||||
|
// TODO: PRIORITY
|
||||||
|
// - Fix "ellipses" series description dynamic truncate length
|
||||||
|
// - Fix viewport border resize
|
||||||
|
// - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
|
||||||
|
|
||||||
const measurementTrackingMachine = Machine(
|
const measurementTrackingMachine = Machine(
|
||||||
machineConfiguration,
|
machineConfiguration,
|
||||||
@ -61,6 +69,8 @@ function TrackedMeasurementsContextProvider(
|
|||||||
|
|
||||||
TrackedMeasurementsContextProvider.propTypes = {
|
TrackedMeasurementsContextProvider.propTypes = {
|
||||||
children: PropTypes.oneOf([PropTypes.func, PropTypes.node]),
|
children: PropTypes.oneOf([PropTypes.func, PropTypes.node]),
|
||||||
|
servicesManager: PropTypes.object.isRequired,
|
||||||
|
extensionManager: PropTypes.object.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
@ -6,7 +6,8 @@ const RESPONSE = {
|
|||||||
SET_STUDY_AND_SERIES: 3,
|
SET_STUDY_AND_SERIES: 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
function promptUser(UIViewportDialogService, ctx, evt) {
|
function promptUser({ servicesManager }, ctx, evt) {
|
||||||
|
const { UIViewportDialogService } = servicesManager.services;
|
||||||
const { viewportIndex, StudyInstanceUID, SeriesInstanceUID } = evt;
|
const { viewportIndex, StudyInstanceUID, SeriesInstanceUID } = evt;
|
||||||
|
|
||||||
return new Promise(async function(resolve, reject) {
|
return new Promise(async function(resolve, reject) {
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import createReportAsync from './../../_shared/createReportAsync.js';
|
||||||
|
|
||||||
const RESPONSE = {
|
const RESPONSE = {
|
||||||
NO_NEVER: -1,
|
NO_NEVER: -1,
|
||||||
CANCEL: 0,
|
CANCEL: 0,
|
||||||
@ -6,8 +8,13 @@ const RESPONSE = {
|
|||||||
SET_STUDY_AND_SERIES: 3,
|
SET_STUDY_AND_SERIES: 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
function promptUser(UIViewportDialogService, ctx, evt) {
|
function promptUser({ servicesManager, extensionManager }, ctx, evt) {
|
||||||
|
const {
|
||||||
|
UIViewportDialogService,
|
||||||
|
MeasurementService,
|
||||||
|
} = servicesManager.services;
|
||||||
const { viewportIndex, StudyInstanceUID, SeriesInstanceUID } = evt;
|
const { viewportIndex, StudyInstanceUID, SeriesInstanceUID } = evt;
|
||||||
|
const { trackedStudy, trackedSeries } = ctx;
|
||||||
|
|
||||||
return new Promise(async function(resolve, reject) {
|
return new Promise(async function(resolve, reject) {
|
||||||
let promptResult = await _askShouldAddMeasurements(
|
let promptResult = await _askShouldAddMeasurements(
|
||||||
@ -22,9 +29,19 @@ function promptUser(UIViewportDialogService, ctx, evt) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Hook into @JamesAPetts createReport
|
|
||||||
if (promptResult === RESPONSE.CREATE_REPORT) {
|
if (promptResult === RESPONSE.CREATE_REPORT) {
|
||||||
window.alert('CREATE REPORT');
|
// TODO -> Eventually deal with multiple dataSources.
|
||||||
|
// Would need some way of saying which one is the "push" dataSource
|
||||||
|
const dataSources = extensionManager.getDataSources();
|
||||||
|
const dataSource = dataSources[0];
|
||||||
|
const measurements = MeasurementService.getMeasurements();
|
||||||
|
const trackedMeasurements = measurements.filter(
|
||||||
|
m =>
|
||||||
|
trackedStudy === m.referenceStudyUID &&
|
||||||
|
trackedSeries.includes(m.referenceSeriesUID)
|
||||||
|
);
|
||||||
|
|
||||||
|
createReportAsync(servicesManager, dataSource, trackedMeasurements);
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import createReportAsync from './../../_shared/createReportAsync.js';
|
||||||
|
|
||||||
const RESPONSE = {
|
const RESPONSE = {
|
||||||
NO_NEVER: -1,
|
NO_NEVER: -1,
|
||||||
CANCEL: 0,
|
CANCEL: 0,
|
||||||
@ -6,8 +8,13 @@ const RESPONSE = {
|
|||||||
SET_STUDY_AND_SERIES: 3,
|
SET_STUDY_AND_SERIES: 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
function promptUser(UIViewportDialogService, ctx, evt) {
|
function promptUser({ servicesManager, extensionManager }, ctx, evt) {
|
||||||
|
const {
|
||||||
|
UIViewportDialogService,
|
||||||
|
MeasurementService,
|
||||||
|
} = servicesManager.services;
|
||||||
const { viewportIndex, StudyInstanceUID, SeriesInstanceUID } = evt;
|
const { viewportIndex, StudyInstanceUID, SeriesInstanceUID } = evt;
|
||||||
|
const { trackedStudy, trackedSeries } = ctx;
|
||||||
|
|
||||||
return new Promise(async function(resolve, reject) {
|
return new Promise(async function(resolve, reject) {
|
||||||
let promptResult = await _askTrackMeasurements(
|
let promptResult = await _askTrackMeasurements(
|
||||||
@ -22,9 +29,19 @@ function promptUser(UIViewportDialogService, ctx, evt) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Hook into @JamesAPetts createReport
|
|
||||||
if (promptResult === RESPONSE.CREATE_REPORT) {
|
if (promptResult === RESPONSE.CREATE_REPORT) {
|
||||||
window.alert('CREATE REPORT');
|
// TODO -> Eventually deal with multiple dataSources.
|
||||||
|
// Would need some way of saying which one is the "push" dataSource
|
||||||
|
const dataSources = extensionManager.getDataSources();
|
||||||
|
const dataSource = dataSources[0];
|
||||||
|
const measurements = MeasurementService.getMeasurements();
|
||||||
|
const trackedMeasurements = measurements.filter(
|
||||||
|
m =>
|
||||||
|
trackedStudy === m.referenceStudyUID &&
|
||||||
|
trackedSeries.includes(m.referenceSeriesUID)
|
||||||
|
);
|
||||||
|
|
||||||
|
createReportAsync(servicesManager, dataSource, trackedMeasurements);
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
|
|||||||
@ -4,11 +4,10 @@ import {
|
|||||||
useTrackedMeasurements,
|
useTrackedMeasurements,
|
||||||
} from './contexts';
|
} from './contexts';
|
||||||
|
|
||||||
function getContextModule({ servicesManager }) {
|
function getContextModule({ servicesManager, extensionManager }) {
|
||||||
const { UIViewportDialogService } = servicesManager.services;
|
|
||||||
const BoundTrackedMeasurementsContextProvider = TrackedMeasurementsContextProvider.bind(
|
const BoundTrackedMeasurementsContextProvider = TrackedMeasurementsContextProvider.bind(
|
||||||
null,
|
null,
|
||||||
UIViewportDialogService
|
{ servicesManager, extensionManager }
|
||||||
);
|
);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user