Skip to content

Instantly share code, notes, and snippets.

@valachi
Created April 1, 2013 15:27
Show Gist options
  • Save valachi/5285566 to your computer and use it in GitHub Desktop.
Save valachi/5285566 to your computer and use it in GitHub Desktop.
$ ->
class WikiPopup
constructor: (@elSelector, @popupSelector) ->
@wikiElement = $(@elSelector)
@popup = $(@popupSelector)
@init()
init: ->
#preload spinner
objImage = new Image()
objImage.src = '/assets/loading.gif'
objImage.id = 'spinner'
@wikiElement.live "click", (event) =>
event.preventDefault()
clickedElement = $(event.currentTarget)
if $(@popupSelector).length
@wikiElement.popover('destroy')
clickedElement.popover
content: objImage
html: true
animate: false
selector: true
placement: 'top'
trigger: 'click'
clickedElement.popover('show')
if clickedElement.attr('data-word')
word = clickedElement.data('word')
else
word = clickedElement.text()
$.ajax
url: '/wikis/' + $.trim(word)
error: (xhr, textStatus, errorThrown) ->
$(@popupSelector).find("img#spinner").replaceWith 'Произошла неизвестная ошибка'
success: (data) =>
originalHeight = $(@popupSelector).height()
$(@popupSelector).find("img#spinner").replaceWith data
newHeight = $(@popupSelector).height()
if originalHeight < newHeight
difference = newHeight - originalHeight
@ajustTop difference
ajustTop: (difference) ->
style = $(@popupSelector).attr("style")
stylesArray = style.split(";")
topFromStyle = stylesArray[0]
ajustedTop = $(@popupSelector).position().top - difference
ajustedStyle = style.replace(topFromStyle, "top:" + ajustedTop + "px")
$(@popupSelector).attr("style", ajustedStyle)
wikiPopup = new WikiPopup "span.wiki", ".popover"
$('body').on 'click', '.popover .get-close', (event) ->
$(@).closest('.popover').remove()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment