mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
converted linkSrv.js to linkSrv.ts
This commit is contained in:
@@ -1,118 +0,0 @@
|
||||
define([
|
||||
'angular',
|
||||
'lodash',
|
||||
'app/core/utils/kbn',
|
||||
],
|
||||
function (angular, _, kbn) {
|
||||
'use strict';
|
||||
|
||||
kbn = kbn.default;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
return this.appendToQueryString(url, paramsArray.join('&'));
|
||||
};
|
||||
|
||||
this.appendToQueryString = function(url, stringToAppend) {
|
||||
if (!_.isUndefined(stringToAppend) && stringToAppend !== null && stringToAppend !== '') {
|
||||
var pos = url.indexOf('?');
|
||||
if (pos !== -1) {
|
||||
if (url.length - pos > 1) {
|
||||
url += '&';
|
||||
}
|
||||
} else {
|
||||
url += '?';
|
||||
}
|
||||
url += stringToAppend;
|
||||
}
|
||||
return url;
|
||||
};
|
||||
|
||||
this.getAnchorInfo = function(link) {
|
||||
var info = {};
|
||||
info.href = this.getLinkUrl(link);
|
||||
info.title = templateSrv.replace(link.title || '');
|
||||
return info;
|
||||
};
|
||||
|
||||
this.getPanelLinkAnchorInfo = function(link, scopedVars) {
|
||||
var info = {};
|
||||
if (link.type === 'absolute') {
|
||||
info.target = link.targetBlank ? '_blank' : '_self';
|
||||
info.href = templateSrv.replace(link.url || '', scopedVars);
|
||||
info.title = templateSrv.replace(link.title || '', scopedVars);
|
||||
}
|
||||
else if (link.dashUri) {
|
||||
info.href = 'dashboard/' + link.dashUri + '?';
|
||||
info.title = templateSrv.replace(link.title || '', scopedVars);
|
||||
info.target = link.targetBlank ? '_blank' : '';
|
||||
}
|
||||
else {
|
||||
info.title = templateSrv.replace(link.title || '', scopedVars);
|
||||
var slug = kbn.slugifyForUrl(link.dashboard || '');
|
||||
info.href = 'dashboard/db/' + slug + '?';
|
||||
}
|
||||
|
||||
var params = {};
|
||||
|
||||
if (link.keepTime) {
|
||||
var range = timeSrv.timeRangeForUrl();
|
||||
params['from'] = range.from;
|
||||
params['to'] = range.to;
|
||||
}
|
||||
|
||||
if (link.includeVars) {
|
||||
templateSrv.fillVariableValuesForUrl(params, scopedVars);
|
||||
}
|
||||
|
||||
info.href = this.addParamsToUrl(info.href, params);
|
||||
|
||||
if (link.params) {
|
||||
info.href = this.appendToQueryString(info.href, templateSrv.replace(link.params, scopedVars));
|
||||
}
|
||||
|
||||
return info;
|
||||
};
|
||||
|
||||
});
|
||||
});
|
||||
114
public/app/features/panellinks/linkSrv.ts
Normal file
114
public/app/features/panellinks/linkSrv.ts
Normal file
@@ -0,0 +1,114 @@
|
||||
import angular from 'angular';
|
||||
import _ from 'lodash';
|
||||
import kbn from 'app/core/utils/kbn';
|
||||
|
||||
|
||||
export class LinkSrv {
|
||||
|
||||
/** @ngInject */
|
||||
constructor(private templateSrv, private timeSrv) {
|
||||
}
|
||||
|
||||
getLinkUrl(link) {
|
||||
var url = this.templateSrv.replace(link.url || '');
|
||||
var params = {};
|
||||
|
||||
if (link.keepTime) {
|
||||
var range = this.timeSrv.timeRangeForUrl();
|
||||
params['from'] = range.from;
|
||||
params['to'] = range.to;
|
||||
}
|
||||
|
||||
if (link.includeVars) {
|
||||
this.templateSrv.fillVariableValuesForUrl(params);
|
||||
}
|
||||
|
||||
return this.addParamsToUrl(url, params);
|
||||
}
|
||||
|
||||
addParamsToUrl(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;
|
||||
}
|
||||
|
||||
return this.appendToQueryString(url, paramsArray.join('&'));
|
||||
}
|
||||
|
||||
appendToQueryString(url, stringToAppend) {
|
||||
if (!_.isUndefined(stringToAppend) && stringToAppend !== null && stringToAppend !== '') {
|
||||
var pos = url.indexOf('?');
|
||||
if (pos !== -1) {
|
||||
if (url.length - pos > 1) {
|
||||
url += '&';
|
||||
}
|
||||
} else {
|
||||
url += '?';
|
||||
}
|
||||
url += stringToAppend;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
getAnchorInfo(link) {
|
||||
var info = {};
|
||||
(<any>info).href = this.getLinkUrl(link);
|
||||
(<any>info).title = this.templateSrv.replace(link.title || '');
|
||||
return info;
|
||||
}
|
||||
|
||||
getPanelLinkAnchorInfo(link, scopedVars) {
|
||||
var info = {};
|
||||
if (link.type === 'absolute') {
|
||||
(<any>info).target = link.targetBlank ? '_blank' : '_self';
|
||||
(<any>info).href = this.templateSrv.replace(link.url || '', scopedVars);
|
||||
(<any>info).title = this.templateSrv.replace(link.title || '', scopedVars);
|
||||
} else if (link.dashUri) {
|
||||
(<any>info).href = 'dashboard/' + link.dashUri + '?';
|
||||
(<any>info).title = this.templateSrv.replace(link.title || '', scopedVars);
|
||||
(<any>info).target = link.targetBlank ? '_blank' : '';
|
||||
} else {
|
||||
(<any>info).title = this.templateSrv.replace(link.title || '', scopedVars);
|
||||
var slug = kbn.slugifyForUrl(link.dashboard || '');
|
||||
(<any>info).href = 'dashboard/db/' + slug + '?';
|
||||
}
|
||||
|
||||
var params = {};
|
||||
|
||||
if (link.keepTime) {
|
||||
var range = this.timeSrv.timeRangeForUrl();
|
||||
params['from'] = range.from;
|
||||
params['to'] = range.to;
|
||||
}
|
||||
|
||||
if (link.includeVars) {
|
||||
this.templateSrv.fillVariableValuesForUrl(params, scopedVars);
|
||||
}
|
||||
|
||||
(<any>info).href = this.addParamsToUrl((<any>info).href, params);
|
||||
|
||||
if (link.params) {
|
||||
(<any>info).href = this.appendToQueryString((<any>info).href, this.templateSrv.replace(link.params, scopedVars));
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
angular.module('grafana.services').service('linkSrv', LinkSrv);
|
||||
Reference in New Issue
Block a user