From: Stas Vilchik Date: Fri, 24 Oct 2014 10:37:01 +0000 (+0200) Subject: Background processes UI X-Git-Tag: 5.0-RC1~585 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=15b27b0eb1bd76d8f6ec474e94367b806d041c74;p=sonarqube.git Background processes UI Conflicts: server/sonar-web/src/main/coffee/issues/app.coffee --- diff --git a/server/sonar-web/Gruntfile.coffee b/server/sonar-web/Gruntfile.coffee index f73abf3c7fa..69b39a66782 100644 --- a/server/sonar-web/Gruntfile.coffee +++ b/server/sonar-web/Gruntfile.coffee @@ -97,6 +97,7 @@ module.exports = (grunt) -> '<%= pkg.assets %>js/sortable.js' '<%= pkg.assets %>js/common/inputs.js' '<%= pkg.assets %>js/common/dialogs.js' + '<%= pkg.assets %>js/common/processes.js' '<%= pkg.assets %>js/application.js' '<%= pkg.assets %>js/csv.js' '<%= pkg.assets %>js/dashboard.js' @@ -131,6 +132,7 @@ module.exports = (grunt) -> '<%= pkg.assets %>js/sortable.js' '<%= pkg.assets %>js/common/inputs.js' '<%= pkg.assets %>js/common/dialogs.js' + '<%= pkg.assets %>js/common/processes.js' '<%= pkg.assets %>js/application.js' '<%= pkg.assets %>js/csv.js' '<%= pkg.assets %>js/dashboard.js' diff --git a/server/sonar-web/src/main/coffee/common/processes.coffee b/server/sonar-web/src/main/coffee/common/processes.coffee new file mode 100644 index 00000000000..e99a2e479b1 --- /dev/null +++ b/server/sonar-web/src/main/coffee/common/processes.coffee @@ -0,0 +1,42 @@ +$ = jQuery + +process = {} +process.queue = {} +process.timeout = 300 + +_.extend process, + + addBackgroundProcess: -> + uid = _.uniqueId 'process' + @queue[uid] = new Date() + setTimeout (=> @showSpinner uid if @isBackgroundProcessAlive uid), @timeout + uid + + + isBackgroundProcessAlive: (uid) -> + @queue[uid]? + + + finishBackgroundProcess: (uid) -> + delete @queue[uid] + @removeSpinner uid + + + showSpinner: (uid) -> + id = "spinner-#{uid}" + spinner = $ '
' + spinner.addClass 'process-spinner' + spinner.prop 'id', id + spinner.text 'still working... ' + uid + spinner.appendTo $('body') + setTimeout (-> spinner.addClass 'shown'), 100 + + + removeSpinner: (uid) -> + id = "spinner-#{uid}" + $('#' + id).remove() + + +_.extend window, process: process + + diff --git a/server/sonar-web/src/main/less/ui.less b/server/sonar-web/src/main/less/ui.less index 89ecef1598b..8b7296c28a0 100644 --- a/server/sonar-web/src/main/less/ui.less +++ b/server/sonar-web/src/main/less/ui.less @@ -390,3 +390,20 @@ input[type=button] { background-color: #EE0000; a & { border-bottom-color: #EE0000; } } + + + +.process-spinner { + position: fixed; + top: 0; left: 50%; + width: 300px; + margin-left: -150px; + padding: 3px 0; + background-color: #f0e8ac; + border-radius: 0 0 3px 3px; + text-align: center; + opacity: 0; + .trans; + + &.shown { opacity: 1; } +}