Add google analytics support
Add code to track performance metrics and events (password calculation).
This commit is contained in:
1 parent
6c6c02da4e
commit
d9bf30765f
12 files changed
+139
-11
No files matched your search
@@ -1,6 +1,5 @@
|
||||
import { keygen, KeygenResult } from "./keygen";
|
||||
|
||||
/// <reference types="dom" />
|
||||
import { gtag } from "./googleAnalytics";
|
||||
import { keygen, KeygenResult, solvers } from "./keygen";
|
||||
|
||||
let form = document.getElementById("form_id") as HTMLFormElement;
|
||||
let serialInput = document.getElementById("serial_id") as HTMLInputElement;
|
||||
@@ -11,10 +10,10 @@ let answerElement = document.getElementById("answer") as HTMLDivElement;
|
||||
function renderResult(results: KeygenResult[]): void {
|
||||
let table = document.createElement("table");
|
||||
table.classList.add("answer_table");
|
||||
results.forEach(([solver, passwords]) => {
|
||||
results.forEach(([solver, passwords, _]) => {
|
||||
let trElem = document.createElement("tr");
|
||||
let tdNameElem = document.createElement("td");
|
||||
tdNameElem.appendChild(document.createTextNode(solver.biosName));
|
||||
tdNameElem.appendChild(document.createTextNode(solver.description));
|
||||
trElem.appendChild(tdNameElem);
|
||||
let tdElem = document.createElement("td");
|
||||
passwords.forEach((pwd, index) => {
|
||||
@@ -29,6 +28,31 @@ function renderResult(results: KeygenResult[]): void {
|
||||
answerElement.appendChild(table);
|
||||
}
|
||||
|
||||
function trackResult(serial: string): KeygenResult[] {
|
||||
let result = keygen(serial);
|
||||
if (GOOGLE_ANALYTICS_TAG) {
|
||||
let eventParams: {[key: string]: boolean} = {};
|
||||
solvers.forEach((solver) => {
|
||||
eventParams[solver.biosName] = false;
|
||||
});
|
||||
|
||||
result.forEach(([solver, _, time]) => {
|
||||
eventParams[solver.biosName] = true;
|
||||
|
||||
// send calculation timing report
|
||||
gtag("event", "timing_complete", {
|
||||
"name": "bios_keygen",
|
||||
"value": Math.round(time),
|
||||
"event_category": solver.biosName
|
||||
});
|
||||
});
|
||||
|
||||
// send event about calculation
|
||||
gtag("event", "bios_keygen", eventParams);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
form.addEventListener("submit", (event) => {
|
||||
if (event.preventDefault) {
|
||||
event.preventDefault();
|
||||
@@ -36,7 +60,7 @@ form.addEventListener("submit", (event) => {
|
||||
event.returnValue = false;
|
||||
}
|
||||
answerElement.innerHTML = ""; // remove old table
|
||||
let results = keygen(serialInput.value);
|
||||
let results = trackResult(serialInput.value);
|
||||
if (results.length > 0) {
|
||||
tryThis.style.display = "";
|
||||
dellNote.style.display = "";
|
||||
|
||||
Reference in new issue
Block a user