Fix Explore button, fixes #1240
Also pass dashboard time range to the explore view.
This commit is contained in:
@@ -32,74 +32,3 @@ export const getNextRefIdChar = (queries: DataQuery[]): string => {
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export type UrlQueryMap = Record<string, any>;
|
||||
|
||||
export function renderUrl(path: string, query: UrlQueryMap | undefined): string {
|
||||
if (query && Object.keys(query).length > 0) {
|
||||
path += '?' + toUrlParams(query);
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
function encodeURIComponentAsAngularJS(val: string, pctEncodeSpaces?: boolean) {
|
||||
return encodeURIComponent(val)
|
||||
.replace(/%25/gi, '%2525') // Double-encode % symbol to make it properly decoded in Explore
|
||||
.replace(/%40/gi, '@')
|
||||
.replace(/%3A/gi, ':')
|
||||
.replace(/%24/g, '$')
|
||||
.replace(/%2C/gi, ',')
|
||||
.replace(/%3B/gi, ';')
|
||||
.replace(/%20/g, pctEncodeSpaces ? '%20' : '+');
|
||||
}
|
||||
|
||||
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('&');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user