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 | -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" | ... | ... |