fix: js not working on page swap

also fixed saving throw percentages being used on heling operations
This commit is contained in:
Itsigo
2024-04-01 20:52:51 +00:00
parent a47ae03747
commit 05b4ffab16
5 changed files with 234 additions and 286 deletions

View File

@@ -146,7 +146,7 @@ func TrackerDamage(c fiber.Ctx) error {
heal := c.FormValue("heal") heal := c.FormValue("heal")
savingThrow := c.FormValue("savingthrow") savingThrow := c.FormValue("savingthrow")
if savingThrow == "on" || heal == "false" { if savingThrow == "on" && heal != "true" {
damageFloat := float64(damage) * 0.33333 damageFloat := float64(damage) * 0.33333
damage -= int(math.Round(damageFloat)) damage -= int(math.Round(damageFloat))
} }

View File

@@ -6,6 +6,7 @@ import (
"github.com/gofiber/fiber/v3" "github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/compress" "github.com/gofiber/fiber/v3/middleware/compress"
"github.com/gofiber/fiber/v3/middleware/logger"
"github.com/itsig0/tallytome/handler" "github.com/itsig0/tallytome/handler"
) )
@@ -22,6 +23,7 @@ func main() {
// compression baby // compression baby
app.Use(compress.New()) app.Use(compress.New())
app.Use(logger.New())
app.Static("/", "./public") app.Static("/", "./public")

View File

@@ -0,0 +1,41 @@
// HTMX event listener
document.addEventListener("DOMContentLoaded", (event) => {
document.body.addEventListener("htmx:beforeSwap", function (evt) {
if (evt.detail.xhr.status === 422) {
evt.detail.shouldSwap = true;
evt.detail.isError = false;
}
});
document.body.addEventListener("HPUpdated", function () {
var input = document.getElementById("damageInput");
input.value = "";
input.removeAttribute("aria-invalid");
var errorMessage = document.getElementById("damageError");
if (errorMessage) {
errorMessage.parentNode.removeChild(errorMessage);
}
var savingthrow = document.getElementById("savingthrow");
savingthrow.checked = false;
});
document.body.addEventListener("ManaUpdated", function () {
var input = document.getElementById("manaInput");
input.value = "";
input.removeAttribute("aria-invalid");
var errorMessage = document.getElementById("manaError");
if (errorMessage) {
errorMessage.parentNode.removeChild(errorMessage);
}
});
document.body.addEventListener("BaseUpdated", function () {
var errorMessage = document.getElementById("baseError");
if (errorMessage) {
errorMessage.parentNode.removeChild(errorMessage);
}
});
});

View File

@@ -55,20 +55,16 @@ var bd = BaseData {
templ Show(hx bool, td TrackerData) { templ Show(hx bool, td TrackerData) {
@layout.Base(hx) { @layout.Base(hx) {
<div class="container"> <div class="container">
<div id="trackerHeader" class="grid mb-2"> <div id="trackerHeader" class="grid mb-2">
@TrackerHeader(td) @TrackerHeader(td)
</div> </div>
// base stats go here // base stats go here
@BaseStats(td, bd) @BaseStats(td, bd)
<div class="grid"> <div class="grid">
<div> <div>
<h3>TP</h3> <h3>TP</h3>
@Hp(dd) @Hp(dd)
</div> </div>
<div> <div>
<h3>Mana</h3> <h3>Mana</h3>
@Mana(md) @Mana(md)
@@ -76,48 +72,6 @@ templ Show(hx bool, td TrackerData){
</div> </div>
<button type="button" hx-get="/hp-mana-tracker/reset" hx-target="main" hx-swap="innerHTML">Reset</button> <button type="button" hx-get="/hp-mana-tracker/reset" hx-target="main" hx-swap="innerHTML">Reset</button>
</div> </div>
<script>
document.addEventListener("DOMContentLoaded", (event) => {
document.body.addEventListener("htmx:beforeSwap", function(evt){
if (evt.detail.xhr.status === 422){
evt.detail.shouldSwap = true;
evt.detail.isError = false;
}
});
document.body.addEventListener("HPUpdated", function() {
var input = document.getElementById('damageInput');
input.value = "";
input.removeAttribute('aria-invalid');
var errorMessage = document.getElementById('damageError');
if (errorMessage) {
errorMessage.parentNode.removeChild(errorMessage);
}
var savingthrow = document.getElementById('savingthrow');
savingthrow.checked = false;
});
document.body.addEventListener("ManaUpdated", function() {
var input = document.getElementById('manaInput');
input.value = "";
input.removeAttribute('aria-invalid');
var errorMessage = document.getElementById('manaError');
if (errorMessage) {
errorMessage.parentNode.removeChild(errorMessage);
}
})
document.body.addEventListener("BaseUpdated", function() {
var errorMessage = document.getElementById('baseError');
if (errorMessage) {
errorMessage.parentNode.removeChild(errorMessage);
}
})
})
</script>
} }
} }
@@ -125,28 +79,21 @@ templ TrackerHeader(td TrackerData){
<div class="start"> <div class="start">
<h2>Kampfrunde: { td.Round }</h2> <h2>Kampfrunde: { td.Round }</h2>
</div> </div>
<div id="trackerBars" class="middle"> <div id="trackerBars" class="middle">
@TrackerColumn(td) @TrackerColumn(td)
</div> </div>
<div class="text-right"> <div class="text-right">
<button hx-get="/hp-mana-tracker/newround" hx-target="#trackerHeader" hx-swap="innerHTML">Nächste Runde</button> <button hx-get="/hp-mana-tracker/newround" hx-target="#trackerHeader" hx-swap="innerHTML">Nächste Runde</button>
</div> </div>
} }
templ TrackerColumn(td TrackerData) { templ TrackerColumn(td TrackerData) {
<div id="hpBar" class="progress"> <div id="hpBar" class="progress">
@HPTracker(td) @HPTracker(td)
</div> </div>
<div id="manaBar" class="progress"> <div id="manaBar" class="progress">
@ManaTracker(td) @ManaTracker(td)
</div> </div>
} }
templ HPTracker(td TrackerData) { templ HPTracker(td TrackerData) {
@@ -173,33 +120,17 @@ templ BaseStats(td TrackerData, bd BaseData){
<details id="baseStats" open> <details id="baseStats" open>
<summary>Standard Werte</summary> <summary>Standard Werte</summary>
<form class="grid" hx-post="/hp-mana-tracker/update" hx-target="#trackerBars"> <form class="grid" hx-post="/hp-mana-tracker/update" hx-target="#trackerBars">
<label> <label>
Trefferpunkte Trefferpunkte
<input <input type="number" placeholder="Trefferpunkte" name="hp" value={ td.HP } required/>
type="number"
placeholder="Trefferpunkte"
name="hp"
value={td.HP}
required
/>
</label> </label>
<label> <label>
Mana <input type="number" name="mana" placeholder="Mana" value={ td.Mana } required/> Mana <input type="number" name="mana" placeholder="Mana" value={ td.Mana } required/>
</label> </label>
<label> <label>
Regenerations % Regenerations %
<input <input type="number" name="manaregen" placeholder="Regenerations %" value={ td.ManaRegen } required/>
type="number"
name="manaregen"
placeholder="Regenerations %"
value={td.ManaRegen}
required
/>
</label> </label>
<div class="lbl-offset"> <div class="lbl-offset">
<button type="submit"> <button type="submit">
Go Go
@@ -213,16 +144,11 @@ templ BaseStats(td TrackerData, bd BaseData){
} }
templ Hp(dd DamageData) { templ Hp(dd DamageData) {
<form id="damageInputs" hx-post="/hp-mana-tracker/damage" hx-target="#hpBar"> <form id="damageInputs" hx-post="/hp-mana-tracker/damage" hx-target="#hpBar">
<fieldset role="group"> <fieldset role="group">
<button class="secondary" name="damage" value="true"> <button class="secondary" name="damage" value="true">
- -
</button> </button>
<input <input
id="damageInput" id="damageInput"
name="damageInput" name="damageInput"
@@ -234,24 +160,18 @@ templ Hp(dd DamageData){
} }
value={ dd.Values } value={ dd.Values }
/> />
<button class="secondary" name="heal" value="true"> <button class="secondary" name="heal" value="true">
+ +
</button> </button>
</fieldset> </fieldset>
if dd.Errors != "" { if dd.Errors != "" {
<small id="damageError" class="error-helper">{ dd.Errors }</small> <small id="damageError" class="error-helper">{ dd.Errors }</small>
} }
<fieldset> <fieldset>
<label for="savingthrow"> <label for="savingthrow">
<input id="savingthrow" name="savingthrow" type="checkbox" role="switch" <input id="savingthrow" name="savingthrow" type="checkbox" role="switch" if dd.SavingThrow !="" {
if dd.SavingThrow != "" {
checked checked
} }/>
/>
Verteidigungswurf Verteidigungswurf
</label> </label>
</fieldset> </fieldset>
@@ -261,11 +181,9 @@ templ Hp(dd DamageData){
templ Mana(md ManaData) { templ Mana(md ManaData) {
<form id="manaInputs" hx-post="/hp-mana-tracker/mana" hx-target="#manaBar"> <form id="manaInputs" hx-post="/hp-mana-tracker/mana" hx-target="#manaBar">
<fieldset role="group"> <fieldset role="group">
<button class="secondary" name="use" value="true"> <button class="secondary" name="use" value="true">
- -
</button> </button>
<input <input
id="manaInput" id="manaInput"
name="manaInput" name="manaInput"
@@ -277,16 +195,12 @@ templ Mana(md ManaData){
} }
value={ md.Values } value={ md.Values }
/> />
<button class="secondary" name="add" value="true"> <button class="secondary" name="add" value="true">
+ +
</button> </button>
</fieldset> </fieldset>
if md.Errors != "" { if md.Errors != "" {
<small id="manaError" class="error-helper">{ md.Errors }</small> <small id="manaError" class="error-helper">{ md.Errors }</small>
} }
</form> </form>
} }

View File

@@ -1,39 +1,30 @@
package layout package layout
templ Base(hx bool) { templ Base(hx bool) {
if hx == false { if hx == false {
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en" data-theme="light"> <html lang="en" data-theme="light">
<head> <head>
<meta charset="UTF-8"/> <meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/tallytome.css"/> <link rel="stylesheet" href="/tallytome.css"/>
<script src="/scripts/htmx.js"></script> <script src="/scripts/htmx.js"></script>
// <script src="/scripts/alpine.js" defer></script> <script src="/scripts/tallytome.js"></script>
<title>Tallytome</title> <title>Tallytome</title>
</head> </head>
<body> <body>
<header> <header>
@header() @header()
</header> </header>
<main> <main>
{ children... } { children... }
</main> </main>
// <footer> // <footer>
// @footer() // @footer()
// </footer> // </footer>
</body> </body>
</html> </html>
} else { } else {
{ children... } { children... }
} }
} }