| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- define([
- 'angular',
- 'kbn',
- 'lodash',
- ],
- function (angular, kbn, _) {
- 'use strict';
- angular
- .module('grafana.services')
- .service('linkSrv', function(templateSrv, timeSrv) {
- this.getLinkUrl = function(link) {
- var url = templateSrv.replace(link.url || '');
- var params = {};
- if (link.keepTime) {
- var range = timeSrv.timeRangeForUrl();
- params['from'] = range.from;
- params['to'] = range.to;
- }
- if (link.includeVars) {
- templateSrv.fillVariableValuesForUrl(params);
- }
- return this.addParamsToUrl(url, params);
- };
- this.addParamsToUrl = function(url, params) {
- var paramsArray = [];
- _.each(params, function(value, key) {
- if (value === null) { return; }
- if (value === true) {
- paramsArray.push(key);
- }
- else if (_.isArray(value)) {
- _.each(value, function(instance) {
- paramsArray.push(key + '=' + encodeURIComponent(instance));
- });
- }
- else {
- paramsArray.push(key + '=' + encodeURIComponent(value));
- }
- });
- if (paramsArray.length === 0) {
- return url;
- }
- url += (url.indexOf('?') !== -1 ? '&' : '?');
- return url + paramsArray.join('&');
- };
- this.getAnchorInfo = function(link) {
- var info = {};
- info.href = this.getLinkUrl(link);
- info.title = templateSrv.replace(link.title || '');
- return info;
- };
- this.getPanelLinkAnchorInfo = function(link) {
- var info = {};
- if (link.type === 'absolute') {
- info.target = '_blank';
- info.href = templateSrv.replace(link.url || '');
- info.title = templateSrv.replace(link.title || '');
- info.href += '?';
- }
- else {
- info.title = templateSrv.replace(link.title || '');
- var slug = kbn.slugifyForUrl(link.dashboard || '');
- info.href = 'dashboard/db/' + slug + '?';
- }
- var range = timeSrv.timeRangeForUrl();
- info.href += 'from=' + range.from;
- info.href += '&to=' + range.to;
- if (link.params) {
- info.href += "&" + templateSrv.replace(link.params);
- }
- return info;
- };
- });
- });
|