Commit eaa8cd28d07a1017b3e2abfc43d008daca962343
Exists in
master
and in
4 other branches
Merge branch 'mergerequest-to-coffee' of https://github.com/koenpunt/gitlabhq in…
…to koenpunt-mergerequest-to-coffee
Showing
13 changed files
with
142 additions
and
183 deletions
Show diff stats
app/assets/javascripts/merge_requests.js
| ... | ... | @@ -1,132 +0,0 @@ |
| 1 | -var MergeRequest = { | |
| 2 | - diffs_loaded: false, | |
| 3 | - commits_loaded: false, | |
| 4 | - opts: false, | |
| 5 | - | |
| 6 | - init: | |
| 7 | - function(opts) { | |
| 8 | - var self = this; | |
| 9 | - self.opts = opts; | |
| 10 | - | |
| 11 | - self.initTabs(); | |
| 12 | - self.initMergeWidget(); | |
| 13 | - | |
| 14 | - $(".mr_show_all_commits").bind("click", function() { | |
| 15 | - self.showAllCommits(); | |
| 16 | - }); | |
| 17 | - }, | |
| 18 | - | |
| 19 | - initMergeWidget: | |
| 20 | - function() { | |
| 21 | - var self = this; | |
| 22 | - self.showState(self.opts.current_state); | |
| 23 | - | |
| 24 | - if($(".automerge_widget").length && self.opts.check_enable){ | |
| 25 | - $.get(self.opts.url_to_automerge_check, function(data){ | |
| 26 | - self.showState(data.state); | |
| 27 | - }, "json"); | |
| 28 | - } | |
| 29 | - | |
| 30 | - if(self.opts.ci_enable){ | |
| 31 | - $.get(self.opts.url_to_ci_check, function(data){ | |
| 32 | - self.showCiState(data.status); | |
| 33 | - }, "json"); | |
| 34 | - } | |
| 35 | - }, | |
| 36 | - | |
| 37 | - initTabs: | |
| 38 | - function() { | |
| 39 | - $(".mr_nav_tabs a").live("click", function() { | |
| 40 | - $(".mr_nav_tabs a").parent().removeClass("active"); | |
| 41 | - $(this).parent().addClass("active"); | |
| 42 | - }); | |
| 43 | - | |
| 44 | - var current_tab; | |
| 45 | - if(this.opts.action == "diffs") { | |
| 46 | - current_tab = $(".mr_nav_tabs .merge-diffs-tab"); | |
| 47 | - } else { | |
| 48 | - current_tab = $(".mr_nav_tabs .merge-notes-tab"); | |
| 49 | - } | |
| 50 | - current_tab.parent().addClass("active"); | |
| 51 | - | |
| 52 | - this.initNotesTab(); | |
| 53 | - this.initDiffTab(); | |
| 54 | - }, | |
| 55 | - | |
| 56 | - initNotesTab: | |
| 57 | - function() { | |
| 58 | - $(".mr_nav_tabs a.merge-notes-tab").live("click", function(e) { | |
| 59 | - $(".merge-request-diffs").hide(); | |
| 60 | - $(".merge_request_notes").show(); | |
| 61 | - var mr_path = $(".merge-notes-tab").attr("data-url"); | |
| 62 | - history.pushState({ path: mr_path }, '', mr_path); | |
| 63 | - e.preventDefault(); | |
| 64 | - }); | |
| 65 | - }, | |
| 66 | - | |
| 67 | - initDiffTab: | |
| 68 | - function() { | |
| 69 | - $(".mr_nav_tabs a.merge-diffs-tab").live("click", function(e) { | |
| 70 | - if(!MergeRequest.diffs_loaded) { | |
| 71 | - MergeRequest.loadDiff(); | |
| 72 | - } | |
| 73 | - $(".merge_request_notes").hide(); | |
| 74 | - $(".merge-request-diffs").show(); | |
| 75 | - var mr_diff_path = $(".merge-diffs-tab").attr("data-url"); | |
| 76 | - history.pushState({ path: mr_diff_path }, '', mr_diff_path); | |
| 77 | - e.preventDefault(); | |
| 78 | - }); | |
| 79 | - | |
| 80 | - }, | |
| 81 | - | |
| 82 | - showState: | |
| 83 | - function(state){ | |
| 84 | - $(".automerge_widget").hide(); | |
| 85 | - $(".automerge_widget." + state).show(); | |
| 86 | - }, | |
| 87 | - | |
| 88 | - showCiState: | |
| 89 | - function(state){ | |
| 90 | - $(".ci_widget").hide(); | |
| 91 | - $(".ci_widget.ci-" + state).show(); | |
| 92 | - }, | |
| 93 | - | |
| 94 | - loadDiff: | |
| 95 | - function() { | |
| 96 | - $(".dashboard-loader").show(); | |
| 97 | - $.ajax({ | |
| 98 | - type: "GET", | |
| 99 | - url: $(".merge-diffs-tab").attr("data-url"), | |
| 100 | - beforeSend: function(){ $('.status').addClass("loading")}, | |
| 101 | - complete: function(){ | |
| 102 | - MergeRequest.diffs_loaded = true; | |
| 103 | - $(".merge_request_notes").hide(); | |
| 104 | - $('.status').removeClass("loading"); | |
| 105 | - }, | |
| 106 | - dataType: "script"}); | |
| 107 | - }, | |
| 108 | - | |
| 109 | - showAllCommits: | |
| 110 | - function() { | |
| 111 | - $(".first_mr_commits").remove(); | |
| 112 | - $(".all_mr_commits").removeClass("hide"); | |
| 113 | - }, | |
| 114 | - | |
| 115 | - already_cannot_be_merged: | |
| 116 | - function(){ | |
| 117 | - $(".automerge_widget").hide(); | |
| 118 | - $(".merge_in_progress").hide(); | |
| 119 | - $(".automerge_widget.already_cannot_be_merged").show(); | |
| 120 | - } | |
| 121 | -}; | |
| 122 | - | |
| 123 | -/* | |
| 124 | - * Filter merge requests | |
| 125 | - */ | |
| 126 | -function merge_requestsPage() { | |
| 127 | - $("#assignee_id").chosen(); | |
| 128 | - $("#milestone_id").chosen(); | |
| 129 | - $("#milestone_id, #assignee_id").on("change", function(){ | |
| 130 | - $(this).closest("form").submit(); | |
| 131 | - }); | |
| 132 | -} |
| ... | ... | @@ -0,0 +1,97 @@ |
| 1 | +# | |
| 2 | +# * Filter merge requests | |
| 3 | +# | |
| 4 | +@merge_requestsPage = -> | |
| 5 | + $('#assignee_id').chosen() | |
| 6 | + $('#milestone_id').chosen() | |
| 7 | + $('#milestone_id, #assignee_id').on 'change', -> | |
| 8 | + $(this).closest('form').submit() | |
| 9 | + | |
| 10 | +class MergeRequest | |
| 11 | + | |
| 12 | + constructor: (@opts) -> | |
| 13 | + this.$el = $('.merge-request') | |
| 14 | + @diffs_loaded = false | |
| 15 | + @commits_loaded = false | |
| 16 | + | |
| 17 | + this.activateTab(@opts.action) | |
| 18 | + | |
| 19 | + this.bindEvents() | |
| 20 | + | |
| 21 | + this.initMergeWidget() | |
| 22 | + this.$('.show-all-commits').on 'click', => | |
| 23 | + this.showAllCommits() | |
| 24 | + | |
| 25 | + # Local jQuery finder | |
| 26 | + $: (selector) -> | |
| 27 | + this.$el.find(selector) | |
| 28 | + | |
| 29 | + initMergeWidget: -> | |
| 30 | + this.showState( @opts.current_state ) | |
| 31 | + | |
| 32 | + if this.$('.automerge_widget').length and @opts.check_enable | |
| 33 | + $.get @opts.url_to_automerge_check, (data) => | |
| 34 | + this.showState( data.state ) | |
| 35 | + , 'json' | |
| 36 | + | |
| 37 | + if @opts.ci_enable | |
| 38 | + $.get self.opts.url_to_ci_check, (data) => | |
| 39 | + this.showCiState data.status | |
| 40 | + , 'json' | |
| 41 | + | |
| 42 | + bindEvents: -> | |
| 43 | + this.$('.nav-tabs').on 'click', 'a', (event) => | |
| 44 | + a = $(event.currentTarget) | |
| 45 | + | |
| 46 | + href = a.attr('href') | |
| 47 | + History.replaceState {path: href}, document.title, href | |
| 48 | + | |
| 49 | + event.preventDefault() | |
| 50 | + | |
| 51 | + this.$('.nav-tabs').on 'click', 'li', (event) => | |
| 52 | + this.activateTab($(event.currentTarget).data('action')) | |
| 53 | + | |
| 54 | + activateTab: (action) -> | |
| 55 | + this.$('.nav-tabs li').removeClass 'active' | |
| 56 | + this.$('.tab-content').hide() | |
| 57 | + switch action | |
| 58 | + when 'diffs' | |
| 59 | + this.$('.nav-tabs .diffs-tab').addClass 'active' | |
| 60 | + this.loadDiff() unless @diffs_loaded | |
| 61 | + this.$('.diffs').show() | |
| 62 | + else | |
| 63 | + this.$('.nav-tabs .notes-tab').addClass 'active' | |
| 64 | + this.$('.notes').show() | |
| 65 | + | |
| 66 | + showState: (state) -> | |
| 67 | + $('.automerge_widget').hide() | |
| 68 | + $('.automerge_widget.' + state).show() | |
| 69 | + | |
| 70 | + showCiState: (state) -> | |
| 71 | + $('.ci_widget').hide() | |
| 72 | + $('.ci_widget.ci-' + state).show() | |
| 73 | + | |
| 74 | + loadDiff: (event) -> | |
| 75 | + $('.dashboard-loader').show() | |
| 76 | + $.ajax | |
| 77 | + type: 'GET' | |
| 78 | + url: this.$('.nav-tabs .diffs-tab a').attr('href') | |
| 79 | + beforeSend: => | |
| 80 | + this.$('.status').addClass 'loading' | |
| 81 | + | |
| 82 | + complete: => | |
| 83 | + @diffs_loaded = true | |
| 84 | + this.$('.status').removeClass 'loading' | |
| 85 | + | |
| 86 | + dataType: 'script' | |
| 87 | + | |
| 88 | + showAllCommits: -> | |
| 89 | + this.$('.first-commits').remove() | |
| 90 | + this.$('.all-commits').removeClass 'hide' | |
| 91 | + | |
| 92 | + alreadyOrCannotBeMerged: -> | |
| 93 | + this.$('.automerge_widget').hide() | |
| 94 | + this.$('.merge-in-progress').hide() | |
| 95 | + this.$('.automerge_widget.already_cannot_be_merged').show() | |
| 96 | + | |
| 97 | +this.MergeRequest = MergeRequest | |
| 0 | 98 | \ No newline at end of file | ... | ... |
app/assets/stylesheets/common.scss
app/assets/stylesheets/sections/merge_requests.scss
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | } |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | -.mr_nav_tabs { | |
| 46 | +.merge-request .nav-tabs{ | |
| 47 | 47 | li { |
| 48 | 48 | a { |
| 49 | 49 | font-weight: bold; |
| ... | ... | @@ -65,7 +65,7 @@ li.merge_request { |
| 65 | 65 | } |
| 66 | 66 | } |
| 67 | 67 | |
| 68 | -.merge_in_progress { | |
| 68 | +.merge-in-progress { | |
| 69 | 69 | @extend .padded; |
| 70 | 70 | @extend .append-bottom-10; |
| 71 | 71 | } | ... | ... |
app/views/merge_requests/_form.html.haml
| 1 | -= form_for [@project, @merge_request], html: { class: "new_merge_request form-horizontal" } do |f| | |
| 1 | += form_for [@project, @merge_request], html: { class: "#{controller.action_name}-merge-request form-horizontal" } do |f| | |
| 2 | 2 | -if @merge_request.errors.any? |
| 3 | 3 | .alert-message.block-message.error |
| 4 | 4 | %ul |
| ... | ... | @@ -61,8 +61,9 @@ |
| 61 | 61 | :javascript |
| 62 | 62 | $(function(){ |
| 63 | 63 | disableButtonIfEmptyField("#merge_request_title", ".save-btn"); |
| 64 | - var source_branch = $("#merge_request_source_branch"); | |
| 65 | - var target_branch = $("#merge_request_target_branch"); | |
| 64 | + | |
| 65 | + var source_branch = $("#merge_request_source_branch") | |
| 66 | + , target_branch = $("#merge_request_target_branch"); | |
| 66 | 67 | |
| 67 | 68 | $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() }); |
| 68 | 69 | $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() }); | ... | ... |
app/views/merge_requests/_show.html.haml
| 1 | -= render "merge_requests/show/mr_title" | |
| 2 | -= render "merge_requests/show/how_to_merge" | |
| 3 | -= render "merge_requests/show/mr_box" | |
| 4 | -= render "merge_requests/show/mr_accept" | |
| 5 | -- if @project.gitlab_ci? | |
| 6 | - = render "merge_requests/show/mr_ci" | |
| 7 | -= render "merge_requests/show/commits" | |
| 1 | +.merge-request | |
| 2 | + = render "merge_requests/show/mr_title" | |
| 3 | + = render "merge_requests/show/how_to_merge" | |
| 4 | + = render "merge_requests/show/mr_box" | |
| 5 | + = render "merge_requests/show/mr_accept" | |
| 6 | + - if @project.gitlab_ci? | |
| 7 | + = render "merge_requests/show/mr_ci" | |
| 8 | + = render "merge_requests/show/commits" | |
| 8 | 9 | |
| 9 | -- if @commits.present? | |
| 10 | - %ul.nav.nav-tabs.mr_nav_tabs | |
| 11 | - %li | |
| 12 | - = link_to "#notes", "data-url" => project_merge_request_path(@project, @merge_request), class: "merge-notes-tab tab" do | |
| 13 | - %i.icon-comment | |
| 14 | - Comments | |
| 15 | - %li | |
| 16 | - = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), class: "merge-diffs-tab tab" do | |
| 17 | - %i.icon-list-alt | |
| 18 | - Diff | |
| 10 | + - if @commits.present? | |
| 11 | + %ul.nav.nav-tabs | |
| 12 | + %li.notes-tab{data: {action: 'notes'}} | |
| 13 | + = link_to project_merge_request_path(@project, @merge_request) do | |
| 14 | + %i.icon-comment | |
| 15 | + Comments | |
| 16 | + %li.diffs-tab{data: {action: 'diffs'}} | |
| 17 | + = link_to diffs_project_merge_request_path(@project, @merge_request) do | |
| 18 | + %i.icon-list-alt | |
| 19 | + Diff | |
| 19 | 20 | |
| 20 | -.merge_request_notes.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" } | |
| 21 | - = render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request") | |
| 22 | -.merge-request-diffs | |
| 23 | - = render "merge_requests/show/diffs" if @diffs | |
| 24 | -.status | |
| 21 | + .notes.tab-content.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" } | |
| 22 | + = render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request") | |
| 23 | + .diffs.tab-content | |
| 24 | + = render "merge_requests/show/diffs" if @diffs | |
| 25 | + .status | |
| 25 | 26 | |
| 26 | -= render "notes/per_line_form" | |
| 27 | + = render "notes/per_line_form" | |
| 27 | 28 | |
| 28 | 29 | :javascript |
| 30 | + var merge_request; | |
| 29 | 31 | $(function(){ |
| 30 | - MergeRequest.init({ | |
| 32 | + merge_request = new MergeRequest({ | |
| 31 | 33 | url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}", |
| 32 | 34 | check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"}, |
| 33 | 35 | url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}", |
| ... | ... | @@ -35,10 +37,5 @@ |
| 35 | 37 | current_state: "#{@merge_request.human_state}", |
| 36 | 38 | action: "#{controller.action_name}" |
| 37 | 39 | }); |
| 38 | - | |
| 39 | - $(".edit_merge_request").live("ajax:beforeSend", function() { | |
| 40 | - $('.can_be_merged').hide(); | |
| 41 | - $('.merge_in_progress').show(); | |
| 42 | - }) | |
| 43 | - }) | |
| 40 | + }); | |
| 44 | 41 | ... | ... |
app/views/merge_requests/automerge.js.haml
app/views/merge_requests/commits.js.haml
app/views/merge_requests/diffs.js.haml
| 1 | 1 | :plain |
| 2 | - $(".merge-request-diffs").html("#{escape_javascript(render(partial: "merge_requests/show/diffs"))}"); | |
| 2 | + merge_request.$(".diffs").html("#{escape_javascript(render(partial: "merge_requests/show/diffs"))}"); | |
| 3 | 3 | |
| 4 | - $(function(){ | |
| 5 | - PerLineNotes.init(); | |
| 6 | - }); | |
| 4 | + PerLineNotes.init(); | |
| 7 | 5 | ... | ... |
app/views/merge_requests/index.html.haml
app/views/merge_requests/show.js.haml
app/views/merge_requests/show/_commits.html.haml
| ... | ... | @@ -3,16 +3,16 @@ |
| 3 | 3 | %h5.title |
| 4 | 4 | %i.icon-list |
| 5 | 5 | Commits (#{@commits.count}) |
| 6 | - .merge-request-commits | |
| 6 | + .commits | |
| 7 | 7 | - if @commits.count > 8 |
| 8 | - %ul.first_mr_commits.well-list | |
| 8 | + %ul.first-commits.well-list | |
| 9 | 9 | - @commits.first(8).each do |commit| |
| 10 | 10 | = render "commits/commit", commit: commit |
| 11 | 11 | %li.bottom |
| 12 | 12 | 8 of #{@commits.count} commits displayed. |
| 13 | 13 | %strong |
| 14 | - %a.mr_show_all_commits Click here to show all | |
| 15 | - %ul.all_mr_commits.hide.well-list | |
| 14 | + %a.show-all-commits Click here to show all | |
| 15 | + %ul.all-commits.hide.well-list | |
| 16 | 16 | - @commits.each do |commit| |
| 17 | 17 | = render "commits/commit", commit: commit |
| 18 | 18 | ... | ... |
app/views/merge_requests/show/_mr_accept.html.haml
| ... | ... | @@ -40,6 +40,6 @@ |
| 40 | 40 | .alert.alert-info |
| 41 | 41 | %strong This merge request already can not be merged. Try to reload page. |
| 42 | 42 | |
| 43 | - .merge_in_progress.hide | |
| 43 | + .merge-in-progress.hide | |
| 44 | 44 | %span.cgray Merge is in progress. Please wait. Page will be automatically reloaded. |
| 45 | 45 | = image_tag "ajax_loader.gif" | ... | ... |