93 lines
2.9 KiB
JavaScript
93 lines
2.9 KiB
JavaScript
import { Template } from 'meteor/templating';
|
|
import { _ } from 'meteor/underscore';
|
|
import { Session } from 'meteor/session';
|
|
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
import { thumbnailDragHandlers } from '../../../lib/thumbnailDragHandlers';
|
|
|
|
Template.thumbnailEntry.onCreated(() => {
|
|
const instance = Template.instance();
|
|
|
|
// Check if the thumbnails will be draggable or clickable
|
|
instance.isDragAndDrop = _.isUndefined(instance.data.viewportIndex);
|
|
});
|
|
|
|
Template.thumbnailEntry.events({
|
|
// Event handlers for drag and drop
|
|
'touchstart .thumbnailEntry, mousedown .thumbnailEntry'(event, instance) {
|
|
const data = instance.data.thumbnail.stack;
|
|
if (!instance.isDragAndDrop) return;
|
|
thumbnailDragHandlers.thumbnailDragStartHandler(event, data);
|
|
},
|
|
|
|
'touchmove .thumbnailEntry'(event, instance) {
|
|
if (!instance.isDragAndDrop) return;
|
|
thumbnailDragHandlers.thumbnailDragHandler(event);
|
|
},
|
|
|
|
'touchend .thumbnailEntry'(event, instance) {
|
|
const data = instance.data.thumbnail.stack;
|
|
if (!instance.isDragAndDrop) return;
|
|
thumbnailDragHandlers.thumbnailDragEndHandler(event, data);
|
|
},
|
|
|
|
// Event handlers for click (quick switch)
|
|
'click .thumbnailEntry'(event, instance) {
|
|
if (instance.isDragAndDrop) return;
|
|
|
|
// Get the thumbnail stack data
|
|
const data = instance.data.thumbnail.stack;
|
|
|
|
// Rerender the viewport using the clicked thumbnail data
|
|
OHIF.viewerbase.layoutManager.rerenderViewportWithNewDisplaySet(instance.data.viewportIndex, data);
|
|
},
|
|
|
|
// Event handlers for double click
|
|
'dblclick .thumbnailEntry'(event, instance) {
|
|
if (!instance.isDragAndDrop) return;
|
|
|
|
// Get the active viewport index and total number of viewports...
|
|
const viewportCount = OHIF.viewerbase.layoutManager.getNumberOfViewports();
|
|
let viewportIndex = Session.get('activeViewport') || 0;
|
|
if (viewportIndex >= viewportCount) {
|
|
viewportIndex = viewportCount > 0 ? viewportCount - 1 : 0;
|
|
}
|
|
|
|
// Get the thumbnail stack data
|
|
const data = instance.data.thumbnail.stack;
|
|
|
|
// Rerender the viewport using the clicked thumbnail data
|
|
OHIF.viewerbase.layoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, data);
|
|
}
|
|
});
|
|
|
|
Template.thumbnailEntry.helpers({
|
|
draggableClass() {
|
|
return Template.instance().isDragAndDrop ? 'draggable' : '';
|
|
},
|
|
|
|
instanceNumber() {
|
|
const thumbnail = Template.instance().data.thumbnail;
|
|
if (!thumbnail) {
|
|
return;
|
|
}
|
|
|
|
const stack = thumbnail.stack;
|
|
if (!stack) {
|
|
return;
|
|
}
|
|
|
|
// No need to show instance number for single-frame images
|
|
if (!stack.isMultiFrame) {
|
|
return;
|
|
}
|
|
|
|
const firstImage = stack.images[0];
|
|
if (!firstImage) {
|
|
return;
|
|
}
|
|
|
|
return firstImage.instanceNumber;
|
|
}
|
|
});
|