select lesion from lesion table and show its image

Bug fix: Scroll to the correct image when lesion table row is clicked
This commit is contained in:
Aysel Afsar 2015-11-01 18:24:31 -05:00
parent 28c67b573f
commit ead3928077
3 changed files with 63 additions and 29 deletions

View File

@ -244,7 +244,7 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
///////// END IMAGE RENDERING ///////
function activateLesion(e, eventObject) {
function updateLesion(e, eventObject) {
var start = new Date();
var enabledElement = eventObject.enabledElement;
@ -274,7 +274,7 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
if (deletedDataIndex >= 0 && deletedDataIndex < toolData.data.length) {
toolData.data.splice(deletedDataIndex, 1);
}
} else {
} else if(type === "active") {
for (var i = 0; i < toolData.data.length; i++) {
var data = toolData.data[i];
//When click a row of table measurements, measurement will be active and color will be green
@ -284,6 +284,12 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
data.active = false;
}
}
} else if(type === "inactive") {
for (var i = 0; i < toolData.data.length; i++) {
var data = toolData.data[i];
// Make inactive all lesions for the timepoint
data.active = false;
}
}
@ -314,15 +320,26 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
function loadImage(e, eventObject) {
var stackToolDataSource = cornerstoneTools.getToolState(e.currentTarget, 'stack');
var stackData = stackToolDataSource.data[0];
var imageIdsArr = stackData.imageIds;
var indexOfImage = imageIdsArr.indexOf(eventObject.lesionData.imageId);
cornerstone.loadAndCacheImage(stackData.imageIds[indexOfImage]).then(function(image) {
cornerstone.displayImage(eventObject.enabledElement.element,image);
activateLesion(e, eventObject);
});
// If type is active, load image and activate lesion
// If type is inactive, update lesions of enabledElement as inactive
if (eventObject.type === "active") {
var stackToolDataSource = cornerstoneTools.getToolState(e.currentTarget, 'stack');
var stackData = stackToolDataSource.data[0];
var imageIdsArr = stackData.imageIds;
var indexOfImage = imageIdsArr.indexOf(eventObject.lesionData.imageId);
if (indexOfImage > -1) {
cornerstone.loadAndCacheImage(stackData.imageIds[indexOfImage]).then(function(image) {
cornerstone.displayImage(eventObject.enabledElement.element,image);
updateLesion(e, eventObject);
});
}
} else if(eventObject.type === "inactive") {
updateLesion(e, eventObject);
}
}
//This function is called from cornerstone-viewport.html and updates lesion measurement and makes the lesion active

View File

@ -55,12 +55,12 @@ var measurementManagerDAL = (function () {
if (timepointId === lesionTimepointId) {
// Add real mesurement
var timepointObject = {};
timepointObject[timepointId] = {longestDiameter: lesionData.measurementText};
timepointObject[timepointId] = {longestDiameter: lesionData.measurementText, imageId: lesionData.imageId};
timepointsArr.push(timepointObject);
} else {
// Add null measurement
var timepointObject = {};
timepointObject[timepointId] = {longestDiameter: ""};
timepointObject[timepointId] = {longestDiameter: "", imageId: ""};
timepointsArr.push(timepointObject);
}
@ -69,7 +69,6 @@ var measurementManagerDAL = (function () {
var lesionDataCollectionObject = {
lesionNumber: lesionData.lesionNumber,
isTarget: true,
imageId: lesionData.imageId,
locationUID: lesionData.locationUID,
location: getLocationName(lesionData.locationUID),
timepoints: timepointsArr
@ -92,6 +91,8 @@ var measurementManagerDAL = (function () {
var timepoint = timepointArr[i];
if(timepoint[timepointID] != undefined) {
timepoint[timepointID].longestDiameter = lesionData.measurementText;
timepoint[timepointID].imageId = lesionData.imageId;
}
}
Measurements.update(

View File

@ -60,28 +60,44 @@ Template.lesionTable.onRendered(function() {
});
Template.lesionTable.events({
'click table#tblLesion tbody tr': function(e, template) {
// Activate selected lesions when lesion table row is clicked
function activateLesions (e) {
// lesionNumber of measurement = id of row
var lesionNumber = parseInt($(e.currentTarget).attr("id"));
// TODO: Get all imageViewport elements in content
var contentId = Session.get("activeContentId");
var measurementData = Measurements.find({contentId:contentId,"lesionData.lesionNumber":lesionNumber}).fetch();
var lesionData = measurementData[0].lesionData;
console.log(lesionData);
var imageViewportElements = $("#"+contentId).find(".imageViewerViewport");
for( var i=0; i< imageViewportElements.length; i++) {
var imageViewportElement = imageViewportElements[i];
var eventObject = {
// lesionNumber of measurement = id of row
var lesionNumber = parseInt($(e.currentTarget).attr("id"));
var contentId = Session.get("activeContentId");
var measurementData = Measurements.find({contentId:contentId,"lesionData.lesionNumber":lesionNumber}).fetch();
var timepoints = measurementData[0].lesionData.timepoints;
var imageViewportElements = $("#"+contentId).find(".imageViewerViewport");
for( var i=0; i< imageViewportElements.length; i++) {
var timepointObject = timepoints[i];
var timepointKey = Object.keys(timepointObject);
var imageId = timepointObject[timepointKey].imageId;
var longestDiameter = timepointObject[timepointKey].longestDiameter;
var imageViewportElement = imageViewportElements[i];
var eventObject = {};
if(longestDiameter != "") {
eventObject = {
enabledElement: cornerstone.getEnabledElement(imageViewportElement),
lesionData: {lesionNumber: lesionNumber, imageId: lesionData.imageId},
lesionData: {lesionNumber: lesionNumber, imageId: imageId},
type: "active"
};
$(imageViewportElement).trigger("LesionToolModified", eventObject);
} else {
eventObject = {
enabledElement: cornerstone.getEnabledElement(imageViewportElement),
lesionData: {lesionNumber: lesionNumber, imageId: imageId},
type: "inactive"
};
}
$(imageViewportElement).trigger("LesionToolModified", eventObject);
}
}
Template.lesionTable.events({
'click table#tblLesion tbody tr': function(e) {
activateLesions(e);
}
});