diff --git a/LesionTracker/client/components/app/app.html b/LesionTracker/client/components/app/app.html index d9e535c3d..0c6b0ef86 100644 --- a/LesionTracker/client/components/app/app.html +++ b/LesionTracker/client/components/app/app.html @@ -19,7 +19,6 @@ - {{>timeoutCountdownDialog}}
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 @@ \ 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');