\ No newline at end of file
diff --git a/Packages/lesiontracker/client/components/measureFlow/measureFlow.html b/Packages/lesiontracker/client/components/measureFlow/measureFlow.html
index d69fe9a8b..964454710 100644
--- a/Packages/lesiontracker/client/components/measureFlow/measureFlow.html
+++ b/Packages/lesiontracker/client/components/measureFlow/measureFlow.html
@@ -1,12 +1,27 @@
-
diff --git a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js
index ccb05fc5f..8f6029c90 100644
--- a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js
+++ b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js
@@ -34,6 +34,39 @@ Template.studyTimepointStudy.onRendered(() => {
}
});
+Template.studyTimepointStudy.helpers({
+ modalities() {
+ const instance = Template.instance();
+ let modalities = instance.data.study.modalities;
+
+ // Replace backslashes with spaces
+ return modalities.replace(/\\/g, ' ');
+ },
+
+ modalityStyle() {
+ // Responsively styles the Modality Acronyms for studies
+ // with more than one modality
+ const instance = Template.instance();
+ const modalities = instance.data.study.modalities;
+ const numModalities = modalities.split(/\\/g).length;
+
+ if (numModalities === 1) {
+ // If we have only one modality, it should take up the whole
+ // div.
+ return 'font-size: 1vw';
+ } else if (numModalities === 2) {
+ // If we have two, let them sit side-by-side
+ return 'font-size: 0.75vw';
+ } else {
+ // If we have more than two modalities, change the line
+ // height to display multiple rows, depending on the number
+ // of modalities we need to display.
+ const lineHeight = Math.ceil(numModalities / 2) * 1.2;
+ return 'line-height: ' + lineHeight + 'vh';
+ }
+ }
+});
+
Template.studyTimepointStudy.events({
// Recalculates the timepoint height to make CSS transition smoother
'transitionend .studyTimepointThumbnails'(event, instance) {
diff --git a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl
index 03ef1f6d8..2d058dae9 100644
--- a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl
+++ b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl
@@ -80,29 +80,31 @@ $spacerY = 12px
padding: 0
text-align: center
- .studyModalityText
+ .studyText
font-size: 13px
left: ($spacerX * 3) + $boxWidth + ($nestingMargin * 3)
line-height: 14px
position: absolute
right: $spacerX
top: $spacerY
- .studyModalityDate
+ .studyDate
margin-top: 8px
color: $textSecondaryColor
- .studyModalityDescription
+ .studyDescription
margin-top: 8px
color: $textPrimaryColor
.studyModalityBox
color: $textSecondaryColor
- font-size: 22px
line-height: $boxWidth
margin-left: $nestingMargin * 2
margin-top: $nestingMargin * 2
position: relative
- text-align: center
- text-transform: uppercase
+
+ .studyModalityText
+ text-align: center
+ text-transform: uppercase
+ height: 100%
&
&:before
diff --git a/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js b/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js
index 794d5c801..8fc3b88f3 100644
--- a/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js
+++ b/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js
@@ -133,19 +133,16 @@ Template.toolbarSection.helpers({
return buttonData;
}
-
});
Template.toolbarSection.events({
- 'click #toggleHUD'(event, instance) {
+ 'click #toggleHUD'() {
const state = Session.get('lesionTableHudOpen');
Session.set('lesionTableHudOpen', !state);
}
});
Template.toolbarSection.onRendered(function() {
- const instance = Template.instance();
-
// Set disabled/enabled tool buttons that are set in toolManager
const states = toolManager.getToolDefaultStates();
const disabledToolButtons = states.disabledToolButtons;
diff --git a/Packages/lesiontracker/client/components/userAccountMenu/userAccountMenu.styl b/Packages/lesiontracker/client/components/userAccountMenu/userAccountMenu.styl
index d1c8fb15c..c55aa873e 100644
--- a/Packages/lesiontracker/client/components/userAccountMenu/userAccountMenu.styl
+++ b/Packages/lesiontracker/client/components/userAccountMenu/userAccountMenu.styl
@@ -5,7 +5,6 @@
height: 100%
.dropdown-toggle
- background-color: $primaryBackgroundColor
color: $defaultColor
cursor: pointer
font-size: 13px
diff --git a/Packages/lesiontracker/client/components/viewer/viewer.js b/Packages/lesiontracker/client/components/viewer/viewer.js
index 079e7fdef..882862154 100644
--- a/Packages/lesiontracker/client/components/viewer/viewer.js
+++ b/Packages/lesiontracker/client/components/viewer/viewer.js
@@ -1,5 +1,6 @@
import { OHIF } from 'meteor/ohif:core';
-import { TimepointApi } from 'meteor/lesiontracker/lib/api/timepoint';
+import { TimepointApi } from 'meteor/lesiontracker/client/api/timepoint';
+import { MeasurementApi } from 'meteor/lesiontracker/client/api/measurement';
OHIF.viewer = OHIF.viewer || {};
OHIF.viewer.loadIndicatorDelay = 3000;
@@ -18,8 +19,6 @@ Session.setDefault('rightSidebar', null);
Template.viewer.onCreated(() => {
const instance = Template.instance();
- instance.data.timepointApi = new TimepointApi();
-
ValidationErrors.remove({});
instance.data.state = new ReactiveDict();
@@ -91,6 +90,17 @@ Template.viewer.onCreated(() => {
// Set buttons as enabled/disabled when Timepoints collection is ready
timepointAutoCheck(dataContext);
+ // Wait until the Timepoint subscription is ready to initialize the TimepointApi
+ instance.data.timepointApi = new TimepointApi();
+ instance.data.timepointApi.currentTimepointId = instance.data.currentTimepointId;
+
+ // Provide the necessary data to the Measurement API
+ MeasurementApi.currentTimepointId = instance.data.currentTimepointId;
+ const prior = instance.data.timepointApi.prior();
+ if (prior) {
+ MeasurementApi.priorTimepointId = prior.timepointId;
+ }
+
TrialResponseCriteria.validateAllDelayed();
ViewerStudies.find().observe({
diff --git a/Packages/lesiontracker/lib/handleMeasurementAdded.js b/Packages/lesiontracker/lib/handleMeasurementAdded.js
index 8dcebd688..342b05994 100644
--- a/Packages/lesiontracker/lib/handleMeasurementAdded.js
+++ b/Packages/lesiontracker/lib/handleMeasurementAdded.js
@@ -11,8 +11,9 @@ handleMeasurementAdded = function(e, eventData) {
TrialResponseCriteria.validateDelayed(measurementData);
// Set reviewer for this timepoint
if (measurementData.studyInstanceUid) {
- Meteor.call('setReviewer',measurementData.studyInstanceUid);
+ Meteor.call('setReviewer', measurementData.studyInstanceUid);
}
+
break;
case 'ellipticalRoi':
case 'length':
diff --git a/Packages/lesiontracker/lib/handleMeasurementRemoved.js b/Packages/lesiontracker/lib/handleMeasurementRemoved.js
index eefd5f8c8..90ef525e7 100644
--- a/Packages/lesiontracker/lib/handleMeasurementRemoved.js
+++ b/Packages/lesiontracker/lib/handleMeasurementRemoved.js
@@ -18,7 +18,7 @@ handleMeasurementRemoved = function(e, eventData) {
}
// Set reviewer for this timepoint
if (measurementData.studyInstanceUid) {
- Meteor.call('setReviewer',measurementData.studyInstanceUid);
+ Meteor.call('setReviewer', measurementData.studyInstanceUid);
}
clearMeasurementTimepointData(measurement._id, measurementData.timepointId);
diff --git a/Packages/lesiontracker/package.js b/Packages/lesiontracker/package.js
index 8b0f05559..ad16e3a8a 100644
--- a/Packages/lesiontracker/package.js
+++ b/Packages/lesiontracker/package.js
@@ -265,7 +265,8 @@ Package.onUse(function(api) {
api.addFiles('client/components/serverInformation/serverInformationModal/serverInformationModal.js', 'client');
// API classes
- api.addFiles('lib/api/timepoint.js');
+ api.addFiles('client/api/timepoint.js');
+ api.addFiles('client/api/measurement.js');
// Export global functions
api.export('pixelSpacingAutorunCheck', 'client');
diff --git a/Packages/ohif-core/client/components/base/mixins/selectTree.js b/Packages/ohif-core/client/components/base/mixins/selectTree.js
index 9384c14c1..2e8320964 100644
--- a/Packages/ohif-core/client/components/base/mixins/selectTree.js
+++ b/Packages/ohif-core/client/components/base/mixins/selectTree.js
@@ -15,6 +15,9 @@ OHIF.mixins.selectTree = new OHIF.Mixin({
const rootComponent = instance.data.root || component;
const rootInstance = rootComponent.templateInstance;
+ // Store the component's current value
+ instance.currentValue = null;
+
// Create the component's value storage property
instance.data.currentNode = new ReactiveVar(null);
@@ -25,7 +28,23 @@ OHIF.mixins.selectTree = new OHIF.Mixin({
component.value = value => {
const isGet = _.isUndefined(value);
- // Return the current node value
+ // Return the current value
+ if (isGet) {
+ return rootInstance.currentValue;
+ }
+
+ // Change the current value
+ rootInstance.currentValue = value;
+
+ // Trigger the change event
+ component.$element.trigger('change');
+ };
+
+ // Method to manipulate nodes
+ component.node = node => {
+ const isGet = _.isUndefined(node);
+
+ // Return the current node
if (isGet) {
const currentNode = instance.data.currentNode.get();
return currentNode ? currentNode.value : null;
@@ -35,12 +54,12 @@ OHIF.mixins.selectTree = new OHIF.Mixin({
const items = component.templateInstance.data.items;
// Get the node for the selected value
- const node = _.findWhere(items, {
- value: value
+ const currentNode = _.findWhere(items, {
+ value: node
});
// Change the current node
- instance.data.currentNode.set(node);
+ instance.data.currentNode.set(currentNode);
};
// Return plain data for all the leaves inside current node
@@ -59,6 +78,14 @@ OHIF.mixins.selectTree = new OHIF.Mixin({
return recursiveSeek(instance.data.items);
};
+ },
+
+ onRendered() {
+ const instance = Template.instance();
+ const component = instance.component;
+
+ // Define the main element
+ component.$element = instance.$('.select-tree:first').first();
}
}
});
diff --git a/Packages/ohif-core/client/components/bootstrap/input/selectTree.html b/Packages/ohif-core/client/components/bootstrap/input/selectTree.html
index ac4859ea2..fe1f10849 100644
--- a/Packages/ohif-core/client/components/bootstrap/input/selectTree.html
+++ b/Packages/ohif-core/client/components/bootstrap/input/selectTree.html
@@ -27,6 +27,7 @@
id=(concat this.storageKey '_' (encodeId item.value))
class=this.radioClass
name=this.key
+ itemData=item
value=item.value
label=item.label
labelClass=(valueIf (isArray item.items) 'tree-node' 'tree-leaf')
diff --git a/Packages/ohif-core/client/components/bootstrap/input/selectTree.js b/Packages/ohif-core/client/components/bootstrap/input/selectTree.js
index e2bf54120..9fa7a776c 100644
--- a/Packages/ohif-core/client/components/bootstrap/input/selectTree.js
+++ b/Packages/ohif-core/client/components/bootstrap/input/selectTree.js
@@ -27,8 +27,31 @@ Template.selectTree.onRendered(() => {
// Set the margin to display the common section
$treeRoot.children('.tree-content').css('margin-right', $treeRoot.width());
- // Start the component transitions
- $treeRoot.addClass('started');
+ // Make the component respect the window boundaries
+ $treeRoot.bounded();
+
+ // Check if the component will be rendered on a specific position
+ const position = instance.data.position;
+ if (component === rootComponent && position) {
+ // Get the dimensions and move it with the given position as its center
+ const width = $treeRoot.outerWidth();
+ const height = $treeRoot.outerHeight();
+ position.left -= Math.round(width / 2);
+ position.top -= Math.round(height / 2);
+
+ // Change the component's position and trigger the bounded event
+ $treeRoot.css(_.extend({}, position, {
+ position: 'fixed'
+ })).trigger('spatialChanged');
+ }
+
+ Meteor.defer(() => {
+ // Start the component transitions
+ $treeRoot.addClass('started');
+
+ // Focus the search box
+ $treeRoot.find('.tree-search input').focus();
+ });
// Update the component's viewport height
instance.updateHeight = searchTerm => {
@@ -43,8 +66,9 @@ Template.selectTree.onRendered(() => {
height = rootInstance.$('.tree-options:last').data('height');
}
- // Update the viewport's height
- rootInstance.$('.tree-options:first').height(height);
+ // Update the viewport's height and trigger the bounded event
+ rootInstance.$('.tree-options:first').first().height(height)
+ .on('transitionend', () => $treeRoot.trigger('spatialChanged'));
};
// Update the opened node
@@ -110,23 +134,29 @@ Template.selectTree.events({
},
'input .tree-search input'(event, instance) {
+ // Get the tree root
+ const $treeRoot = $(event.currentTarget).closest('.select-tree-root');
+
// Change the search term to update the tree items
instance.searchTerm.set($(event.currentTarget).val());
+
+ // Change the component state
+ $treeRoot.addClass('interacted');
},
'change .select-tree:first>.tree-content>.tree-options>.tree-inputs>label>input'(event, instance) {
const component = instance.component;
- const $target = $(event.target);
+ const $target = $(event.currentTarget);
const $label = $target.closest('label');
const eventComponent = $target.data('component');
const rootComponent = instance.data.root || component;
const rootInstance = rootComponent.templateInstance;
- // Change the component's value
- component.value(eventComponent.value());
+ // Change the component's node
+ component.node(eventComponent.value());
// Unset the active leaf
- rootInstance.$('label').removeClass('active');
+ rootInstance.$('label').removeClass('active').css('width', '');
// Unset the selected state
instance.setSelected(false);
@@ -135,7 +165,7 @@ Template.selectTree.events({
const isLeaf = $label.hasClass('tree-leaf');
if (isLeaf) {
// Change the active item
- $label.addClass('active');
+ $label.css('width', $label.outerWidth()).addClass('active');
// Ckeck if there's a storageKey defined
const storageKey = instance.data.storageKey;
@@ -151,6 +181,10 @@ Template.selectTree.events({
storedData[itemKey] = 1;
}
+ // Set the selected leaf value in the root component
+ const itemData = $target.data('component').templateInstance.data.itemData;
+ rootComponent.value(itemData);
+
// Updata the stored data with the new count
OHIF.user.setData(storageKey, storedData);
}
@@ -201,6 +235,27 @@ Template.selectTree.events({
currentInstance = currentInstance.component.parent.templateInstance;
}
}
+ },
+
+ 'click .select-tree-common label'(event, instance) {
+ // Get the clicked label
+ const $target = $(event.currentTarget);
+
+ // Build the input selector based on the label target
+ const inputSelector = '#' + $target.attr('for');
+
+ // Check if the input is not rendered
+ if (!$(inputSelector).length) {
+ // Change the search terms with the clicked label string
+
+ instance.$('.tree-search input').val($target.text()).trigger('input');
+ // Wait for options rerendering
+
+ Tracker.afterFlush(() => {
+ // Wait for components initialization
+ Meteor.defer(() => $(inputSelector).click());
+ });
+ }
}
});
diff --git a/Packages/ohif-core/client/components/index.js b/Packages/ohif-core/client/components/index.js
index 842a72a5b..afdd8b252 100644
--- a/Packages/ohif-core/client/components/index.js
+++ b/Packages/ohif-core/client/components/index.js
@@ -1,4 +1,5 @@
import './base';
import './bootstrap';
import './playground/playground.html';
+import './playground/playground.styl';
import './playground/playground.js';
diff --git a/Packages/ohif-core/client/components/playground/playground.html b/Packages/ohif-core/client/components/playground/playground.html
index c4e6b07e6..07b5941a6 100644
--- a/Packages/ohif-core/client/components/playground/playground.html
+++ b/Packages/ohif-core/client/components/playground/playground.html
@@ -1,14 +1,16 @@
-
--->
-{{>measureFlow}}
diff --git a/Packages/ohif-core/client/components/playground/playground.js b/Packages/ohif-core/client/components/playground/playground.js
index 941d7b4cf..de6f7d478 100644
--- a/Packages/ohif-core/client/components/playground/playground.js
+++ b/Packages/ohif-core/client/components/playground/playground.js
@@ -42,3 +42,8 @@ Template.componentPlayground.onCreated(() => {
value: 'Category 3'
}];
});
+
+Template.componentPlayground.onRendered(() => {
+ const instance = Template.instance();
+ instance.$('.measure-flow').draggable();
+});
diff --git a/Packages/ohif-core/client/components/playground/playground.styl b/Packages/ohif-core/client/components/playground/playground.styl
new file mode 100644
index 000000000..7709175d5
--- /dev/null
+++ b/Packages/ohif-core/client/components/playground/playground.styl
@@ -0,0 +1,2 @@
+.component-playground
+ height: 100vh
diff --git a/Packages/ohif-core/client/lib/string.js b/Packages/ohif-core/client/lib/string.js
index f6cfcf838..d23734407 100644
--- a/Packages/ohif-core/client/lib/string.js
+++ b/Packages/ohif-core/client/lib/string.js
@@ -7,7 +7,7 @@ OHIF.string = {};
// Search for some string inside any object or array
OHIF.string.search = (object, query, property=null, result=[]) => {
// Create the search pattern
- const pattern = new RegExp($.trim(query).replace(/\s/gi, '|'), 'i');
+ const pattern = new RegExp($.trim(query), 'i');
_.each(object, item => {
// Stop here if item is empty
diff --git a/Packages/ohif-core/client/ui/bounded/bounded.js b/Packages/ohif-core/client/ui/bounded/bounded.js
index 96205424c..06baff3c7 100644
--- a/Packages/ohif-core/client/ui/bounded/bounded.js
+++ b/Packages/ohif-core/client/ui/bounded/bounded.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
// Allow attaching to jQuery selectors
$.fn.bounded = function(options) {
_.each(this, element => {
@@ -63,7 +65,7 @@ class Bounded {
this.$element.removeClass('bounded');
}
- spatialInfo(element) {
+ static spatialInfo(element) {
// Create the result object
const result = {};
@@ -105,8 +107,8 @@ class Bounded {
defineEventHandlers() {
this.spatialChangedHandler = event => {
// Get the spatial information for element and its bounding element
- const elementInfo = this.spatialInfo(this.element);
- const boundingInfo = this.spatialInfo(this.boundingElement);
+ const elementInfo = Bounded.spatialInfo(this.element);
+ const boundingInfo = Bounded.spatialInfo(this.boundingElement);
// Fix element's x positioning and width
if (this.allowResizing && elementInfo.width > boundingInfo.width) {
@@ -143,3 +145,5 @@ class Bounded {
}
}
+
+OHIF.Bounded = Bounded;
diff --git a/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.styl b/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.styl
index e89ac155e..a476e03de 100644
--- a/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.styl
+++ b/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.styl
@@ -2,4 +2,6 @@
#imageViewerViewports
height: 100%
- width: 100%
\ No newline at end of file
+ padding-bottom: 1px
+ padding-right: 6px
+ width: 100%
diff --git a/Packages/viewerbase/client/components/viewer/imageControls/imageControls.html b/Packages/viewerbase/client/components/viewer/imageControls/imageControls.html
index 8dd8ced6a..2a27ab718 100644
--- a/Packages/viewerbase/client/components/viewer/imageControls/imageControls.html
+++ b/Packages/viewerbase/client/components/viewer/imageControls/imageControls.html
@@ -1,7 +1,11 @@
-
+
\ No newline at end of file
diff --git a/Packages/viewerbase/client/components/viewer/imageControls/imageControls.js b/Packages/viewerbase/client/components/viewer/imageControls/imageControls.js
index c2237ae8f..a77a2d385 100644
--- a/Packages/viewerbase/client/components/viewer/imageControls/imageControls.js
+++ b/Packages/viewerbase/client/components/viewer/imageControls/imageControls.js
@@ -1,6 +1,20 @@
const slideTimeoutTime = 40;
let slideTimeout;
+Template.imageControls.onRendered(() => {
+ const instance = Template.instance();
+
+ Meteor.defer(() => {
+ // Set the current imageSlider width to its parent's height
+ // (because webkit is stupid and can't style vertical sliders)
+ const $slider = instance.$('#imageSlider');
+ const $element = $slider.parents().eq(2).siblings('.imageViewerViewport');
+ const viewportHeight = $element.height();
+
+ $slider.width(viewportHeight - 20);
+ });
+})
+
Template.imageControls.events({
'input #imageSlider, change #imageSlider': function(e) {
// Note that we throttle requests to prevent the
diff --git a/Packages/viewerbase/client/components/viewer/imageControls/imageControls.styl b/Packages/viewerbase/client/components/viewer/imageControls/imageControls.styl
index a96cd96eb..647a147af 100644
--- a/Packages/viewerbase/client/components/viewer/imageControls/imageControls.styl
+++ b/Packages/viewerbase/client/components/viewer/imageControls/imageControls.styl
@@ -17,6 +17,7 @@ $imageSliderCursor = grab
padding: 5px
#scrollbar
+ height: calc(100% - 20px);
margin-top: 5px
width: 31px
diff --git a/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
index 0b1f345b6..480a731a2 100644
--- a/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
+++ b/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
@@ -86,32 +86,6 @@ function loadDisplaySetIntoViewport(data, templateData) {
imageIds: imageIds
};
- // Show or hide the image scrollbar depending
- // on the number of images in the stack
- var currentOverlay = $(element).siblings('.imageViewerViewportOverlay');
- var imageControls = currentOverlay.find('.imageControls');
- currentOverlay.find('.imageControls').height($(element).height());
-
- if (stack.imageIds.length === 1) {
- imageControls.hide();
- currentOverlay.find('.topright, .bottomright').css('right', '3px');
- } else {
- imageControls.show();
- currentOverlay.find('.topright, .bottomright').css('right', '39px');
-
- // Update the maximum value of the slider
- var currentImageSlider = currentOverlay.find('#imageSlider');
- currentImageSlider.attr('max', stack.imageIds.length);
- currentImageSlider.val(1);
-
- // Set it's width to its parent's height
- // (because webkit is stupid and can't style vertical sliders)
- var scrollbar = currentOverlay.find('#scrollbar');
- scrollbar.height(scrollbar.parent().height() - 20);
- var overlayHeight = currentImageSlider.parent().height();
- currentImageSlider.width(overlayHeight);
- }
-
// Get the current image ID for the stack that will be rendered
imageId = imageIds[stack.currentImageIdIndex];
@@ -296,11 +270,6 @@ function loadDisplaySetIntoViewport(data, templateData) {
var stack = toolData.data[0];
- // Update the imageSlider value
- var currentOverlay = $(element).siblings('.imageViewerViewportOverlay');
- var currentImageSlider = currentOverlay.find('#imageSlider');
- currentImageSlider.val(stack.currentImageIdIndex + 1);
-
// If this viewport is displaying a stack of images, save the current image
// index in the stack to the global ViewerData object, as well as the Meteor Session.
var stack = cornerstoneTools.getToolState(element, 'stack');
@@ -319,27 +288,6 @@ function loadDisplaySetIntoViewport(data, templateData) {
// Set a random value for the Session variable in order to trigger an overlay update
Session.set('CornerstoneNewImage' + viewportIndex, Random.id());
- function OnStackScroll(e, eventData) {
- // Get the element and stack data
- var element = e.target;
- var toolData = cornerstoneTools.getToolState(element, 'stack');
- if (!toolData || !toolData.data || !toolData.data.length) {
- return;
- }
-
- var stack = toolData.data[0];
-
- // Update the imageSlider value
- var currentOverlay = $(element).siblings('.imageViewerViewportOverlay');
- var currentImageSlider = currentOverlay.find('#imageSlider');
- currentImageSlider.val(stack.currentImageIdIndex + 1);
- }
-
- $(element).off('CornerstoneStackScroll', OnStackScroll);
- if (stack.imageIds.length > 1) {
- $(element).on('CornerstoneStackScroll', OnStackScroll);
- }
-
// Define a function to trigger an event whenever a new viewport is being used
// This is used to update the value of the "active viewport", when the user interacts
// with a new viewport element
diff --git a/Packages/viewerbase/client/components/viewer/viewportOverlay/viewportOverlay.html b/Packages/viewerbase/client/components/viewer/viewportOverlay/viewportOverlay.html
index 16a6ae714..ec37a7620 100644
--- a/Packages/viewerbase/client/components/viewer/viewportOverlay/viewportOverlay.html
+++ b/Packages/viewerbase/client/components/viewer/viewportOverlay/viewportOverlay.html
@@ -1,5 +1,5 @@
-