diff Applications/StoneWebViewer/WebApplication/app.js @ 1704:902d13889ae4

LoadMultipartInstanceInViewport() in C++
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 27 Nov 2020 17:15:09 +0100
parents 76c590a62755
children 3d62634d442f
line wrap: on
line diff
--- a/Applications/StoneWebViewer/WebApplication/app.js	Fri Nov 27 16:36:43 2020 +0100
+++ b/Applications/StoneWebViewer/WebApplication/app.js	Fri Nov 27 17:15:09 2020 +0100
@@ -102,7 +102,7 @@
 
 
 Vue.component('viewport', {
-  props: [ 'left', 'top', 'width', 'height', 'canvasId', 'active', 'series', 'viewportIndex',
+  props: [ 'left', 'top', 'width', 'height', 'canvasId', 'active', 'content', 'viewportIndex',
            'showInfo' ],
   template: '#viewport-template',
   data: function () {
@@ -128,7 +128,7 @@
        **/
       this.cineLoadingFrame = false;
     },
-    series: function(newVal, oldVal) {
+    content: function(newVal, oldVal) {
       this.status = 'loading';
       this.cineControls = false;
       this.cineMode = '';
@@ -202,9 +202,9 @@
       var pdfPointer = args.detail.pdfPointer;
       var pdfSize = args.detail.pdfSize;
 
-      if ('tags' in that.series &&
-          that.series.tags[STUDY_INSTANCE_UID] == studyInstanceUid &&
-          that.series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
+      if ('tags' in that.content &&
+          that.content.tags[STUDY_INSTANCE_UID] == studyInstanceUid &&
+          that.content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
 
         that.status = 'pdf';
         var pdf = new Uint8Array(HEAPU8.subarray(pdfPointer, pdfPointer + pdfSize));
@@ -228,7 +228,10 @@
       event.preventDefault();
 
       // The "parseInt()" is because of Microsoft Edge Legacy (*)
-      this.$emit('updated-series', parseInt(event.dataTransfer.getData('seriesIndex'), 10));
+      this.$emit('updated-series', {
+        seriesIndex: parseInt(event.dataTransfer.getData('seriesIndex'), 10),
+        sopInstanceUid: event.dataTransfer.getData('sopInstanceUid')
+      });
     },
     MakeActive: function() {
       this.$emit('selected-viewport');
@@ -336,28 +339,28 @@
       viewport1Left: '0%',
       viewport1Top: '0%',
       viewport1Visible: true,
-      viewport1Series: {},
+      viewport1Content: {},
       
       viewport2Width: '100%',
       viewport2Height: '100%',
       viewport2Left: '0%',
       viewport2Top: '0%',
       viewport2Visible: false,
-      viewport2Series: {},
+      viewport2Content: {},
 
       viewport3Width: '100%',
       viewport3Height: '100%',
       viewport3Left: '0%',
       viewport3Top: '0%',
       viewport3Visible: false,
-      viewport3Series: {},
+      viewport3Content: {},
 
       viewport4Width: '100%',
       viewport4Height: '100%',
       viewport4Left: '0%',
       viewport4Top: '0%',
       viewport4Visible: false,
-      viewport4Series: {},
+      viewport4Content: {},
 
       showWindowing: false,
       windowingPresets: [],
@@ -420,17 +423,17 @@
     GetActiveSeries: function() {
       var s = [];
 
-      if ('tags' in this.viewport1Series)
-        s.push(this.viewport1Series.tags[SERIES_INSTANCE_UID]);
+      if ('tags' in this.viewport1Content)
+        s.push(this.viewport1Content.tags[SERIES_INSTANCE_UID]);
 
-      if ('tags' in this.viewport2Series)
-        s.push(this.viewport2Series.tags[SERIES_INSTANCE_UID]);
+      if ('tags' in this.viewport2Content)
+        s.push(this.viewport2Content.tags[SERIES_INSTANCE_UID]);
 
-      if ('tags' in this.viewport3Series)
-        s.push(this.viewport3Series.tags[SERIES_INSTANCE_UID]);
+      if ('tags' in this.viewport3Content)
+        s.push(this.viewport3Content.tags[SERIES_INSTANCE_UID]);
 
-      if ('tags' in this.viewport4Series)
-        s.push(this.viewport4Series.tags[SERIES_INSTANCE_UID]);
+      if ('tags' in this.viewport4Content)
+        s.push(this.viewport4Content.tags[SERIES_INSTANCE_UID]);
 
       return s;
     },
@@ -518,31 +521,40 @@
       event.dataTransfer.setData('seriesIndex', seriesIndex.toString());
     },
 
+    MultiframeInstanceDragStart: function(event, seriesIndex, sopInstanceUid) {
+      event.dataTransfer.setData('seriesIndex', seriesIndex.toString());
+      event.dataTransfer.setData('sopInstanceUid', sopInstanceUid.toString());
+    },
+
     SetViewportSeriesInstanceUid: function(viewportIndex, seriesInstanceUid) {
       if (seriesInstanceUid in this.seriesIndex) {
-        this.SetViewportSeries(viewportIndex, this.seriesIndex[seriesInstanceUid]);
+        this.SetViewportSeries(viewportIndex, {
+          seriesIndex: this.seriesIndex[seriesInstanceUid]
+        });
       }
     },
     
-    SetViewportSeries: function(viewportIndex, seriesIndex) {
-      var series = this.series[seriesIndex];
+    SetViewportSeries: function(viewportIndex, info) {
+      var series = this.series[info.seriesIndex];
       
       if (viewportIndex == 1) {
-        this.viewport1Series = series;
+        this.viewport1Content = series;
       }
       else if (viewportIndex == 2) {
-        this.viewport2Series = series;
+        this.viewport2Content = series;
       }
       else if (viewportIndex == 3) {
-        this.viewport3Series = series;
+        this.viewport3Content = series;
       }
       else if (viewportIndex == 4) {
-        this.viewport4Series = series;
+        this.viewport4Content = series;
       }
     },
     
     ClickSeries: function(seriesIndex) {
-      this.SetViewportSeries(this.activeViewport, seriesIndex);
+      this.SetViewportSeries(this.activeViewport, {
+        seriesIndex: seriesIndex
+      });
     },
     
     HideViewport: function(index) {
@@ -673,24 +685,24 @@
         // https://fr.vuejs.org/2016/02/06/common-gotchas/#Why-isn%E2%80%99t-the-DOM-updating
         this.$set(this.series, index, series);
 
-        if ('tags' in this.viewport1Series &&
-            this.viewport1Series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
-          this.$set(this.viewport1Series, series);
+        if ('tags' in this.viewport1Content &&
+            this.viewport1Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
+          this.$set(this.viewport1Content, series);
         }
 
-        if ('tags' in this.viewport2Series &&
-            this.viewport2Series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
-          this.$set(this.viewport2Series, series);
+        if ('tags' in this.viewport2Content &&
+            this.viewport2Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
+          this.$set(this.viewport2Content, series);
         }
 
-        if ('tags' in this.viewport3Series &&
-            this.viewport3Series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
-          this.$set(this.viewport3Series, series);
+        if ('tags' in this.viewport3Content &&
+            this.viewport3Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
+          this.$set(this.viewport3Content, series);
         }
 
-        if ('tags' in this.viewport4Series &&
-            this.viewport4Series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
-          this.$set(this.viewport4Series, series);
+        if ('tags' in this.viewport4Content &&
+            this.viewport4Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) {
+          this.$set(this.viewport4Content, series);
         }
       }
     },