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) {