grafana/public/app/core/jquery_extended.ts
Torkel Ödegaard 8f78b0e7bc
Chore: Fix all Typescript strict null errors (#26204)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot

* Chore: More ts strict null fixes

* More fixes in some really messed up azure config components

* More fixes, current count: 441

* 419

* More fixes

* Fixed invalid initial state in explore

* Fixing tests

* Fixed tests

* Explore fix

* More fixes

* Progress

* Sub 300

* Now at 218

* Progress

* Update

* Progress

* Updated tests

* at 159

* fixed tests

* Progress

* YAy blow 100! at 94

* 10,9,8,7,6,5,4,3,2,1... lift off

* Fixed tests

* Fixed more type errors

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-07-10 12:46:59 +02:00

53 lines
1.3 KiB
TypeScript

import $ from 'jquery';
import angular from 'angular';
import _ 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);
});
};
})();