From 5a96d03a0eacac4b4724c5b43d1ad1eb122e1e4e Mon Sep 17 00:00:00 2001
From: Gabriel Copat <copatg@cardiff.ac.uk>
Date: Fri, 24 Nov 2023 17:05:58 -0300
Subject: [PATCH] Refactored some files, testing out some javascript, jquery
 and ajax

---
 html-ideas/home.html                          |  78 ------------------
 .../Webpages/WebpageController.java           |  14 ++++
 .../main/resources/static}/css/style.css      |  70 ++++++++--------
 .../main/resources/static}/images/badges.png  | Bin
 .../main/resources/static}/images/stats.png   | Bin
 .../main/resources/static}/images/trails.jpg  | Bin
 .../resources/static/scripts/gabScripts.js    |  16 ++++
 .../templates/fragments/temp_frags.html       |  36 ++++++++
 src/main/resources/templates/home.html        |  52 ++++++++++++
 9 files changed, 153 insertions(+), 113 deletions(-)
 delete mode 100644 html-ideas/home.html
 rename {html-ideas => src/main/resources/static}/css/style.css (81%)
 rename {html-ideas => src/main/resources/static}/images/badges.png (100%)
 rename {html-ideas => src/main/resources/static}/images/stats.png (100%)
 rename {html-ideas => src/main/resources/static}/images/trails.jpg (100%)
 create mode 100644 src/main/resources/static/scripts/gabScripts.js
 create mode 100644 src/main/resources/templates/fragments/temp_frags.html
 create mode 100644 src/main/resources/templates/home.html

diff --git a/html-ideas/home.html b/html-ideas/home.html
deleted file mode 100644
index 5a576891..00000000
--- a/html-ideas/home.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <title>Website Web</title>
-    <link rel="stylesheet" href="./css/style.css">
-</head>
-
-<body>
-    <header>
-        <h1 class="header1">SMART-TOWNS</h1>
-    </header>
-
-    <main>
-        <div class="mainTrails">
-            <img src="./images/trails.jpg" alt="Trails" class="background">
-            <div class="bannerText">
-                <h1 class="bigTitle">Smart Town Trails</h1>
-                <h2 class="smallTitle">Information about trails for your town</h2>
-            </div>
-        </div>
-
-        <div class="trailList">
-            <ul class="ulHeader">
-                <li class="liHeader">Trail 1</li>
-                <li class="selected">Trail 2</li>
-                <li class="liHeader">Trail 3</li>
-                <li class="liHeader">Trail 4</li>
-            </ul>
-        </div>
-
-      <section class="mainBlock">
-        <article class="trailStats">
-            <h1 class="titleH1">Trail Stats</h1>
-            <img src="images/stats.png" alt="Stats" class="stats">
-            <div class="textStats">
-                <p><b>Explored:</b> 60%</p>
-                <p><b>Landmarks Visited:</b> 3/5</p>
-                <p><b>Shops Visited:</b> 6/10</p>
-            </div>
-        </article>
-        <article class="trailInfo">
-            <h1 class="titleH1">Trail Info</h1>
-            <p class="trailInfoTxt">Lorem ipsum dolor sit amet,
-                 consectetur adipiscing elit, 
-                 sed do eiusmod tempor incididunt ut labore et 
-                 dolore magna aliqua. Ut enim ad minim veniam, 
-                 quis nostrud exercitation ullamco laboris nisi 
-                 ut aliquip ex ea commodo consequat. 
-                 Duis aute irure dolor in reprehenderit in 
-                 voluptate velit esse cillum dolore eu fugiat 
-                 nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
-        </article>
-        <article class="badgesBlock">
-            <h1 class="titleH1">Badges</h1>
-            <div class="badgesList">
-                <img src="images/badges.png" alt="Badge" class="badgeImg">
-                <img src="images/badges.png" alt="Badge" class="badgeImg">
-                <img src="images/badges.png" alt="Badge" class="badgeImg">
-                <img src="images/badges.png" alt="Badge" class="badgeImg">
-                <img src="images/badges.png" alt="Badge" class="badgeImg">
-            </div>
-            
-          </article>  
-      </section>
-    </main>
-
-    <footer>
-        <ul class="footerBar">
-            <li class="footerButton">Home</li>
-            <li class="footerButton">About</li>
-            <li class="footerButton">Map</li>
-            <li class="footerButton">Facilities</li>
-            <li class="footerButton">Search</li>
-        </ul>
-    </footer>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/Team5/SmartTowns/Webpages/WebpageController.java b/src/main/java/Team5/SmartTowns/Webpages/WebpageController.java
index 9b6e9d2d..ba532c16 100644
--- a/src/main/java/Team5/SmartTowns/Webpages/WebpageController.java
+++ b/src/main/java/Team5/SmartTowns/Webpages/WebpageController.java
@@ -1,7 +1,10 @@
 package Team5.SmartTowns.Webpages;
 
 
+import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.stereotype.Controller;
 @Controller
@@ -26,6 +29,17 @@ public class WebpageController {
         return modelAndView;
     }
 
+    @GetMapping("/home")
+    public ModelAndView getHome(){
+        ModelAndView modelAndView = new ModelAndView("home");
+        return modelAndView;
+    }
+
+    @RequestMapping(value="/test_ajax_frag", method=RequestMethod.POST)
+    public String sendHtmlFragment(Model map) {
+        //map.addAttribute("foo", "bar");
+        return "fragments/temp_frags.html :: trailInfo2";
+    }
 
 
 
diff --git a/html-ideas/css/style.css b/src/main/resources/static/css/style.css
similarity index 81%
rename from html-ideas/css/style.css
rename to src/main/resources/static/css/style.css
index 8cc7e31d..c116f655 100644
--- a/html-ideas/css/style.css
+++ b/src/main/resources/static/css/style.css
@@ -10,11 +10,11 @@ body {
     background-color: rgb(41, 41, 41);
     margin: 0%;
 }
-header {
+.headerBlock {
     background-color: rgb(15, 15, 15);
     padding-bottom: 20px;
     box-shadow: 0 10px 20px black;
-    .header1 {
+    .headerTitle {
         text-align: center;
         padding: 10px 10px 0 10px;
         margin: 0 50px 0 50px;    
@@ -25,48 +25,48 @@ header {
         text-shadow: black 3px 3px 5px;
         border-bottom: 3px blueviolet solid;
     }
+    .headerBanner {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        overflow: hidden;
+        position: relative;
+        height: 200px;
+        border-top: grey solid 2px;
+        border-bottom: grey solid 2px;
+
+        .bannerBack {
+            opacity: 0.6;
+            width: 100%;
+            left: 0;
+            top: 0;
+            position: absolute
+        }
+        .bigTitle {
+            color:white;
+            text-align: center;
+            position: relative;
+            font-size: 50px;
+            margin: 20px 20px 5px;
+        }
+        .smallTitle {
+            position: relative;
+            color:white;
+            text-align: center;
+            font-size: 20px;
+            margin: 5px 20px 20px;
+        }
+    }
 }
 
 
+
 .mainTrails{
     overflow: hidden;
     position: relative;
     height: 200px;
     border-top: grey solid 2px;
     border-bottom: grey solid 2px;
-    
-    
-    .background {
-        opacity: 0.6;
-        width: 100%;
-        left: 0;
-        top: 0;
-        position: absolute
-    
-    }
-    .bannerText{
-        position: absolute;
-        top:20%;
-        margin:0;
-        padding:0;
-        transform: translateX(25%);
-    }
-    .bigTitle {
-        color:white;
-        text-align: center;
-        position: relative;
-        font-size: 50px;
-        margin: 20px;
-        margin-bottom: 5px;
-    }
-    .smallTitle {
-        position: relative;
-        color:white;
-        text-align: center;
-        font-size: 20px;
-        margin: 20px;
-        margin-top: 5px;
-    }
 }
 .trailList {
     .ulHeader {
diff --git a/html-ideas/images/badges.png b/src/main/resources/static/images/badges.png
similarity index 100%
rename from html-ideas/images/badges.png
rename to src/main/resources/static/images/badges.png
diff --git a/html-ideas/images/stats.png b/src/main/resources/static/images/stats.png
similarity index 100%
rename from html-ideas/images/stats.png
rename to src/main/resources/static/images/stats.png
diff --git a/html-ideas/images/trails.jpg b/src/main/resources/static/images/trails.jpg
similarity index 100%
rename from html-ideas/images/trails.jpg
rename to src/main/resources/static/images/trails.jpg
diff --git a/src/main/resources/static/scripts/gabScripts.js b/src/main/resources/static/scripts/gabScripts.js
new file mode 100644
index 00000000..3053fc23
--- /dev/null
+++ b/src/main/resources/static/scripts/gabScripts.js
@@ -0,0 +1,16 @@
+function selectTrail(string, element) {
+ console.log('Clicked')
+ let listEl = document.getElementsByClassName('liHeader')
+ for (let i = 0; i < listEl.length; i++) {
+  listEl[i].classList.remove('selected')
+ }
+ document.getElementById(string).classList.add("selected")
+
+}
+
+function updateOutput() {
+ $.post("test_ajax_frag").done(function (fragment) {
+  console.log(fragment);
+  $("#trailInfoBox").replaceWith(fragment);
+ });
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/fragments/temp_frags.html b/src/main/resources/templates/fragments/temp_frags.html
new file mode 100644
index 00000000..e2bd9778
--- /dev/null
+++ b/src/main/resources/templates/fragments/temp_frags.html
@@ -0,0 +1,36 @@
+<header th:fragment="header" class="headerBlock">
+    <h1 class="headerTitle">SMART-TOWNS</h1>
+    <div class="headerBanner">
+        <img src="images/trails.jpg" alt="Trails" class="bannerBack">
+<!--        <div class="bannerText">-->
+            <h1 class="bigTitle">Smart Town Trails</h1>
+            <h2 class="smallTitle">Information about trails for your town</h2>
+<!--        </div>-->
+    </div>
+</header>
+<footer th:fragment="footer">
+    <ul class="footerBar">
+        <li class="footerButton">Home</li>
+        <li class="footerButton">About</li>
+        <li class="footerButton">Map</li>
+        <li class="footerButton">Facilities</li>
+        <li class="footerButton">Search</li>
+    </ul>
+</footer>
+
+<article class="trailInfo" th:fragment="trailInfo1">
+    <h1 class="titleH1">Trail Info</h1>
+    <p class="trailInfoTxt">Lorem ipsum dolor sit amet,
+        consectetur adipiscing elit,
+        sed do eiusmod tempor incididunt ut labore et
+        dolore magna aliqua. Ut enim ad minim veniam,
+        quis nostrud exercitation ullamco laboris nisi
+        ut aliquip ex ea commodo consequat.
+        Duis aute irure dolor in reprehenderit in
+        voluptate velit esse cillum dolore eu fugiat
+        nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+</article>
+<article id="trailInfoBox" class="trailInfo" th:fragment="trailInfo2">
+    <h1 class="titleH1">Trail Info</h1>
+    <p class="trailInfoTxt">TESTTESTETSTESdent, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+</article>
\ No newline at end of file
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html
new file mode 100644
index 00000000..39906f23
--- /dev/null
+++ b/src/main/resources/templates/home.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <title>Website Web</title>
+    <link rel="stylesheet" th:href="@{css/style.css}">
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+</head>
+
+<body>
+    <header th:replace="fragments/temp_frags.html :: header"></header>
+
+    <main>
+        <div class="trailList">
+            <ul class="ulHeader">
+                <li onclick="selectTrail('trail1', this)" class="liHeader" id="trail1" >Trail 1</li>
+                <li onclick="selectTrail('trail2', this)" class="liHeader selected" id="trail2" >Trail 2</li>
+                <li onclick="selectTrail('trail3', this)" class="liHeader" id="trail3" >Trail 3</li>
+                <li onclick="updateOutput()" class="liHeader" id="trail4" >Trail 4</li>
+            </ul>
+        </div>
+
+      <section class="mainBlock">
+        <article class="trailStats">
+            <h1 class="titleH1">Trail Stats</h1>
+            <img src="../static/images/stats.png" alt="Stats" class="stats">
+            <div class="textStats">
+                <p><b>Explored:</b> 60%</p>
+                <p><b>Landmarks Visited:</b> 3/5</p>
+                <p><b>Shops Visited:</b> 6/10</p>
+            </div>
+        </article>
+        <article id="trailInfoBox" class="trailInfo"></article>
+        <article class="badgesBlock">
+            <h1 class="titleH1">Badges</h1>
+            <div class="badgesList">
+                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
+                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
+                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
+                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
+                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
+            </div>
+            
+          </article>  
+      </section>
+    </main>
+
+    <footer th:replace="fragments/temp_frags.html :: footer"></footer>
+    <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
+    <script type="text/javascript" th:src="@{scripts/gabScripts.js}"></script>
+</body>
+</html>
\ No newline at end of file
-- 
GitLab