select lesion from lesion table and show its image(has some bugs)

This commit is contained in:
Aysel Afsar 2015-10-31 10:26:57 -04:00
parent 4968fc1811
commit eac9669aa4
5 changed files with 52 additions and 11 deletions

View File

@ -45,6 +45,7 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
// Subscribe LesionMeasurementCreated // Subscribe LesionMeasurementCreated
$(element).trigger("LesionMeasurementCreated"); $(element).trigger("LesionMeasurementCreated");
console.log(mouseEventData.image.imageId);
// create the measurement data for this tool with the end handle activated // create the measurement data for this tool with the end handle activated
var measurementData = { var measurementData = {
visible : true, visible : true,
@ -64,6 +65,7 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
} }
}, },
index: lineIndex, index: lineIndex,
imageId: mouseEventData.image.imageId,
measurementText: "", measurementText: "",
linkedTextCoords: { linkedTextCoords: {
start : { start : {
@ -242,12 +244,11 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
///////// END IMAGE RENDERING /////// ///////// END IMAGE RENDERING ///////
//This function is called from cornerstone-viewport.html and updates lesion measurement and makes the lesion active function activateLesion(e, eventObject) {
function measurementModified(e, eventObject){
var start = new Date(); var start = new Date();
var enabledElement = eventObject.enabledElement; var enabledElement = eventObject.enabledElement;
var lineIndex = eventObject.lineIndex; var lesionNumber = eventObject.lesionData.lesionNumber;
var type = eventObject.type; var type = eventObject.type;
// if we have no toolData for this element, return immediately as there is nothing to do // if we have no toolData for this element, return immediately as there is nothing to do
@ -264,7 +265,7 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
var data = toolData.data[i]; var data = toolData.data[i];
//When click a row of table measurements, measurement will be active and color will be green //When click a row of table measurements, measurement will be active and color will be green
if (data.index === eventObject.lineIndex && eventObject.type !== "active") { if (data.lesionNumber === eventObject.lesionNumber && eventObject.type !== "active") {
data.visible = false; data.visible = false;
deletedDataIndex = i; deletedDataIndex = i;
} }
@ -276,9 +277,8 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
} else { } else {
for (var i = 0; i < toolData.data.length; i++) { for (var i = 0; i < toolData.data.length; i++) {
var data = toolData.data[i]; var data = toolData.data[i];
//When click a row of table measurements, measurement will be active and color will be green //When click a row of table measurements, measurement will be active and color will be green
if (data.index === eventObject.lineIndex && eventObject.type === "active") { if (data.lesionNumber === eventObject.lesionData.lesionNumber && eventObject.type === "active") {
data.active = true; data.active = true;
} else{ } else{
data.active = false; data.active = false;
@ -303,7 +303,7 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
canvasContext: context, canvasContext: context,
measurementText: "", measurementText: "",
renderTimeInMs : diff, renderTimeInMs : diff,
lineIndex : lineIndex, lesionNumber : lesionNumber,
type : type //Holds image will be deleted or active type : type //Holds image will be deleted or active
}; };
@ -312,6 +312,24 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
onImageRendered(e, eventData); onImageRendered(e, eventData);
} }
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);
});
}
//This function is called from cornerstone-viewport.html and updates lesion measurement and makes the lesion active
function measurementModified(e, eventObject){
loadImage(e,eventObject);
}
// module exports // module exports
cornerstoneTools.lesion = cornerstoneTools.mouseButtonTool({ cornerstoneTools.lesion = cornerstoneTools.mouseButtonTool({
createNewMeasurement : createNewMeasurement, createNewMeasurement : createNewMeasurement,

View File

@ -69,6 +69,7 @@ var measurementManagerDAL = (function () {
var lesionDataCollectionObject = { var lesionDataCollectionObject = {
lesionNumber: lesionData.lesionNumber, lesionNumber: lesionData.lesionNumber,
isTarget: true, isTarget: true,
imageId: lesionData.imageId,
locationUID: lesionData.locationUID, locationUID: lesionData.locationUID,
location: getLocationName(lesionData.locationUID), location: getLocationName(lesionData.locationUID),
timepoints: timepointsArr timepoints: timepointsArr

View File

@ -20,7 +20,6 @@
{{ >lesionTableRow }} {{ >lesionTableRow }}
{{ /each }} {{ /each }}
<!--Each measurement as row--> <!--Each measurement as row-->
<!--Each time point as a column--> <!--Each time point as a column-->
</tbody> </tbody>

View File

@ -21,6 +21,7 @@ Template.lesionTable.helpers({
}); });
Template.lesionTable.onRendered(function() { Template.lesionTable.onRendered(function() {
var contentId = this.data.contentId; var contentId = this.data.contentId;
var viewportColumns = ViewerData[contentId].viewportColumns; var viewportColumns = ViewerData[contentId].viewportColumns;
var viewportRows = ViewerData[contentId].viewportRows; var viewportRows = ViewerData[contentId].viewportRows;
@ -59,6 +60,28 @@ Template.lesionTable.onRendered(function() {
}); });
Template.lesionTable.onCreated(function() { Template.lesionTable.events({
this.timepointNamesDictionary = new ReactiveDict(); 'click table#tblLesion tbody tr': function(e, template) {
// 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 = {
enabledElement: cornerstone.getEnabledElement(imageViewportElement),
lesionData: {lesionNumber: lesionNumber, imageId: lesionData.imageId},
type: "active"
};
$(imageViewportElement).trigger("LesionToolModified", eventObject);
}
}
}); });

View File

@ -1,5 +1,5 @@
<template name="lesionTableRow"> <template name="lesionTableRow">
<tr class="lesionTableRow"> <tr id="{{lesionData.lesionNumber}}" class="lesionTableRow">
<td class='lesionNumber'>{{lesionData.lesionNumber}}</td> <td class='lesionNumber'>{{lesionData.lesionNumber}}</td>
<td class='location'>{{lesionData.location}}</td> <td class='location'>{{lesionData.location}}</td>
<td class='target'>{{#if lesionData.isTarget}} Y {{else}} N {{/if}}</td> <td class='target'>{{#if lesionData.isTarget}} Y {{else}} N {{/if}}</td>