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:
parent
28c67b573f
commit
ead3928077
@ -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
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user