diff --git a/app/assets/javascripts/merge_request_widget.js.coffee b/app/assets/javascripts/merge_request_widget.js.coffee index 27537d726611e31ddb8f47cc929fdd8a22f15a74..168de57288b4cd00b04134a2daaf45202f7f560c 100644 --- a/app/assets/javascripts/merge_request_widget.js.coffee +++ b/app/assets/javascripts/merge_request_widget.js.coffee @@ -3,12 +3,14 @@ class @MergeRequestWidget # # check_enable - Boolean, whether to check automerge status # url_to_automerge_check - String, URL to use to check automerge status - # current_status - String, current automerge status # url_to_ci_check - String, URL to use to check CI status # + constructor: (@opts) -> + @first = true modal = $('#modal_merge_info').modal(show: false) @getBuildStatus() + @readyForCICheck = true # clear the build poller mergeInProgress: (deleteSourceBranch = false)-> @@ -31,19 +33,6 @@ class @MergeRequestWidget $.get @opts.url_to_automerge_check, (data) -> $('.mr-state-widget').replaceWith(data) - ciIconForStatus: (status) -> - icon = undefined - switch status - when 'success' - icon = 'check' - when 'failed' - icon = 'close' - when 'running' or 'pending' - icon = 'clock-o' - else - icon = 'circle' - 'fa fa-' + icon + ' fa-fw' - ciLabelForStatus: (status) -> if status == 'success' 'passed' @@ -54,7 +43,13 @@ class @MergeRequestWidget urlToCiCheck = @opts.url_to_ci_check _this = @ @fetchBuildStatusInterval = setInterval (-> + if not _this.readyForCICheck + return; $.getJSON urlToCiCheck, (data) -> + _this.readyForCICheck = true + if _this.first + _this.first = false + _this.opts.current_status = data.status if data.status isnt _this.opts.current_status notify("Build #{_this.ciLabelForStatus(data.status)}", _this.opts.ci_message.replace('{{status}}', @@ -65,16 +60,10 @@ class @MergeRequestWidget return ), 2000 _this.opts.current_status = data.status - $('.mr-widget-heading i') - .removeClass() - .addClass(_this.ciIconForStatus(data.status)); - $('.mr-widget-heading .ci_widget') - .removeClass() - .addClass("ci_widget ci-#{data.status}"); - $('.mr-widget-heading span.ci-status-label') - .text(_this.ciLabelForStatus(data.status)) return + _this.readyForCICheck = false return + ), 5000 getCiStatus: -> diff --git a/app/views/projects/merge_requests/widget/_show.html.haml b/app/views/projects/merge_requests/widget/_show.html.haml index 9537eda5aa55407d9f480f2aea9c214484195aaa..b5591416a31cf1c044ffabb9732440d2b8e05723 100644 --- a/app/views/projects/merge_requests/widget/_show.html.haml +++ b/app/views/projects/merge_requests/widget/_show.html.haml @@ -13,16 +13,15 @@ url_to_automerge_check: "#{merge_check_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)}", check_enable: #{@merge_request.unchecked? ? "true" : "false"}, url_to_ci_check: "#{ci_status_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)}", - gitlab_icon: "#{asset_path 'gitlab_logo.png'}" + gitlab_icon: "#{asset_path 'gitlab_logo.png'}", + current_status: "" }; - if @merge_request.ci_commit :javascript - opts.current_status = "#{@merge_request.ci_commit.try(:status)}"; opts.ci_message = "Build {{status}} for #{@merge_request.ci_commit.sha}"; - else :javascript - opts.current_status = "#{@merge_request.source_project.ci_service.commit_status(@merge_request.last_commit.sha, merge_request.source_branch) if @merge_request.source_project.ci_service}"; opts.ci_message = "Build {{status}} for #{@merge_request.last_commit.sha}"; :javascript