Source

js/analystics.ts

/// <reference path="./globals.d.ts" />
let gtag: Window["gtag"] | UniversalAnalytics.ga = null;
if (!isnode()) {
    const gtagID = siteConfig.google.analystics.id;
    const create_gtagscript = document.createElement("script");
    create_gtagscript.src = "https://www.googletagmanager.com/gtag/js?id=" + gtagID;
    create_gtagscript.async = true;
    document.getElementsByTagName("body")[0].appendChild(create_gtagscript);

    window.onload = function () {
        if (window.dataLayer) {
            window.dataLayer = window.dataLayer || [];

            gtag = function () {
                (<any[]>window.dataLayer).push(arguments);
            };

            gtag("js", new Date());
            gtag("config", gtagID, {
                page_title: document.title,
                page_path: location.pathname,
            });
            gtag("event", "page_view", {
                send_to: gtagID,
            });
            gtag("config", "UA-106238155-1", {
                cookie_prefix: "GoogleAnalystics",
                cookie_domain: location.host,
                cookie_update: false, //true false update cookie every load
                cookie_expires: 28 * 24 * 60 * 60, // 28 days, in seconds
            });

            const trackLinks = document.getElementsByTagName("a");
            for (let i = 0, len = trackLinks.length; i < len; i++) {
                const singleLink = trackLinks[i];
                singleLink.onclick = function () {
                    if (!/^\#/gm.test(singleLink.href) && !empty(singleLink.href)) {
                        gtag("event", "click", {
                            event_category: "outbound",
                            event_label: singleLink.href,
                            transport_type: "beacon",
                        });
                    }
                };
            }

            /*var elementsArray = document.querySelectorAll('b,iframe,ins,button,img,input,.adsense,#adsense,.ads,#ads,.ad_slot,.adsbygoogle,blockquote');
             elementsArray.forEach(function(elem) {
             elem.addEventListener("click", function(event) {
             var data = null;
             var clickon = "X: " + event.clientX + " - Y: " + event.clientY;

             dump = document.getElementById('positionTrack');

             if (dump) {
             data = this.tagName + '(' + clickon + ')';

             dump.textContent = data;
             }
             gtag("event", "ClickPosition", {
             'elements': data
             });
             });
             });*/
        }
    };

    /**
     * Google analystic reporter
     * @param {String} event_action
     * @param {string} event_label
     * @param {string} event_category
     * @param {string} event_value
     * @param {Function|any} event_callback
     */
    function analys(event_action, event_label, event_category, event_value, event_callback) {
        const conf = {
            event_label: event_label,
            event_category: event_category,
            value: event_value,
            event_callback: typeof event_callback == "function" ? event_callback : false,
        };
        return gtag("event", event_action, conf);
    }
}