From 89b3f1164af4d157a1419e203575fe9a56f25794 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Magdalena=20Grodzi=C5=84ska?= <mag.grodzinska@gmail.com>
Date: Tue, 19 Nov 2019 19:22:13 +0100
Subject: Add working home page front-end

---
 build.gradle                                       |  2 +
 .../mimuw/cloudatlas/client/ClientController.java  | 26 ++++++++++++
 .../pl/edu/mimuw/cloudatlas/client/Controller.java | 25 ------------
 .../java/pl/edu/mimuw/cloudatlas/client/Query.java |  4 ++
 src/main/resources/application.properties          |  6 +++
 .../mimuw/cloudatlas/client/templates/error.html   | 10 +++++
 .../client/templates/fragments/navbar.html         | 46 ++++++++++++++++++++++
 .../mimuw/cloudatlas/client/templates/home.html    | 24 +++++++++++
 8 files changed, 118 insertions(+), 25 deletions(-)
 create mode 100644 src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java
 delete mode 100644 src/main/java/pl/edu/mimuw/cloudatlas/client/Controller.java
 create mode 100644 src/main/java/pl/edu/mimuw/cloudatlas/client/Query.java
 create mode 100644 src/main/resources/application.properties
 create mode 100644 src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/error.html
 create mode 100644 src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/fragments/navbar.html
 create mode 100644 src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/home.html

diff --git a/build.gradle b/build.gradle
index 498d29b..751927a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -27,6 +27,8 @@ dependencies {
 
     implementation 'org.springframework.boot:spring-boot-starter-web:2.2.1.RELEASE'
 
+    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:2.2.1.RELEASE'
+
     // Use JUnit test framework
     testImplementation 'junit:junit:4.12'
 
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java b/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java
new file mode 100644
index 0000000..ce3ee81
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java
@@ -0,0 +1,26 @@
+package pl.edu.mimuw.cloudatlas.client;
+
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.stereotype.Controller;
+
+/*
+should enable reading attribute values stored by the agent
+installing and
+uninstalling queries, and
+setting fallback contacts.
+
+Apart from providing forms for queries and fallback contacts,
+and presenting the information fetched from the agent in a textual form (with automatic refreshment),
+plotting the attributes with numeric values as real-time graphs.
+*/
+
+@Controller
+public class ClientController {
+
+    @GetMapping("/")
+    public String homePage(Model model) {
+        model.addAttribute("homeMessage", "Welcome to CloudaAtlas client interface");
+        return "home";
+    }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/client/Controller.java b/src/main/java/pl/edu/mimuw/cloudatlas/client/Controller.java
deleted file mode 100644
index 3b0ec63..0000000
--- a/src/main/java/pl/edu/mimuw/cloudatlas/client/Controller.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package pl.edu.mimuw.cloudatlas.client;
-
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/*
-should enable reading attribute values stored by the agent
-installing and
-uninstalling queries, and
-setting fallback contacts.
-
-Apart from providing forms for queries and fallback contacts,
-and presenting the information fetched from the agent in a textual form (with automatic refreshment),
-plotting the attributes with numeric values as real-time graphs.
-*/
-
-@RestController
-public class Controller {
-
-    @GetMapping("/")
-    public String homePage(Model model) {
-        return "home";
-    }
-}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/client/Query.java b/src/main/java/pl/edu/mimuw/cloudatlas/client/Query.java
new file mode 100644
index 0000000..468c869
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/client/Query.java
@@ -0,0 +1,4 @@
+package pl.edu.mimuw.cloudatlas.client;
+
+public class Query {
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..cf15d4a
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+spring.application.name=CloudAtlas Client
+
+spring.thymeleaf.cache=false
+spring.thymeleaf.enabled=true
+spring.thymeleaf.prefix=classpath:/pl/edu/mimuw/cloudatlas/client/templates/
+spring.thymeleaf.suffix=.html
\ No newline at end of file
diff --git a/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/error.html b/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/error.html
new file mode 100644
index 0000000..9b42db1
--- /dev/null
+++ b/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/error.html
@@ -0,0 +1,10 @@
+<html lang="en">
+<head><title>Error</title></head>
+<body>
+<h1>Error</h1>
+<b>[<span th:text="${status}">status</span>]
+    <span th:text="${error}">error</span>
+</b>
+<p th:text="${message}">message</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/fragments/navbar.html b/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/fragments/navbar.html
new file mode 100644
index 0000000..c2beaa9
--- /dev/null
+++ b/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/fragments/navbar.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+
+<html xmlns:th="http://www.thymeleaf.org">
+
+<head>
+    <title>CloudAtlas Client</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+</head>
+
+<body>
+
+<div th:fragment="navbar">
+    <nav class="navbar navbar-expand-lg navbar-light bg-light">
+        <a class="navbar-brand" href="#">Navbar</a>
+        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+        <div class="collapse navbar-collapse" id="navbarNav">
+            <ul class="navbar-nav">
+                <li class="nav-item active">
+                    <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="/query">Queries</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="/contacts">Contacts</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="/attribs">Attribute values</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
+                </li>
+            </ul>
+        </div>
+    </nav>
+</div>
+
+<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
+<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/home.html b/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/home.html
new file mode 100644
index 0000000..c8f3031
--- /dev/null
+++ b/src/main/resources/pl/edu/mimuw/cloudatlas/client/templates/home.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+
+<head>
+    <meta charset="UTF-8">
+    <title>CloudAtlas Client - home</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+</head>
+
+<body>
+
+<div th:replace="fragments/navbar :: navbar"></div>
+<div class="jumbotron">
+    <h1 class="display-4" th:text="${homeMessage}"></h1>
+</div>
+
+<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
+<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+
+</body>
+
+</html>
\ No newline at end of file
-- 
cgit v1.2.3