Skip to content

Commit 9bd142a

Browse files
committed
add cookieless analytics to the site
Signed-off-by: Ronan Flynn-Curran <[email protected]>
1 parent 61aaec6 commit 9bd142a

File tree

2 files changed

+48
-102
lines changed

2 files changed

+48
-102
lines changed

static/js/main.js

Lines changed: 37 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ var _utils = require("./modules/utils");
601601
var _multiTab = require("./modules/multiTab");
602602
var _feedback = require("./modules/feedback");
603603
const { mount } = redom;
604+
604605
document.querySelectorAll('.modal-button').forEach(function(el) {
605606
el.addEventListener('click', function() {
606607
var target = document.querySelector(el.getAttribute('data-target'));
@@ -627,7 +628,6 @@ document.addEventListener("DOMContentLoaded", function() {
627628
(0, _utils.header).init();
628629
hljs.highlightAll();
629630
if (navigator && navigator.clipboard) (0, _utils.addCopyButtons)(navigator.clipboard);
630-
(0, _utils.removeExpiredEvents)();
631631
(0, _utils.addAnchorLinks)();
632632
(0, _utils.scrollSideMenu)();
633633
// changelogFilter()
@@ -638,30 +638,30 @@ document.addEventListener("DOMContentLoaded", function() {
638638
}, 150);
639639
(0, _utils.header).unpin();
640640
}
641-
(async function() {
642-
try {
643-
await (0, _search.setupSearch)();
644-
mount(document.getElementById("search-button-container"), (0, _search.searchButton));
645-
mount(document.getElementById("search-modal-container"), (0, _search.searchModal));
646-
document.onkeydown = function(e) {
647-
if (e.key == "Escape") (0, _search.searchModal).close();
648-
if ((e.key == "k" || e.key == "K") && (e.metaKey || e.ctrlKey)) {
649-
e.preventDefault();
650-
e.stopPropagation();
651-
(0, _search.searchModal).open();
652-
}
653-
if (e.key == "s" || e.key == "S") {
654-
let searchBar = document.getElementById("hub-search-input");
655-
if (searchBar && document.activeElement != searchBar) {
656-
e.preventDefault();
657-
searchBar.focus();
658-
}
659-
}
660-
};
661-
} catch (err) {
662-
console.error("Could not setup search");
663-
}
664-
})();
641+
// (async function() {
642+
// try {
643+
// await (0, _search.setupSearch)();
644+
// mount(document.getElementById("search-button-container"), (0, _search.searchButton));
645+
// mount(document.getElementById("search-modal-container"), (0, _search.searchModal));
646+
// document.onkeydown = function(e) {
647+
// if (e.key == "Escape") (0, _search.searchModal).close();
648+
// if ((e.key == "k" || e.key == "K") && (e.metaKey || e.ctrlKey)) {
649+
// e.preventDefault();
650+
// e.stopPropagation();
651+
// (0, _search.searchModal).open();
652+
// }
653+
// if (e.key == "s" || e.key == "S") {
654+
// let searchBar = document.getElementById("hub-search-input");
655+
// if (searchBar && document.activeElement != searchBar) {
656+
// e.preventDefault();
657+
// searchBar.focus();
658+
// }
659+
// }
660+
// };
661+
// } catch (err) {
662+
// console.error("Could not setup search");
663+
// }
664+
// })();
665665
// Init feedback on docs pages
666666
let feedback = document.getElementById("feedback-wrapper");
667667
if (feedback) (0, _feedback.createFeedbackElement)(feedback);
@@ -1069,18 +1069,15 @@ parcelHelpers.defineInteropFlag(exports);
10691069
parcelHelpers.export(exports, "scrollSideMenu", ()=>scrollSideMenu);
10701070
parcelHelpers.export(exports, "addCopyButtons", ()=>addCopyButtons);
10711071
parcelHelpers.export(exports, "addAnchorLinks", ()=>addAnchorLinks);
1072-
parcelHelpers.export(exports, "changelogFilter", ()=>changelogFilter);
1073-
parcelHelpers.export(exports, "removeExpiredEvents", ()=>removeExpiredEvents);
10741072
parcelHelpers.export(exports, "header", ()=>header);
1075-
parcelHelpers.export(exports, "blogAd", ()=>blogAd);
1073+
1074+
// init headroom for sticky menu on upscroll
10761075
var header = new Headroom(document.querySelector("#topbar"), {
10771076
tolerance: 5,
10781077
offset: 80
10791078
});
1080-
var blogAd = new Headroom(document.querySelector("#blogSlogan"), {
1081-
tolerance: 5,
1082-
offset: 300
1083-
});
1079+
1080+
// init side menu accordions
10841081
function scrollSideMenu() {
10851082
let sidemenu = document.querySelector("aside.menu");
10861083
if (sidemenu) {
@@ -1098,6 +1095,8 @@ function scrollSideMenu() {
10981095
}
10991096
}
11001097
}
1098+
1099+
// copy to clipboard
11011100
const svgCopy = '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg>';
11021101
const svgCheck = '<svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true"><path fill-rule="evenodd" fill="#18d1a5" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>';
11031102
const addCopyButtons = (clipboard)=>{
@@ -1140,6 +1139,8 @@ const addCopyButtons = (clipboard)=>{
11401139
pre.appendChild(button);
11411140
});
11421141
};
1142+
1143+
// add clickable #anchors to markdown titles
11431144
const addAnchorLinks = ()=>{
11441145
const elementsToProcess = document.querySelectorAll(".content h1, .content h2, .content h3, .content h4, .content tr");
11451146
elementsToProcess.forEach((element)=>{
@@ -1172,77 +1173,9 @@ const addAnchorLinks = ()=>{
11721173
});
11731174
});
11741175
};
1175-
function removeExpiredEvents() {
1176-
let events = document.querySelectorAll(".community-highlight .carousel-cell");
1177-
let eventsNumber = events.length;
1178-
if (eventsNumber) events.forEach((k)=>{
1179-
if (k.dataset.expirydate) {
1180-
let eventExpiryDate = new Date(k.dataset.expirydate);
1181-
if (eventExpiryDate < Date.now()) {
1182-
k.remove();
1183-
eventsNumber--;
1184-
}
1185-
}
1186-
});
1187-
else return;
1188-
if (eventsNumber) {
1189-
var elem = document.querySelector('.main-carousel');
1190-
var flkty = new Flickity(elem, {
1191-
// options
1192-
cellAlign: 'left',
1193-
contain: true
1194-
});
1195-
// element argument can be a selector string
1196-
// for an individual element
1197-
var flkty = new Flickity('.main-carousel', {
1198-
});
1199-
} else {
1200-
let eventsCarousel = document.querySelector(".community-highlight");
1201-
eventsCarousel.innerHTML = `
1202-
<article class="community-highlight carousel-cell">
1203-
<a href="#">
1204-
<event>
1205-
<date>
1206-
</date>
1207-
<eventtitle>No upcoming Events
1208-
</eventtitle>
1209-
<p></p>
1210-
<img class="event-logo" />
1211-
</event>
1212-
</a>
1213-
</article>
1214-
`;
1215-
}
1216-
}
1217-
function changelogFilter() {
1218-
let changelogItems = Array.from(document.querySelectorAll(".changelog-item-title"));
1219-
if (changelogItems.length) {
1220-
let changelogTags = new Set([
1221-
"all_features"
1222-
]);
1223-
changelogItems.map((k)=>{
1224-
JSON.parse(k.dataset.tags).forEach((item)=>changelogTags.add(item));
1225-
});
1226-
changelogTags = Array.from(changelogTags);
1227-
let changelogSelect = document.getElementById("changelog-select");
1228-
changelogTags.map((k)=>{
1229-
let opt = document.createElement('option');
1230-
opt.value = k;
1231-
opt.innerHTML = k;
1232-
changelogSelect.appendChild(opt);
1233-
});
1234-
changelogSelect.addEventListener("change", ()=>{
1235-
let selected = changelogSelect.value;
1236-
changelogItems.map((k)=>{
1237-
if (selected != "all_features" && !k.dataset.tags.includes(selected)) {
1238-
console.log(k.parentElement);
1239-
k.parentElement.style.display = "none";
1240-
} else k.parentElement.style.display = "flex";
1241-
});
1242-
});
1243-
}
1244-
}
12451176

1177+
1178+
// tabs for multiple languages
12461179
},{"@parcel/transformer-js/src/esmodule-helpers.js":"j7FRh"}],"1bdXi":[function(require,module,exports,__globalThis) {
12471180
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
12481181
parcelHelpers.defineInteropFlag(exports);
@@ -1385,6 +1318,8 @@ function filterMultitabQuery() {
13851318
return multitabQuery;
13861319
}
13871320

1321+
1322+
// user feedback thumbsup/down vote
13881323
},{"@parcel/transformer-js/src/esmodule-helpers.js":"j7FRh"}],"c5ZDr":[function(require,module,exports,__globalThis) {
13891324
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
13901325
parcelHelpers.defineInteropFlag(exports);

templates/content_top.hbs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,17 @@
115115
document.documentElement.classList.toggle('dark-theme', mode === "dark");
116116
}
117117
</script>
118+
119+
<!-- add cookie-less analytics (posthog, plausible) -->
120+
<script>
121+
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug getPageViewId captureTraceFeedback captureTraceMetric".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
122+
posthog.init('phc_U8YU0gnIHRNl41B0OwzSHCI56AvA2lz5JDpWDw64Bcu', {
123+
api_host: 'https://us.i.posthog.com',
124+
persistence: 'memory',
125+
person_profiles: 'identified_only',
126+
})
127+
</script>
128+
<script defer data-domain="spinframework.dev" src="https://plausible.io/js/script.outbound-links.pageview-props.tagged-events.js"></script>
118129
</head>
119130

120131
<body class="documentation">

0 commit comments

Comments
 (0)