Skip to content

Commit

Permalink
Merge pull request #118 from PrefectHQ/script
Browse files Browse the repository at this point in the history
Add script.js for docs
  • Loading branch information
discdiver authored Jun 15, 2024
2 parents ced6b76 + f3ce5e9 commit b44e870
Showing 1 changed file with 124 additions and 0 deletions.
124 changes: 124 additions & 0 deletions docs/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
function loadScript(src, onload) {
if (typeof window === 'undefined') return
if (typeof src !== 'string') {
console.error('src must be a string')
return
}

const script = document.createElement('script')
script.src = src
script.async = true

if (typeof onload === 'function') {
script.addEventListener('load', onload)
}

document.head.appendChild(script)
return script
}

// function loadCommonRoom() {
// const url = 'https://cdn.cr-relay.com/v1/site/5c7cdf16-fbc0-4bb8-b39e-a8c6136687b9/signals.js'
// const init = () => {
// window.signals = Object.assign(
// [],
// ['page', 'identify', 'form'].reduce(function (acc, method) {
// acc[method] = function () {
// signals.push([method, arguments])
// return signals
// }
// return acc
// }, {})
// )
// }

// loadScript(url, init)
// }

function loadAmplitude() {
// TODO: Move the key and url to an env var in mintlify
const amplitudeKey = 'c97dd2acbf306ab7bf54aca0aeb7ffa1'
const amplitudeUrl = 'https://api2.amplitude.com/2/httpapi'

const addUrl = (event) => {
const deviceId = amplitude.getDeviceId()
const { href = '' } = event.target
const url = new URL(href)
url.searchParams.set('deviceId', deviceId)
event.target.href = url.toString()
}

const removeUrl = (event) => {
const { href = '' } = event.target
const url = new URL(href)
url.searchParams.delete('deviceId')
event.target.href = url.toString()
}

const urls = [
'https://app.prefect.cloud',
'https://prefect.io',
]

const selector = urls.map((url) => `a[href^="${url}"]`).join(',')

const addDeviceIdToAppLinks = () => {
const elements = document.querySelectorAll(selector)

elements.forEach((element) => {
element.addEventListener('mouseenter', addUrl)
element.addEventListener('mouseleave', removeUrl)
element.addEventListener('focus', addUrl)
element.addEventListener('blur', removeUrl)
element.addEventListener('touchstart', addUrl)
element.addEventListener('touchend', removeUrl)
})
}

function trackPageView() {
amplitude.track(
'Page View: Docs New',
{
'url': window.href,
'title': document.title,
'referrer': document.referrer,
'path': window.location.pathname,
'source': 'controlflow_docs',
'source_detail': 'controlflow_docs'
}
)
}

const init = () => {
amplitude.init(amplitudeKey, undefined, {
useBatch: true,
serverUrl: amplitudeUrl,
attribution: {
disabled: false,
trackNewCampaigns: true,
trackPageViews: true,
resetSessionOnNewCampaign: true,
},
defaultTracking: {
pageViews: {
trackOn: function () { return true },
eventType: "Page View: ControlFlow Docs",
trackHistoryChanges: "all",
},
sessions: false,
formInteractions: true,
fileDownloads: true,
},
})

setTimeout(addDeviceIdToAppLinks)
setTimeout(trackPageView)
}

const url = 'https://cdn.amplitude.com/libs/analytics-browser-2.8.1-min.js.gz'
loadScript(url, init)
}


// loadCommonRoom()
loadAmplitude()

0 comments on commit b44e870

Please sign in to comment.