| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /**
- * @preserve jquery-param (c) 2015 KNOWLEDGECODE | MIT
- */
- import { UrlQueryMap } from '@grafana/runtime';
- export function renderUrl(path: string, query: UrlQueryMap | undefined): string {
- if (query && Object.keys(query).length > 0) {
- path += '?' + toUrlParams(query);
- }
- return path;
- }
- export function encodeURIComponentAsAngularJS(val: string, pctEncodeSpaces?: boolean) {
- return encodeURIComponent(val)
- .replace(/%40/gi, '@')
- .replace(/%3A/gi, ':')
- .replace(/%24/g, '$')
- .replace(/%2C/gi, ',')
- .replace(/%3B/gi, ';')
- .replace(/%20/g, pctEncodeSpaces ? '%20' : '+');
- }
- export function toUrlParams(a: any) {
- const s: any[] = [];
- const rbracket = /\[\]$/;
- const isArray = (obj: any) => {
- return Object.prototype.toString.call(obj) === '[object Array]';
- };
- const add = (k: string, v: any) => {
- v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;
- if (typeof v !== 'boolean') {
- s[s.length] = encodeURIComponentAsAngularJS(k, true) + '=' + encodeURIComponentAsAngularJS(v, true);
- } else {
- s[s.length] = encodeURIComponentAsAngularJS(k, true);
- }
- };
- const buildParams = (prefix: string, obj: any) => {
- let i, len, key;
- if (prefix) {
- if (isArray(obj)) {
- for (i = 0, len = obj.length; i < len; i++) {
- if (rbracket.test(prefix)) {
- add(prefix, obj[i]);
- } else {
- buildParams(prefix, obj[i]);
- }
- }
- } else if (obj && String(obj) === '[object Object]') {
- for (key in obj) {
- buildParams(prefix + '[' + key + ']', obj[key]);
- }
- } else {
- add(prefix, obj);
- }
- } else if (isArray(obj)) {
- for (i = 0, len = obj.length; i < len; i++) {
- add(obj[i].name, obj[i].value);
- }
- } else {
- for (key in obj) {
- buildParams(key, obj[key]);
- }
- }
- return s;
- };
- return buildParams('', a).join('&');
- }
- export function appendQueryToUrl(url: string, stringToAppend: string) {
- if (stringToAppend !== undefined && stringToAppend !== null && stringToAppend !== '') {
- const pos = url.indexOf('?');
- if (pos !== -1) {
- if (url.length - pos > 1) {
- url += '&';
- }
- } else {
- url += '?';
- }
- url += stringToAppend;
- }
- return url;
- }
|