mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #2980 from tdyas/linkSrv_fix_query_string_appending
fix appending query strings in linkSrv
This commit is contained in:
commit
0903aa4596
@ -48,8 +48,22 @@ function (angular, kbn, _) {
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
url += (url.indexOf('?') !== -1 ? '&' : '?');
|
return this.appendToQueryString(url, paramsArray.join('&'));
|
||||||
return 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) {
|
this.getAnchorInfo = function(link) {
|
||||||
@ -65,7 +79,6 @@ function (angular, kbn, _) {
|
|||||||
info.target = link.targetBlank ? '_blank' : '_self';
|
info.target = link.targetBlank ? '_blank' : '_self';
|
||||||
info.href = templateSrv.replace(link.url || '', scopedVars);
|
info.href = templateSrv.replace(link.url || '', scopedVars);
|
||||||
info.title = templateSrv.replace(link.title || '', scopedVars);
|
info.title = templateSrv.replace(link.title || '', scopedVars);
|
||||||
info.href += '?';
|
|
||||||
}
|
}
|
||||||
else if (link.dashUri) {
|
else if (link.dashUri) {
|
||||||
info.href = 'dashboard/' + link.dashUri + '?';
|
info.href = 'dashboard/' + link.dashUri + '?';
|
||||||
@ -91,8 +104,9 @@ function (angular, kbn, _) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
info.href = this.addParamsToUrl(info.href, params);
|
info.href = this.addParamsToUrl(info.href, params);
|
||||||
|
|
||||||
if (link.params) {
|
if (link.params) {
|
||||||
info.href += "&" + templateSrv.replace(link.params, scopedVars);
|
info.href = this.appendToQueryString(info.href, templateSrv.replace(link.params, scopedVars));
|
||||||
}
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
|
50
public/test/specs/linkSrv-specs.js
Normal file
50
public/test/specs/linkSrv-specs.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
define([
|
||||||
|
'lodash',
|
||||||
|
'app/features/panellinks/linkSrv'
|
||||||
|
], function(_) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
describe('linkSrv', function() {
|
||||||
|
var _linkSrv;
|
||||||
|
|
||||||
|
beforeEach(module('grafana.services'));
|
||||||
|
|
||||||
|
beforeEach(inject(function(linkSrv) {
|
||||||
|
_linkSrv = linkSrv;
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe('when appending query strings', function() {
|
||||||
|
|
||||||
|
it('add ? to URL if not present', function() {
|
||||||
|
var url = _linkSrv.appendToQueryString('http://example.com', 'foo=bar');
|
||||||
|
expect(url).to.be('http://example.com?foo=bar');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('do not add & to URL if ? is present but query string is empty', function() {
|
||||||
|
var url = _linkSrv.appendToQueryString('http://example.com?', 'foo=bar');
|
||||||
|
expect(url).to.be('http://example.com?foo=bar');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('add & to URL if query string is present', function() {
|
||||||
|
var url = _linkSrv.appendToQueryString('http://example.com?foo=bar', 'hello=world');
|
||||||
|
expect(url).to.be('http://example.com?foo=bar&hello=world');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('do not change the URL if there is nothing to append', function() {
|
||||||
|
_.each(['', undefined, null], function(toAppend) {
|
||||||
|
var url1 = _linkSrv.appendToQueryString('http://example.com', toAppend);
|
||||||
|
expect(url1).to.be('http://example.com');
|
||||||
|
|
||||||
|
var url2 = _linkSrv.appendToQueryString('http://example.com?', toAppend);
|
||||||
|
expect(url2).to.be('http://example.com?');
|
||||||
|
|
||||||
|
var url3 = _linkSrv.appendToQueryString('http://example.com?foo=bar', toAppend);
|
||||||
|
expect(url3).to.be('http://example.com?foo=bar');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user