Throttle scrolling to prevent requests from firing too quickly (OHIF-39)

This commit is contained in:
Erik Ziegler 2016-08-05 12:26:00 +02:00
parent 81b011f111
commit f90536c0d3
2 changed files with 21 additions and 14 deletions

View File

@ -1,14 +1,24 @@
Template.imageControls.events({
'change #imageSlider': function(e) {
// Using the slider in an inactive viewport
// should cause that viewport to become active
var slider = $(e.currentTarget);
var newActiveElement = slider.parents().eq(2).siblings('.imageViewerViewport').get(0);
setActiveViewport(newActiveElement);
const slideTimeoutTime = 40;
let slideTimeout;
// Subtract 1 here since the slider goes from 1 to N images
// But the stack indexing starts at 0
var newImageIdIndex = parseInt(slider.val(), 10) - 1;
switchToImageByIndex(newImageIdIndex);
Template.imageControls.events({
'input #imageSlider, change #imageSlider': function(e) {
// Note that we throttle requests to prevent the
// user's ultrafast scrolling from firing requests too quickly.
clearTimeout(slideTimeout);
slideTimeout = setTimeout(() => {
// Using the slider in an inactive viewport
// should cause that viewport to become active
const slider = $(e.currentTarget);
const newActiveElement = slider.parents().eq(2).siblings('.imageViewerViewport').get(0);
setActiveViewport(newActiveElement);
// Subtract 1 here since the slider goes from 1 to N images
// But the stack indexing starts at 0
const newImageIdIndex = parseInt(slider.val(), 10) - 1;
switchToImageByIndex(newImageIdIndex);
}, slideTimeoutTime);
return false;
}
});

View File

@ -564,17 +564,14 @@ Template.imageViewerViewport.onDestroyed(function() {
Template.imageViewerViewport.events({
'ActivateViewport .imageViewerViewport': function(e) {
console.log('activateViewport');
log.info('imageViewerViewport ActivateViewport');
setActiveViewport(e.currentTarget);
},
'click .imageViewerViewport': function(e) {
console.log('click imageViewerViewport handler');
var viewportIndex = $('.imageViewerViewport').index(e.currentTarget);
Session.set('activeViewport', viewportIndex);
},
'CornerstoneToolsMouseDoubleClick .imageViewerViewport, CornerstoneToolsDoubleTap .imageViewerViewport': function(e) {
console.log('CornerstoneToolsMouseDoubleClick handler');
var viewportIndex = $('.imageViewerViewport').index(e.currentTarget);
layoutManager.toggleEnlargement(viewportIndex);
}