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>