Spaces:
Sleeping
Sleeping
File size: 5,724 Bytes
5210a5e ec85693 5210a5e ec85693 5210a5e ec85693 5210a5e ec85693 5210a5e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Past Analyzes - CTRL + ALT + HEAL</title>
<script src="https://cdn.tailwindcss.com"></script>
<!--Shared helpers (API base + query params) -->
<script src="script.js"></script>
</head>
<body class="bg-[#F7F8F9] min-h-screen">
<nav class="bg-white border border-gray-200 px-6 py-4 mb-8">
<div class="container mx-auto flex justify-between items-center">
<a href="index.html" class="text-2xl font-bold text-[#6B9080]">CTRL + ALT + HEAL</a>
<ul class="flex space-x-6 text-sm font-medium text-gray-700">
<li><a href="index.html" class="hover:text-[#6B9080]">Home</a></li>
<li><a href="analyzer.html" class="hover:text-[#6B9080]">Analyzer</a></li>
<li><a href="past_data.html" class="hover:text-[#6B9080]">Past Reports</a></li>
<li><a href="profile.html" class="hover:text-[#6B9080]">Profile</a></li>
<li id="authNavItem"><a href="login.html" class="hover:text-[#6B9080]">Login</a></li>
</ul>
</div>
</nav>
<main class="max-w-4xl mx-auto px-4">
<h1 class="text-2xl font-bold text-green-700 mb-4">Your Past Analyzes</h1>
<p id="auth-status" class="text-sm text-gray-500 mb-6">Checking sign-in status…</p>
<div id="recs-container" class="space-y-4">
<p class="text-sm text-gray-500">Sign in to view your saved analyzes.</p>
</div>
</main>
<script type="module">
import { getFirestore, collection, query, orderBy, getDocs } from 'https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js';
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js';
import { getAuth, onAuthStateChanged, signOut } from 'https://www.gstatic.com/firebasejs/9.22.0/firebase-auth.js';
const firebaseConfig = {
apiKey: "AIzaSyAPhM_Ee7cLzyKHs5zyFy8g5ZOk9-pubRI",
authDomain: "login-tutorial-7a9e1.firebaseapp.com",
projectId: "login-tutorial-7a9e1",
storageBucket: "login-tutorial-7a9e1.firebasestorage.app",
messagingSenderId: "491093197824",
appId: "1:491093197824:web:9f866..."
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
const db = getFirestore(app);
// Update navigation based on auth state
onAuthStateChanged(auth, (user) => {
const authNavItem = document.getElementById('authNavItem');
if (user) {
// User is logged in - show logout
authNavItem.innerHTML = '<button onclick="logout()" class="hover:text-[#6B9080] text-red-600">Logout</button>';
} else {
// User is logged out - show login
authNavItem.innerHTML = '<a href="login.html" class="hover:text-[#6B9080]">Login</a>';
}
});
// Logout function
window.logout = async () => {
try {
await signOut(auth);
localStorage.clear();
window.location.href = 'login.html';
} catch (error) {
console.error("Error signing out:", error);
}
};
const statusEl = document.getElementById("auth-status");
const recsEl = document.getElementById("recs-container");
function renderAnalysis(item) {
const d = item.createdAt && item.createdAt.toDate ? item.createdAt.toDate().toLocaleString() : "";
return `
<div class="bg-white border border-gray-200 rounded-lg p-4 shadow">
<div class="flex justify-between mb-2">
<div class="font-semibold text-green-700">Report: ${item.reportDate || "N/A"}</div>
<div class="text-xs text-gray-500">${d}</div>
</div>
<pre class="whitespace-pre-wrap text-sm text-gray-700 mb-2">${item.ocr_text || ""}</pre>
${(Array.isArray(item.resolutions) ? item.resolutions : []).map((r,i) => `
<div class="border-t border-gray-200 pt-2 mt-2">
<div class="font-medium">Finding ${i+1}: ${r.findings || ""}</div>
<div class="text-sm text-gray-600">Severity: ${r.severity || ""}</div>
<div class="text-sm text-gray-600">Recommendations: ${(r.recommendations || []).join(", ")}</div>
</div>
`).join("")}
</div>
`;
}
onAuthStateChanged(auth, async (user) => {
if (user) {
statusEl.textContent = `Signed in as ${user.email || user.uid}`;
/*const q = query(
collection(db, "users", user.uid, "analyses"),
orderBy("createdAt", "desc")
);
const snap = await getDocs(q);*/
async function getPastReports() {
try {
const url = api('reports/', { user_id: user.email });
const response = await fetch(url, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
console.log('Report successfully sent to backend:', data);
recsEl.innerHTML = data.map(doc => renderAnalysis(doc)).join("");
} catch (error) {
console.error('Error sending report to backend:', error);
recsEl.innerHTML = '<p class="text-sm text-gray-500">No saved analyses yet.</p>';
}
}
getPastReports();
} else {
statusEl.textContent = "Not signed in.";
recsEl.innerHTML = '<p class="text-sm text-gray-500">Please sign in to see your analyses.</p>';
}
});
</script>
</body>
</html>
|