diff options
author | Fatih Acet <acetfatih@gmail.com> | 2016-08-02 14:51:43 +0300 |
---|---|---|
committer | Fatih Acet <acetfatih@gmail.com> | 2016-08-12 23:24:46 +0300 |
commit | c2295fbdf8cfd348dfcee04f63c9c9d49646beb3 (patch) | |
tree | 1e930d4439e5f6737996993547077abf15391ea6 /app | |
parent | 261d47bce9d7cc80b4c2068cb612411fe51530ee (diff) | |
download | gitlab-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.es6 | 26 | ||||
-rw-r--r-- | app/assets/javascripts/merge_conflict_resolver.js.es6 | 16 | ||||
-rw-r--r-- | app/controllers/projects/merge_requests_controller.rb | 5 | ||||
-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 |