diff --git a/Packages/ohif-core/client/components/bootstrap/dialog/info.html b/Packages/ohif-core/client/components/bootstrap/dialog/info.html
index 9491e2e80..10aa35ad5 100644
--- a/Packages/ohif-core/client/components/bootstrap/dialog/info.html
+++ b/Packages/ohif-core/client/components/bootstrap/dialog/info.html
@@ -6,7 +6,9 @@
{{#each message in this.messages}}
{{{message}}}
{{else}}
-
An error has ocurred.
+ {{#let message=(choose this.message 'An error has ocurred.')}}
+
{{message}}
+ {{/let}}
{{/each}}
{{/dialogSimple}}
diff --git a/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.html b/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.html
index 2f4a15dab..adc048e68 100644
--- a/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.html
+++ b/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.html
@@ -1,10 +1,5 @@
-
-
-
-
You will be logged out in {{timeLeft}}.
-
-
-
\ No newline at end of file
+ {{#dialogSimple title='Your session is about to expire'}}
+
You will be logged out in {{timeLeft}}.
+ {{/dialogSimple}}
+
diff --git a/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.js b/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.js
index a6bbbbc47..2b3b0ab0f 100644
--- a/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.js
+++ b/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.js
@@ -1,39 +1,63 @@
+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
+ });
+ });
+});
+
Template.timeoutCountdownDialog.helpers({
- timeLeft: function() {
- var timeLeft = Session.get('countdownDialogLeftTime');
- var suffix = timeLeft > 1 ? 'seconds': 'second';
- return timeLeft + suffix;
+ timeLeft() {
+ const timeLeft = Session.get('countdownDialogTimeLeft');
+ const suffix = timeLeft > 1 ? 'seconds': 'second';
+ return `${timeLeft} ${suffix}`;
}
});
-Template.timeoutCountdownDialog.onRendered(function() {
- // Show countdown dialog
- var timeoutCountdownInterval;
- $(document).on('TriggerOpenTimeoutCountdownDialog', function(e, leftTime) {
- // Show modal dialog
- timeoutCountdownInterval = setInterval(function() {
- // Set countdownDialogLeftTime session
- Session.set('countdownDialogLeftTime', --leftTime);
+Template.timeoutCountdownDialog.onCreated(() => {
+ const instance = Template.instance();
+ const { timeLeft, closeObserver } = instance.data;
- var dialog = $('#timeoutCountdownDialog');
-
- // Show dialog
- dialog.css('display', 'block');
- }, 1000);
+ instance.close = callback => {
+ const $modal = instance.$('.modal');
+ $modal.on('hidden.bs.modal', () => callback()).modal('hide');
+ };
+ instance.autorun(computation => {
+ closeObserver.depend();
+ if (computation.firstRun) return;
+ instance.close(instance.data.promiseResolve);
});
- $(document).on('TriggerCloseTimeoutCountdownDialog', function() {
- var dialog = $('#timeoutCountdownDialog');
+ Session.set('countdownDialogTimeLeft', timeLeft);
+});
- // Close the dialog
- dialog.css('display', 'none');
-
- if (timeoutCountdownInterval) {
- clearInterval(timeoutCountdownInterval);
+Template.timeoutCountdownDialog.onRendered(() => {
+ const instance = Template.instance();
+ let timeLeft = instance.data.timeLeft;
+ // Update countdownDialogTimeLeft session every second
+ instance.interval = setInterval(() => {
+ Session.set('countdownDialogTimeLeft', --timeLeft);
+ if (!timeLeft) {
// Remove reviewer info for the user
Meteor.call('removeUserFromReviewers', Meteor.userId());
+ instance.close(instance.data.promiseReject);
}
- });
+ }, 1000);
+});
+
+Template.timeoutCountdownDialog.onDestroyed(() => {
+ const instance = Template.instance();
+ clearInterval(instance.interval);
+ Session.delete('countdownDialogTimeLeft');
});
diff --git a/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.styl b/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.styl
deleted file mode 100644
index d9bad5739..000000000
--- a/Packages/ohif-user-management/client/components/timeoutCountdownDialog/timeoutCountdownDialog.styl
+++ /dev/null
@@ -1,15 +0,0 @@
-#timeoutCountdownDialog
- display: none
- position: absolute
- top: 0
- bottom: 0
- left: 0
- right: 0
- margin: auto
- width: 20%
- height: 15%
- z-index: 100
- border-radius: 5px
- padding: 10px 20px 10px 20px
- background-color: rgba(255,255,255,1)
- outline: none
diff --git a/Packages/ohif-user-management/package.js b/Packages/ohif-user-management/package.js
index 37817ff0f..6c429ddbb 100644
--- a/Packages/ohif-user-management/package.js
+++ b/Packages/ohif-user-management/package.js
@@ -49,7 +49,6 @@ Package.onUse(function(api) {
api.addFiles('client/components/hipaaLogPage/hipaaLogPage.js', 'client');
api.addFiles('client/components/timeoutCountdownDialog/timeoutCountdownDialog.html', 'client');
- api.addFiles('client/components/timeoutCountdownDialog/timeoutCountdownDialog.styl', 'client');
api.addFiles('client/components/timeoutCountdownDialog/timeoutCountdownDialog.js', 'client');
api.addFiles('client/components/lastLoginModal/lastLoginModal.html', 'client');