Files
misode.github.io/src/app/Analytics.ts
Misode a97c21d9de
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Re-add custom page_view event
2025-01-04 20:42:04 +01:00

218 lines
4.3 KiB
TypeScript

import type { ColormapType } from './components/previews/Colormap.js'
import type { VersionId } from './services/index.js'
export type Method = 'menu' | 'hotkey'
export namespace Analytics {
export function pageview(url: string) {
gtag('event', 'page_view', {
page_location: url,
page_title: document.title,
})
}
export function setLocale(locale: string) {
gtag('set', {
locale,
})
}
export function changeLocale(prev_locale: string, locale: string) {
setLocale(locale)
gtag('event', 'change_locale', {
prev_locale,
})
}
export function setTheme(theme: string) {
gtag('set', {
theme,
})
}
export function changeTheme(prev_theme: string, theme: string) {
setTheme(theme)
gtag('event', 'change_theme', {
prev_theme,
})
}
export function setVersion(version: string) {
gtag('set', {
version,
})
}
export function setSelectedVersion(selected_version: string) {
gtag('set', {
selected_version,
})
}
export function changeVersion(prev_version: string, version: string) {
setVersion(version)
gtag('event', 'change_version', {
prev_version,
})
}
export function setGenerator(file_type: string) {
gtag('event', 'use_generator', {
file_type,
})
}
export function setPrefersColorScheme(prefers_color_scheme: string) {
gtag('set', {
prefers_color_scheme,
})
}
export function setTreeViewMode(tree_view_mode: string) {
gtag('set', {
tree_view_mode,
})
}
export function setColormap(colormap: ColormapType) {
gtag('set', {
colormap,
})
}
export function resetGenerator(file_type: string, history: number, method: Method) {
gtag('event', 'reset_generator', {
file_type,
history,
method,
})
}
export function undoGenerator(file_type: string, history: number, method: Method) {
gtag('event', 'undo_generator', {
file_type,
history,
method,
})
}
export function redoGenerator(file_type: string, history: number, method: Method) {
gtag('event', 'redo_generator', {
file_type,
history,
method,
})
}
export function loadPreset(file_type: string, file_name: string) {
gtag('event', 'load_generator_preset', {
file_type,
file_name,
})
}
export function openPreset(file_type: string, file_name: string) {
gtag('event', 'open_generator_preset', {
file_type,
file_name,
})
}
export function createSnippet(file_type: string, snippet_id: string, version: VersionId, data_size: number, compressed_size: number, compression_rate: number) {
gtag('event', 'create_generator_snippet', {
file_type,
snippet_id,
version,
data_size,
compressed_size,
compression_rate,
})
}
export function openSnippet(file_type: string, snippet_id: string, version: VersionId) {
gtag('event', 'open_generator_snippet', {
file_type,
snippet_id,
version,
})
}
export function copyOutput(file_type: string, method: Method) {
gtag('event', 'copy_generator_output', {
file_type,
method,
})
}
export function downloadOutput(file_type: string, method: Method) {
gtag('event', 'download_generator_output', {
file_type,
method,
})
}
export function showOutput(file_type: string, method: Method) {
gtag('event', 'show_generator_output', {
file_type,
method,
})
}
export function hideOutput(file_type: string, method: Method) {
gtag('event', 'hide_generator_output', {
file_type,
method,
})
}
export function showPreview(file_type: string, method: Method) {
gtag('event', 'show_generator_preview', {
file_type,
method,
})
}
export function hidePreview(file_type: string, method: Method) {
gtag('event', 'hide_generator_preview', {
file_type,
method,
})
}
export function showProject(method: Method) {
gtag('event', 'show_project', {
method,
})
}
export function hideProject(method: Method) {
gtag('event', 'hide_project', {
method,
})
}
export function saveProjectFile(method: Method) {
gtag('event', 'save_project_file', {
method,
})
}
export function deleteProjectFile(method: Method) {
gtag('event', 'delete_project_file', {
method,
})
}
export function renameProjectFile(method: Method) {
gtag('event', 'rename_project_file', {
method,
})
}
export function deleteProject(method: Method) {
gtag('event', 'delete_project', {
method,
})
}
}