Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebApplication/index.html @ 2003:963f28eb40cb deep-learning
integration default->deep-learning
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 02 Nov 2022 15:14:56 +0100 |
parents | 2034ae383cfd 1fa3f484008e |
children | 04148de691a7 |
comparison
equal
deleted
inserted
replaced
1964:2034ae383cfd | 2003:963f28eb40cb |
---|---|
83 <label>Warn about the intended use at startup | 83 <label>Warn about the intended use at startup |
84 <input type="checkbox" style="margin-left: 20px" v-model="settingNotDiagnostic"> | 84 <input type="checkbox" style="margin-left: 20px" v-model="settingNotDiagnostic"> |
85 </label> | 85 </label> |
86 <br> | 86 <br> |
87 </div> | 87 </div> |
88 <label>Use software rendering (will reload the viewer) | 88 <label>Enable linear interpolation |
89 <input type="checkbox" style="margin-left: 20px" v-model="settingLinearInterpolation"> | |
90 </label> | |
91 <br> | |
92 <label>Use software rendering (slower, will reload the viewer) | |
89 <input type="checkbox" style="margin-left: 20px" v-model="settingSoftwareRendering"> | 93 <input type="checkbox" style="margin-left: 20px" v-model="settingSoftwareRendering"> |
90 </label> | 94 </label> |
91 <br><br> | 95 <br><br> |
92 <div style="text-align: center;"> | 96 <div style="text-align: center;"> |
93 <button class="wvInfoPopupCloseButton" @click="ApplyPreferences()"> | 97 <button class="wvInfoPopupCloseButton" @click="ApplyPreferences()"> |
495 </div> | 499 </div> |
496 </div> | 500 </div> |
497 | 501 |
498 <div class="ng-scope inline-object"> | 502 <div class="ng-scope inline-object"> |
499 <button class="wvButton--underline text-center" | 503 <button class="wvButton--underline text-center" |
504 data-toggle="tooltip" data-title="Magnifying glass" | |
505 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_MAGNIFYING_GLASS }" | |
506 v-on:click="SetMouseButtonActions(MOUSE_TOOL_MAGNIFYING_GLASS, stone.WebViewerAction.MAGNIFYING_GLASS, stone.WebViewerAction.PAN, stone.WebViewerAction.ZOOM)"> | |
507 <i class="fas fa-search-plus"></i> | |
508 </button> | |
509 </div> | |
510 | |
511 <div class="ng-scope inline-object"> | |
512 <button class="wvButton--underline text-center" | |
513 data-toggle="tooltip" data-title="Rotate to the left" | |
514 v-on:click="RotateLeft()"> | |
515 <i class="fas fa-undo"></i> | |
516 </button> | |
517 </div> | |
518 | |
519 <div class="ng-scope inline-object"> | |
520 <button class="wvButton--underline text-center" | |
521 data-toggle="tooltip" data-title="Rotate to the right" | |
522 v-on:click="RotateRight()"> | |
523 <i class="fas fa-undo fa-flip-horizontal"></i> | |
524 </button> | |
525 </div> | |
526 | |
527 <div class="ng-scope inline-object"> | |
528 <button class="wvButton--underline text-center" | |
500 data-toggle="tooltip" data-title="Flip horizontally" | 529 data-toggle="tooltip" data-title="Flip horizontally" |
501 v-on:click="FlipX()"> | 530 v-on:click="FlipX()"> |
502 <i class="fas fa-exchange-alt"></i> | 531 <i class="fas fa-exchange-alt"></i> |
503 </button> | 532 </button> |
504 </div> | 533 </div> |
511 </button> | 540 </button> |
512 </div> | 541 </div> |
513 | 542 |
514 <div class="ng-scope inline-object"> | 543 <div class="ng-scope inline-object"> |
515 <button class="wvButton--underline text-center" | 544 <button class="wvButton--underline text-center" |
516 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_SEGMENT }" | 545 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_LENGTH }" |
517 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_SEGMENT, stone.WebViewerAction.CREATE_SEGMENT)" | 546 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_LENGTH, stone.WebViewerAction.CREATE_LENGTH)" |
518 data-toggle="tooltip" data-title="Measure length"> | 547 data-toggle="tooltip" data-title="Measure length"> |
519 <i class="fas fa-arrows-alt-h"></i> | 548 <i class="fas fa-ruler"></i> |
520 </button> | 549 </button> |
521 </div> | 550 </div> |
522 | 551 |
523 <div class="ng-scope inline-object"> | 552 <div class="ng-scope inline-object"> |
524 <button class="wvButton--underline text-center" | 553 <button class="wvButton--underline text-center" |
525 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_ANGLE }" | 554 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_ANGLE }" |
526 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_ANGLE, stone.WebViewerAction.CREATE_ANGLE)" | 555 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_ANGLE, stone.WebViewerAction.CREATE_ANGLE)" |
527 data-toggle="tooltip" data-title="Measure angle"> | 556 data-toggle="tooltip" data-title="Measure angle"> |
528 <i class="fas fa-angle-left fa-lg"></i> | 557 <i class="fas fa-drafting-compass"></i> |
529 </button> | 558 </button> |
530 </div> | 559 </div> |
531 | 560 |
532 <div class="ng-scope inline-object"> | 561 <div class="ng-scope inline-object"> |
533 <button class="wvButton--underline text-center" | 562 <button class="wvButton--underline text-center" |
538 </button> | 567 </button> |
539 </div> | 568 </div> |
540 | 569 |
541 <div class="ng-scope inline-object"> | 570 <div class="ng-scope inline-object"> |
542 <button class="wvButton--underline text-center" | 571 <button class="wvButton--underline text-center" |
572 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_PIXEL_PROBE }" | |
573 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_PIXEL_PROBE, stone.WebViewerAction.CREATE_PIXEL_PROBE)" | |
574 data-toggle="tooltip" data-title="Pixel probe"> | |
575 <i class="fas fa-microscope"></i> | |
576 </button> | |
577 </div> | |
578 | |
579 <div class="ng-scope inline-object"> | |
580 <button class="wvButton--underline text-center" | |
581 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_RECTANGLE_PROBE }" | |
582 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_RECTANGLE_PROBE, stone.WebViewerAction.CREATE_RECTANGLE_PROBE)" | |
583 data-toggle="tooltip" data-title="Rectangle probe"> | |
584 <i class="fas fa-plus-square"></i> | |
585 </button> | |
586 </div> | |
587 | |
588 <div class="ng-scope inline-object"> | |
589 <button class="wvButton--underline text-center" | |
590 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_ELLIPSE_PROBE }" | |
591 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_ELLIPSE_PROBE, stone.WebViewerAction.CREATE_ELLIPSE_PROBE)" | |
592 data-toggle="tooltip" data-title="Ellipse probe"> | |
593 <i class="fas fa-plus-circle"></i> | |
594 </button> | |
595 </div> | |
596 | |
597 <div class="ng-scope inline-object"> | |
598 <button class="wvButton--underline text-center" | |
599 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_CREATE_TEXT_ANNOTATION }" | |
600 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_CREATE_TEXT_ANNOTATION, stone.WebViewerAction.CREATE_TEXT_ANNOTATION)" | |
601 data-toggle="tooltip" data-title="Add text annotation"> | |
602 <i class="fas fa-comment-dots"></i> | |
603 </button> | |
604 </div> | |
605 | |
606 <div class="ng-scope inline-object"> | |
607 <button class="wvButton--underline text-center" | |
543 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_REMOVE_MEASURE }" | 608 v-bind:class="{ 'active' : mouseTool == MOUSE_TOOL_REMOVE_MEASURE }" |
544 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_REMOVE_MEASURE, stone.WebViewerAction.REMOVE_MEASURE)" | 609 v-on:click="SetLeftMouseButtonAction(MOUSE_TOOL_REMOVE_MEASURE, stone.WebViewerAction.REMOVE_MEASURE)" |
545 data-toggle="tooltip" data-title="Delete measurement"> | 610 data-toggle="tooltip" data-title="Delete annotation"> |
546 <i class="fas fa-trash"></i> | 611 <i class="fas fa-trash"></i> |
547 </button> | 612 </button> |
548 </div> | 613 </div> |
549 | 614 |
550 <div class="ng-scope inline-object"> | 615 <div class="ng-scope inline-object"> |
672 'wvSplitpane__cellBorder--red' : content.series.color == 'red', | 737 'wvSplitpane__cellBorder--red' : content.series.color == 'red', |
673 'wvSplitpane__cellBorder--green' : content.series.color == 'green', | 738 'wvSplitpane__cellBorder--green' : content.series.color == 'green', |
674 'wvSplitpane__cellBorder--yellow' : content.series.color == 'yellow', | 739 'wvSplitpane__cellBorder--yellow' : content.series.color == 'yellow', |
675 'wvSplitpane__cellBorder--violet' : content.series.color == 'violet' | 740 'wvSplitpane__cellBorder--violet' : content.series.color == 'violet' |
676 }" | 741 }" |
677 ondragover="event.preventDefault()" | 742 v-on:dragenter="$event.preventDefault()" |
743 v-on:dragover="$event.preventDefault()" | |
678 v-on:drop="DragDrop($event)" | 744 v-on:drop="DragDrop($event)" |
679 style="width:100%;height:100%"> | 745 style="width:100%;height:100%"> |
680 <div class="wvSplitpane__cell" | 746 <div class="wvSplitpane__cell" |
681 v-on:click="MakeActive()"> | 747 v-on:click="MakeActive()"> |
682 <div v-show="status == 'ready'" | 748 <div v-show="status == 'ready'" |
685 <canvas v-bind:id="canvasId" class="viewport-canvas" | 751 <canvas v-bind:id="canvasId" class="viewport-canvas" |
686 style="position:absolute; left:0; top:0; width:100%; height:100%" | 752 style="position:absolute; left:0; top:0; width:100%; height:100%" |
687 oncontextmenu="return false"></canvas> | 753 oncontextmenu="return false"></canvas> |
688 | 754 |
689 <div v-show="showInfo"> | 755 <div v-show="showInfo"> |
756 <div v-if="numberOfFrames > 1" class="wvVerticalScrollbar" | |
757 v-on:click="var offset = $event.currentTarget.getClientRects()[0]; var y = $event.clientY - offset.top; var height = $event.currentTarget.offsetHeight; currentFrame = Math.min(numberOfFrames - 1, Math.floor(y * numberOfFrames / (height - 1)));"> | |
758 <div class="wvVerticalScrollbarHighlight" | |
759 v-bind:style="{ top: (currentFrame / (numberOfFrames - 1) * 95.0) + '%' }"> | |
760 </div> | |
761 </div> | |
762 | |
690 <div class="wv-overlay"> | 763 <div class="wv-overlay"> |
691 <div v-if="'tags' in content.series" class="wv-overlay-topleft"> | 764 <div v-if="'tags' in content.series" class="wv-overlay-topleft"> |
692 {{ content.series.tags[PATIENT_NAME] }}<br/> | 765 {{ content.series.tags[PATIENT_NAME] }}<br/> |
693 {{ content.series.tags[PATIENT_ID] }}<br/> | 766 {{ content.series.tags[PATIENT_ID] }}<br/> |
694 {{ app.FormatDate(content.series.tags[PATIENT_BIRTH_DATE]) }} | 767 {{ app.FormatDate(content.series.tags[PATIENT_BIRTH_DATE]) }} |
695 </div> | 768 </div> |
696 <div v-if="'tags' in content.series" class="wv-overlay-topright"> | 769 <div v-if="'tags' in content.series" class="wv-overlay-topright" |
770 v-bind:class="{ 'wvInfoRightMargin' : numberOfFrames > 1 }"> | |
697 {{ content.series.tags[STUDY_DESCRIPTION] }}<br/> | 771 {{ content.series.tags[STUDY_DESCRIPTION] }}<br/> |
698 <span v-if="contentDate !== undefined && contentDate != ''">{{ app.FormatDate(contentDate) }} <span v-show="contentTime != ''">{{ app.FormatTime(contentTime) }}</span><br/></span> | 772 <span v-if="contentDate !== undefined && contentDate != ''">{{ app.FormatDate(contentDate) }} <span v-show="contentTime != ''">{{ app.FormatTime(contentTime) }}</span><br/></span> |
699 <span v-else="contentDate === undefined || contentDate == ''">{{ app.FormatDate(content.series.tags[STUDY_DATE]) }}<br/></span> | 773 <span v-else="contentDate === undefined || contentDate == ''">{{ app.FormatDate(content.series.tags[STUDY_DATE]) }}<br/></span> |
700 {{ content.series.tags[SERIES_NUMBER] }} | {{ content.series.tags[SERIES_DESCRIPTION] }} | 774 {{ content.series.tags[SERIES_NUMBER] }} | {{ content.series.tags[SERIES_DESCRIPTION] }} |
701 </div> | 775 </div> |
721 <button class="btn btn-primary" @click="DecrementFrame()"> | 795 <button class="btn btn-primary" @click="DecrementFrame()"> |
722 <i class="fas fa-step-backward"></i> | 796 <i class="fas fa-step-backward"></i> |
723 </button> | 797 </button> |
724 </div> | 798 </div> |
725 <span data-toggle="tooltip" data-title="Current frame number"> | 799 <span data-toggle="tooltip" data-title="Current frame number"> |
726 {{ currentFrame + 1 }} / {{ numberOfFrames }} | 800 |
801 <input type="text" v-model="currentFrameFromUser" class="wvInputInstanceNumber"> / {{ numberOfFrames }} | |
802 | |
727 </span> | 803 </span> |
728 <div class="btn-group btn-group-sm" role="group"> | 804 <div class="btn-group btn-group-sm" role="group"> |
729 <button class="btn btn-primary" @click="IncrementFrame()"> | 805 <button class="btn btn-primary" @click="IncrementFrame()"> |
730 <i class="fas fa-step-forward"></i> | 806 <i class="fas fa-step-forward"></i> |
731 </button> | 807 </button> |
744 <i class="fas fa-play"></i> | 820 <i class="fas fa-play"></i> |
745 </button> | 821 </button> |
746 </div> | 822 </div> |
747 </span> | 823 </span> |
748 </div> | 824 </div> |
749 <div class="wv-overlay-bottomright wvPrintExclude" style="bottom: 0px"> | 825 <div class="wv-overlay-bottomright wvPrintExclude" style="bottom: 0px" |
826 v-bind:class="{ 'wvInfoRightMargin' : numberOfFrames > 1 }"> | |
750 <div v-if="windowingWidth != 0"> | 827 <div v-if="windowingWidth != 0"> |
751 ww/wc: {{ windowingWidth }} / {{ windowingCenter }} | 828 ww/wc: {{ windowingWidth }} / {{ windowingCenter }} |
752 </div> | 829 </div> |
753 <div style="padding-top: 0.5em"> | 830 <div style="padding-top: 0.5em"> |
754 <div v-show="quality == stone.DisplayedFrameQuality.NONE" | 831 <div v-show="quality == stone.DisplayedFrameQuality.NONE" |