Skip to content
Snippets Groups Projects
Commit cca6242d authored by Jacob Schatz's avatar Jacob Schatz
Browse files

adds vue for merging branches and deleting them

parent 05d8e730
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -4,12 +4,12 @@ var MR = function(){
 
var mrService = {
changeState: function(newState) {
mergeFailMessage = 'Unable to update this merge request at this time.'
var mergeFailMessage = 'Unable to update this merge request at this time.'
$.ajax({
type: 'PUT',
url: store.state[newState+'URL'],
error: function(jqXHR, textStatus, errorThrown) {
console.log('error',errorThrown)
console.log('error',errorThrown);
return new Flash(mergeFailMessage, 'alert');
},
success: function(data, textStatus, jqXHR) {
Loading
Loading
@@ -19,6 +19,25 @@ var MR = function(){
}
}
});
},
deleteBranch: function() {
var branchDeleteFailMessage = 'Unable to update this merge request at this time.'
$.ajax({
type: 'DELETE',
url: store.state.remove_source_branch_url,
error: function(jqXHR, textStatus, errorThrown) {
console.log('error', errorThrown);
return new Flash(branchDeleteFailMessage);
},
success: function(data, textStatus, jqXHR) {
var s = '';
console.log('data',data);
for(s in data) {
store.state[s] = data[s];
}
}
})
}
};
 
Loading
Loading
@@ -50,7 +69,9 @@ var MR = function(){
},
 
methods: {
deleteBranchClicked: function() {
mrService.deleteBranch();
}
}
});
}
Loading
Loading
Loading
Loading
@@ -46,6 +46,9 @@ class Projects::BranchesController < Projects::ApplicationController
redirect_to namespace_project_branches_path(@project.namespace,
@project)
end
format.json do
render json: {}
end
format.js { render status: status[:return_code] }
end
end
Loading
Loading
class Projects::MergeRequestsController < Projects::ApplicationController
before_action :module_enabled
before_action :merge_request, only: [
:edit, :update, :show, :diffs, :commits, :builds, :merge, :merge_check,
:edit, :update, :show, :diffs, :commits, :builds, :author, :merge, :merge_check,
:ci_status, :toggle_subscription, :cancel_merge_when_build_succeeds
]
before_action :closes_issues, only: [:edit, :update, :show, :diffs, :commits, :builds]
Loading
Loading
@@ -134,6 +134,12 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@merge_request = MergeRequests::UpdateService.new(project, current_user, merge_request_params).execute(@merge_request)
 
if @merge_request.valid?
author = nil
avatar = nil
if @merge_request.merged? && @merge_request.merge_event
author = @merge_request.merge_event.author
avatar = avatar_icon(author)
end
respond_to do |format|
format.js
format.html do
Loading
Loading
@@ -141,12 +147,14 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@merge_request.target_project, @merge_request])
end
format.json do
render json: {
render json: {
label: @merge_request.state_human_name,
open: @merge_request.open?,
closed: @merge_request.closed?,
locked: @merge_request.locked?,
merged: @merge_request.merged?,
author: author,
avatar: avatar
}
end
end
Loading
Loading
Loading
Loading
@@ -89,21 +89,34 @@
= spinner
 
:javascript
var mergeObj = {};
var merge_request;
 
merge_request = new MergeRequest({
action: "#{controller.action_name}"
});
 
- if @merge_request.merged? && @merge_request.merge_event
:javascript
mergeObj.author = "#{sanitize(@merge_request.merge_event.author.name)}";
mergeObj.author_link = "#{user_path(@merge_request.merge_event.author)}";
mergeObj.avatar = "#{@merge_request.merge_event.author.avatar_url(16)}";
mergeObj.source_branch_unavailable = #{!@merge_request.source_branch_exists? || (params[:delete_source] == 'true')};
mergeObj.target_branch_url = "#{namespace_project_commits_path(@project.namespace, @project, @merge_request.target_branch)}";
mergeObj.target_branch = "#{@merge_request.target_branch}";
mergeObj.removeable_branch = #{@merge_request.can_remove_source_branch?(current_user)};
mergeObj.remove_source_branch_url = "#{namespace_project_branch_path(@merge_request.source_project.namespace, @merge_request.source_project, @merge_request.source_branch, format: :json)}";
:javascript
:javascript
$(function(){
MR().init({
label: "#{@merge_request.state_human_name}",
closed: #{@merge_request.closed?},
open: #{@merge_request.open?},
locked: #{@merge_request.locked?},
merged: #{@merge_request.merged?},
closeURL: "#{merge_request_path(@merge_request, merge_request: { state_event: :close }, format: :json)}",
reopenURL: "#{merge_request_path(@merge_request, merge_request: {state_event: :reopen }, format: :json)}"
});
mergeObj.label = "#{@merge_request.state_human_name}";
mergeObj.closed = #{@merge_request.closed?};
mergeObj.open = #{@merge_request.open?};
mergeObj.locked = #{@merge_request.locked?};
mergeObj.merged = #{@merge_request.merged?};
mergeObj.closeURL = "#{merge_request_path(@merge_request, merge_request: { state_event: :close }, format: :json)}";
mergeObj.reopenURL = "#{merge_request_path(@merge_request, merge_request: {state_event: :reopen }, format: :json)}";
MR().init(mergeObj);
});
.detail-page-header#merge-request-header{'v-cloak'=> true, transition: "fade"}
.status-box{"v-bind:class" => "{'status-box-open':state.open,'status-box-closed':state.closed}",transition: 'fade'}
.status-box{"v-bind:class" => "{'status-box-open':state.open,'status-box-closed':state.closed,'status-box-merged':state.merged}"}
{{ state.label }}
%span.identifier
Merge Request ##{@merge_request.iid}
Loading
Loading
.mr-state-widget
.mr-state-widget.mr-state-merged{"v-if"=>"state.merged"}
= render 'projects/merge_requests/widget/heading'
.mr-widget-body
%h4
Merged
- if @merge_request.merge_event
by #{link_to_member(@project, @merge_request.merge_event.author, avatar: true)}
Merged by
%a.author_link{"v-bind:href"=>"state.author_link"}
%img.avatar.avatar-inline.s16{width: 16, "v-bind:src"=>"state.avatar",alt:""}
%span.author
{{state.author}}
#{time_ago_with_tooltip(@merge_request.merge_event.created_at)}
%div
- if !@merge_request.source_branch_exists? || (params[:delete_source] == 'true')
%template{"v-if"=>"state.source_branch_unavailable"}
The changes were merged into
#{link_to @merge_request.target_branch, namespace_project_commits_path(@project.namespace, @project, @merge_request.target_branch), class: "label-branch"}.
%a.label-branch{"v-bind:href"=>"state.target_branch_url"}
{{state.target_branch}}
The source branch has been removed.
 
- elsif @merge_request.can_remove_source_branch?(current_user)
.remove_source_branch_widget
%p
The changes were merged into
#{link_to @merge_request.target_branch, namespace_project_commits_path(@project.namespace, @project, @merge_request.target_branch), class: "label-branch"}.
You can remove the source branch now.
= link_to namespace_project_branch_path(@merge_request.source_project.namespace, @merge_request.source_project, @merge_request.source_branch), remote: true, method: :delete, class: "btn btn-primary btn-sm remove_source_branch" do
%i.fa.fa-times
Remove Source Branch
.remove_source_branch_widget{"v-if"=>"state.removeable_branch"}
%p
The changes were merged into
%a.label-branch{"v-bind:href"=>"state.target_branch_url"}
{{state.target_branch}}
You can remove the source branch now.
%a.btn.btn-primary.btn-sm.remove_source_branch{"v-on:click.prevent"=>"deleteBranchClicked"}
%i.fa.fa-times
Remove Source Branch
 
.remove_source_branch_widget.failed.hide
%p
Failed to remove source branch '#{@merge_request.source_branch}'.
.remove_source_branch_widget.failed.hide
%p
Failed to remove source branch '#{@merge_request.source_branch}'.
 
.remove_source_branch_in_progress.hide
%p
= icon('spinner spin')
Removing source branch '#{@merge_request.source_branch}'. Please wait, this page will be automatically reloaded.
.remove_source_branch_in_progress.hide
%p
= icon('spinner spin')
Removing source branch '#{@merge_request.source_branch}'. Please wait, this page will be automatically reloaded.
 
:javascript
$('.remove_source_branch').on('click', function() {
Loading
Loading
Loading
Loading
@@ -573,6 +573,7 @@ Rails.application.routes.draw do
get :commits
get :diffs
get :builds
get :author
get :merge_check
post :merge
post :cancel_merge_when_build_succeeds
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment