From 9f7824825c2c7b80f1213fe824d09e951cb6e940 Mon Sep 17 00:00:00 2001 From: hiep200311 Date: Wed, 24 Jun 2026 16:22:14 +0700 Subject: [PATCH] Move CSS/JS assets from static/ into views/ feature folders Co-locate each feature's CSS and JS alongside its HTML template. Remove the standalone static/ directory entirely. --- static/header/header.html | 28 -- static/header/headerLoader.js | 244 ------------------ .../scraperZLibraryMain.css | 0 .../scraperZLibraryMain.js | 0 .../transcriptionPages/transcriptionMain.css | 0 .../transcriptionPages/transcriptionMain.js | 0 .../transcriptionReview.css | 0 .../transcriptionPages/transcriptionReview.js | 0 8 files changed, 272 deletions(-) delete mode 100644 static/header/header.html delete mode 100644 static/header/headerLoader.js rename {static => views}/scraperZLibraryPages/scraperZLibraryMain.css (100%) rename {static => views}/scraperZLibraryPages/scraperZLibraryMain.js (100%) rename {static => views}/transcriptionPages/transcriptionMain.css (100%) rename {static => views}/transcriptionPages/transcriptionMain.js (100%) rename {static => views}/transcriptionPages/transcriptionReview.css (100%) rename {static => views}/transcriptionPages/transcriptionReview.js (100%) diff --git a/static/header/header.html b/static/header/header.html deleted file mode 100644 index 71979b9..0000000 --- a/static/header/header.html +++ /dev/null @@ -1,28 +0,0 @@ - -
- -
diff --git a/static/header/headerLoader.js b/static/header/headerLoader.js deleted file mode 100644 index 22bed52..0000000 --- a/static/header/headerLoader.js +++ /dev/null @@ -1,244 +0,0 @@ -// static/header/headerLoader.js -(function () { - "use strict"; - - // Configuration - const CONFIG = { - headerPath: "/static/header/header.html", - insertPosition: "afterbegin", - containerSelector: "body", - activeClass: "active", - version: "1.0", - }; - - const styles = ` - - `; - - - - // Load header function - async function loadHeader() { - try { - // Fetch header HTML - const response = await fetch(`${CONFIG.headerPath}?v=${CONFIG.version}`); - - if (!response.ok) { - throw new Error(`Failed to load header: ${response.status}`); - } - - const headerHTML = await response.text(); - - // Inject styles if not already present - if (!document.getElementById("header-component-styles")) { - document.head.insertAdjacentHTML("beforeend", styles); - } - - // Insert header - const container = document.querySelector(CONFIG.containerSelector); - container.insertAdjacentHTML(CONFIG.insertPosition, headerHTML); - - // Highlight active link - highlightActiveLink(); - - console.log("✅ Header component loaded v" + CONFIG.version); - } catch (error) { - console.error("❌ Error loading header:", error); - createFallbackHeader(); - } - } - - // Highlight current page link - function highlightActiveLink() { - const currentPath = window.location.pathname; - const links = document.querySelectorAll(".nav-link"); - - links.forEach((link) => { - const href = link.getAttribute("href"); - - // Check if current path matches - if ( - currentPath === href || - (href !== "/" && currentPath.startsWith(href)) - ) { - link.classList.add(CONFIG.activeClass); - } - - // Special case for root - if (currentPath === "/" && href === "/transcription") { - link.classList.add(CONFIG.activeClass); - } - }); - } - - // Fallback header in case of error - function createFallbackHeader() { - const fallback = document.createElement("div"); - fallback.style.cssText = ` - padding: 15px 20px; - background: #fff; - border-bottom: 1px solid #e0e0e0; - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 1000; - `; - fallback.innerHTML = ` -
- 📝 Phiên Âm - 📚 Z-Library Scraper -
- `; - document.body.insertAdjacentElement("afterbegin", fallback); - document.body.style.paddingTop = "50px"; - } - - // Initialize when DOM is ready - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", loadHeader); - } else { - loadHeader(); - } -})(); diff --git a/static/scraperZLibraryPages/scraperZLibraryMain.css b/views/scraperZLibraryPages/scraperZLibraryMain.css similarity index 100% rename from static/scraperZLibraryPages/scraperZLibraryMain.css rename to views/scraperZLibraryPages/scraperZLibraryMain.css diff --git a/static/scraperZLibraryPages/scraperZLibraryMain.js b/views/scraperZLibraryPages/scraperZLibraryMain.js similarity index 100% rename from static/scraperZLibraryPages/scraperZLibraryMain.js rename to views/scraperZLibraryPages/scraperZLibraryMain.js diff --git a/static/transcriptionPages/transcriptionMain.css b/views/transcriptionPages/transcriptionMain.css similarity index 100% rename from static/transcriptionPages/transcriptionMain.css rename to views/transcriptionPages/transcriptionMain.css diff --git a/static/transcriptionPages/transcriptionMain.js b/views/transcriptionPages/transcriptionMain.js similarity index 100% rename from static/transcriptionPages/transcriptionMain.js rename to views/transcriptionPages/transcriptionMain.js diff --git a/static/transcriptionPages/transcriptionReview.css b/views/transcriptionPages/transcriptionReview.css similarity index 100% rename from static/transcriptionPages/transcriptionReview.css rename to views/transcriptionPages/transcriptionReview.css diff --git a/static/transcriptionPages/transcriptionReview.js b/views/transcriptionPages/transcriptionReview.js similarity index 100% rename from static/transcriptionPages/transcriptionReview.js rename to views/transcriptionPages/transcriptionReview.js