From 766d011b461d11dd0a6fb23b691f6c779a2b0b2f Mon Sep 17 00:00:00 2001 From: Simon Knox Date: Wed, 8 Feb 2017 20:23:45 +1100 Subject: notes use new task_list, and PATCH instead of POST use data attribute for submit url optional onSuccess --- app/assets/javascripts/issue.js | 6 +++++- app/assets/javascripts/merge_request.js | 6 +++++- app/assets/javascripts/notes.js | 14 +------------- app/assets/javascripts/task_list.js.es6 | 14 ++++++-------- app/views/projects/notes/_note.html.haml | 2 +- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/issue.js b/app/assets/javascripts/issue.js index 6c6dde1b3f0..fd9b3cb833d 100644 --- a/app/assets/javascripts/issue.js +++ b/app/assets/javascripts/issue.js @@ -14,7 +14,11 @@ require('./task_list'); if ($('a.btn-close').length) { this.taskList = new gl.TaskList({ dataType: 'issue', - selector: '.detail-page-description' + selector: '.detail-page-description', + onSuccess: (result) => { + document.querySelector('#task_status').innerText = result.task_status; + document.querySelector('#task_status_short').innerText = result.task_status_short; + } }); this.initIssueBtnEventListeners(); } diff --git a/app/assets/javascripts/merge_request.js b/app/assets/javascripts/merge_request.js index 9e6f42beaf2..14f424b181c 100644 --- a/app/assets/javascripts/merge_request.js +++ b/app/assets/javascripts/merge_request.js @@ -29,7 +29,11 @@ require('./merge_request_tabs'); if ($("a.btn-close").length) { this.taskList = new gl.TaskList({ dataType: 'merge_request', - selector: '.detail-page-description' + selector: '.detail-page-description', + onSuccess: (result) => { + document.querySelector('#task_status').innerText = result.task_status; + document.querySelector('#task_status_short').innerText = result.task_status_short; + } }); } } diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js index d137e327f0e..599af9312b4 100644 --- a/app/assets/javascripts/notes.js +++ b/app/assets/javascripts/notes.js @@ -53,8 +53,7 @@ require('./task_list'); this.setupMainTargetNoteForm(); this.taskList = new gl.TaskList({ dataType: 'note', - selector: '.notes', - update: this.updateTaskList.bind(this) + selector: '.notes' }); this.collapseLongCommitList(); @@ -889,17 +888,6 @@ require('./task_list'); $editForm.find('.referenced-users').hide(); }; - Notes.prototype.updateTaskList = function(e) { - var $target = $(e.target); - var $list = $target.closest('.js-task-list-container'); - var $editForm = $(this.getEditFormSelector($target)); - var $note = $list.closest('.note'); - - this.putEditFormInPlace($list); - $editForm.find('#note_note').val($note.find('.original-task-list').val()); - $('form', $list).submit(); - }; - Notes.prototype.updateNotesCount = function(updateCount) { return this.notesCountBadge.text(parseInt(this.notesCountBadge.text(), 10) + updateCount); }; diff --git a/app/assets/javascripts/task_list.js.es6 b/app/assets/javascripts/task_list.js.es6 index 2001803fe13..3fa6a36e455 100644 --- a/app/assets/javascripts/task_list.js.es6 +++ b/app/assets/javascripts/task_list.js.es6 @@ -7,7 +7,7 @@ class TaskList { constructor(options = {}) { this.selector = options.selector; this.dataType = options.dataType; - this.update = options.update || this.update.bind(this); + this.onSuccess = options.onSuccess || () => null; this.init(); } @@ -15,7 +15,7 @@ class TaskList { // Prevent duplicate event bindings this.disable(); $(`${this.selector} .js-task-list-container`).taskList('enable'); - $(document).on('tasklist:changed', `${this.selector} .js-task-list-container`, this.update); + $(document).on('tasklist:changed', `${this.selector} .js-task-list-container`, this.update.bind(this)); } disable() { @@ -24,18 +24,16 @@ class TaskList { } update(e) { + const $target = $(e.target); const patchData = {}; patchData[this.dataType] = { - description: $(e.target).val(), + description: $target.val(), }; return $.ajax({ type: 'PATCH', - url: $('form.js-issuable-update').attr('action'), + url: $target.data('update-url') || $('form.js-issuable-update').attr('action'), data: patchData, - success: (result) => { - document.querySelector('#task_status').innerText = result.task_status; - document.querySelector('#task_status_short').innerText = result.task_status_short; - }, + success: this.onSuccess, }); } } diff --git a/app/views/projects/notes/_note.html.haml b/app/views/projects/notes/_note.html.haml index 09339e520dd..89c6a65f159 100644 --- a/app/views/projects/notes/_note.html.haml +++ b/app/views/projects/notes/_note.html.haml @@ -69,7 +69,7 @@ - if note_editable .original-note-content.hidden{ data: { post_url: namespace_project_note_path(@project.namespace, @project, note), target_id: note.noteable.id, target_type: note.noteable.class.name.underscore } } #{note.note} - %textarea.hidden.js-task-list-field.original-task-list= note.note + %textarea.hidden.js-task-list-field.original-task-list{ data: {update_url: namespace_project_note_path(@project.namespace, @project, note) } }= note.note .note-awards = render 'award_emoji/awards_block', awardable: note, inline: false - if note.system -- cgit v1.2.1