From 02fd27622709cb9adb26626676aa96e6adf4f124 Mon Sep 17 00:00:00 2001 From: Leonardo Campos Date: Wed, 23 Nov 2016 19:21:13 -0200 Subject: [PATCH] LT-366: StudyList :: Progress Dialog --- .../components/bootstrap/dialog/form.html | 4 +- .../components/bootstrap/dialog/progress.html | 13 ++++ .../components/bootstrap/dialog/progress.js | 78 +++++++++++++++++++ .../components/bootstrap/dialog/progress.styl | 7 ++ .../client/components/bootstrap/index.js | 2 + Packages/ohif-core/package.js | 1 + 6 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 Packages/ohif-core/client/components/bootstrap/dialog/progress.html create mode 100644 Packages/ohif-core/client/components/bootstrap/dialog/progress.js create mode 100644 Packages/ohif-core/client/components/bootstrap/dialog/progress.styl diff --git a/Packages/ohif-core/client/components/bootstrap/dialog/form.html b/Packages/ohif-core/client/components/bootstrap/dialog/form.html index 84f0e9b97..483d56297 100644 --- a/Packages/ohif-core/client/components/bootstrap/dialog/form.html +++ b/Packages/ohif-core/client/components/bootstrap/dialog/form.html @@ -17,11 +17,11 @@ {{/form}} diff --git a/Packages/ohif-core/client/components/bootstrap/dialog/progress.html b/Packages/ohif-core/client/components/bootstrap/dialog/progress.html new file mode 100644 index 000000000..09725fcc7 --- /dev/null +++ b/Packages/ohif-core/client/components/bootstrap/dialog/progress.html @@ -0,0 +1,13 @@ + diff --git a/Packages/ohif-core/client/components/bootstrap/dialog/progress.js b/Packages/ohif-core/client/components/bootstrap/dialog/progress.js new file mode 100644 index 000000000..f8569b8e0 --- /dev/null +++ b/Packages/ohif-core/client/components/bootstrap/dialog/progress.js @@ -0,0 +1,78 @@ +import { Template } from 'meteor/templating'; +import { Session } from 'meteor/session'; +import { _ } from 'meteor/underscore'; + +Template.dialogProgress.onCreated(() => { + console.log('dialogProgress :: onCreated'); +}); + +Template.dialogProgress.onCreated(() => { + Session.set('progressDialogState', { + progress: 0, + message: 'Test Message' + }); +}) + +Template.dialogProgress.onDestroyed(() => { + Session.set('progressDialogState', undefined); +}) + +Template.dialogProgress.onRendered(() => { + const instance = Template.instance(); + const task = instance.data.task; + const state = Session.get('progressDialogState'); + + const progressDialog = { + promise: instance.data.promise, + + done: () => { + // Hide the modal, removing the backdrop + instance.$('.modal').on('hidden.bs.modal', event => { + instance.data.promiseResolve(); + }).modal('hide'); + }, + + cancel: () => { + // Hide the modal, removing the backdrop + instance.$('.modal').on('hidden.bs.modal', event => { + instance.data.promiseReject(); + }).modal('hide'); + }, + + setProgress: _.throttle(progress => { + const state = Session.get('progressDialogState'); + state.progress = Math.min(1, progress); + + Session.set('progressDialogState', state); + }, 100), + + setMessage: _.throttle(message => { + const state = Session.get('progressDialogState'); + state.message = message; + + Session.set('progressDialogState', state); + }, 100) + } + + task.start(progressDialog); +}); + +Template.dialogProgress.helpers({ + progress() { + const state = Session.get('progressDialogState'); + if (!state) { + return; + } + + return state.progress * 100; + }, + + message() { + const state = Session.get('progressDialogState'); + if (!state) { + return; + } + + return state.message; + } +}) \ No newline at end of file diff --git a/Packages/ohif-core/client/components/bootstrap/dialog/progress.styl b/Packages/ohif-core/client/components/bootstrap/dialog/progress.styl new file mode 100644 index 000000000..b086da1ad --- /dev/null +++ b/Packages/ohif-core/client/components/bootstrap/dialog/progress.styl @@ -0,0 +1,7 @@ +.modal-progress + .status + .progress-bar + float: none; + .btn-confirm + display: none + \ No newline at end of file diff --git a/Packages/ohif-core/client/components/bootstrap/index.js b/Packages/ohif-core/client/components/bootstrap/index.js index bdfd260e9..7352cc6fc 100644 --- a/Packages/ohif-core/client/components/bootstrap/index.js +++ b/Packages/ohif-core/client/components/bootstrap/index.js @@ -1,4 +1,6 @@ import './dialog/confirm.html'; +import './dialog/progress.html'; +import './dialog/progress.js'; import './dialog/form.html'; import './dialog/form.js'; import './dialog/login.html'; diff --git a/Packages/ohif-core/package.js b/Packages/ohif-core/package.js index 6de7d1c90..a82ceaadd 100644 --- a/Packages/ohif-core/package.js +++ b/Packages/ohif-core/package.js @@ -26,6 +26,7 @@ Package.onUse(function(api) { api.addFiles([ 'client/ui/dimensional/dimensional.styl', 'client/ui/resizable/resizable.styl', + 'client/components/bootstrap/dialog/progress.styl', 'client/components/bootstrap/dialog/unsavedChangesDialog.styl', 'client/components/bootstrap/dropdown/dropdown.styl' ], 'client');