Commit a1566a9c8645510f83782d181e41044d1ad2ec7f
1 parent
0a94640e
Exists in
master
and in
4 other branches
Converted merge_requests.js to coffeescript and updated code
Showing
13 changed files
with
142 additions
and
183 deletions
Show diff stats
app/assets/javascripts/merge_requests.js
@@ -1,132 +0,0 @@ | @@ -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 @@ | @@ -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 | \ No newline at end of file | 98 | \ No newline at end of file |
app/assets/stylesheets/common.scss
app/assets/stylesheets/sections/merge_requests.scss
@@ -43,7 +43,7 @@ | @@ -43,7 +43,7 @@ | ||
43 | } | 43 | } |
44 | } | 44 | } |
45 | 45 | ||
46 | -.mr_nav_tabs { | 46 | +.merge-request .nav-tabs{ |
47 | li { | 47 | li { |
48 | a { | 48 | a { |
49 | font-weight: bold; | 49 | font-weight: bold; |
@@ -65,7 +65,7 @@ li.merge_request { | @@ -65,7 +65,7 @@ li.merge_request { | ||
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | -.merge_in_progress { | 68 | +.merge-in-progress { |
69 | @extend .padded; | 69 | @extend .padded; |
70 | @extend .append-bottom-10; | 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 | -if @merge_request.errors.any? | 2 | -if @merge_request.errors.any? |
3 | .alert-message.block-message.error | 3 | .alert-message.block-message.error |
4 | %ul | 4 | %ul |
@@ -61,8 +61,9 @@ | @@ -61,8 +61,9 @@ | ||
61 | :javascript | 61 | :javascript |
62 | $(function(){ | 62 | $(function(){ |
63 | disableButtonIfEmptyField("#merge_request_title", ".save-btn"); | 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 | $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() }); | 68 | $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() }); |
68 | $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() }); | 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 | :javascript | 29 | :javascript |
30 | + var merge_request; | ||
29 | $(function(){ | 31 | $(function(){ |
30 | - MergeRequest.init({ | 32 | + merge_request = new MergeRequest({ |
31 | url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}", | 33 | url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}", |
32 | check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"}, | 34 | check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"}, |
33 | url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}", | 35 | url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}", |
@@ -35,10 +37,5 @@ | @@ -35,10 +37,5 @@ | ||
35 | current_state: "#{@merge_request.human_state}", | 37 | current_state: "#{@merge_request.human_state}", |
36 | action: "#{controller.action_name}" | 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 | :plain | 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
@@ -43,6 +43,4 @@ | @@ -43,6 +43,4 @@ | ||
43 | %span.cgray.right #{@merge_requests.total_count} merge requests for this filter | 43 | %span.cgray.right #{@merge_requests.total_count} merge requests for this filter |
44 | 44 | ||
45 | :javascript | 45 | :javascript |
46 | - $(function() { | ||
47 | - merge_requestsPage(); | ||
48 | - }) | 46 | + $(merge_requestsPage); |
app/views/merge_requests/show.js.haml
app/views/merge_requests/show/_commits.html.haml
@@ -3,16 +3,16 @@ | @@ -3,16 +3,16 @@ | ||
3 | %h5.title | 3 | %h5.title |
4 | %i.icon-list | 4 | %i.icon-list |
5 | Commits (#{@commits.count}) | 5 | Commits (#{@commits.count}) |
6 | - .merge-request-commits | 6 | + .commits |
7 | - if @commits.count > 8 | 7 | - if @commits.count > 8 |
8 | - %ul.first_mr_commits.well-list | 8 | + %ul.first-commits.well-list |
9 | - @commits.first(8).each do |commit| | 9 | - @commits.first(8).each do |commit| |
10 | = render "commits/commit", commit: commit | 10 | = render "commits/commit", commit: commit |
11 | %li.bottom | 11 | %li.bottom |
12 | 8 of #{@commits.count} commits displayed. | 12 | 8 of #{@commits.count} commits displayed. |
13 | %strong | 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 | - @commits.each do |commit| | 16 | - @commits.each do |commit| |
17 | = render "commits/commit", commit: commit | 17 | = render "commits/commit", commit: commit |
18 | 18 |
app/views/merge_requests/show/_mr_accept.html.haml
@@ -40,6 +40,6 @@ | @@ -40,6 +40,6 @@ | ||
40 | .alert.alert-info | 40 | .alert.alert-info |
41 | %strong This merge request already can not be merged. Try to reload page. | 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 | %span.cgray Merge is in progress. Please wait. Page will be automatically reloaded. | 44 | %span.cgray Merge is in progress. Please wait. Page will be automatically reloaded. |
45 | = image_tag "ajax_loader.gif" | 45 | = image_tag "ajax_loader.gif" |