diff options
author | Nur Rony <pro.nmrony@gmail.com> | 2016-10-08 12:50:28 +0600 |
---|---|---|
committer | Nur Rony <pro.nmrony@gmail.com> | 2016-11-17 14:41:08 +0600 |
commit | 58f78d0571ab0ba6034f6c53d16f9ca97a799706 (patch) | |
tree | b3a50d7b1216a64a61bb4e401e48e91e21cbfae9 /app/assets/javascripts/notes.js | |
parent | 60306053a2a14ff881bb56eadd4968bc4d4f48dc (diff) | |
download | gitlab-ce-less-intrusive-system-note.tar.gz |
makes system notes less intrusive to a conversationless-intrusive-system-note
adds dicussion icon and color change in system note links
adds discussion icons and sticky note icon for other system notes for now
fixes scss lint error
adds faded commit lists
hides first paragraph in commit list box
css tweak for commit list system notes
adds commit-list toggle functionality, css tweaks and css classnames more readable
small css fix in header. makes links bold in system note
renames class no-shade to hide-shade
adds entry for this merge request in changelog
removes commented line
removes the avatar-icon from discussion header
minor css tweaks to make the commit list alignment with header text
uses monospaced font to make the commit list lined up with all
removes icon from system note and align bullet list
resolves scss lint warings
adds helper function to extract system note message from first p tag
adds helper functions to check commit list count and haml cleanup
adds changelog entry under 8.14
adds changelog entry with changelog cli
removes helper and regex and makes commit list li count using JS
makes link in system note normal
brakeman build failure resolved
fixing rspec test based on new design for discussion
shows system note in lowercase
removes extra spaces from comments
adds code commenting for functions
adds semi-colon in some lines
fixes rspec given when merge build success
removes commented codes
rewrite changelog yml file
moves isMetaKey to common utils file
fixes some indentation issues
removes unnecessary variables and resolves some discussions
replaces jQuery parent function with siblings
fixes scss issues and variable spelling mistake
uses constant rather using hardcoded number for visible li count in long commit list
makes system note header all lowercase
uses color variables and adjust gradient a little
some minor changes for adding css classes
renames functions name for readability
changes changelog title
minor scss newline changes
makes system note less intrusive to a conversation
Diffstat (limited to 'app/assets/javascripts/notes.js')
-rw-r--r-- | app/assets/javascripts/notes.js | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js index 44079bc3ca3..6cb87f9ba81 100644 --- a/app/assets/javascripts/notes.js +++ b/app/assets/javascripts/notes.js @@ -12,7 +12,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; this.Notes = (function() { - var isMetaKey; + const MAX_VISIBLE_COMMIT_LIST_COUNT = 3; Notes.interval = null; @@ -33,6 +33,7 @@ this.resetMainTargetForm = bind(this.resetMainTargetForm, this); this.refresh = bind(this.refresh, this); this.keydownNoteText = bind(this.keydownNoteText, this); + this.toggleCommitList = bind(this.toggleCommitList, this); this.notes_url = notes_url; this.note_ids = note_ids; this.last_fetched_at = last_fetched_at; @@ -46,6 +47,7 @@ this.setPollingInterval(); this.setupMainTargetNoteForm(); this.initTaskList(); + this.collapseLongCommitList(); } Notes.prototype.addBinding = function() { @@ -81,10 +83,13 @@ $(document).on("click", ".js-add-diff-note-button", this.addDiffNote); // hide diff note form $(document).on("click", ".js-close-discussion-note-form", this.cancelDiscussionForm); + // toggle commit list + $(document).on("click", '.system-note-commit-list-toggler', this.toggleCommitList); // fetch notes when tab becomes visible $(document).on("visibilitychange", this.visibilityChange); // when issue status changes, we need to refresh data $(document).on("issuable:change", this.refresh); + // when a key is clicked on the notes return $(document).on("keydown", ".js-note-text", this.keydownNoteText); }; @@ -114,9 +119,10 @@ Notes.prototype.keydownNoteText = function(e) { var $textarea, discussionNoteForm, editNote, myLastNote, myLastNoteEditBtn, newText, originalText; - if (isMetaKey(e)) { + if (gl.utils.isMetaKey(e)) { return; } + $textarea = $(e.target); // Edit previous note when UP arrow is hit switch (e.which) { @@ -156,10 +162,6 @@ } }; - isMetaKey = function(e) { - return e.metaKey || e.ctrlKey || e.altKey || e.shiftKey; - }; - Notes.prototype.initRefresh = function() { clearInterval(Notes.interval); return Notes.interval = setInterval((function(_this) { @@ -263,6 +265,7 @@ $notesList.append(note.html).syntaxHighlight(); // Update datetime format on the recent note gl.utils.localTimeAgo($notesList.find("#note_" + note.id + " .js-timeago"), false); + this.collapseLongCommitList(); this.initTaskList(); this.refresh(); return this.updateNotesCount(1); @@ -433,9 +436,9 @@ var $form = $(xhr.target); if ($form.attr('data-resolve-all') != null) { - var projectPath = $form.data('project-path') - discussionId = $form.data('discussion-id'), - mergeRequestId = $form.data('noteable-iid'); + var projectPath = $form.data('project-path'); + var discussionId = $form.data('discussion-id'); + var mergeRequestId = $form.data('noteable-iid'); if (ResolveService != null) { ResolveService.toggleResolveForDiscussion(projectPath, mergeRequestId, discussionId); @@ -844,9 +847,9 @@ return this.notesCountBadge.text(parseInt(this.notesCountBadge.text()) + updateCount); }; - Notes.prototype.resolveDiscussion = function () { - var $this = $(this), - discussionId = $this.attr('data-discussion-id'); + Notes.prototype.resolveDiscussion = function() { + var $this = $(this); + var discussionId = $this.attr('data-discussion-id'); $this .closest('form') @@ -855,6 +858,36 @@ .attr('data-project-path', $this.attr('data-project-path')); }; + Notes.prototype.toggleCommitList = function(e) { + const $element = $(e.target); + const $closestSystemCommitList = $element.siblings('.system-note-commit-list'); + + $closestSystemCommitList.toggleClass('hide-shade'); + }; + + /** + Scans system notes with `ul` elements in system note body + then collapse long commit list pushed by user to make it less + intrusive. + */ + Notes.prototype.collapseLongCommitList = function() { + const systemNotes = $('#notes-list').find('li.system-note').has('ul'); + + $.each(systemNotes, function(index, systemNote) { + const $systemNote = $(systemNote); + const headerMessage = $systemNote.find('.note-text').find('p:first').text().replace(':', ''); + + $systemNote.find('.note-header .system-note-message').html(headerMessage); + + if ($systemNote.find('li').length > MAX_VISIBLE_COMMIT_LIST_COUNT) { + $systemNote.find('.note-text').addClass('system-note-commit-list'); + $systemNote.find('.system-note-commit-list-toggler').show(); + } else { + $systemNote.find('.note-text').addClass('system-note-commit-list hide-shade'); + } + }); + }; + return Notes; })(); |