summaryrefslogtreecommitdiff
path: root/app/assets
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-07-26 17:45:48 +0100
committerPhil Hughes <me@iamphill.com>2016-07-26 17:45:48 +0100
commite786c2b21c74d68f2b69e80d160956f5df787a01 (patch)
treea52f8db696e80c03163a35da4197b20bd4137210 /app/assets
parent3e80f464072a591bb5862cbc955013a4001b8206 (diff)
downloadgitlab-ce-e786c2b21c74d68f2b69e80d160956f5df787a01.tar.gz
Comment & resolve button text is done through VueJS
Diffstat (limited to 'app/assets')
-rw-r--r--app/assets/javascripts/diff_notes/components/resolve_comment_btn.js.es631
-rw-r--r--app/assets/javascripts/diff_notes/components/resolve_count.js.es62
-rw-r--r--app/assets/javascripts/diff_notes/diff_notes_bundle.js.es61
-rw-r--r--app/assets/javascripts/notes.js18
4 files changed, 48 insertions, 4 deletions
diff --git a/app/assets/javascripts/diff_notes/components/resolve_comment_btn.js.es6 b/app/assets/javascripts/diff_notes/components/resolve_comment_btn.js.es6
new file mode 100644
index 00000000000..1ffe4cf99d6
--- /dev/null
+++ b/app/assets/javascripts/diff_notes/components/resolve_comment_btn.js.es6
@@ -0,0 +1,31 @@
+((w) => {
+ w.ResolveCommentBtn = Vue.extend({
+ props: {
+ discussionId: String
+ },
+ computed: {
+ isDiscussionResolved: function () {
+ const notes = CommentsStore.notesForDiscussion(this.discussionId),
+ discussion = CommentsStore.state[this.discussionId];
+ let allResolved = true;
+
+ for (const noteId of notes) {
+ const note = discussion[noteId];
+
+ if (!note.resolved) {
+ allResolved = false;
+ }
+ }
+
+ return allResolved;
+ },
+ buttonText: function () {
+ if (this.isDiscussionResolved) {
+ return "Comment & unresolve discussion";
+ } else {
+ return "Comment & resolve discussion";
+ }
+ }
+ }
+ });
+}(window));
diff --git a/app/assets/javascripts/diff_notes/components/resolve_count.js.es6 b/app/assets/javascripts/diff_notes/components/resolve_count.js.es6
index dc9256b2d13..7e099fbee8d 100644
--- a/app/assets/javascripts/diff_notes/components/resolve_count.js.es6
+++ b/app/assets/javascripts/diff_notes/components/resolve_count.js.es6
@@ -15,7 +15,7 @@
let resolved = true;
for (const noteId in comments) {
- const commentResolved = comments[noteId];
+ const commentResolved = comments[noteId].resolved;
if (!commentResolved) {
resolved = false;
diff --git a/app/assets/javascripts/diff_notes/diff_notes_bundle.js.es6 b/app/assets/javascripts/diff_notes/diff_notes_bundle.js.es6
index 0605ad0e750..b856c718034 100644
--- a/app/assets/javascripts/diff_notes/diff_notes_bundle.js.es6
+++ b/app/assets/javascripts/diff_notes/diff_notes_bundle.js.es6
@@ -11,6 +11,7 @@ $(() => {
components: {
'resolve-btn': ResolveBtn,
'resolve-all-btn': ResolveAllBtn,
+ 'resolve-comment-btn': ResolveCommentBtn,
}
});
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index cf951aa3899..0b202f04163 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -352,7 +352,7 @@
form.find("#note_line_code").remove();
form.find("#note_position").remove();
form.find("#note_type").remove();
- form.find('.js-comment-resolve-button').remove();
+ form.find('.js-comment-resolve-button').closest('resolve-comment-btn').remove();
return this.parentTimeline = form.parents('.timeline');
};
@@ -397,8 +397,6 @@
Notes.prototype.addDiscussionNote = function(xhr, note, status) {
var $form = $(xhr.target);
- this.renderDiscussionNote(note);
- this.removeDiscussionNoteForm($form);
if ($form.attr('data-resolve-all') != null) {
var namespacePath = $form.attr('data-namespace-path'),
@@ -411,6 +409,9 @@
ResolveService.toggleResolveForDiscussion(namespace, mergeRequestId, discussionId);
}
}
+
+ this.renderDiscussionNote(note);
+ this.removeDiscussionNoteForm($form);
};
@@ -588,6 +589,7 @@
*/
Notes.prototype.setupDiscussionNoteForm = function(dataHolder, form) {
+ var canResolve = dataHolder.attr('data-resolvable');
form.attr('id', "new-discussion-note-form-" + (dataHolder.data("discussionId")));
form.attr("data-line-code", dataHolder.data("lineCode"));
form.find("#note_type").val(dataHolder.data("noteType"));
@@ -598,6 +600,16 @@
form.find("#note_noteable_type").val(dataHolder.data("noteableType"));
form.find("#note_noteable_id").val(dataHolder.data("noteableId"));
form.find('.js-note-discard').show().removeClass('js-note-discard').addClass('js-close-discussion-note-form').text(form.find('.js-close-discussion-note-form').data('cancel-text'));
+
+ if (canResolve === 'false') {
+ form.find('resolve-comment-btn').remove();
+ } else if (DiffNotesApp) {
+ var $commentBtn = form.find('resolve-comment-btn');
+ $commentBtn
+ .attr(':discussion-id', `'${dataHolder.data("discussionId")}'`);
+ DiffNotesApp.$compile($commentBtn.get(0));
+ }
+
this.setupNoteForm(form);
form.find(".js-note-text").focus();
form