Spaces:
Running
Running
Update index.html
Browse files- index.html +11 -22
index.html
CHANGED
|
@@ -116,9 +116,16 @@
|
|
| 116 |
|
| 117 |
// --- Rendering ---
|
| 118 |
const calculateDaysUntil = (examDate) => {
|
| 119 |
-
const
|
| 120 |
-
|
| 121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
};
|
| 123 |
|
| 124 |
const renderExams = (exams) => {
|
|
@@ -138,7 +145,7 @@
|
|
| 138 |
<h3 class="exam-name">${exam.name}</h3>
|
| 139 |
<div class="countdown" style="color: ${color};">${daysUntil}</div>
|
| 140 |
<div class="countdown-label">days remaining</div>
|
| 141 |
-
<div class="exam-date">${new Date(exam.date).toLocaleDateString('en-
|
| 142 |
|
| 143 |
card.querySelector('.delete-btn').addEventListener('click', () => deleteExam(exam.id));
|
| 144 |
elements.examsGrid.appendChild(card);
|
|
@@ -155,24 +162,6 @@
|
|
| 155 |
}
|
| 156 |
elements.particlesContainer.innerHTML = particleHtml;
|
| 157 |
};
|
| 158 |
-
|
| 159 |
-
// ===================================================================================
|
| 160 |
-
// START: ONE-TIME MANUAL IMPORT FUNCTION
|
| 161 |
-
// TO USE: Open developer console (F12) and type `runManualImport()` then press Enter.
|
| 162 |
-
// AFTER RUNNING ONCE, DELETE THIS ENTIRE FUNCTION FROM YOUR CODE.
|
| 163 |
-
// ===================================================================================
|
| 164 |
-
window.runManualImport = function() {
|
| 165 |
-
const data = [{"name":"NSEA","date":"2025-11-22"},{"name":"NSEP","date":"2025-11-23"},{"name":"IMO ","date":"2025-11-28"},{"name":"NSO ","date":"2025-12-11"},{"name":"IEO ","date":"2025-11-26"},{"name":"Mathematics Boards","date":"2026-02-17"},{"name":"Science Boards","date":"2026-02-25"},{"name":"ISSO ","date":"2025-11-20"},{"name":"Periodic Test 2","date":"2025-11-03"},{"name":"Pre-Boards 2 ","date":"2026-01-19"},{"name":"Pre-Boards 1","date":"2025-12-29"},{"name":"English Boards","date":"2026-02-21"},{"name":"IT Boards","date":"2026-02-27"},{"name":"Hindi Boards","date":"2026-03-02"},{"name":"Social Science Boards","date":"2026-03-07"}];
|
| 166 |
-
console.log(`Starting import of ${data.length} exams...`);
|
| 167 |
-
const promises = data.map(exam => push(examsRef, { name: exam.name, date: exam.date }));
|
| 168 |
-
Promise.all(promises)
|
| 169 |
-
.then(() => alert(`Successfully imported ${data.length} exams to Firebase.`))
|
| 170 |
-
.catch(err => console.error("IMPORT FAILED:", err));
|
| 171 |
-
};
|
| 172 |
-
// ===================================================================================
|
| 173 |
-
// END OF IMPORT FUNCTION - REMOVE AFTER USE
|
| 174 |
-
// ===================================================================================
|
| 175 |
-
|
| 176 |
// --- App Initialization ---
|
| 177 |
createParticles();
|
| 178 |
elements.examDateInput.min = new Date().toISOString().split('T')[0];
|
|
|
|
| 116 |
|
| 117 |
// --- Rendering ---
|
| 118 |
const calculateDaysUntil = (examDate) => {
|
| 119 |
+
const now = new Date();
|
| 120 |
+
const todayIST = new Date(now.toLocaleString('en-US', { timeZone: 'Asia/Kolkata' }));
|
| 121 |
+
todayIST.setHours(0, 0, 0, 0);
|
| 122 |
+
|
| 123 |
+
const targetDate = new Date(examDate);
|
| 124 |
+
// The date from the input is already in the user's local timezone,
|
| 125 |
+
// but we treat it as a date in IST for calculation.
|
| 126 |
+
const targetDateIST = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate());
|
| 127 |
+
|
| 128 |
+
return Math.ceil((targetDateIST - todayIST) / 86400000); // 1000*60*60*24
|
| 129 |
};
|
| 130 |
|
| 131 |
const renderExams = (exams) => {
|
|
|
|
| 145 |
<h3 class="exam-name">${exam.name}</h3>
|
| 146 |
<div class="countdown" style="color: ${color};">${daysUntil}</div>
|
| 147 |
<div class="countdown-label">days remaining</div>
|
| 148 |
+
<div class="exam-date">${new Date(exam.date).toLocaleDateString('en-IN', { timeZone: 'Asia/Kolkata', weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}</div>`;
|
| 149 |
|
| 150 |
card.querySelector('.delete-btn').addEventListener('click', () => deleteExam(exam.id));
|
| 151 |
elements.examsGrid.appendChild(card);
|
|
|
|
| 162 |
}
|
| 163 |
elements.particlesContainer.innerHTML = particleHtml;
|
| 164 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 165 |
// --- App Initialization ---
|
| 166 |
createParticles();
|
| 167 |
elements.examDateInput.min = new Date().toISOString().split('T')[0];
|