Files
ohif-viewer/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.js
T

63 lines
2.0 KiB
JavaScript
Raw Normal View History

2017-03-03 10:32:14 -03:00
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { Session } from 'meteor/session';
import { Tracker } from 'meteor/tracker';
import { OHIF } from 'meteor/ohif:core';
Meteor.startup(() => {
const closeObserver = new Tracker.Dependency();
$.event.add(window, 'TriggerCloseTimeoutCountdownDialog', () => closeObserver.changed());
$.event.add(window, 'TriggerOpenTimeoutCountdownDialog', (event, timeLeft) => {
OHIF.ui.showDialog('timeoutCountdownDialog', {
timeLeft,
closeObserver
});
});
});
2016-02-09 22:16:37 -05:00
Template.timeoutCountdownDialog.helpers({
2017-03-03 10:32:14 -03:00
timeLeft() {
const timeLeft = Session.get('countdownDialogTimeLeft');
const suffix = timeLeft > 1 ? 'seconds': 'second';
return `${timeLeft} ${suffix}`;
2016-02-09 22:16:37 -05:00
}
2016-06-07 19:09:47 +02:00
});
2017-03-03 10:32:14 -03:00
Template.timeoutCountdownDialog.onCreated(() => {
const instance = Template.instance();
const { timeLeft, closeObserver } = instance.data;
2016-06-07 19:09:47 +02:00
2017-03-03 10:32:14 -03:00
instance.close = callback => {
const $modal = instance.$('.modal');
$modal.on('hidden.bs.modal', () => callback()).modal('hide');
};
2016-06-07 19:09:47 +02:00
2017-03-03 10:32:14 -03:00
instance.autorun(computation => {
closeObserver.depend();
if (computation.firstRun) return;
instance.close(instance.data.promiseResolve);
2016-06-07 19:09:47 +02:00
});
2017-03-03 10:32:14 -03:00
Session.set('countdownDialogTimeLeft', timeLeft);
});
2016-06-07 19:09:47 +02:00
2017-03-03 10:32:14 -03:00
Template.timeoutCountdownDialog.onRendered(() => {
const instance = Template.instance();
let timeLeft = instance.data.timeLeft;
2016-06-07 19:09:47 +02:00
2017-03-03 10:32:14 -03:00
// Update countdownDialogTimeLeft session every second
instance.interval = setInterval(() => {
Session.set('countdownDialogTimeLeft', --timeLeft);
if (!timeLeft) {
2016-06-07 19:09:47 +02:00
// Remove reviewer info for the user
Meteor.call('removeUserFromReviewers', Meteor.userId());
2017-03-03 10:32:14 -03:00
instance.close(instance.data.promiseReject);
2016-06-07 19:09:47 +02:00
}
2017-03-03 10:32:14 -03:00
}, 1000);
});
Template.timeoutCountdownDialog.onDestroyed(() => {
const instance = Template.instance();
clearInterval(instance.interval);
Session.delete('countdownDialogTimeLeft');
2016-06-07 19:09:47 +02:00
});