summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-03-21 09:52:38 +0000
committerPhil Hughes <me@iamphill.com>2016-03-21 09:52:38 +0000
commitc767f35c7f7e4aa9cabbe27db06c1a4a1eb46f54 (patch)
treeb43c0776709eaee2be8ebf111d64df75e0950528
parent3b6e2a68f3bce709ee0b1df561b8e7a8bea359b8 (diff)
downloadgitlab-ce-c767f35c7f7e4aa9cabbe27db06c1a4a1eb46f54.tar.gz
Updated based on feedback
-rw-r--r--app/assets/javascripts/merge_request_widget.js.coffee52
-rw-r--r--app/views/projects/merge_requests/widget/_heading.html.haml54
2 files changed, 60 insertions, 46 deletions
diff --git a/app/assets/javascripts/merge_request_widget.js.coffee b/app/assets/javascripts/merge_request_widget.js.coffee
index 877e85a12e9..43671ee3939 100644
--- a/app/assets/javascripts/merge_request_widget.js.coffee
+++ b/app/assets/javascripts/merge_request_widget.js.coffee
@@ -8,10 +8,11 @@ class @MergeRequestWidget
constructor: (@opts) ->
@firstCICheck = true
- @getCIStatus()
- notifyPermissions()
@readyForCICheck = true
- # clear the build poller
+ clearInterval @fetchBuildStatusInterval
+
+ @pollCIStatus()
+ notifyPermissions()
mergeInProgress: (deleteSourceBranch = false)->
$.ajax
@@ -39,23 +40,32 @@ class @MergeRequestWidget
else
status
- getCIStatus: ->
- _this = @
+ pollCIStatus: ->
@fetchBuildStatusInterval = setInterval ( =>
return if not @readyForCICheck
- $.getJSON @opts.ci_status_url, (data) =>
- @readyForCICheck = true
+ @getCIStatus(true)
+
+ @readyForCICheck = false
+ ), 5000
+
+ getCIStatus: (showNotification) ->
+ _this = @
+ $('.ci-widget-fetching').show()
+
+ $.getJSON @opts.ci_status_url, (data) =>
+ @readyForCICheck = true
- if @firstCICheck
- @firstCICheck = false
- @opts.ci_status = data.status
+ if @firstCICheck
+ @firstCICheck = false
+ @opts.ci_status = data.status
- if data.status isnt @opts.ci_status
- @showCIState data.status
- if data.coverage
- @showCICoverage data.coverage
+ if data.status isnt @opts.ci_status
+ @showCIStatus data.status
+ if data.coverage
+ @showCICoverage data.coverage
+ if showNotification
message = @opts.ci_message.replace('{{status}}', @ciLabelForStatus(data.status))
message = message.replace('{{sha}}', data.sha)
message = message.replace('{{title}}', data.title)
@@ -69,19 +79,9 @@ class @MergeRequestWidget
Turbolinks.visit _this.opts.builds_path
)
- @opts.ci_status = data.status
-
- @readyForCICheck = false
- ), 5000
-
- getCIState: ->
- $('.ci-widget-fetching').show()
- $.getJSON @opts.ci_status_url, (data) =>
- @showCIState data.status
- if data.coverage
- @showCICoverage data.coverage
+ @opts.ci_status = data.status
- showCIState: (state) ->
+ showCIStatus: (state) ->
$('.ci_widget').hide()
allowed_states = ["failed", "canceled", "running", "pending", "success", "skipped", "not_found"]
if state in allowed_states
diff --git a/app/views/projects/merge_requests/widget/_heading.html.haml b/app/views/projects/merge_requests/widget/_heading.html.haml
index 2ee8e2de0e8..2ec0d20a879 100644
--- a/app/views/projects/merge_requests/widget/_heading.html.haml
+++ b/app/views/projects/merge_requests/widget/_heading.html.haml
@@ -1,12 +1,24 @@
-- if @ci_commit or @merge_request.has_ci?
+- if @ci_commit
.mr-widget-heading
- - if @merge_request.has_ci?
- .ci_widget.ci-widget-fetching
- = icon('spinner spin')
+ - %w[success skipped canceled failed running pending].each do |status|
+ .ci_widget{ class: "ci-#{status}", style: ("display:none" unless @ci_commit.status == status) }
+ = ci_icon_for_status(status)
%span
- Checking CI status for #{@merge_request.last_commit_short_sha}&hellip;
+ CI build
+ = ci_label_for_status(status)
+ for
+ - commit = @merge_request.last_commit
+ = succeed "." do
+ = link_to @ci_commit.short_sha, namespace_project_commit_path(@merge_request.source_project.namespace, @merge_request.source_project, @ci_commit.sha), class: "monospace"
+ %span.ci-coverage
+ = link_to "View details", builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: "js-show-tab", data: {action: 'builds'}
+
+- elsif @merge_request.has_ci?
+ - # Compatibility with old CI integrations (ex jenkins) when you request status from CI server via AJAX
+ - # Remove in later versions when services like Jenkins will set CI status via Commit status API
+ .mr-widget-heading
- %w[success skipped canceled failed running pending].each do |status|
- .ci_widget{ class: "ci-#{status}", style: ("display:none" unless status == @ci_commit.status) }
+ .ci_widget{class: "ci-#{status}", style: "display:none"}
= ci_icon_for_status(status)
%span
CI build
@@ -16,20 +28,22 @@
= succeed "." do
= link_to commit.short_id, namespace_project_commit_path(@merge_request.source_project.namespace, @merge_request.source_project, commit), class: "monospace"
%span.ci-coverage
- - if details_path = builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
+ - if details_path = ci_build_details_path(@merge_request)
= link_to "View details", details_path, :"data-no-turbolink" => "data-no-turbolink"
- - if @merge_request.has_ci?
- - # Compatibility with old CI integrations (ex jenkins) when you request status from CI server via AJAX
- - # Remove in later versions when services like Jenkins will set CI status via Commit status API
- .ci_widget.ci-not_found{style: "display:none"}
- = icon("times-circle")
- Could not find CI status for #{@merge_request.last_commit_short_sha}.
- .ci_widget.ci-error{style: "display:none"}
- = icon("times-circle")
- Could not connect to the CI server. Please check your settings and try again.
+ .ci_widget
+ = icon("spinner spin")
+ Checking CI status for #{@merge_request.last_commit_short_sha}&hellip;
+
+ .ci_widget.ci-not_found{style: "display:none"}
+ = icon("times-circle")
+ Could not find CI status for #{@merge_request.last_commit_short_sha}.
+
+ .ci_widget.ci-error{style: "display:none"}
+ = icon("times-circle")
+ Could not connect to the CI server. Please check your settings and try again.
- :javascript
- $(function() {
- merge_request_widget.getCIState();
- });
+ :javascript
+ $(function() {
+ merge_request_widget.getCIStatus(false);
+ });