comparison Applications/StoneWebViewer/WebApplication/app.js @ 1815:b81775f1b196

New tools for annotations: segment length, circle, angle and eraser
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 25 May 2021 18:07:52 +0200
parents 634ff8993f6a
children 5baaad557d58
comparison
equal deleted inserted replaced
1814:53f3411bf94b 1815:b81775f1b196
389 showReferenceLines: true, 389 showReferenceLines: true,
390 synchronizedBrowsing: false, 390 synchronizedBrowsing: false,
391 globalConfiguration: {}, 391 globalConfiguration: {},
392 creatingArchive: false, 392 creatingArchive: false,
393 archiveJob: '', 393 archiveJob: '',
394 annotationsCurrentAction: stone.WebViewerAction.NONE, // dummy value
395 annotationsBackupAction: stone.WebViewerAction.NONE, // dummy value
394 396
395 modalWarning: false, 397 modalWarning: false,
396 modalNotDiagnostic: false, 398 modalNotDiagnostic: false,
397 modalPreferences: false, 399 modalPreferences: false,
398 400
650 this.viewport4Content = { 652 this.viewport4Content = {
651 series: series, 653 series: series,
652 sopInstanceUid: info.sopInstanceUid 654 sopInstanceUid: info.sopInstanceUid
653 }; 655 };
654 } 656 }
657
658 this.ResetAnnotationsAction();
655 }, 659 },
656 660
657 ClickSeries: function(seriesIndex) { 661 ClickSeries: function(seriesIndex) {
658 this.SetViewportSeries(this.activeViewport, { 662 this.SetViewportSeries(this.activeViewport, {
659 seriesIndex: seriesIndex 663 seriesIndex: seriesIndex
747 this.layoutCountX = 1; 751 this.layoutCountX = 1;
748 this.layoutCountY = 2; 752 this.layoutCountY = 2;
749 } 753 }
750 754
751 this.FitContent(); 755 this.FitContent();
756 this.ResetAnnotationsAction();
752 }, 757 },
753 758
754 UpdateSeriesThumbnail: function(seriesInstanceUid) { 759 UpdateSeriesThumbnail: function(seriesInstanceUid) {
755 if (seriesInstanceUid in this.seriesIndex) { 760 if (seriesInstanceUid in this.seriesIndex) {
756 var index = this.seriesIndex[seriesInstanceUid]; 761 var index = this.seriesIndex[seriesInstanceUid];
858 $('[data-toggle="tooltip"]').tooltip('hide'); 863 $('[data-toggle="tooltip"]').tooltip('hide');
859 }, 864 },
860 865
861 SetMouseButtonActions: function(left, middle, right) { 866 SetMouseButtonActions: function(left, middle, right) {
862 this.mouseActionsVisible = false; 867 this.mouseActionsVisible = false;
868 this.annotationsBackupAction = stone.WebViewerAction.NONE;
863 stone.SetMouseButtonActions(left, middle, right); 869 stone.SetMouseButtonActions(left, middle, right);
864 }, 870 },
871
872 SetAnnotationsAction: function(action) {
873 if (this.annotationsCurrentAction == action) {
874 this.ResetAnnotationsAction();
875 } else {
876 this.annotationsCurrentAction = action;
877
878 if (this.annotationsBackupAction == stone.WebViewerAction.NONE) {
879 this.annotationsBackupAction = stone.GetLeftMouseButtonAction();
880 }
881
882 stone.SetMouseButtonActions(action,
883 stone.GetMiddleMouseButtonAction(),
884 stone.GetRightMouseButtonAction());
885 }
886 },
887
888 ResetAnnotationsAction: function() {
889 if (this.annotationsBackupAction != stone.WebViewerAction.NONE) {
890 stone.SetMouseButtonActions(this.annotationsBackupAction,
891 stone.GetMiddleMouseButtonAction(),
892 stone.GetRightMouseButtonAction());
893 }
894
895 this.annotationsBackupAction = stone.WebViewerAction.NONE;
896 this.annotationsCurrentAction = stone.WebViewerAction.NONE;
897 },
865 898
866 LoadOsiriXAnnotations: function(xml, clearPrevious) 899 LoadOsiriXAnnotations: function(xml, clearPrevious)
867 { 900 {
868 if (stone.LoadOsiriXAnnotations(xml, clearPrevious)) { 901 if (stone.LoadOsiriXAnnotations(xml, clearPrevious)) {
869 var seriesInstanceUid = stone.GetStringBuffer(); 902 var seriesInstanceUid = stone.GetStringBuffer();
1035 window.addEventListener('MetadataLoaded', function(args) { 1068 window.addEventListener('MetadataLoaded', function(args) {
1036 var studyInstanceUid = args.detail.studyInstanceUid; 1069 var studyInstanceUid = args.detail.studyInstanceUid;
1037 var seriesInstanceUid = args.detail.seriesInstanceUid; 1070 var seriesInstanceUid = args.detail.seriesInstanceUid;
1038 that.UpdateIsSeriesComplete(studyInstanceUid, seriesInstanceUid); 1071 that.UpdateIsSeriesComplete(studyInstanceUid, seriesInstanceUid);
1039 }); 1072 });
1073
1074 window.addEventListener('StoneAnnotationAdded', function() {
1075 that.ResetAnnotationsAction();
1076 });
1077
1078 window.addEventListener('StoneAnnotationRemoved', function() {
1079 that.ResetAnnotationsAction();
1080 });
1040 } 1081 }
1041 }); 1082 });
1042 1083
1043 1084
1044 1085
1139 1180
1140 1181
1141 window.addEventListener('StoneException', function() { 1182 window.addEventListener('StoneException', function() {
1142 console.error('Exception catched in Stone'); 1183 console.error('Exception catched in Stone');
1143 }); 1184 });
1144
1145 1185
1146 1186
1147 1187
1148 function ParseJsonWithComments(json) 1188 function ParseJsonWithComments(json)
1149 { 1189 {