Fixed loaded study indicator. Closes LT-91
This commit is contained in:
parent
90a16a8059
commit
571eb90eb8
@ -103,11 +103,17 @@
|
|||||||
Meteor: true,
|
Meteor: true,
|
||||||
Template: true,
|
Template: true,
|
||||||
UI: true,
|
UI: true,
|
||||||
|
Session: true,
|
||||||
|
|
||||||
// loglevel package
|
// loglevel package
|
||||||
log: true,
|
log: true,
|
||||||
|
|
||||||
// OHIF-package specific Globals
|
// OHIF-package specific Globals
|
||||||
|
OHIF: true,
|
||||||
|
toolManager: true,
|
||||||
|
ViewerData: true,
|
||||||
|
ViewerStudies: true,
|
||||||
|
LesionManager: true,
|
||||||
Timepoints: true,
|
Timepoints: true,
|
||||||
Measurements: true
|
Measurements: true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,58 +71,55 @@ Template.lesionTable.onRendered(function() {
|
|||||||
// Put a visual indicator (<) in timepoint header in lesion table for active timepoints
|
// 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
|
// timepointLoaded property is used to put indicator for loaded timepoints in viewport
|
||||||
self.autorun(function() {
|
self.autorun(function() {
|
||||||
var ViewerData = Session.get('ViewerData');
|
// Temporary until we have a real window manager with events for series/study changed
|
||||||
var contentId = Session.get('activeContentId');
|
Session.get('NewSeriesLoaded');
|
||||||
if (contentId) {
|
|
||||||
var viewerData = ViewerData[contentId];
|
|
||||||
if (viewerData) {
|
|
||||||
if (viewerData.loadedSeriesData) {
|
|
||||||
// Get study dates of imageViewerViewport elements
|
|
||||||
var loadedStudyDates = {
|
|
||||||
patientId: '',
|
|
||||||
dates: []
|
|
||||||
};
|
|
||||||
|
|
||||||
$('.imageViewerViewport').each(function(viewportIndex, element) {
|
console.log('ViewerData changed, check for displayed timepoints');
|
||||||
var enabledElement = cornerstone.getEnabledElement(element);
|
// Get study dates of imageViewerViewport elements
|
||||||
if (!enabledElement || !enabledElement.image) {
|
var loadedStudyDates = {
|
||||||
return;
|
patientId: '',
|
||||||
}
|
dates: []
|
||||||
|
};
|
||||||
|
|
||||||
var imageId = enabledElement.image.imageId;
|
var viewports = $('.imageViewerViewport').not('.empty');
|
||||||
var study = cornerstoneTools.metaData.get('study', imageId);
|
viewports.each(function(index, element) {
|
||||||
var studyDate = study.studyDate;
|
var enabledElement = cornerstone.getEnabledElement(element);
|
||||||
loadedStudyDates.patientId = study.patientId;
|
if (!enabledElement || !enabledElement.image) {
|
||||||
|
return;
|
||||||
// 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 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
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,7 +10,7 @@ var allCornerstoneEvents = 'CornerstoneToolsMouseDown CornerstoneToolsMouseDownA
|
|||||||
* @param data {object} Object containing the study, series, and viewport element to be used
|
* @param data {object} Object containing the study, series, and viewport element to be used
|
||||||
*/
|
*/
|
||||||
function loadSeriesIntoViewport(data, templateData) {
|
function loadSeriesIntoViewport(data, templateData) {
|
||||||
log.info("imageViewerViewport loadSeriesIntoViewport");
|
log.info('imageViewerViewport loadSeriesIntoViewport');
|
||||||
|
|
||||||
// Make sure we have all the data required to render the series
|
// Make sure we have all the data required to render the series
|
||||||
if (!data.study || !data.series || !data.element) {
|
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
|
// 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
|
// The viewport index is often used to store information about a viewport element
|
||||||
var element = data.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
|
// Get the contentID of the current worklist tab, if the viewport is running
|
||||||
// alongside the worklist package
|
// alongside the worklist package
|
||||||
@ -168,7 +168,7 @@ function loadSeriesIntoViewport(data, templateData) {
|
|||||||
$(element).siblings('.imageViewerViewportOverlay').show();
|
$(element).siblings('.imageViewerViewportOverlay').show();
|
||||||
|
|
||||||
// Add stack state managers for the stack tool, CINE tool, and reference lines
|
// 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
|
// Get the current viewport settings
|
||||||
var viewport = cornerstone.getViewport(element);
|
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
|
// Use the tool manager to enable the currently active tool for this
|
||||||
// newly rendered element
|
// newly rendered element
|
||||||
var activeTool = toolManager.getActiveTool();
|
var activeTool = toolManager.getActiveTool();
|
||||||
toolManager.setActiveTool(activeTool, [element]);
|
toolManager.setActiveTool(activeTool, [ element ]);
|
||||||
|
|
||||||
// Define a function to run whenever the Cornerstone viewport is rendered
|
// Define a function to run whenever the Cornerstone viewport is rendered
|
||||||
// (e.g. following a change of window or zoom)
|
// (e.g. following a change of window or zoom)
|
||||||
@ -262,7 +262,6 @@ function loadSeriesIntoViewport(data, templateData) {
|
|||||||
$(element).on('CornerstoneStackScroll', OnStackScroll);
|
$(element).on('CornerstoneStackScroll', OnStackScroll);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Define a function to trigger an event whenever a new viewport is being used
|
// 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
|
// This is used to update the value of the "active viewport", when the user interacts
|
||||||
// with a new viewport element
|
// with a new viewport element
|
||||||
@ -272,7 +271,7 @@ function loadSeriesIntoViewport(data, templateData) {
|
|||||||
// If it was, no changes are necessary, so stop here.
|
// If it was, no changes are necessary, so stop here.
|
||||||
var element = eventData.element;
|
var element = eventData.element;
|
||||||
var activeViewportIndex = Session.get('activeViewport');
|
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
|
// Reset the focus, even if we don't need to re-enable reference lines or prefetching
|
||||||
$(element).focus();
|
$(element).focus();
|
||||||
@ -323,13 +322,16 @@ function loadSeriesIntoViewport(data, templateData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run any renderedCallback that exists in the data context
|
// 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);
|
data.renderedCallback(element);
|
||||||
}
|
}
|
||||||
}, function(error) {
|
}, function(error) {
|
||||||
// If something goes wrong while loading the image, fire the error handler.
|
// If something goes wrong while loading the image, fire the error handler.
|
||||||
errorLoadingHandler(element, imageId, error);
|
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;
|
data.series = series;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -378,7 +381,6 @@ function getKeysByValue(object, value) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Meteor.startup(function() {
|
Meteor.startup(function() {
|
||||||
// On Meteor startup, define the global objects used to store loading imageIds
|
// On Meteor startup, define the global objects used to store loading imageIds
|
||||||
// by viewport / thumbnail element
|
// by viewport / thumbnail element
|
||||||
@ -410,10 +412,10 @@ Meteor.startup(function() {
|
|||||||
|
|
||||||
Template.imageViewerViewport.onRendered(function() {
|
Template.imageViewerViewport.onRendered(function() {
|
||||||
var templateData = Template.currentData();
|
var templateData = Template.currentData();
|
||||||
log.info("imageViewerViewport onRendered");
|
log.info('imageViewerViewport onRendered');
|
||||||
|
|
||||||
// When the imageViewerViewport template is rendered
|
// When the imageViewerViewport template is rendered
|
||||||
var element = this.find(".imageViewerViewport");
|
var element = this.find('.imageViewerViewport');
|
||||||
|
|
||||||
// Display the loading indicator for this element
|
// Display the loading indicator for this element
|
||||||
$(element).siblings('.imageViewerLoadingIndicator').css('display', 'block');
|
$(element).siblings('.imageViewerLoadingIndicator').css('display', 'block');
|
||||||
@ -458,6 +460,7 @@ Template.imageViewerViewport.onRendered(function() {
|
|||||||
if (!study) {
|
if (!study) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sortStudy(study);
|
sortStudy(study);
|
||||||
data.study = study;
|
data.study = study;
|
||||||
|
|
||||||
@ -470,10 +473,10 @@ Template.imageViewerViewport.onRendered(function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Template.imageViewerViewport.onDestroyed(function() {
|
Template.imageViewerViewport.onDestroyed(function() {
|
||||||
log.info("imageViewerViewport onDestroyed");
|
log.info('imageViewerViewport onDestroyed');
|
||||||
|
|
||||||
// When a viewport element is being destroyed
|
// When a viewport element is being destroyed
|
||||||
var element = this.find(".imageViewerViewport");
|
var element = this.find('.imageViewerViewport');
|
||||||
|
|
||||||
// Try to stop any currently playing clips
|
// Try to stop any currently playing clips
|
||||||
// Otherwise the interval will continuously throw errors
|
// Otherwise the interval will continuously throw errors
|
||||||
@ -491,7 +494,7 @@ Template.imageViewerViewport.onDestroyed(function() {
|
|||||||
|
|
||||||
Template.imageViewerViewport.events({
|
Template.imageViewerViewport.events({
|
||||||
'ActivateViewport .imageViewerViewport': function(e) {
|
'ActivateViewport .imageViewerViewport': function(e) {
|
||||||
log.info("imageViewerViewport ActivateViewport");
|
log.info('imageViewerViewport ActivateViewport');
|
||||||
setActiveViewport(e.currentTarget);
|
setActiveViewport(e.currentTarget);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user