gitlab-org--gitlab-foss/app/assets/javascripts/awards_handler.coffee

55 lines
1.4 KiB
CoffeeScript
Raw Normal View History

2015-11-11 13:12:51 +00:00
class @AwardsHandler
constructor: (@post_emoji_url, @noteable_type, @noteable_id) ->
addAward: (emoji) ->
@postEmoji emoji, =>
if @exist(emoji)
if @isActive(emoji)
@decrementCounter(emoji)
else
counter = $(".icon." + emoji).siblings(".counter")
counter.text(parseInt(counter.text()) + 1)
counter.parent().addClass("active")
else
@createEmoji(emoji)
exist: (emoji) ->
$(".icon").hasClass(emoji)
isActive: (emoji) ->
$(".icon." + emoji).parent().hasClass("active")
decrementCounter: (emoji) ->
counter = $(".icon." + emoji).siblings(".counter")
if parseInt(counter.text()) > 1
counter.text(parseInt(counter.text()) - 1)
counter.parent().removeClass("active")
else
counter.parent().remove()
createEmoji: (emoji) ->
nodes = []
nodes.push("<div class='award active'>")
nodes.push("<div class='icon " + emoji + "'>")
nodes.push(@getImage(emoji))
nodes.push("</div>")
nodes.push("<div class='counter'>1")
nodes.push("</div></div>")
2015-11-17 11:16:16 +00:00
$(".awards-controls").before(nodes.join("\n"))
2015-11-11 13:12:51 +00:00
getImage: (emoji) ->
$("li." + emoji).html()
postEmoji: (emoji, callback) ->
emoji = emoji.replace("emoji-", "")
$.post @post_emoji_url, {
emoji: emoji
noteable_type: @noteable_type
noteable_id: @noteable_id
},(data) ->
if data.ok
callback.call()