syncImageMeasurementAndToolData = function(measurement) { // TODO: Refactor this to merge it with syncMeasurementAndToolData somehow log.info('syncImageMeasurementAndToolData'); var toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState; var imageId = measurement.imageId; var toolType = measurement.measurementType; // If no tool state exists for this imageId, create an empty object to store it if (!toolState[imageId]) { toolState[imageId] = {}; } // Check if we already have toolData for this imageId and toolType if (toolState[imageId][toolType] && toolState[imageId][toolType].data && toolState[imageId][toolType].data.length) { // If we have toolData, we should search it for any toolData // related to the current ImageMeasurement var toolData = toolState[imageId][toolType].data; // Create a flag so we know if we have successfully updated // this ImageMeasurement's timepoint data in the toolData var alreadyExists = false; // Loop through the toolData to search for this ImageMeasurement toolData.forEach(function(tool) { // Break the loop if this isn't the ImageMeasurement we are looking for if (tool._id !== measurement._id) { return; } // If we find the ImageMeasurement, set the flag to True alreadyExists = true; // Update the toolData from the ImageMeasurement data $.extend(tool, measurement); return false; }); // If we found the ImageMeasurement we intended to update, we can stop // this function here if (alreadyExists === true) { return; } } else { // If no toolData exists for this toolType, create an empty array to hold some toolState[imageId][toolType] = { data: [] }; } // If we have reached this point, it means we haven't found the ImageMeasurement we are // looking for in the current toolData. This means we need to add it. // Add the ImageMeasurementData into the toolData for this imageId toolState[imageId][toolType].data.push(measurement); };