From a1566a9c8645510f83782d181e41044d1ad2ec7f Mon Sep 17 00:00:00 2001 From: Koen Punt <koen@koenpunt.nl> Date: Sat, 5 Jan 2013 02:18:39 +0100 Subject: [PATCH] Converted merge_requests.js to coffeescript and updated code --- app/assets/javascripts/merge_requests.js | 132 ------------------ .../javascripts/merge_requests.js.coffee | 97 +++++++++++++ app/assets/stylesheets/common.scss | 2 +- .../stylesheets/sections/merge_requests.scss | 4 +- app/views/merge_requests/_form.html.haml | 7 +- app/views/merge_requests/_show.html.haml | 57 ++++---- app/views/merge_requests/automerge.js.haml | 2 +- app/views/merge_requests/commits.js.haml | 2 +- app/views/merge_requests/diffs.js.haml | 6 +- app/views/merge_requests/index.html.haml | 4 +- app/views/merge_requests/show.js.haml | 2 +- .../merge_requests/show/_commits.html.haml | 8 +- .../merge_requests/show/_mr_accept.html.haml | 2 +- 13 files changed, 142 insertions(+), 183 deletions(-) delete mode 100644 app/assets/javascripts/merge_requests.js create mode 100644 app/assets/javascripts/merge_requests.js.coffee diff --git a/app/assets/javascripts/merge_requests.js b/app/assets/javascripts/merge_requests.js deleted file mode 100644 index ee714f9cab..0000000000 --- a/app/assets/javascripts/merge_requests.js +++ /dev/null @@ -1,132 +0,0 @@ -var MergeRequest = { - diffs_loaded: false, - commits_loaded: false, - opts: false, - - init: - function(opts) { - var self = this; - self.opts = opts; - - self.initTabs(); - self.initMergeWidget(); - - $(".mr_show_all_commits").bind("click", function() { - self.showAllCommits(); - }); - }, - - initMergeWidget: - function() { - var self = this; - self.showState(self.opts.current_state); - - if($(".automerge_widget").length && self.opts.check_enable){ - $.get(self.opts.url_to_automerge_check, function(data){ - self.showState(data.state); - }, "json"); - } - - if(self.opts.ci_enable){ - $.get(self.opts.url_to_ci_check, function(data){ - self.showCiState(data.status); - }, "json"); - } - }, - - initTabs: - function() { - $(".mr_nav_tabs a").live("click", function() { - $(".mr_nav_tabs a").parent().removeClass("active"); - $(this).parent().addClass("active"); - }); - - var current_tab; - if(this.opts.action == "diffs") { - current_tab = $(".mr_nav_tabs .merge-diffs-tab"); - } else { - current_tab = $(".mr_nav_tabs .merge-notes-tab"); - } - current_tab.parent().addClass("active"); - - this.initNotesTab(); - this.initDiffTab(); - }, - - initNotesTab: - function() { - $(".mr_nav_tabs a.merge-notes-tab").live("click", function(e) { - $(".merge-request-diffs").hide(); - $(".merge_request_notes").show(); - var mr_path = $(".merge-notes-tab").attr("data-url"); - history.pushState({ path: mr_path }, '', mr_path); - e.preventDefault(); - }); - }, - - initDiffTab: - function() { - $(".mr_nav_tabs a.merge-diffs-tab").live("click", function(e) { - if(!MergeRequest.diffs_loaded) { - MergeRequest.loadDiff(); - } - $(".merge_request_notes").hide(); - $(".merge-request-diffs").show(); - var mr_diff_path = $(".merge-diffs-tab").attr("data-url"); - history.pushState({ path: mr_diff_path }, '', mr_diff_path); - e.preventDefault(); - }); - - }, - - showState: - function(state){ - $(".automerge_widget").hide(); - $(".automerge_widget." + state).show(); - }, - - showCiState: - function(state){ - $(".ci_widget").hide(); - $(".ci_widget.ci-" + state).show(); - }, - - loadDiff: - function() { - $(".dashboard-loader").show(); - $.ajax({ - type: "GET", - url: $(".merge-diffs-tab").attr("data-url"), - beforeSend: function(){ $('.status').addClass("loading")}, - complete: function(){ - MergeRequest.diffs_loaded = true; - $(".merge_request_notes").hide(); - $('.status').removeClass("loading"); - }, - dataType: "script"}); - }, - - showAllCommits: - function() { - $(".first_mr_commits").remove(); - $(".all_mr_commits").removeClass("hide"); - }, - - already_cannot_be_merged: - function(){ - $(".automerge_widget").hide(); - $(".merge_in_progress").hide(); - $(".automerge_widget.already_cannot_be_merged").show(); - } -}; - -/* - * Filter merge requests - */ -function merge_requestsPage() { - $("#assignee_id").chosen(); - $("#milestone_id").chosen(); - $("#milestone_id, #assignee_id").on("change", function(){ - $(this).closest("form").submit(); - }); -} diff --git a/app/assets/javascripts/merge_requests.js.coffee b/app/assets/javascripts/merge_requests.js.coffee new file mode 100644 index 0000000000..a73d04580a --- /dev/null +++ b/app/assets/javascripts/merge_requests.js.coffee @@ -0,0 +1,97 @@ +# +# * Filter merge requests +# +@merge_requestsPage = -> + $('#assignee_id').chosen() + $('#milestone_id').chosen() + $('#milestone_id, #assignee_id').on 'change', -> + $(this).closest('form').submit() + +class MergeRequest + + constructor: (@opts) -> + this.$el = $('.merge-request') + @diffs_loaded = false + @commits_loaded = false + + this.activateTab(@opts.action) + + this.bindEvents() + + this.initMergeWidget() + this.$('.show-all-commits').on 'click', => + this.showAllCommits() + + # Local jQuery finder + $: (selector) -> + this.$el.find(selector) + + initMergeWidget: -> + this.showState( @opts.current_state ) + + if this.$('.automerge_widget').length and @opts.check_enable + $.get @opts.url_to_automerge_check, (data) => + this.showState( data.state ) + , 'json' + + if @opts.ci_enable + $.get self.opts.url_to_ci_check, (data) => + this.showCiState data.status + , 'json' + + bindEvents: -> + this.$('.nav-tabs').on 'click', 'a', (event) => + a = $(event.currentTarget) + + href = a.attr('href') + History.replaceState {path: href}, document.title, href + + event.preventDefault() + + this.$('.nav-tabs').on 'click', 'li', (event) => + this.activateTab($(event.currentTarget).data('action')) + + activateTab: (action) -> + this.$('.nav-tabs li').removeClass 'active' + this.$('.tab-content').hide() + switch action + when 'diffs' + this.$('.nav-tabs .diffs-tab').addClass 'active' + this.loadDiff() unless @diffs_loaded + this.$('.diffs').show() + else + this.$('.nav-tabs .notes-tab').addClass 'active' + this.$('.notes').show() + + showState: (state) -> + $('.automerge_widget').hide() + $('.automerge_widget.' + state).show() + + showCiState: (state) -> + $('.ci_widget').hide() + $('.ci_widget.ci-' + state).show() + + loadDiff: (event) -> + $('.dashboard-loader').show() + $.ajax + type: 'GET' + url: this.$('.nav-tabs .diffs-tab a').attr('href') + beforeSend: => + this.$('.status').addClass 'loading' + + complete: => + @diffs_loaded = true + this.$('.status').removeClass 'loading' + + dataType: 'script' + + showAllCommits: -> + this.$('.first-commits').remove() + this.$('.all-commits').removeClass 'hide' + + alreadyOrCannotBeMerged: -> + this.$('.automerge_widget').hide() + this.$('.merge-in-progress').hide() + this.$('.automerge_widget.already_cannot_be_merged').show() + +this.MergeRequest = MergeRequest \ No newline at end of file diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index dcdfcdb289..62adb777c0 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -425,7 +425,7 @@ li.note { .supp_diff_link, -.mr_show_all_commits { +.show-all-commits { cursor: pointer; } diff --git a/app/assets/stylesheets/sections/merge_requests.scss b/app/assets/stylesheets/sections/merge_requests.scss index 66ec642e05..93d40bf920 100644 --- a/app/assets/stylesheets/sections/merge_requests.scss +++ b/app/assets/stylesheets/sections/merge_requests.scss @@ -43,7 +43,7 @@ } } -.mr_nav_tabs { +.merge-request .nav-tabs{ li { a { font-weight: bold; @@ -65,7 +65,7 @@ li.merge_request { } } -.merge_in_progress { +.merge-in-progress { @extend .padded; @extend .append-bottom-10; } diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml index 67444dad5d..0aaf6566d4 100644 --- a/app/views/merge_requests/_form.html.haml +++ b/app/views/merge_requests/_form.html.haml @@ -1,4 +1,4 @@ -= form_for [@project, @merge_request], html: { class: "new_merge_request form-horizontal" } do |f| += form_for [@project, @merge_request], html: { class: "#{controller.action_name}-merge-request form-horizontal" } do |f| -if @merge_request.errors.any? .alert-message.block-message.error %ul @@ -61,8 +61,9 @@ :javascript $(function(){ disableButtonIfEmptyField("#merge_request_title", ".save-btn"); - var source_branch = $("#merge_request_source_branch"); - var target_branch = $("#merge_request_target_branch"); + + var source_branch = $("#merge_request_source_branch") + , target_branch = $("#merge_request_target_branch"); $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() }); $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() }); diff --git a/app/views/merge_requests/_show.html.haml b/app/views/merge_requests/_show.html.haml index 20ba991e79..b65d1596f5 100644 --- a/app/views/merge_requests/_show.html.haml +++ b/app/views/merge_requests/_show.html.haml @@ -1,33 +1,35 @@ -= render "merge_requests/show/mr_title" -= render "merge_requests/show/how_to_merge" -= render "merge_requests/show/mr_box" -= render "merge_requests/show/mr_accept" -- if @project.gitlab_ci? - = render "merge_requests/show/mr_ci" -= render "merge_requests/show/commits" +.merge-request + = render "merge_requests/show/mr_title" + = render "merge_requests/show/how_to_merge" + = render "merge_requests/show/mr_box" + = render "merge_requests/show/mr_accept" + - if @project.gitlab_ci? + = render "merge_requests/show/mr_ci" + = render "merge_requests/show/commits" -- if @commits.present? - %ul.nav.nav-tabs.mr_nav_tabs - %li - = link_to "#notes", "data-url" => project_merge_request_path(@project, @merge_request), class: "merge-notes-tab tab" do - %i.icon-comment - Comments - %li - = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), class: "merge-diffs-tab tab" do - %i.icon-list-alt - Diff + - if @commits.present? + %ul.nav.nav-tabs + %li.notes-tab{data: {action: 'notes'}} + = link_to project_merge_request_path(@project, @merge_request) do + %i.icon-comment + Comments + %li.diffs-tab{data: {action: 'diffs'}} + = link_to diffs_project_merge_request_path(@project, @merge_request) do + %i.icon-list-alt + Diff -.merge_request_notes.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" } - = render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request") -.merge-request-diffs - = render "merge_requests/show/diffs" if @diffs -.status + .notes.tab-content.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" } + = render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request") + .diffs.tab-content + = render "merge_requests/show/diffs" if @diffs + .status -= render "notes/per_line_form" + = render "notes/per_line_form" :javascript + var merge_request; $(function(){ - MergeRequest.init({ + merge_request = new MergeRequest({ url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}", check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"}, url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}", @@ -35,10 +37,5 @@ current_state: "#{@merge_request.human_state}", action: "#{controller.action_name}" }); - - $(".edit_merge_request").live("ajax:beforeSend", function() { - $('.can_be_merged').hide(); - $('.merge_in_progress').show(); - }) - }) + }); diff --git a/app/views/merge_requests/automerge.js.haml b/app/views/merge_requests/automerge.js.haml index 93e184455a..e01ff662e7 100644 --- a/app/views/merge_requests/automerge.js.haml +++ b/app/views/merge_requests/automerge.js.haml @@ -3,5 +3,5 @@ location.reload(); -else :plain - MergeRequest.already_cannot_be_merged() + merge_request.alreadyOrCannotBeMerged() diff --git a/app/views/merge_requests/commits.js.haml b/app/views/merge_requests/commits.js.haml index 76322bdb21..923b1ea032 100644 --- a/app/views/merge_requests/commits.js.haml +++ b/app/views/merge_requests/commits.js.haml @@ -1,4 +1,4 @@ :plain - $(".merge-request-commits").html("#{escape_javascript(render(partial: "commits"))}"); + merge_request.$(".commits").html("#{escape_javascript(render(partial: "commits"))}"); diff --git a/app/views/merge_requests/diffs.js.haml b/app/views/merge_requests/diffs.js.haml index 9853998532..1d92f1a6fb 100644 --- a/app/views/merge_requests/diffs.js.haml +++ b/app/views/merge_requests/diffs.js.haml @@ -1,7 +1,5 @@ :plain - $(".merge-request-diffs").html("#{escape_javascript(render(partial: "merge_requests/show/diffs"))}"); + merge_request.$(".diffs").html("#{escape_javascript(render(partial: "merge_requests/show/diffs"))}"); - $(function(){ - PerLineNotes.init(); - }); + PerLineNotes.init(); diff --git a/app/views/merge_requests/index.html.haml b/app/views/merge_requests/index.html.haml index 5b234bfbe0..f0050d9490 100644 --- a/app/views/merge_requests/index.html.haml +++ b/app/views/merge_requests/index.html.haml @@ -43,6 +43,4 @@ %span.cgray.right #{@merge_requests.total_count} merge requests for this filter :javascript - $(function() { - merge_requestsPage(); - }) + $(merge_requestsPage); diff --git a/app/views/merge_requests/show.js.haml b/app/views/merge_requests/show.js.haml index f44ccbb512..a2a7930745 100644 --- a/app/views/merge_requests/show.js.haml +++ b/app/views/merge_requests/show.js.haml @@ -1,2 +1,2 @@ :plain - $(".merge-request-notes").html("#{escape_javascript(render notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")}"); + merge_request.$(".notes").html("#{escape_javascript(render "notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")}"); diff --git a/app/views/merge_requests/show/_commits.html.haml b/app/views/merge_requests/show/_commits.html.haml index 40d85db026..5e27b6dc25 100644 --- a/app/views/merge_requests/show/_commits.html.haml +++ b/app/views/merge_requests/show/_commits.html.haml @@ -3,16 +3,16 @@ %h5.title %i.icon-list Commits (#{@commits.count}) - .merge-request-commits + .commits - if @commits.count > 8 - %ul.first_mr_commits.well-list + %ul.first-commits.well-list - @commits.first(8).each do |commit| = render "commits/commit", commit: commit %li.bottom 8 of #{@commits.count} commits displayed. %strong - %a.mr_show_all_commits Click here to show all - %ul.all_mr_commits.hide.well-list + %a.show-all-commits Click here to show all + %ul.all-commits.hide.well-list - @commits.each do |commit| = render "commits/commit", commit: commit diff --git a/app/views/merge_requests/show/_mr_accept.html.haml b/app/views/merge_requests/show/_mr_accept.html.haml index b7e6893713..81ce987c18 100644 --- a/app/views/merge_requests/show/_mr_accept.html.haml +++ b/app/views/merge_requests/show/_mr_accept.html.haml @@ -40,6 +40,6 @@ .alert.alert-info %strong This merge request already can not be merged. Try to reload page. - .merge_in_progress.hide + .merge-in-progress.hide %span.cgray Merge is in progress. Please wait. Page will be automatically reloaded. = image_tag "ajax_loader.gif" -- 2.30.9