Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebApplication/app.js @ 1849:023cce3d7844
introduction of the concept of "virtual series"
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 29 Jun 2021 12:12:46 +0200 |
parents | 251d7f7a6c4e |
children | 58681a5c727b |
comparison
equal
deleted
inserted
replaced
1848:3751485f1b2e | 1849:023cce3d7844 |
---|---|
186 newVal.series.complete) { | 186 newVal.series.complete) { |
187 this.status = 'ready'; | 187 this.status = 'ready'; |
188 | 188 |
189 var that = this; | 189 var that = this; |
190 Vue.nextTick(function() { | 190 Vue.nextTick(function() { |
191 if (newVal.sopInstanceUid !== undefined && | 191 if (newVal.virtualSeriesId !== undefined && |
192 newVal.sopInstanceUid.length > 0) { | 192 newVal.virtualSeriesId.length > 0) { |
193 stone.LoadMultipartInstanceInViewport( | 193 stone.LoadVirtualSeriesInViewport(that.canvasId, newVal.virtualSeriesId); |
194 that.canvasId, seriesInstanceUid, newVal.sopInstanceUid); | |
195 } | 194 } |
196 else { | 195 else { |
197 stone.LoadSeriesInViewport(that.canvasId, seriesInstanceUid); | 196 stone.LoadSeriesInViewport(that.canvasId, seriesInstanceUid); |
198 } | 197 } |
199 }); | 198 }); |
304 event.preventDefault(); | 303 event.preventDefault(); |
305 | 304 |
306 // The "parseInt()" is because of Microsoft Edge Legacy (*) | 305 // The "parseInt()" is because of Microsoft Edge Legacy (*) |
307 this.$emit('updated-series', { | 306 this.$emit('updated-series', { |
308 seriesIndex: parseInt(event.dataTransfer.getData('seriesIndex'), 10), | 307 seriesIndex: parseInt(event.dataTransfer.getData('seriesIndex'), 10), |
309 sopInstanceUid: event.dataTransfer.getData('sopInstanceUid') | 308 virtualSeriesId: event.dataTransfer.getData('virtualSeriesId') |
310 }); | 309 }); |
311 }, | 310 }, |
312 MakeActive: function() { | 311 MakeActive: function() { |
313 this.$emit('selected-viewport'); | 312 this.$emit('selected-viewport'); |
314 }, | 313 }, |
449 | 448 |
450 selectedStudies: [], | 449 selectedStudies: [], |
451 series: [], | 450 series: [], |
452 studies: [], | 451 studies: [], |
453 seriesIndex: {}, // Maps "SeriesInstanceUID" to "index in this.series" | 452 seriesIndex: {}, // Maps "SeriesInstanceUID" to "index in this.series" |
454 multiframeInstanceThumbnails: {} | 453 virtualSeriesThumbnails: {} |
455 } | 454 } |
456 }, | 455 }, |
457 computed: { | 456 computed: { |
458 getSelectedStudies() { | 457 getSelectedStudies() { |
459 var s = ''; | 458 var s = ''; |
518 s.push(this.viewport4Content.series.tags[SERIES_INSTANCE_UID]); | 517 s.push(this.viewport4Content.series.tags[SERIES_INSTANCE_UID]); |
519 | 518 |
520 return s; | 519 return s; |
521 }, | 520 }, |
522 | 521 |
523 GetActiveMultiframeInstances: function() { | 522 GetActiveVirtualSeries: function() { |
524 var s = []; | 523 var s = []; |
525 | 524 |
526 if ('sopInstanceUid' in this.viewport1Content) | 525 if ('virtualSeriesId' in this.viewport1Content) |
527 s.push(this.viewport1Content.sopInstanceUid); | 526 s.push(this.viewport1Content.virtualSeriesId); |
528 | 527 |
529 if ('sopInstanceUid' in this.viewport2Content) | 528 if ('virtualSeriesId' in this.viewport2Content) |
530 s.push(this.viewport2Content.sopInstanceUid); | 529 s.push(this.viewport2Content.virtualSeriesId); |
531 | 530 |
532 if ('sopInstanceUid' in this.viewport3Content) | 531 if ('virtualSeriesId' in this.viewport3Content) |
533 s.push(this.viewport3Content.sopInstanceUid); | 532 s.push(this.viewport3Content.virtualSeriesId); |
534 | 533 |
535 if ('sopInstanceUid' in this.viewport4Content) | 534 if ('virtualSeriesId' in this.viewport4Content) |
536 s.push(this.viewport4Content.sopInstanceUid); | 535 s.push(this.viewport4Content.virtualSeriesId); |
537 | 536 |
538 return s; | 537 return s; |
539 }, | 538 }, |
540 | 539 |
541 GetActiveCanvas: function() { | 540 GetActiveCanvas: function() { |
602 'numberOfFrames' : 0, | 601 'numberOfFrames' : 0, |
603 'complete' : false, | 602 'complete' : false, |
604 'type' : stone.ThumbnailType.LOADING, | 603 'type' : stone.ThumbnailType.LOADING, |
605 'color': study.color, | 604 'color': study.color, |
606 'tags': sourceSeries[i], | 605 'tags': sourceSeries[i], |
607 'multiframeInstances': null | 606 'virtualSeries': null |
608 }); | 607 }); |
609 } | 608 } |
610 } | 609 } |
611 } | 610 } |
612 | 611 |
623 SeriesDragStart: function(event, seriesIndex) { | 622 SeriesDragStart: function(event, seriesIndex) { |
624 // It is necessary to use ".toString()" for Microsoft Edge Legacy (*) | 623 // It is necessary to use ".toString()" for Microsoft Edge Legacy (*) |
625 event.dataTransfer.setData('seriesIndex', seriesIndex.toString()); | 624 event.dataTransfer.setData('seriesIndex', seriesIndex.toString()); |
626 }, | 625 }, |
627 | 626 |
628 MultiframeInstanceDragStart: function(event, seriesIndex, sopInstanceUid) { | 627 VirtualSeriesDragStart: function(event, seriesIndex, virtualSeriesId) { |
629 event.dataTransfer.setData('seriesIndex', seriesIndex.toString()); | 628 event.dataTransfer.setData('seriesIndex', seriesIndex.toString()); |
630 event.dataTransfer.setData('sopInstanceUid', sopInstanceUid.toString()); | 629 event.dataTransfer.setData('virtualSeriesId', virtualSeriesId.toString()); |
631 }, | 630 }, |
632 | 631 |
633 SetViewportSeriesInstanceUid: function(viewportIndex, seriesInstanceUid) { | 632 SetViewportSeriesInstanceUid: function(viewportIndex, seriesInstanceUid) { |
634 if (seriesInstanceUid in this.seriesIndex) { | 633 if (seriesInstanceUid in this.seriesIndex) { |
635 this.SetViewportSeries(viewportIndex, { | 634 this.SetViewportSeries(viewportIndex, { |
642 var series = this.series[info.seriesIndex]; | 641 var series = this.series[info.seriesIndex]; |
643 | 642 |
644 if (viewportIndex == 1) { | 643 if (viewportIndex == 1) { |
645 this.viewport1Content = { | 644 this.viewport1Content = { |
646 series: series, | 645 series: series, |
647 sopInstanceUid: info.sopInstanceUid | 646 virtualSeriesId: info.virtualSeriesId |
648 }; | 647 }; |
649 } | 648 } |
650 else if (viewportIndex == 2) { | 649 else if (viewportIndex == 2) { |
651 this.viewport2Content = { | 650 this.viewport2Content = { |
652 series: series, | 651 series: series, |
653 sopInstanceUid: info.sopInstanceUid | 652 virtualSeriesId: info.virtualSeriesId |
654 }; | 653 }; |
655 } | 654 } |
656 else if (viewportIndex == 3) { | 655 else if (viewportIndex == 3) { |
657 this.viewport3Content = { | 656 this.viewport3Content = { |
658 series: series, | 657 series: series, |
659 sopInstanceUid: info.sopInstanceUid | 658 virtualSeriesId: info.virtualSeriesId |
660 }; | 659 }; |
661 } | 660 } |
662 else if (viewportIndex == 4) { | 661 else if (viewportIndex == 4) { |
663 this.viewport4Content = { | 662 this.viewport4Content = { |
664 series: series, | 663 series: series, |
665 sopInstanceUid: info.sopInstanceUid | 664 virtualSeriesId: info.virtualSeriesId |
666 }; | 665 }; |
667 } | 666 } |
668 }, | 667 }, |
669 | 668 |
670 ClickSeries: function(seriesIndex) { | 669 ClickSeries: function(seriesIndex) { |
671 this.SetViewportSeries(this.activeViewport, { | 670 this.SetViewportSeries(this.activeViewport, { |
672 seriesIndex: seriesIndex | 671 seriesIndex: seriesIndex |
673 }); | 672 }); |
674 }, | 673 }, |
675 | 674 |
676 ClickMultiframeInstance: function(seriesIndex, sopInstanceUid) { | 675 ClickVirtualSeries: function(seriesIndex, virtualSeriesId) { |
677 this.SetViewportSeries(this.activeViewport, { | 676 this.SetViewportSeries(this.activeViewport, { |
678 seriesIndex: seriesIndex, | 677 seriesIndex: seriesIndex, |
679 sopInstanceUid: sopInstanceUid | 678 virtualSeriesId: virtualSeriesId |
680 }); | 679 }); |
681 }, | 680 }, |
682 | 681 |
683 HideViewport: function(index) { | 682 HideViewport: function(index) { |
684 if (index == 1) { | 683 if (index == 1) { |
798 if (seriesInstanceUid in pendingSeriesPdf_) { | 797 if (seriesInstanceUid in pendingSeriesPdf_) { |
799 stone.FetchPdf(studyInstanceUid, seriesInstanceUid); | 798 stone.FetchPdf(studyInstanceUid, seriesInstanceUid); |
800 delete pendingSeriesPdf_[seriesInstanceUid]; | 799 delete pendingSeriesPdf_[seriesInstanceUid]; |
801 } | 800 } |
802 | 801 |
803 if (stone.LoadMultiframeInstancesFromSeries(seriesInstanceUid)) { | 802 if (stone.LookupVirtualSeries(seriesInstanceUid)) { |
804 series.multiframeInstances = JSON.parse(stone.GetStringBuffer()); | 803 series.virtualSeries = JSON.parse(stone.GetStringBuffer()); |
805 } | 804 } |
806 } | 805 } |
807 | 806 |
808 // https://fr.vuejs.org/2016/02/06/common-gotchas/#Why-isn%E2%80%99t-the-DOM-updating | 807 // https://fr.vuejs.org/2016/02/06/common-gotchas/#Why-isn%E2%80%99t-the-DOM-updating |
809 this.$set(this.series, index, series); | 808 this.$set(this.series, index, series); |
1058 | 1057 |
1059 this.modalNotDiagnostic = this.settingNotDiagnostic; | 1058 this.modalNotDiagnostic = this.settingNotDiagnostic; |
1060 | 1059 |
1061 var that = this; | 1060 var that = this; |
1062 | 1061 |
1063 window.addEventListener('MultiframeInstanceThumbnailLoaded', function(args) { | 1062 window.addEventListener('VirtualSeriesThumbnailLoaded', function(args) { |
1064 that.$set(that.multiframeInstanceThumbnails, args.detail.sopInstanceUid, args.detail.thumbnail); | 1063 that.$set(that.virtualSeriesThumbnails, args.detail.virtualSeriesId, args.detail.thumbnail); |
1065 }); | 1064 }); |
1066 | 1065 |
1067 window.addEventListener('ThumbnailLoaded', function(args) { | 1066 window.addEventListener('ThumbnailLoaded', function(args) { |
1068 //var studyInstanceUid = args.detail.studyInstanceUid; | 1067 //var studyInstanceUid = args.detail.studyInstanceUid; |
1069 var seriesInstanceUid = args.detail.seriesInstanceUid; | 1068 var seriesInstanceUid = args.detail.seriesInstanceUid; |