Files
Crapfixer/docs/log-analyzer/index.html
T
Peter 1a76d1380f style: improve code formatting and readability in HTML and Markdown files
Refactor HTML and Markdown files to enhance readability by fixing indentation, line breaks, and spacing. No functional changes were made, only formatting improvements.
2025-05-18 00:26:00 +10:00

232 lines
7.0 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Crapfixer Log Analyzer</title>
<style>
/* ---------- Basic Styles ---------- */
body {
font-family: "Courier New", Courier, monospace;
margin: 0;
background: #f0f0f0;
color: #333;
}
header {
background: #4d4d4d;
color: white;
padding: 1rem;
display: flex;
justify-content: space-between;
align-items: center;
}
header h1 {
margin: 0;
font-size: 1.5rem;
}
/* ---------- Top-right Links ---------- */
.actions a {
color: white;
margin-left: 1rem;
text-decoration: none;
font-size: 0.9rem;
background: #444;
padding: 0.3rem 0.6rem;
border-radius: 4px;
transition: background 0.3s;
}
.actions a:hover {
background: #666;
}
/* ---------- Layout ---------- */
main {
padding: 2rem;
max-width: 800px;
margin: auto;
}
textarea {
width: 100%;
height: 200px;
font-family: monospace;
padding: 1rem;
border: 1px solid #ccc;
background: #fff;
border-radius: 5px;
resize: vertical;
}
button {
margin-top: 1rem;
padding: 0.5rem 1rem;
font-size: 1rem;
border: none;
background: #1565c0;
color: white;
cursor: pointer;
border-radius: 4px;
margin-right: 0.5rem;
}
button:hover {
background: #0d47a1;
}
/* ---------- Results Section ---------- */
.result {
background: white;
border: 1px solid #ddd;
padding: 1rem;
margin-top: 2rem;
border-radius: 5px;
}
.issue {
color: #c62828;
margin-bottom: 0.5rem;
}
.key {
color: #37474f;
font-family: monospace;
}
.plugin {
color: #1565c0;
margin-bottom: 0.3rem;
}
.btn-group {
margin-top: 1rem;
}
</style>
</head>
<body>
<!-- ---------- HEADER SECTION ---------- -->
<header>
<h1>🧠 Crapfixer Log Analyzer</h1>
<div class="actions">
<a href="https://github.com/builtbybel/Crapfixer" target="_blank">GitHub</a>
<a href="https://www.paypal.com/donate/?hosted_button_id=M9DW4VNKH9ECQ" target="_blank"
>PayPal</a
>
<a href="https://ko-fi.com/builtbybel" target="_blank">Ko-fi</a>
</div>
</header>
<!-- ---------- MAIN CONTENT ---------- -->
<main>
<p><strong>How it works:</strong></p>
<ol>
<li>Run the analysis in Crapfixer and <strong>copy the full log</strong>.</li>
<li>Paste it into the box below.</li>
<li>Click <strong>Analyze</strong> to get results.</li>
</ol>
<!-- ---------- LOG INPUT ---------- -->
<textarea id="logInput" placeholder="Drop your Crapfixer log here..."></textarea>
<!-- ---------- BUTTONS ---------- -->
<div class="btn-group">
<button onclick="analyzeLog()">🔍 Analyze</button>
<button onclick="copyResult()">📋 Copy to Clipboard</button>
<button onclick="captureResult()">📸 Take Screenshot</button>
<button onclick="shareResult()">📤 Share</button>
<button onclick="shareOnTwitter()">🐦 Share on X</button>
</div>
<!-- ---------- OUTPUT AREA ---------- -->
<div class="result" id="output"></div>
</main>
<!-- ---------- JAVASCRIPT SECTION ---------- -->
<script>
// Analyze the pasted log and extract issues, registry keys, and plugin info
function analyzeLog() {
const log = document.getElementById("logInput").value;
const output = document.getElementById("output");
const lines = log.split("\n");
const issues = lines.filter((line) => line.startsWith("❌"));
const regKeys = lines.filter((line) => line.includes("HKEY_") || line.includes("➤"));
const plugins = lines.filter((line) => line.match(/Plugin ready: .*\.ps1/i));
output.innerHTML = `
<h3>🧪 Found ${issues.length} issues</h3>
<div>${issues.map((i) => `<div class="issue">${i}</div>`).join("")}</div>
<hr>
<h3>🗂 Registry Keys</h3>
<div>${regKeys.map((k) => `<div class="key">${k}</div>`).join("")}</div>
<hr>
<h3>📦 Loaded Plugins</h3>
<div>${plugins.map((p) => `<div class="plugin">${p}</div>`).join("")}</div>
`;
}
// Copy output text to clipboard
function copyResult() {
const output = document.getElementById("output");
if (!output.innerText.trim()) return alert("No results to copy yet.");
navigator.clipboard
.writeText(output.innerText)
.then(() => alert("Results copied to clipboard!"));
}
// Save screenshot of the output section
function captureResult() {
html2canvas(document.getElementById("output")).then((canvas) => {
const link = document.createElement("a");
link.download = "crapfixer-results.png";
link.href = canvas.toDataURL();
link.click();
});
}
// Native share (for mobile browsers)
function shareResult() {
const text = document.getElementById("output").innerText;
if (navigator.share) {
navigator
.share({
title: "Crapfixer Analysis Results",
text: text,
})
.catch((err) => console.log("Share failed:", err));
} else {
alert("Sharing is not supported by your browser.");
}
}
// Share the result as an image on Twitter/X
function shareOnTwitter() {
const outputEl = document.getElementById("output");
if (!outputEl.innerText.trim()) return alert("No results to share yet.");
// Create screenshot from result div
html2canvas(outputEl).then((canvas) => {
const dataUrl = canvas.toDataURL("image/png");
// Convert image to base64 string (can't upload directly to Twitter)
// Instead, show preview and user uploads manually via prompt
const win = window.open();
win.document.write(`<h2>📷 Screenshot ready for X / Twitter</h2>`);
win.document.write(
`<p>Right-click the image below and save it to upload on Twitter manually.</p>`
);
win.document.write(
`<img src="${dataUrl}" style="max-width:100%;border:1px solid #ccc;" />`
);
win.document.write(
`<p><a href="https://twitter.com/intent/tweet?text=Check%20out%20my%20Crapfixer%20analysis!&hashtags=crapfixer,loganalyzer" target="_blank">➡️ Click here to post on X</a></p>`
);
});
}
</script>
<!-- ---------- HTML2CANVAS LIBRARY FOR SCREENSHOTS ---------- -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
</body>
</html>