Bug Fix: Only first frame of multiframe images is being rendered.
This commit is contained in:
parent
e2322ec05a
commit
75e027fee5
@ -491,9 +491,8 @@ HP.ProtocolEngine = class ProtocolEngine {
|
||||
|
||||
// If the instance was found, set the displaySet ID
|
||||
if (displaySet) {
|
||||
const instanceMetadata = new OHIF.metadata.InstanceMetadata(instance);
|
||||
imageDetails.displaySetInstanceUid = displaySet.displaySetInstanceUid;
|
||||
imageDetails.imageId = OHIF.viewerbase.getImageId(instanceMetadata);
|
||||
imageDetails.imageId = OHIF.viewerbase.getImageId(instance);
|
||||
}
|
||||
|
||||
if ((totalMatchScore > highestImageMatchingScore) || !bestMatch) {
|
||||
|
||||
@ -15,7 +15,7 @@ Template.imageThumbnail.onCreated(() => {
|
||||
const lastIndex = (stack.images.length || 1) - 1;
|
||||
const imageIndex = Math.floor(lastIndex / 2);
|
||||
const imageInstance = stack.images[imageIndex];
|
||||
return getImageId(imageInstance);
|
||||
return getImageId(imageInstance.getData());
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@ -62,35 +62,29 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
|
||||
ViewerData[contentId].loadedSeriesData[viewportIndex] = {};
|
||||
}
|
||||
|
||||
// Create shortcut to displaySet
|
||||
const displaySet = data.displaySet;
|
||||
|
||||
// Get stack from Stack Manager
|
||||
const displaySetStack = StackManager.findStack(displaySet.displaySetInstanceUid);
|
||||
let stack = StackManager.findStack(displaySet.displaySetInstanceUid);
|
||||
// Make sure if the stack is already loaded in the stack manager, otherwise create it
|
||||
if(!stack || !stack.imageIds) {
|
||||
stack = StackManager.makeAndAddStack(data.study, displaySet);
|
||||
}
|
||||
|
||||
// If is a clip, updates the global FPS for cine dialog
|
||||
if (displaySetStack && displaySetStack.isClip === true && displaySetStack.frameRate) {
|
||||
if (stack.isClip && stack.frameRate > 0) {
|
||||
// Sets the global variable
|
||||
OHIF.viewer.cine.framesPerSecond = parseFloat(displaySetStack.frameRate);
|
||||
OHIF.viewer.cine.framesPerSecond = parseFloat(stack.frameRate);
|
||||
// Update the cine dialog FPS
|
||||
Session.set('UpdateCINE', Random.id());
|
||||
}
|
||||
|
||||
// Array with image IDs
|
||||
let imageIds = [];
|
||||
// Make sure if the stack is already loaded in the stack manager, otherwise create it
|
||||
if(!displaySetStack || !displaySetStack.imageIds) {
|
||||
imageIds = StackManager.makeAndAddStack(data.study, displaySet);
|
||||
}
|
||||
else {
|
||||
imageIds = displaySetStack.imageIds;
|
||||
}
|
||||
// Shortcut for array with image IDs...
|
||||
const imageIds = stack.imageIds;
|
||||
|
||||
// Define the current image stack using the newly created image IDs
|
||||
const stack = {
|
||||
currentImageIdIndex: data.currentImageIdIndex || 0,
|
||||
imageIds: imageIds,
|
||||
displaySetInstanceUid: data.displaySetInstanceUid
|
||||
};
|
||||
// Update stack's currentImageIdIndex property...
|
||||
stack.currentImageIdIndex = data.currentImageIdIndex > 0 && data.currentImageIdIndex < imageIds.length ? data.currentImageIdIndex : 0;
|
||||
|
||||
// If is a clip, updates the global FPS for cine dialog
|
||||
if (displaySet && displaySet.isClip && displaySet.frameRate > 0) {
|
||||
@ -257,7 +251,7 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
|
||||
cornerstoneTools.addToolState(element, 'stack', stack);
|
||||
|
||||
// Set the default CINE settings
|
||||
const multiframeMetadata = instance.multiframeMetadata;
|
||||
const multiframeMetadata = instance.getDataProperty('multiframeMetadata');
|
||||
|
||||
let fps;
|
||||
if (multiframeMetadata && multiframeMetadata.averageFrameRate > 0) {
|
||||
|
||||
@ -21,9 +21,10 @@ function createAndAddStack(stackMap, study, displaySet) {
|
||||
const imageIds = [];
|
||||
let imageId;
|
||||
|
||||
displaySet.images.forEach((image, imageIndex) => {
|
||||
displaySet.images.forEach((instance, imageIndex) => {
|
||||
const image = instance.getData();
|
||||
const metaData = {
|
||||
instance: image,
|
||||
instance: image, // in this context, instance will be the data of the InstanceMetadata object...
|
||||
series: displaySet, // TODO: Check this
|
||||
study: study,
|
||||
numImages: numImages,
|
||||
@ -56,7 +57,7 @@ function createAndAddStack(stackMap, study, displaySet) {
|
||||
|
||||
stackMap[displaySet.displaySetInstanceUid] = stack;
|
||||
|
||||
return imageIds;
|
||||
return stack;
|
||||
}
|
||||
|
||||
configuration = {
|
||||
|
||||
@ -21,6 +21,15 @@ export class Metadata {
|
||||
return this._data;
|
||||
}
|
||||
|
||||
getDataProperty(propertyName) {
|
||||
let propertyValue;
|
||||
const _data = this._data;
|
||||
if (_data instanceof Object || typeof _data === 'object' && _data !== null) {
|
||||
propertyValue = _data[propertyName];
|
||||
}
|
||||
return propertyValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Static Methods
|
||||
*/
|
||||
|
||||
@ -7,12 +7,7 @@ import { getWADORSImageId } from './getWADORSImageId';
|
||||
* @param instance
|
||||
* @returns {string} The imageId to be used by Cornerstone
|
||||
*/
|
||||
export function getImageId(instanceMetadata, frame) {
|
||||
if (!instanceMetadata) {
|
||||
return;
|
||||
}
|
||||
|
||||
const instance = instanceMetadata.getData();
|
||||
export function getImageId(instance, frame) {
|
||||
|
||||
if (!instance) {
|
||||
return;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user