uptime-kuma/server/analytics/analytics.js
2025-02-21 23:26:44 +01:00

48 lines
1.9 KiB
JavaScript

const googleAnalytics = require("./google-analytics");
const umamiAnalytics = require("./umami-analytics");
const plausibleAnalytics = require("./plausible-analytics");
const matomoAnalytics = require("./matomo-analytics");
/**
* Returns a string that represents the javascript that is required to insert the selected Analytics' script
* into a webpage.
* @param {typeof import("../model/status_page").StatusPage} statusPage Status page populate HTML with
* @returns {string} HTML script tags to inject into page
*/
function getAnalyticsScript(statusPage) {
switch (statusPage.analyticsType) {
case "google":
return googleAnalytics.getGoogleAnalyticsScript(statusPage.analyticsId);
case "umami":
return umamiAnalytics.getUmamiAnalyticsScript(statusPage.analyticsDomainUrl, statusPage.analyticsId);
case "plausible":
return plausibleAnalytics.getPlausibleAnalyticsScript(statusPage.analyticsDomainUrl, statusPage.analyticsId);
case "matomo":
return matomoAnalytics.getMatomoAnalyticsScript(statusPage.analyticsDomainUrl, statusPage.analyticsId);
default:
return null;
}
}
/**
* Function that checks wether the selected analytics has been configured properly
* @param {typeof import("../model/status_page").StatusPage} statusPage Status page populate HTML with
* @returns {boolean} Boolean defining if the analytics config is valid
*/
function isValidAnalyticsConfig(statusPage) {
switch (statusPage.analyticsType) {
case "google":
return statusPage.analyticsId != null;
case "umami":
case "plausible":
case "matomo":
return statusPage.analyticsId != null && statusPage.analyticsDomainUrl != null;
default:
return false;
}
}
module.exports = {
getAnalyticsScript,
isValidAnalyticsConfig
};