MediaWiki:VisitorsIndicator.js: Difference between revisions
From VRChat Wiki
No edit summary |
No edit summary |
||
Line 18: | Line 18: | ||
const value = (await fetch(`https://plausible.io/api/stats/wiki.vrchat.com/pages/?${query.toString()}`) | const value = (await fetch(`https://plausible.io/api/stats/wiki.vrchat.com/pages/?${query.toString()}`) | ||
.then((response) => response.json( | .then((response) => response.json()) | ||
.catch(() => null); | .catch(() => null)); | ||
if (!value || typeof value !== "object" || !("results" in value) || !Array.isArray(value.results)) { | if (!value || typeof value !== "object" || !("results" in value) || !Array.isArray(value.results)) { |
Latest revision as of 09:14, 6 October 2024
$(
(function () {
const container = document.querySelector("#mw-indicator-visitors-container");
const element = document.querySelector("#mw-indicator-visitors-count");
if (!container || !element) return;
const language = mw.config.get("wgPageContentLanguage");
const pathname = location.pathname.replace(`/${language}`, "");
const languages = [...document.querySelectorAll(".mw-pt-languages-list a")].map(({ lang }) => lang.toLowerCase());
const alternatives = [pathname, `${pathname}/${language}`, ...languages.map((language) => `${pathname}/${language}`)];
async function refresh() {
const filters = [["is", "event:page", alternatives]];
const query = new URLSearchParams({
period: "realtime",
filters: JSON.stringify(filters)
});
const value = (await fetch(`https://plausible.io/api/stats/wiki.vrchat.com/pages/?${query.toString()}`)
.then((response) => response.json())
.catch(() => null));
if (!value || typeof value !== "object" || !("results" in value) || !Array.isArray(value.results)) {
container.style.opacity = 0;
return;
}
container.style.opacity = 1;
element.textContent = value.results.reduce((prev, curr) => {
prev += curr.visitors;
return prev;
}, 0);
}
refresh();
setInterval(refresh, 1000)
})()
);