From bb5770c80246241c0d14beb9e42252fe2bf38976 Mon Sep 17 00:00:00 2001
From: c21128207 <demetriadesz@cardiff.ac.uk>
Date: Fri, 3 Dec 2021 10:03:24 +0000
Subject: [PATCH] Adding filtering system

---
 .vs/ProjectSettings.json            |   3 ++
 .vs/VSWorkspaceState.json           |   7 +++++
 .vs/client-project-15-main/v16/.suo | Bin 0 -> 18432 bytes
 .vs/slnx.sqlite                     | Bin 0 -> 90112 bytes
 main.py                             |   4 +++
 static/Location.css                 |  35 +++++++++++++++++++++
 static/scripts/Location.js          |  47 ++++++++++++++++++++++++++++
 templates/Locations.html            |  26 +++++++++++++++
 templates/main.html                 |   1 +
 9 files changed, 123 insertions(+)
 create mode 100644 .vs/ProjectSettings.json
 create mode 100644 .vs/VSWorkspaceState.json
 create mode 100644 .vs/client-project-15-main/v16/.suo
 create mode 100644 .vs/slnx.sqlite
 create mode 100644 static/Location.css
 create mode 100644 static/scripts/Location.js
 create mode 100644 templates/Locations.html

diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json
new file mode 100644
index 0000000..f8b4888
--- /dev/null
+++ b/.vs/ProjectSettings.json
@@ -0,0 +1,3 @@
+{
+  "CurrentProjectSetting": null
+}
\ No newline at end of file
diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json
new file mode 100644
index 0000000..d282b3b
--- /dev/null
+++ b/.vs/VSWorkspaceState.json
@@ -0,0 +1,7 @@
+{
+  "ExpandedNodes": [
+    ""
+  ],
+  "SelectedNode": "\\README.md",
+  "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git a/.vs/client-project-15-main/v16/.suo b/.vs/client-project-15-main/v16/.suo
new file mode 100644
index 0000000000000000000000000000000000000000..381e8b772446dfe9b5fc859d6374674e65bc497d
GIT binary patch
literal 18432
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
Weyg`v`F*R)|E~i5cXICb9sVCwwQ;)u

literal 0
HcmV?d00001

diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite
new file mode 100644
index 0000000000000000000000000000000000000000..539c57ca73138669bcca56622d33f85059855353
GIT binary patch
literal 90112
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
W00AHX1b_e#00KY&2mpZ#C-A@SjSijw

literal 0
HcmV?d00001

diff --git a/main.py b/main.py
index 14a2dbd..ba46803 100644
--- a/main.py
+++ b/main.py
@@ -15,6 +15,10 @@ def home():
 def about():
 	return render_template("about.html")
 
+@app.route("/Locations", methods = ["GET"])
+def Locations():
+	return render_template("Locations.html")
+
 @app.route("/contact-us", methods = ["GET"])
 def contact():
 	return render_template("contact-us.html")
diff --git a/static/Location.css b/static/Location.css
new file mode 100644
index 0000000..18b4e40
--- /dev/null
+++ b/static/Location.css
@@ -0,0 +1,35 @@
+.container {
+  overflow: hidden;
+}
+
+.filterDiv {
+  float: left;
+  background-color: #2196F3;
+  color: #ffffff;
+  width: 100px;
+  line-height: 100px;
+  text-align: center;
+  margin: 2px;
+  display: none; /* Hidden by default */
+}
+
+.show {
+  display: block;
+}
+
+.btn {
+  border: none;
+  outline: none;
+  padding: 12px 16px;
+  background-color: #f1f1f1;
+  cursor: pointer;
+}
+
+.btn:hover {
+  background-color: #ddd;
+}
+
+.btn.active {
+  background-color: #666;
+  color: white;
+}
diff --git a/static/scripts/Location.js b/static/scripts/Location.js
new file mode 100644
index 0000000..d940a35
--- /dev/null
+++ b/static/scripts/Location.js
@@ -0,0 +1,47 @@
+filterSelection("all")
+function filterSelection(c) {
+  var x, i;
+  x = document.getElementsByClassName("filterDiv");
+  if (c == "all") c = "";
+  // Add the Show class
+  for (i = 0; i < x.length; i++) {
+    RemoveClass(x[i], "show");
+    if (x[i].className.indexOf(c) > -1) AddClass(x[i], "show");
+  }
+}
+
+// Showing filtered elements
+function AddClass(element, name) {
+  var i, arr1, arr2;
+  arr1 = element.className.split(" ");
+  arr2 = name.split(" ");
+  for (i = 0; i < arr2.length; i++) {
+    if (arr1.indexOf(arr2[i]) == -1) {
+      element.className += " " + arr2[i];
+    }
+  }
+}
+
+// Removing elements that are not selected
+function RemoveClass(element, name) {
+  var i, arr1, arr2;
+  arr1 = element.className.split(" ");
+  arr2 = name.split(" ");
+  for (i = 0; i < arr2.length; i++) {
+    while (arr1.indexOf(arr2[i]) > -1) {
+      arr1.splice(arr1.indexOf(arr2[i]), 1);
+    }
+  }
+  element.className = arr1.join(" ");
+}
+
+// Add active class to current control button
+var btnContainer = document.getElementById("myBtnContainer");
+var btns = btnContainer.getElementsByClassName("btn");
+for (var i = 0; i < btns.length; i++) {
+  btns[i].addEventListener("click", function() {
+    var current = document.getElementsByClassName("active");
+    current[0].className = current[0].className.replace(" active", "");
+    this.className += " active";
+  });
+}
diff --git a/templates/Locations.html b/templates/Locations.html
new file mode 100644
index 0000000..97c6bfb
--- /dev/null
+++ b/templates/Locations.html
@@ -0,0 +1,26 @@
+{% extends "main.html" %}
+{% block title %}Locations{% endblock %}
+{% block mainBlock %}
+<div id="myBtnContainer">
+  <button class="btn active" onclick="filterSelection('all')"> Show all</button>
+  <button class="btn" onclick="filterSelection('Wales')"> Wales</button>
+  <button class="btn" onclick="filterSelection('North-England')"> North England</button>
+  <button class="btn" onclick="filterSelection('South-West-England')"> South West England</button>
+  <button class="btn" onclick="filterSelection('Midlands')"> Midlands</button>
+  <button class="btn" onclick="filterSelection('Scotland')"> Scotland<button>
+</div>
+
+<div class="container">
+  <div class="filterDiv Wales">Location 1</div>
+  <div class="filterDiv Wales">Location 2</div>
+  <div class="filterDiv North-England">Location 3</div>
+  <div class="filterDiv North-England">Location 4</div>
+  <div class="filterDiv South-West-England">Location 5</div>
+  <div class="filterDiv South-West-England">Location 6</div>
+  <div class="filterDiv South-West-England">Location 7</div>
+  <div class="filterDiv Midlands">Location 8</div>
+  <div class="filterDiv Midlands">Location 9</div>
+  <div class="filterDiv Scotland">Location 10</div>
+  <div class="filterDiv Scotland">Location 11</div>
+  <div class="filterDiv Scotland">Location 12</div>
+</div>
diff --git a/templates/main.html b/templates/main.html
index 3c531ed..d390e91 100644
--- a/templates/main.html
+++ b/templates/main.html
@@ -24,6 +24,7 @@
   <li><a href="/">Home</a></li>
   <li><a href="/map">Map</a></li>
   <li><a href="/contact-us">Contact Us</a></li>
+	<li><a href="/Locations">Locations</a></li>
   <li style="float:right"><a class="active" href="/about">About</a></li>
 </ul>
 	</nav>
-- 
GitLab