ohif-viewer/Packages/ohif-viewerbase/client/components/viewer/imageControls/imageControls.js

62 lines
2.2 KiB
JavaScript
Raw Normal View History

import { Template } from 'meteor/templating';
import { $ } from 'meteor/jquery';
2017-04-19 12:45:39 +02:00
import { OHIF } from 'meteor/ohif:core';
import { setActiveViewport } from '../../../lib/setActiveViewport';
import { switchToImageByIndex } from '../../../lib/switchToImageByIndex';
const slideTimeoutTime = 40;
let slideTimeout;
Template.imageControls.onRendered(() => {
const instance = Template.instance();
2016-11-12 21:31:19 +01:00
// Set the current imageSlider width to its parent's height
// (because webkit is stupid and can't style vertical sliders)
2017-04-19 12:45:39 +02:00
const $slider = instance.$('.imageSlider');
2016-11-12 21:31:19 +01:00
const $element = $slider.parents().eq(2).siblings('.imageViewerViewport');
const viewportHeight = $element.height();
2016-11-12 21:31:19 +01:00
$slider.width(viewportHeight - 20);
2017-04-19 12:45:39 +02:00
});
Template.imageControls.events({
'keydown input[type=range]'(event) {
// We don't allow direct keyboard up/down input on the
// image sliders since the natural direction is reversed (0 is at the top)
// Store the KeyCodes in an object for readability
const keys = {
DOWN: 40,
UP: 38
};
if (event.which === keys.DOWN) {
2017-04-25 22:42:52 +02:00
OHIF.commands.run('scrollDown');
event.preventDefault();
} else if (event.which === keys.UP) {
2017-04-25 22:42:52 +02:00
OHIF.commands.run('scrollUp');
event.preventDefault();
}
},
2017-04-19 12:45:39 +02:00
'input input[type=range], change input[type=range]'(event) {
// 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
2017-04-19 12:45:39 +02:00
const $slider = $(event.currentTarget);
const newActiveElement = $slider.parents('.viewportContainer').find('.imageViewerViewport');
setActiveViewport(newActiveElement);
// Subtract 1 here since the slider goes from 1 to N images
// But the stack indexing starts at 0
2017-04-19 12:45:39 +02:00
const newImageIdIndex = parseInt($slider.val(), 10) - 1;
switchToImageByIndex(newImageIdIndex);
}, slideTimeoutTime);
return false;
}
});