39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
import { Template } from 'meteor/templating';
|
|
import { Blaze } from 'meteor/blaze';
|
|
import { _ } from 'meteor/underscore';
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
|
|
OHIF.ui.showDialog = (templateName, dialogData) => {
|
|
// Check if the given template exists
|
|
const template = Template[templateName];
|
|
if (!template) {
|
|
throw {
|
|
name: 'TEMPLATE_NOT_FOUND',
|
|
message: `Template ${templateName} not found.`
|
|
};
|
|
}
|
|
|
|
// Create a new promise to control the modal and store its resolve and reject callbacks
|
|
let promiseResolve;
|
|
let promiseReject;
|
|
const promise = new Promise((resolve, reject) => {
|
|
promiseResolve = resolve;
|
|
promiseReject = reject;
|
|
});
|
|
|
|
// Render the dialog with the given template passing the promise object and callbacks
|
|
const templateData = _.extend({}, dialogData, {
|
|
promise,
|
|
promiseResolve,
|
|
promiseReject
|
|
});
|
|
const view = Blaze.renderWithData(template, templateData, document.body);
|
|
|
|
// Destroy the created dialog view when the promise is either resolved or rejected
|
|
const dismissModal = () => Blaze.remove(view);
|
|
promise.then(dismissModal, dismissModal);
|
|
|
|
// Return the promise to allow callbacks stacking from outside
|
|
return promise;
|
|
};
|