mirror of
https://github.com/plausible/analytics.git
synced 2024-12-21 08:31:29 +03:00
b606fc1809
* Truncate breakdown URLs * Update seeds with Outbound Links * Update changelog Fixes https://github.com/plausible/analytics/issues/3158
70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
export function apiPath(site, path = '') {
|
|
return `/api/stats/${encodeURIComponent(site.domain)}${path}`
|
|
}
|
|
|
|
export function siteBasePath(site, path = '') {
|
|
return `/${encodeURIComponent(site.domain)}${path}`
|
|
}
|
|
|
|
export function sitePath(site, path = '') {
|
|
return siteBasePath(site, path) + window.location.search
|
|
}
|
|
|
|
export function setQuery(key, value) {
|
|
const query = new URLSearchParams(window.location.search)
|
|
query.set(key, value)
|
|
return `${window.location.pathname}?${query.toString()}`
|
|
}
|
|
|
|
export function externalLinkForPage(domain, page) {
|
|
const domainURL = new URL(`https://${domain}`)
|
|
return `https://${domainURL.host}${page}`
|
|
}
|
|
|
|
export function isValidHttpUrl(string) {
|
|
let url;
|
|
|
|
try {
|
|
url = new URL(string);
|
|
} catch (_) {
|
|
return false;
|
|
}
|
|
|
|
return url.protocol === "http:" || url.protocol === "https:";
|
|
}
|
|
|
|
|
|
export function trimURL(url, maxLength) {
|
|
if (url.length <= maxLength) {
|
|
return url;
|
|
}
|
|
|
|
if (isValidHttpUrl(url)) {
|
|
const [protocol, restURL] = url.split('://');
|
|
const parts = restURL.split('/');
|
|
|
|
const host = parts.shift();
|
|
if (host.length > maxLength - 5) {
|
|
return `${protocol}://${host.substr(0, maxLength - 5)}...${restURL.slice(-maxLength + 5)}`;
|
|
}
|
|
|
|
let remainingLength = maxLength - host.length - 5;
|
|
let trimmedURL = `${protocol}://${host}`;
|
|
|
|
for (const part of parts) {
|
|
if (part.length <= remainingLength) {
|
|
trimmedURL += '/' + part;
|
|
remainingLength -= part.length + 1;
|
|
} else {
|
|
const startTrim = Math.floor((remainingLength - 3) / 2);
|
|
const endTrim = Math.ceil((remainingLength - 3) / 2);
|
|
trimmedURL += `/${part.substr(0, startTrim)}...${part.slice(-endTrim)}`;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return trimmedURL;
|
|
}
|
|
return url
|
|
}
|