diff --git a/anatomy/static/css/anatomy.css b/anatomy/static/css/anatomy.css index b16dd961..cc458644 100644 --- a/anatomy/static/css/anatomy.css +++ b/anatomy/static/css/anatomy.css @@ -125,7 +125,7 @@ button a { float: right; } -#dicom-element { +#dicom-image { width: 60%; float: left; height: 600px; diff --git a/anatomy/static/js/anatomy.js b/anatomy/static/js/anatomy.js index 6bf2ad09..de6e2ca1 100644 --- a/anatomy/static/js/anatomy.js +++ b/anatomy/static/js/anatomy.js @@ -36,6 +36,8 @@ $(document).ready(function () { if($("#dicom-image").length) { + console.log("Dicom element found ", $("#dicom-image")); + $('#dicom-image').bind('contextmenu', function(e) { return false; }); @@ -53,7 +55,7 @@ cornerstoneTools.init(); const RotateTool = cornerstoneTools.RotateTool; const StackScrollTool = cornerstoneTools.StackScrollTool; const MagnifyTool = cornerstoneTools.MagnifyTool; - + const ArrowAnnotateTool = cornerstoneTools.ArrowAnnotateTool; const element = document.getElementById('dicom-image'); @@ -71,14 +73,40 @@ cornerstone.loadAndCacheImage(imageId).then(function(image) { cornerstoneTools.addTool(RotateTool); cornerstoneTools.addTool(StackScrollTool); cornerstoneTools.addTool(MagnifyTool); + + cornerstoneTools.addTool(ArrowAnnotateTool, { + configuration: { + getTextCallback: () => {}, + changeTextCallback: () => {}, + allowEmptyLabel: true, + renderDashed: false, + drawHandles: false, + drawHandlesOnHover: true, + }, + }); + + + // Enable our tools // Avoid incorrect aspect ratio - cornerstone.resize(element); cornerstoneTools.setToolActive("Pan", { mouseButtonMask: 1 }); cornerstoneTools.setToolActive("Wwwc", { mouseButtonMask: 2 }); cornerstoneTools.setToolActive("ZoomMouseWheel", { mouseButtonMask: 3 }); cornerstoneTools.setToolActive("Zoom", { mouseButtonMask: 4 }); + if (element.dataset.edit_annotation == "true") { + cornerstoneTools.setToolActive("ArrowAnnotate", { mouseButtonMask: 2 }); + } else { + cornerstoneTools.setToolEnabled("ArrowAnnotate"); + } + + if (element.dataset.annotations) { + loadJsonToolStateOnCurrentImage(element.dataset.annotations) + } + + cornerstone.resize(element); + + }); } @@ -132,3 +160,44 @@ function prepAnswerData() { }) $("#id_marked_answers").val(JSON.stringify(window.marked_answers)); } + +function getJsonToolStateNoId() { + const el = document.getElementById("dicom-image"); + + const c = cornerstone.getEnabledElement(el); + + const toolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager; + + const image_id = c.image.imageId; + + const state_with_id = toolStateManager.saveToolState() + + const json_tool_state = JSON.stringify(state_with_id[image_id]); + + return json_tool_state; + +} + + +function loadJsonToolStateOnCurrentImage(json) { + let el = document.getElementById("dicom-image"); + + const toolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager; + + const c = cornerstone.getEnabledElement(el); + + let image_id = c.image.imageId; + + let tool_state_no_id = JSON.parse(json); + + let tool_state = {}; + tool_state[image_id] = tool_state_no_id; + + toolStateManager.restoreToolState(tool_state); + + cornerstone.reset(el); + + return tool_state; + + +} \ No newline at end of file diff --git a/anatomy/templates/anatomy/exam.html b/anatomy/templates/anatomy/exam.html index d60aee97..5a72776e 100644 --- a/anatomy/templates/anatomy/exam.html +++ b/anatomy/templates/anatomy/exam.html @@ -41,7 +41,7 @@
|
-
+ |