diff --git a/Packages/lesiontracker/compatibility/lesionTool.js b/Packages/lesiontracker/compatibility/lesionTool.js index ace490154..11a9128e2 100644 --- a/Packages/lesiontracker/compatibility/lesionTool.js +++ b/Packages/lesiontracker/compatibility/lesionTool.js @@ -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 diff --git a/Packages/lesiontracker/compatibility/measurementManagerDAL.js b/Packages/lesiontracker/compatibility/measurementManagerDAL.js index 30b8fa160..024097115 100644 --- a/Packages/lesiontracker/compatibility/measurementManagerDAL.js +++ b/Packages/lesiontracker/compatibility/measurementManagerDAL.js @@ -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( diff --git a/Packages/lesiontracker/components/lesionTable/lesionTable.js b/Packages/lesiontracker/components/lesionTable/lesionTable.js index 7897fc81e..b6001b70c 100644 --- a/Packages/lesiontracker/components/lesionTable/lesionTable.js +++ b/Packages/lesiontracker/components/lesionTable/lesionTable.js @@ -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); } });