You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			CoffeeScript
		
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			CoffeeScript
		
	
| 
								 
											11 years ago
										 
									 | 
							
								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()
							 |