Fixing issues on timepoints order hanging
This commit is contained in:
parent
b4327eb457
commit
c42722192b
@ -16,11 +16,12 @@ class TimepointApi {
|
||||
return configuration;
|
||||
}
|
||||
|
||||
constructor(currentTimepointId, configuration) {
|
||||
constructor(currentTimepointId, options={}) {
|
||||
if (currentTimepointId) {
|
||||
this.currentTimepointId = currentTimepointId;
|
||||
}
|
||||
|
||||
this.options = options;
|
||||
this.timepoints = new Mongo.Collection(null);
|
||||
this.timepoints.attachSchema(TimepointSchema);
|
||||
this.timepoints._debugName = 'Timepoints';
|
||||
@ -161,7 +162,7 @@ class TimepointApi {
|
||||
});
|
||||
}
|
||||
|
||||
// Return only the current and prior Timepoints
|
||||
// Return only the current and prior timepoints
|
||||
currentAndPrior() {
|
||||
const timepoints = [];
|
||||
|
||||
@ -178,6 +179,11 @@ class TimepointApi {
|
||||
return timepoints;
|
||||
}
|
||||
|
||||
// Return only the comparison timepoints
|
||||
comparison() {
|
||||
return this.currentAndPrior();
|
||||
}
|
||||
|
||||
// Return only the baseline timepoint
|
||||
baseline() {
|
||||
return this.timepoints.findOne({ timepointType: 'baseline' });
|
||||
|
||||
@ -21,7 +21,7 @@ Template.measurementTable.onCreated(() => {
|
||||
} else if (tableLayout === 'key') {
|
||||
timepoints = timepointApi.key();
|
||||
} else {
|
||||
timepoints = timepointApi.currentAndPrior();
|
||||
timepoints = timepointApi.comparison();
|
||||
}
|
||||
|
||||
// Return key timepoints
|
||||
|
||||
@ -66,8 +66,16 @@ OHIF.measurements.jumpToRowItem = (rowItem, timepoints) => {
|
||||
const $viewports = $('.imageViewerViewport');
|
||||
const numViewports = Math.max($viewports.length, 0);
|
||||
|
||||
// Clone the timepoint list to prevent modifying the original object
|
||||
const timepointList = _.clone(timepoints);
|
||||
|
||||
// Reverse the timepointList array if the flag is set
|
||||
if (OHIF.viewer.invertViewportTimepointsOrder) {
|
||||
timepointList.reverse();
|
||||
}
|
||||
|
||||
// Retrieve the timepoints that are currently being displayed in the Measurement Table
|
||||
const numTimepoints = Math.max(timepoints.length, 1);
|
||||
const numTimepoints = Math.max(timepointList.length, 1);
|
||||
|
||||
const numViewportsToUpdate = Math.min(numTimepoints, numViewports);
|
||||
|
||||
@ -75,10 +83,13 @@ OHIF.measurements.jumpToRowItem = (rowItem, timepoints) => {
|
||||
const measurementsData = [];
|
||||
const promises = new Set();
|
||||
for (let i = 0; i < numViewportsToUpdate; i++) {
|
||||
const { timepointId } = timepoints[i];
|
||||
const { timepointId } = timepointList[i];
|
||||
|
||||
const dataAtThisTimepoint = _.where(rowItem.entries, { timepointId });
|
||||
if (!dataAtThisTimepoint || !dataAtThisTimepoint.length) continue;
|
||||
if (!dataAtThisTimepoint || !dataAtThisTimepoint.length) {
|
||||
measurementsData.push(null);
|
||||
continue;
|
||||
}
|
||||
|
||||
const measurementData = dataAtThisTimepoint[0];
|
||||
measurementsData.push(measurementData);
|
||||
@ -99,14 +110,6 @@ OHIF.measurements.jumpToRowItem = (rowItem, timepoints) => {
|
||||
// Deactivate stack synchronizer because it will be re-activated later
|
||||
OHIF.viewer.stackImagePositionOffsetSynchronizer.deactivate();
|
||||
|
||||
// Display timepoints in the order of viewports which is set by the hanging protocol
|
||||
// Reverse the array if the first timepoint does not match with the first viewport data
|
||||
const layoutManager = OHIF.viewerbase.layoutManager;
|
||||
const viewportData = layoutManager.viewportData[0];
|
||||
if (timepoints[0].studyInstanceUids.indexOf(viewportData.studyInstanceUid) < 0) {
|
||||
timepoints.reverse();
|
||||
}
|
||||
|
||||
const renderPromises = [];
|
||||
for (let viewportIndex = 0; viewportIndex < numViewportsToUpdate; viewportIndex++) {
|
||||
const measurementData = measurementsData[viewportIndex];
|
||||
|
||||
Loading…
Reference in New Issue
Block a user