Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebApplication/app.js @ 1705:3d62634d442f
multiple multiframe is working
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 27 Nov 2020 17:43:46 +0100 |
parents | 902d13889ae4 |
children | 432172b49de4 |
comparison
equal
deleted
inserted
replaced
1704:902d13889ae4 | 1705:3d62634d442f |
---|---|
138 if (this.cineTimeoutId !== null) { | 138 if (this.cineTimeoutId !== null) { |
139 clearTimeout(this.cineTimeoutId); | 139 clearTimeout(this.cineTimeoutId); |
140 this.cineTimeoutId = null; | 140 this.cineTimeoutId = null; |
141 } | 141 } |
142 | 142 |
143 var studyInstanceUid = newVal.tags[STUDY_INSTANCE_UID]; | 143 var studyInstanceUid = newVal.series.tags[STUDY_INSTANCE_UID]; |
144 var seriesInstanceUid = newVal.tags[SERIES_INSTANCE_UID]; | 144 var seriesInstanceUid = newVal.series.tags[SERIES_INSTANCE_UID]; |
145 stone.SpeedUpFetchSeriesMetadata(studyInstanceUid, seriesInstanceUid); | 145 stone.SpeedUpFetchSeriesMetadata(studyInstanceUid, seriesInstanceUid); |
146 | 146 |
147 if ((newVal.type == stone.ThumbnailType.IMAGE || | 147 if ((newVal.series.type == stone.ThumbnailType.IMAGE || |
148 newVal.type == stone.ThumbnailType.NO_PREVIEW) && | 148 newVal.series.type == stone.ThumbnailType.NO_PREVIEW) && |
149 newVal.complete) { | 149 newVal.series.complete) { |
150 this.status = 'ready'; | 150 this.status = 'ready'; |
151 | 151 |
152 var that = this; | 152 var that = this; |
153 Vue.nextTick(function() { | 153 Vue.nextTick(function() { |
154 stone.LoadSeriesInViewport(that.canvasId, seriesInstanceUid); | 154 if (newVal.sopInstanceUid !== undefined && |
155 newVal.sopInstanceUid.length > 0) { | |
156 stone.LoadMultipartInstanceInViewport( | |
157 that.canvasId, seriesInstanceUid, newVal.sopInstanceUid); | |
158 } | |
159 else { | |
160 stone.LoadSeriesInViewport(that.canvasId, seriesInstanceUid); | |
161 } | |
155 }); | 162 }); |
156 } | 163 } |
157 else if (newVal.type == stone.ThumbnailType.PDF) { | 164 else if (newVal.series.type == stone.ThumbnailType.PDF) { |
158 if (newVal.complete) { | 165 if (newVal.series.complete) { |
159 /** | 166 /** |
160 * Series is complete <=> One already knows about the | 167 * Series is complete <=> One already knows about the |
161 * SOPInstanceUIDs that are available in this series. As a | 168 * SOPInstanceUIDs that are available in this series. As a |
162 * consequence, | 169 * consequence, |
163 * "OrthancStone::SeriesMetadataLoader::Accessor" will not | 170 * "OrthancStone::SeriesMetadataLoader::Accessor" will not |
171 * metadata is available. | 178 * metadata is available. |
172 **/ | 179 **/ |
173 pendingSeriesPdf_[seriesInstanceUid] = true; | 180 pendingSeriesPdf_[seriesInstanceUid] = true; |
174 } | 181 } |
175 } | 182 } |
176 else if (newVal.type == stone.ThumbnailType.VIDEO) { | 183 else if (newVal.series.type == stone.ThumbnailType.VIDEO) { |
177 this.status = 'video'; | 184 this.status = 'video'; |
178 console.warn('Videos are not supported by the Stone Web viewer yet'); | 185 console.warn('Videos are not supported by the Stone Web viewer yet'); |
179 } | 186 } |
180 } | 187 } |
181 }, | 188 }, |
200 var studyInstanceUid = args.detail.studyInstanceUid; | 207 var studyInstanceUid = args.detail.studyInstanceUid; |
201 var seriesInstanceUid = args.detail.seriesInstanceUid; | 208 var seriesInstanceUid = args.detail.seriesInstanceUid; |
202 var pdfPointer = args.detail.pdfPointer; | 209 var pdfPointer = args.detail.pdfPointer; |
203 var pdfSize = args.detail.pdfSize; | 210 var pdfSize = args.detail.pdfSize; |
204 | 211 |
205 if ('tags' in that.content && | 212 if ('tags' in that.content.series && |
206 that.content.tags[STUDY_INSTANCE_UID] == studyInstanceUid && | 213 that.content.series.tags[STUDY_INSTANCE_UID] == studyInstanceUid && |
207 that.content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { | 214 that.content.series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { |
208 | 215 |
209 that.status = 'pdf'; | 216 that.status = 'pdf'; |
210 var pdf = new Uint8Array(HEAPU8.subarray(pdfPointer, pdfPointer + pdfSize)); | 217 var pdf = new Uint8Array(HEAPU8.subarray(pdfPointer, pdfPointer + pdfSize)); |
211 | 218 |
212 /** | 219 /** |
337 viewport1Width: '100%', | 344 viewport1Width: '100%', |
338 viewport1Height: '100%', | 345 viewport1Height: '100%', |
339 viewport1Left: '0%', | 346 viewport1Left: '0%', |
340 viewport1Top: '0%', | 347 viewport1Top: '0%', |
341 viewport1Visible: true, | 348 viewport1Visible: true, |
342 viewport1Content: {}, | 349 viewport1Content: { series: {} }, |
343 | 350 |
344 viewport2Width: '100%', | 351 viewport2Width: '100%', |
345 viewport2Height: '100%', | 352 viewport2Height: '100%', |
346 viewport2Left: '0%', | 353 viewport2Left: '0%', |
347 viewport2Top: '0%', | 354 viewport2Top: '0%', |
348 viewport2Visible: false, | 355 viewport2Visible: false, |
349 viewport2Content: {}, | 356 viewport2Content: { series: {} }, |
350 | 357 |
351 viewport3Width: '100%', | 358 viewport3Width: '100%', |
352 viewport3Height: '100%', | 359 viewport3Height: '100%', |
353 viewport3Left: '0%', | 360 viewport3Left: '0%', |
354 viewport3Top: '0%', | 361 viewport3Top: '0%', |
355 viewport3Visible: false, | 362 viewport3Visible: false, |
356 viewport3Content: {}, | 363 viewport3Content: { series: {} }, |
357 | 364 |
358 viewport4Width: '100%', | 365 viewport4Width: '100%', |
359 viewport4Height: '100%', | 366 viewport4Height: '100%', |
360 viewport4Left: '0%', | 367 viewport4Left: '0%', |
361 viewport4Top: '0%', | 368 viewport4Top: '0%', |
362 viewport4Visible: false, | 369 viewport4Visible: false, |
363 viewport4Content: {}, | 370 viewport4Content: { series: {} }, |
364 | 371 |
365 showWindowing: false, | 372 showWindowing: false, |
366 windowingPresets: [], | 373 windowingPresets: [], |
367 | 374 |
368 selectedStudies: [], | 375 selectedStudies: [], |
421 }, | 428 }, |
422 | 429 |
423 GetActiveSeries: function() { | 430 GetActiveSeries: function() { |
424 var s = []; | 431 var s = []; |
425 | 432 |
426 if ('tags' in this.viewport1Content) | 433 if ('tags' in this.viewport1Content.series) |
427 s.push(this.viewport1Content.tags[SERIES_INSTANCE_UID]); | 434 s.push(this.viewport1Content.series.tags[SERIES_INSTANCE_UID]); |
428 | 435 |
429 if ('tags' in this.viewport2Content) | 436 if ('tags' in this.viewport2Content.series) |
430 s.push(this.viewport2Content.tags[SERIES_INSTANCE_UID]); | 437 s.push(this.viewport2Content.series.tags[SERIES_INSTANCE_UID]); |
431 | 438 |
432 if ('tags' in this.viewport3Content) | 439 if ('tags' in this.viewport3Content.series) |
433 s.push(this.viewport3Content.tags[SERIES_INSTANCE_UID]); | 440 s.push(this.viewport3Content.series.tags[SERIES_INSTANCE_UID]); |
434 | 441 |
435 if ('tags' in this.viewport4Content) | 442 if ('tags' in this.viewport4Content.series) |
436 s.push(this.viewport4Content.tags[SERIES_INSTANCE_UID]); | 443 s.push(this.viewport4Content.series.tags[SERIES_INSTANCE_UID]); |
444 | |
445 return s; | |
446 }, | |
447 | |
448 GetActiveMultiframeInstances: function() { | |
449 var s = []; | |
450 | |
451 if ('sopInstanceUid' in this.viewport1Content) | |
452 s.push(this.viewport1Content.sopInstanceUid); | |
453 | |
454 if ('sopInstanceUid' in this.viewport2Content) | |
455 s.push(this.viewport2Content.sopInstanceUid); | |
456 | |
457 if ('sopInstanceUid' in this.viewport3Content) | |
458 s.push(this.viewport3Content.sopInstanceUid); | |
459 | |
460 if ('sopInstanceUid' in this.viewport4Content) | |
461 s.push(this.viewport4Content.sopInstanceUid); | |
437 | 462 |
438 return s; | 463 return s; |
439 }, | 464 }, |
440 | 465 |
441 GetActiveCanvas: function() { | 466 GetActiveCanvas: function() { |
533 }); | 558 }); |
534 } | 559 } |
535 }, | 560 }, |
536 | 561 |
537 SetViewportSeries: function(viewportIndex, info) { | 562 SetViewportSeries: function(viewportIndex, info) { |
563 console.log(info); | |
538 var series = this.series[info.seriesIndex]; | 564 var series = this.series[info.seriesIndex]; |
539 | 565 |
540 if (viewportIndex == 1) { | 566 if (viewportIndex == 1) { |
541 this.viewport1Content = series; | 567 this.viewport1Content = { |
568 series: series, | |
569 sopInstanceUid: info.sopInstanceUid | |
570 }; | |
542 } | 571 } |
543 else if (viewportIndex == 2) { | 572 else if (viewportIndex == 2) { |
544 this.viewport2Content = series; | 573 this.viewport2Content = { |
574 series: series, | |
575 sopInstanceUid: info.sopInstanceUid | |
576 }; | |
545 } | 577 } |
546 else if (viewportIndex == 3) { | 578 else if (viewportIndex == 3) { |
547 this.viewport3Content = series; | 579 this.viewport3Content = { |
580 series: series, | |
581 sopInstanceUid: info.sopInstanceUid | |
582 }; | |
548 } | 583 } |
549 else if (viewportIndex == 4) { | 584 else if (viewportIndex == 4) { |
550 this.viewport4Content = series; | 585 this.viewport4Content = { |
586 series: series, | |
587 sopInstanceUid: info.sopInstanceUid | |
588 }; | |
551 } | 589 } |
552 }, | 590 }, |
553 | 591 |
554 ClickSeries: function(seriesIndex) { | 592 ClickSeries: function(seriesIndex) { |
555 this.SetViewportSeries(this.activeViewport, { | 593 this.SetViewportSeries(this.activeViewport, { |
556 seriesIndex: seriesIndex | 594 seriesIndex: seriesIndex |
595 }); | |
596 }, | |
597 | |
598 ClickMultiframeInstance: function(seriesIndex, sopInstanceUid) { | |
599 this.SetViewportSeries(this.activeViewport, { | |
600 seriesIndex: seriesIndex, | |
601 sopInstanceUid: sopInstanceUid | |
557 }); | 602 }); |
558 }, | 603 }, |
559 | 604 |
560 HideViewport: function(index) { | 605 HideViewport: function(index) { |
561 if (index == 1) { | 606 if (index == 1) { |
683 } | 728 } |
684 | 729 |
685 // https://fr.vuejs.org/2016/02/06/common-gotchas/#Why-isn%E2%80%99t-the-DOM-updating | 730 // https://fr.vuejs.org/2016/02/06/common-gotchas/#Why-isn%E2%80%99t-the-DOM-updating |
686 this.$set(this.series, index, series); | 731 this.$set(this.series, index, series); |
687 | 732 |
688 if ('tags' in this.viewport1Content && | 733 if ('tags' in this.viewport1Content.series && |
689 this.viewport1Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { | 734 this.viewport1Content.series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { |
690 this.$set(this.viewport1Content, series); | 735 this.$set(this.viewport1Content.series, series); |
691 } | 736 } |
692 | 737 |
693 if ('tags' in this.viewport2Content && | 738 if ('tags' in this.viewport2Content.series && |
694 this.viewport2Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { | 739 this.viewport2Content.series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { |
695 this.$set(this.viewport2Content, series); | 740 this.$set(this.viewport2Content.series, series); |
696 } | 741 } |
697 | 742 |
698 if ('tags' in this.viewport3Content && | 743 if ('tags' in this.viewport3Content.series && |
699 this.viewport3Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { | 744 this.viewport3Content.series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { |
700 this.$set(this.viewport3Content, series); | 745 this.$set(this.viewport3Content.series, series); |
701 } | 746 } |
702 | 747 |
703 if ('tags' in this.viewport4Content && | 748 if ('tags' in this.viewport4Content.series && |
704 this.viewport4Content.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { | 749 this.viewport4Content.series.tags[SERIES_INSTANCE_UID] == seriesInstanceUid) { |
705 this.$set(this.viewport4Content, series); | 750 this.$set(this.viewport4Content.series, series); |
706 } | 751 } |
707 } | 752 } |
708 }, | 753 }, |
709 | 754 |
710 SetWindowing: function(center, width) { | 755 SetWindowing: function(center, width) { |