Commit a1566a9c8645510f83782d181e41044d1ad2ec7f

Authored by Koen Punt
1 parent 0a94640e

Converted merge_requests.js to coffeescript and updated code

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   -}
app/assets/javascripts/merge_requests.js.coffee 0 → 100644
... ... @@ -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
... ... @@ -425,7 +425,7 @@ li.note {
425 425  
426 426  
427 427 .supp_diff_link,
428   -.mr_show_all_commits {
  428 +.show-all-commits {
429 429 cursor: pointer;
430 430 }
431 431  
... ...
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
... ... @@ -3,5 +3,5 @@
3 3 location.reload();
4 4 -else
5 5 :plain
6   - MergeRequest.already_cannot_be_merged()
  6 + merge_request.alreadyOrCannotBeMerged()
7 7  
... ...
app/views/merge_requests/commits.js.haml
1 1 :plain
2   - $(".merge-request-commits").html("#{escape_javascript(render(partial: "commits"))}");
  2 + merge_request.$(".commits").html("#{escape_javascript(render(partial: "commits"))}");
3 3  
4 4  
... ...
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
... ... @@ -43,6 +43,4 @@
43 43 %span.cgray.right #{@merge_requests.total_count} merge requests for this filter
44 44  
45 45 :javascript
46   - $(function() {
47   - merge_requestsPage();
48   - })
  46 + $(merge_requestsPage);
... ...
app/views/merge_requests/show.js.haml
1 1 :plain
2   - $(".merge-request-notes").html("#{escape_javascript(render notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")}");
  2 + merge_request.$(".notes").html("#{escape_javascript(render "notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")}");
... ...
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"
... ...