diff --git a/static/Back-to-top.png b/static/Back-to-top.png
new file mode 100644
index 00000000..b44e336a
Binary files /dev/null and b/static/Back-to-top.png differ
diff --git a/static/script.js b/static/script.js
index 8123c424..876e3b30 100644
--- a/static/script.js
+++ b/static/script.js
@@ -188,6 +188,35 @@ var githubInput = document.getElementById('github-username');
var errorMsg = document.getElementById('github-modal-error');
+/* ---- Scroll-to-top button ---- */
+
+var scrollBtn = document.querySelector(".back-to-top");
+
+if (scrollBtn) {
+
+ // Show the button after scrolling down 300px
+ window.addEventListener("scroll", function () {
+
+ if (window.scrollY > 300) {
+ scrollBtn.style.display = "block";
+ } else {
+ scrollBtn.style.display = "none";
+ }
+
+ });
+
+ scrollBtn.addEventListener("click", function () {
+
+ window.scrollTo({
+ top: 0,
+ behavior: "smooth"
+ });
+
+ });
+
+}
+
+
// ============================================================
// Mobile navigation toggle (runs on all pages)
// ============================================================
@@ -705,53 +734,23 @@ if (isIndexPage) {
setLoadingState(true);
- requestAnimationFrame(function () {
+ renderResults(data.projects || [], data.message);
+ })
+ .catch(function () {
- var payload = {
- skills: skillsHidden.value.trim() || skillsTextInput.value.trim(),
- level: document.getElementById("level").value,
- interest: document.getElementById("interest").value,
- time: document.getElementById("time").value
- };
+ setLoadingState(false);
- fetch("/api/recommend", {
- method: "POST",
- headers: {
- "Content-Type": "application/json"
- },
- body: JSON.stringify(payload)
- })
- .then(function (res) {
- return res.json();
- })
- .then(function (data) {
-
- setLoadingState(false);
-
- if (data.error) {
var generalErr = document.getElementById("form-error-general");
+
if (generalErr) {
- generalErr.textContent = data.error;
+ generalErr.textContent =
+ "Something went wrong. Please try again.";
}
- return;
- }
-
- renderResults(data.projects || [], data.message);
- })
- .catch(function (err) {
-
- setLoadingState(false);
-
- var generalErr = document.getElementById("form-error-general");
+ });
- if (generalErr) {
- generalErr.textContent =
- "Something went wrong. Please try again.";
- }
+ });
- console.error("API request failed:", err);
- });
});
});
@@ -802,8 +801,9 @@ if (isIndexPage) {
// Clear out any cards from a previous search before showing new ones
resultsGrid.innerHTML = "";
- if (!projects || projects.length === 0) {
- resultsGrid.style.display = "none";
+
+ if (!projects || projects.length === 0) { //if no projects returned from api, show the "no results" message and hide the grid
+ resultsGrid.style.display = "none";
resultsEmptyEl.style.display = "block";
// Show a friendly custom message when the user selected an interest
@@ -1396,60 +1396,3 @@ updateRoadmapProgress();
});
} // end github modal handlers
-
-// ============================================================
-// SCROLL NAVIGATION BUTTON (runs on all pages)
-// ============================================================
-(function () {
- var SCROLL_THRESHOLD = 200;
- var scrollTopBtn = document.getElementById('scroll-top-btn');
- var scrollBtnIcon = document.getElementById('scroll-btn-icon');
- var atBottom = false;
-
- var ARROW_UP = '