diff options
author | Jack Davison <jack.davison@student.manchester.ac.uk> | 2016-06-23 22:02:11 +0300 |
---|---|---|
committer | Jack Davison <jack.davison@student.manchester.ac.uk> | 2016-08-17 23:25:39 +0300 |
commit | 1fc17a8a43a87af89358953364872d565d38b8e8 (patch) | |
tree | 5021b7c5ede713f48a38758c3bb965427cf87e70 /app/assets/javascripts/awards_handler.js | |
parent | 4fbbb8e76550fcb8103cc1bf5c8536cf598db829 (diff) |
Switch to using to_sentence to construct tooltips
* Code in ruby now uses Array#to_sentence to construct award tooltips
* Coffeescript uses a combination of regexes for the same result
Diffstat (limited to 'app/assets/javascripts/awards_handler.js')
-rw-r--r-- | app/assets/javascripts/awards_handler.js | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index c753972d171..b06bad78305 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -1,5 +1,6 @@ (function() { this.AwardsHandler = (function() { + const FROM_SENTENCE_REGEX = /(?:, and | and |, )/; //For separating lists produced by ruby's Array#toSentence function AwardsHandler() { this.aliases = gl.emojiAliases(); $(document).off('click', '.js-add-award').on('click', '.js-add-award', (function(_this) { @@ -204,14 +205,22 @@ return $awardBlock.attr('data-original-title') || $awardBlock.attr('data-title') || ''; }; + AwardsHandler.prototype.toSentence = function(list) { + if(list.length <= 2){ + return list.join(' and '); + } + else{ + return list.slice(0, -1).join(', ') + ', and ' + list[list.length - 1]; + } + }; + AwardsHandler.prototype.removeMeFromUserList = function($emojiButton, emoji) { var authors, awardBlock, newAuthors, originalTitle; awardBlock = $emojiButton; originalTitle = this.getAwardTooltip(awardBlock); - authors = originalTitle.split(', '); + authors = originalTitle.split(FROM_SENTENCE_REGEX); authors.splice(authors.indexOf('me'), 1); - newAuthors = authors.join(', '); - awardBlock.closest('.js-emoji-btn').removeData('original-title').attr('data-original-title', newAuthors); + awardBlock.closest('.js-emoji-btn').removeData('original-title').attr('data-original-title', this.toSentence(authors)); return this.resetTooltip(awardBlock); }; @@ -221,10 +230,10 @@ origTitle = this.getAwardTooltip(awardBlock); users = []; if (origTitle) { - users = origTitle.trim().split(', '); + users = origTitle.trim().split(FROM_SENTENCE_REGEX); } users.unshift('me'); - awardBlock.attr('title', users.join(', ')); + awardBlock.attr('title', this.toSentence(users)); return this.resetTooltip(awardBlock); }; |