mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
define([
|
|
'jquery',
|
|
'lodash',
|
|
'../core_module',
|
|
],
|
|
function ($, _, coreModule) {
|
|
'use strict';
|
|
|
|
coreModule.default.directive('annotationTooltip', function($sanitize, dashboardSrv, $compile) {
|
|
|
|
function sanitizeString(str) {
|
|
try {
|
|
return $sanitize(str);
|
|
}
|
|
catch(err) {
|
|
console.log('Could not sanitize annotation string, html escaping instead');
|
|
return _.escape(str);
|
|
}
|
|
}
|
|
|
|
return {
|
|
link: function (scope, element) {
|
|
var event = scope.event;
|
|
var title = sanitizeString(event.title);
|
|
var dashboard = dashboardSrv.getCurrent();
|
|
var time = '<i>' + dashboard.formatDate(event.min) + '</i>';
|
|
|
|
var tooltip = '<div class="graph-annotation">';
|
|
tooltip += '<div class="graph-annotation-title">' + title + "</div>";
|
|
|
|
if (event.text) {
|
|
var text = sanitizeString(event.text);
|
|
tooltip += text.replace(/\n/g, '<br>') + '<br>';
|
|
}
|
|
|
|
var tags = event.tags;
|
|
if (_.isString(event.tags)) {
|
|
tags = event.tags.split(',');
|
|
if (tags.length === 1) {
|
|
tags = event.tags.split(' ');
|
|
}
|
|
}
|
|
|
|
if (tags && tags.length) {
|
|
scope.tags = tags;
|
|
tooltip += '<span class="label label-tag small" ng-repeat="tag in tags" tag-color-from-name="tag">{{tag}}</span><br/>';
|
|
}
|
|
|
|
tooltip += '<div class="graph-annotation-time">' + time + '</div>' ;
|
|
tooltip += "</div>";
|
|
|
|
var $tooltip = $(tooltip);
|
|
$tooltip.appendTo(element);
|
|
|
|
$compile(element.contents())(scope);
|
|
}
|
|
};
|
|
});
|
|
|
|
});
|