1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- class Morris.Hover
- # Displays contextual information in a floating HTML div.
- @defaults:
- class: 'morris-hover morris-default-style'
- constructor: (options = {}) ->
- @options = $.extend {}, Morris.Hover.defaults, options
- @el = $ "<div class='#{@options.class}'></div>"
- @el.hide()
- @options.parent.append(@el)
- update: (html, x, y) ->
- if not html
- @hide()
- else
- @html(html)
- @show()
- @moveTo(x, y)
- html: (content) ->
- @el.html(content)
- moveTo: (x, y) ->
- parentWidth = @options.parent.innerWidth()
- parentHeight = @options.parent.innerHeight()
- hoverWidth = @el.outerWidth()
- hoverHeight = @el.outerHeight()
- left = Math.min(Math.max(0, x - hoverWidth / 2), parentWidth - hoverWidth)
- if y?
- top = y - hoverHeight - 10
- if top < 0
- top = y + 10
- if top + hoverHeight > parentHeight
- top = parentHeight / 2 - hoverHeight / 2
- else
- top = parentHeight / 2 - hoverHeight / 2
- @el.css(left: left + "px", top: parseInt(top) + "px")
- show: ->
- @el.show()
- hide: ->
- @el.hide()
|