mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
import angular from 'angular';
 | 
						|
import $ from 'jquery';
 | 
						|
import { extend } from 'lodash';
 | 
						|
 | 
						|
const $win = $(window);
 | 
						|
 | 
						|
$.fn.place_tt = (() => {
 | 
						|
  const defaults = {
 | 
						|
    offset: 5,
 | 
						|
  };
 | 
						|
 | 
						|
  return function (this: any, x: number, y: number, opts: any) {
 | 
						|
    opts = $.extend(true, {}, defaults, opts);
 | 
						|
 | 
						|
    return this.each(() => {
 | 
						|
      const $tooltip = $(this);
 | 
						|
      let width, height;
 | 
						|
 | 
						|
      $tooltip.addClass('grafana-tooltip');
 | 
						|
 | 
						|
      $('#tooltip').remove();
 | 
						|
      $tooltip.appendTo(document.body);
 | 
						|
 | 
						|
      if (opts.compile) {
 | 
						|
        angular
 | 
						|
          .element(document)
 | 
						|
          .injector()
 | 
						|
          .invoke([
 | 
						|
            '$compile',
 | 
						|
            '$rootScope',
 | 
						|
            ($compile, $rootScope) => {
 | 
						|
              const tmpScope = $rootScope.$new(true);
 | 
						|
              extend(tmpScope, opts.scopeData);
 | 
						|
 | 
						|
              $compile($tooltip)(tmpScope);
 | 
						|
              tmpScope.$digest();
 | 
						|
              tmpScope.$destroy();
 | 
						|
            },
 | 
						|
          ]);
 | 
						|
      }
 | 
						|
 | 
						|
      width = $tooltip.outerWidth(true)!;
 | 
						|
      height = $tooltip.outerHeight(true)!;
 | 
						|
 | 
						|
      const left = x + opts.offset + width > $win.width()! ? x - opts.offset - width : x + opts.offset;
 | 
						|
      const top = y + opts.offset + height > $win.height()! ? y - opts.offset - height : y + opts.offset;
 | 
						|
 | 
						|
      $tooltip.css('left', left > 0 ? left : 0);
 | 
						|
      $tooltip.css('top', top > 0 ? top : 0);
 | 
						|
    });
 | 
						|
  };
 | 
						|
})();
 |