Skip to content

Commit 6446f87

Browse files
committed
Triangle classifier SPA updated
1 parent 4ec3438 commit 6446f87

File tree

3 files changed

+53
-21
lines changed

3 files changed

+53
-21
lines changed
Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
<!DOCTYPE html>
22
<html lang="en">
33
<head>
4-
<meta charset="UTF-8" />
5-
<title>Triangle Classifier</title>
6-
<link rel="stylesheet" href="style.css" />
4+
<meta charset="UTF-8">
5+
<title>Triangle Classifier SPA</title>
6+
<link rel="stylesheet" href="style.css">
77
</head>
88
<body>
9-
109
<h1>Triangle Classifier SPA</h1>
1110

12-
<form id="triangleForm">
13-
<label for="a">Side A:</label>
14-
<input type="number" id="a" name="a" required><br>
15-
<label for="b">Side B:</label>
16-
<input type="number" id="b" name="b" required><br>
17-
<label for="c">Side C:</label>
18-
<input type="number" id="c" name="c" required><br>
19-
<button type="submit">Classify</button>
20-
</form>
11+
<div id="main-view">
12+
<form id="triangleForm">
13+
<label for="a">Side A:</label>
14+
<input type="number" id="a" name="a" required><br>
2115

22-
<div class="result" id="result"></div>
16+
<label for="b">Side B:</label>
17+
<input type="number" id="b" name="b" required><br>
2318

24-
<script src="script.js"></script>
19+
<label for="c">Side C:</label>
20+
<input type="number" id="c" name="c" required><br>
21+
22+
<button type="submit">Classify</button>
23+
</form>
2524

25+
<div id="result" class="hidden result"></div>
26+
</div>
27+
28+
<script src="script.js"></script>
2629
</body>
2730
</html>

jdk_21_maven/cs/web/triangle-spa/src/main/resources/static/script.js

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,41 @@ function classifyTriangle(a, b, c) {
44
c = Number(c);
55

66
if (a <= 0 || b <= 0 || c <= 0 || a + b <= c || a + c <= b || b + c <= a) {
7-
return "Not a triangle";
7+
return "not-a-triangle";
88
} else if (a === b && b === c) {
9-
return "Equilateral triangle";
9+
return "equilateral";
1010
} else if (a === b || b === c || a === c) {
11-
return "Isosceles triangle";
11+
return "isosceles";
1212
} else {
13-
return "Scalene triangle";
13+
return "scalene";
1414
}
1515
}
1616

1717
document.getElementById("triangleForm").addEventListener("submit", function (event) {
1818
event.preventDefault();
19+
1920
const a = document.getElementById("a").value;
2021
const b = document.getElementById("b").value;
2122
const c = document.getElementById("c").value;
2223

23-
const result = classifyTriangle(a, b, c);
24-
document.getElementById("result").textContent = `Result: ${result}`;
24+
const resultType = classifyTriangle(a, b, c);
25+
const resultText = `Result: ${resultType.replace(/-/g, " ")}`;
26+
27+
// Update URL and show result
28+
history.pushState({ a, b, c }, "", `/${resultType}`);
29+
const resultEl = document.getElementById("result");
30+
resultEl.textContent = resultText;
31+
resultEl.classList.remove("hidden");
2532
});
33+
34+
// Handle back/forward navigation
35+
window.onpopstate = function () {
36+
const resultEl = document.getElementById("result");
37+
if (location.pathname === "/") {
38+
resultEl.classList.add("hidden");
39+
} else {
40+
const text = location.pathname.slice(1).replace(/-/g, " ");
41+
resultEl.textContent = `Result: ${text}`;
42+
resultEl.classList.remove("hidden");
43+
}
44+
};

jdk_21_maven/cs/web/triangle-spa/src/main/resources/static/style.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,36 @@ body {
33
padding: 30px;
44
background-color: #f9f9f9;
55
}
6+
67
h1 {
78
color: #333;
89
}
10+
911
form {
1012
margin-bottom: 20px;
1113
}
14+
1215
label {
1316
margin-right: 10px;
1417
}
18+
1519
input {
1620
margin-bottom: 10px;
1721
padding: 5px;
1822
width: 60px;
1923
}
24+
2025
button {
2126
padding: 6px 12px;
2227
cursor: pointer;
2328
}
29+
2430
.result {
2531
margin-top: 20px;
2632
font-weight: bold;
2733
color: #00529B;
2834
}
35+
36+
.hidden {
37+
display: none;
38+
}

0 commit comments

Comments
 (0)