ohif-viewer/Packages/ohif-viewerbase/client/lib/dialogUtils.js
2017-01-29 22:11:17 -02:00

72 lines
2.1 KiB
JavaScript

import { Blaze } from 'meteor/blaze';
import { Template } from 'meteor/templating';
import { $ } from 'meteor/jquery';
import { setFocusToActiveViewport } from './setFocusToActiveViewport';
let doneCallbackFunction;
/**
* Removes the backdrop abd closes opened dialog
* and focus to the active viewport. If a done callback is set,
* it's called before
* @param {Boolean} runCallback Indicate if callback function needs to be called. Default: true
*/
const closeHandler = (runCallback = true) => {
// Check if callback function exists
if (runCallback && typeof doneCallbackFunction === 'function') {
doneCallbackFunction();
}
// Hide the lesion dialog
$('#confirmDeleteDialog').css('display', 'none');
// Remove the backdrop
$('.removableBackdrop').remove();
// Remove the callback
doneCallbackFunction = undefined;
// Restore the focus to the active viewport
setFocusToActiveViewport();
};
/**
* Displays the confirmation dialog template and the removable backdrop element
*
* @param doneCallback A callback
* @param options
*/
const showConfirmDialog = (doneCallback, options) => {
// Show the backdrop
options = options || {};
Blaze.renderWithData(Template.removableBackdrop, options, document.body);
let confirmDeleteDialog = $('#confirmDeleteDialog');
confirmDeleteDialog.remove();
const viewer = document.getElementById('viewer');
Blaze.renderWithData(Template.confirmDeleteDialog, options, viewer);
// Make sure the context menu is closed when the user clicks away
$('.removableBackdrop').one('mousedown touchstart', () => {
// Close dialog without calling callback
closeHandler(false);
});
confirmDeleteDialog = $('#confirmDeleteDialog');
confirmDeleteDialog.css('display', 'block');
confirmDeleteDialog.focus();
// If callback function is defined, save it for closeHandler
if (doneCallback && typeof doneCallback === 'function') {
doneCallbackFunction = doneCallback;
}
};
const dialogUtils = {
showConfirmDialog,
closeHandler
};
export { dialogUtils };