Fixed loaded study indicator. Closes LT-91

This commit is contained in:
Erik Ziegler 2016-01-11 12:01:11 +01:00
parent 90a16a8059
commit 571eb90eb8
3 changed files with 68 additions and 62 deletions

View File

@ -103,11 +103,17 @@
Meteor: true,
Template: true,
UI: true,
Session: true,
// loglevel package
log: true,
// OHIF-package specific Globals
OHIF: true,
toolManager: true,
ViewerData: true,
ViewerStudies: true,
LesionManager: true,
Timepoints: true,
Measurements: true
}

View File

@ -71,58 +71,55 @@ Template.lesionTable.onRendered(function() {
// Put a visual indicator (<) in timepoint header in lesion table for active timepoints
// timepointLoaded property is used to put indicator for loaded timepoints in viewport
self.autorun(function() {
var ViewerData = Session.get('ViewerData');
var contentId = Session.get('activeContentId');
if (contentId) {
var viewerData = ViewerData[contentId];
if (viewerData) {
if (viewerData.loadedSeriesData) {
// Get study dates of imageViewerViewport elements
var loadedStudyDates = {
patientId: '',
dates: []
};
// Temporary until we have a real window manager with events for series/study changed
Session.get('NewSeriesLoaded');
$('.imageViewerViewport').each(function(viewportIndex, element) {
var enabledElement = cornerstone.getEnabledElement(element);
if (!enabledElement || !enabledElement.image) {
return;
}
console.log('ViewerData changed, check for displayed timepoints');
// Get study dates of imageViewerViewport elements
var loadedStudyDates = {
patientId: '',
dates: []
};
var imageId = enabledElement.image.imageId;
var study = cornerstoneTools.metaData.get('study', imageId);
var studyDate = study.studyDate;
loadedStudyDates.patientId = study.patientId;
// Check whether or not studyDate has been added before
if (loadedStudyDates.dates.indexOf(studyDate) < 0) {
loadedStudyDates.dates.push(studyDate);
}
});
// If study date is loaded into viewport, set timepointLoaded property in Timepoints collection as true
// Else set timepointLoaded property as false
if (loadedStudyDates.dates.length) {
var timepoints = Timepoints.find({
patientId: loadedStudyDates.patientId
}).fetch();
timepoints.forEach(function(timepoint) {
var timepointLoaded = false;
if (loadedStudyDates.dates.indexOf(timepoint.timepointName) > -1) {
timepointLoaded = true;
}
Timepoints.update(timepoint._id, {
$set: {
timepointLoaded: timepointLoaded
}
});
});
}
}
var viewports = $('.imageViewerViewport').not('.empty');
viewports.each(function(index, element) {
var enabledElement = cornerstone.getEnabledElement(element);
if (!enabledElement || !enabledElement.image) {
return;
}
var imageId = enabledElement.image.imageId;
var study = cornerstoneTools.metaData.get('study', imageId);
var studyDate = study.studyDate;
loadedStudyDates.patientId = study.patientId;
// Check whether or not studyDate has been added before
if (loadedStudyDates.dates.indexOf(studyDate) < 0) {
loadedStudyDates.dates.push(studyDate);
}
});
// If study date is loaded into viewport, set timepointLoaded property in Timepoints collection as true
// Else set timepointLoaded property as false
if (!loadedStudyDates.dates.length) {
return;
}
var timepoints = Timepoints.find({
patientId: loadedStudyDates.patientId
});
timepoints.forEach(function(timepoint) {
var timepointLoaded = false;
if (loadedStudyDates.dates.indexOf(timepoint.timepointName) > -1) {
timepointLoaded = true;
}
Timepoints.update(timepoint._id, {
$set: {
timepointLoaded: timepointLoaded
}
});
});
});
});

View File

@ -10,7 +10,7 @@ var allCornerstoneEvents = 'CornerstoneToolsMouseDown CornerstoneToolsMouseDownA
* @param data {object} Object containing the study, series, and viewport element to be used
*/
function loadSeriesIntoViewport(data, templateData) {
log.info("imageViewerViewport loadSeriesIntoViewport");
log.info('imageViewerViewport loadSeriesIntoViewport');
// Make sure we have all the data required to render the series
if (!data.study || !data.series || !data.element) {
@ -20,7 +20,7 @@ function loadSeriesIntoViewport(data, templateData) {
// Get the current element and it's index in the list of all viewports
// The viewport index is often used to store information about a viewport element
var element = data.element;
var viewportIndex = $(".imageViewerViewport").index(element);
var viewportIndex = $('.imageViewerViewport').index(element);
// Get the contentID of the current worklist tab, if the viewport is running
// alongside the worklist package
@ -168,7 +168,7 @@ function loadSeriesIntoViewport(data, templateData) {
$(element).siblings('.imageViewerViewportOverlay').show();
// Add stack state managers for the stack tool, CINE tool, and reference lines
cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);
cornerstoneTools.addStackStateManager(element, [ 'stack', 'playClip', 'referenceLines' ]);
// Get the current viewport settings
var viewport = cornerstone.getViewport(element);
@ -189,7 +189,7 @@ function loadSeriesIntoViewport(data, templateData) {
// Use the tool manager to enable the currently active tool for this
// newly rendered element
var activeTool = toolManager.getActiveTool();
toolManager.setActiveTool(activeTool, [element]);
toolManager.setActiveTool(activeTool, [ element ]);
// Define a function to run whenever the Cornerstone viewport is rendered
// (e.g. following a change of window or zoom)
@ -262,7 +262,6 @@ function loadSeriesIntoViewport(data, templateData) {
$(element).on('CornerstoneStackScroll', OnStackScroll);
}
// Define a function to trigger an event whenever a new viewport is being used
// This is used to update the value of the "active viewport", when the user interacts
// with a new viewport element
@ -272,7 +271,7 @@ function loadSeriesIntoViewport(data, templateData) {
// If it was, no changes are necessary, so stop here.
var element = eventData.element;
var activeViewportIndex = Session.get('activeViewport');
var viewportIndex = $(".imageViewerViewport").index(element);
var viewportIndex = $('.imageViewerViewport').index(element);
// Reset the focus, even if we don't need to re-enable reference lines or prefetching
$(element).focus();
@ -323,13 +322,16 @@ function loadSeriesIntoViewport(data, templateData) {
}
// Run any renderedCallback that exists in the data context
if (data.renderedCallback && typeof data.renderedCallback === "function") {
if (data.renderedCallback && typeof data.renderedCallback === 'function') {
data.renderedCallback(element);
}
}, function(error) {
// If something goes wrong while loading the image, fire the error handler.
errorLoadingHandler(element, imageId, error);
});
// Temporary until we have a real window manager with events for series/study changed
Session.set('NewSeriesLoaded', Random.id());
}
/**
@ -351,6 +353,7 @@ function setSeries(data, seriesInstanceUid, templateData) {
data.series = series;
return false;
}
return true;
});
@ -378,7 +381,6 @@ function getKeysByValue(object, value) {
});
}
Meteor.startup(function() {
// On Meteor startup, define the global objects used to store loading imageIds
// by viewport / thumbnail element
@ -410,10 +412,10 @@ Meteor.startup(function() {
Template.imageViewerViewport.onRendered(function() {
var templateData = Template.currentData();
log.info("imageViewerViewport onRendered");
log.info('imageViewerViewport onRendered');
// When the imageViewerViewport template is rendered
var element = this.find(".imageViewerViewport");
var element = this.find('.imageViewerViewport');
// Display the loading indicator for this element
$(element).siblings('.imageViewerLoadingIndicator').css('display', 'block');
@ -458,6 +460,7 @@ Template.imageViewerViewport.onRendered(function() {
if (!study) {
return;
}
sortStudy(study);
data.study = study;
@ -470,10 +473,10 @@ Template.imageViewerViewport.onRendered(function() {
});
Template.imageViewerViewport.onDestroyed(function() {
log.info("imageViewerViewport onDestroyed");
log.info('imageViewerViewport onDestroyed');
// When a viewport element is being destroyed
var element = this.find(".imageViewerViewport");
var element = this.find('.imageViewerViewport');
// Try to stop any currently playing clips
// Otherwise the interval will continuously throw errors
@ -491,7 +494,7 @@ Template.imageViewerViewport.onDestroyed(function() {
Template.imageViewerViewport.events({
'ActivateViewport .imageViewerViewport': function(e) {
log.info("imageViewerViewport ActivateViewport");
log.info('imageViewerViewport ActivateViewport');
setActiveViewport(e.currentTarget);
}
});
});