annotationTooltip.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. define([
  2. 'angular',
  3. 'jquery',
  4. 'lodash'
  5. ],
  6. function (angular, $, _) {
  7. 'use strict';
  8. angular
  9. .module('grafana.directives')
  10. .directive('annotationTooltip', function($sanitize, dashboardSrv, $compile) {
  11. return {
  12. link: function (scope, element) {
  13. var event = scope.event;
  14. var title = $sanitize(event.title);
  15. var dashboard = dashboardSrv.getCurrent();
  16. var time = '<i>' + dashboard.formatDate(event.min) + '</i>';
  17. var tooltip = '<div class="graph-tooltip small"><div class="graph-tooltip-time">' + title + ' ' + time + '</div> ' ;
  18. if (event.text) {
  19. var text = $sanitize(event.text);
  20. tooltip += text.replace(/\n/g, '<br>') + '<br>';
  21. }
  22. var tags = event.tags;
  23. if (_.isString(event.tags)) {
  24. tags = event.tags.split(',');
  25. if (tags.length === 1) {
  26. tags = event.tags.split(' ');
  27. }
  28. }
  29. if (tags && tags.length) {
  30. scope.tags = tags;
  31. tooltip += '<span class="label label-tag" ng-repeat="tag in tags" tag-color-from-name="tag">{{tag}}</span><br/>';
  32. }
  33. tooltip += "</div>";
  34. var $tooltip = $(tooltip);
  35. $tooltip.appendTo(element);
  36. $compile(element.contents())(scope);
  37. }
  38. };
  39. });
  40. });