summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2016-08-02 14:51:43 +0300
committerFatih Acet <acetfatih@gmail.com>2016-08-12 23:24:46 +0300
commitc2295fbdf8cfd348dfcee04f63c9c9d49646beb3 (patch)
tree1e930d4439e5f6737996993547077abf15391ea6 /app
parent261d47bce9d7cc80b4c2068cb612411fe51530ee (diff)
downloadgitlab-ce-c2295fbdf8cfd348dfcee04f63c9c9d49646beb3.tar.gz
Render right sidebar and handle request error.
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/merge_conflict_data_provider.js.es626
-rw-r--r--app/assets/javascripts/merge_conflict_resolver.js.es616
-rw-r--r--app/controllers/projects/merge_requests_controller.rb5
-rw-r--r--app/views/projects/merge_requests/conflicts.html.haml (renamed from app/views/projects/merge_requests/conflicts.haml)13
4 files changed, 45 insertions, 15 deletions
diff --git a/app/assets/javascripts/merge_conflict_data_provider.js.es6 b/app/assets/javascripts/merge_conflict_data_provider.js.es6
index b1f1e7bd78c..05ffc470d3e 100644
--- a/app/assets/javascripts/merge_conflict_data_provider.js.es6
+++ b/app/assets/javascripts/merge_conflict_data_provider.js.es6
@@ -8,6 +8,7 @@ window.MergeConflictDataProvider = class MergeConflictDataProvider {
return {
isLoading : true,
+ hasError : false,
isParallel : diffViewType === 'parallel',
diffViewType : diffViewType,
conflictsData : {},
@@ -18,12 +19,19 @@ window.MergeConflictDataProvider = class MergeConflictDataProvider {
decorateData(vueInstance, data) {
this.vueInstance = vueInstance;
- data.shortCommitSha = data.commit_sha.slice(0, 7);
- data.commitMesage = data.commit_message;
- this.setParallelLines(data);
- this.setInlineLines(data);
- this.updateResolutionsData(data);
+ if (data.type === 'error') {
+ vueInstance.hasError = true;
+ data.errorMessage = data.message;
+ }
+ else {
+ data.shortCommitSha = data.commit_sha.slice(0, 7);
+ data.commitMesage = data.commit_message;
+
+ this.setParallelLines(data);
+ this.setInlineLines(data);
+ this.updateResolutionsData(data);
+ }
vueInstance.conflictsData = data;
}
@@ -166,7 +174,7 @@ window.MergeConflictDataProvider = class MergeConflictDataProvider {
vi.diffView = newType;
vi.isParallel = newType === 'parallel';
$.cookie('diff_view', newType); // TODO: Make sure that cookie path added.
- $('.container-fluid').toggleClass('container-limited');
+ $('.content-wrapper .container-fluid').toggleClass('container-limited');
}
@@ -270,4 +278,10 @@ window.MergeConflictDataProvider = class MergeConflictDataProvider {
}
}
+
+ handleFailedRequest(vueInstance, data) {
+ vueInstance.hasError = true;
+ vueInstance.conflictsData.errorMessage = 'Something went wrong!';
+ }
+
}
diff --git a/app/assets/javascripts/merge_conflict_resolver.js.es6 b/app/assets/javascripts/merge_conflict_resolver.js.es6
index 76298150767..8da698b3b3e 100644
--- a/app/assets/javascripts/merge_conflict_resolver.js.es6
+++ b/app/assets/javascripts/merge_conflict_resolver.js.es6
@@ -29,10 +29,18 @@ window.MergeConflictResolver = class MergeConflictResolver {
fetchData() {
- $.get('./conflicts.json').done( (data) => {
- this.dataProvider.decorateData(this.vue, data);
- this.vue.isLoading = false;
- })
+ const dp = this.dataProvider;
+
+ $.get('./conflicts.json')
+ .done( (data) => {
+ dp.decorateData(this.vue, data);
+ })
+ .error( (data) => {
+ dp.handleFailedRequest(this.vue, data);
+ })
+ .always( () => {
+ this.vue.isLoading = false;
+ })
}
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 13eb5fb2ffb..2f934729432 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -141,7 +141,10 @@ class Projects::MergeRequestsController < Projects::ApplicationController
begin
render json: Gitlab::Conflict::FileCollection.new(@merge_request)
rescue Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing => e
- render json: { message: 'Unable to resolve conflicts in the web interface for this merge request' }
+ render json: {
+ message: 'Unable to resolve conflicts in the web interface for this merge request',
+ type: 'error'
+ }
end
end
end
diff --git a/app/views/projects/merge_requests/conflicts.haml b/app/views/projects/merge_requests/conflicts.html.haml
index a34a58baad6..b60e5558e7f 100644
--- a/app/views/projects/merge_requests/conflicts.haml
+++ b/app/views/projects/merge_requests/conflicts.html.haml
@@ -2,14 +2,19 @@
= render "projects/merge_requests/show/mr_title"
-.merge-request-details.issuable-details{data: {id: @merge_request.project.id}}
+.merge-request-details.issuable-details
= render "projects/merge_requests/show/mr_box"
+= render 'shared/issuable/sidebar', issuable: @merge_request
+
#conflicts
- .loading{ "v-if" => "isLoading" }
+ .loading{"v-if" => "isLoading"}
%i.fa.fa-spinner.fa-spin
- .content-block.oneline-block.files-changed{ "v-if" => "!isLoading" }
+ .content-block.oneline-block{"v-if" => "hasError"}
+ %p {{conflictsData.errorMessage}}
+
+ .content-block.oneline-block.files-changed{"v-if" => "!isLoading && !hasError"}
.inline-parallel-buttons
.btn-group
%a.btn{ |
@@ -30,7 +35,7 @@
into
%strong {{conflictsData.target_branch}}
- .files-wrapper{ "v-if" => "!isLoading" }
+ .files-wrapper{"v-if" => "!isLoading && !hasError"}
.files{"v-if" => "isParallel"}
.diff-file.file-holder.conflict.parallel-view{"v-for" => "file in conflictsData.files"}
.file-title