Bug Fix: Only first frame of multiframe images is being rendered.

This commit is contained in:
Emanuel F. Oliveira 2017-01-19 12:05:36 -02:00
parent e2322ec05a
commit 75e027fee5
6 changed files with 29 additions and 31 deletions

View File

@ -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) {

View File

@ -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());
};
});

View File

@ -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) {

View File

@ -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 = {

View File

@ -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
*/

View File

@ -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;