Kompakte Ansicht finalisiert
All checks were successful
release-tag / release-image (push) Successful in 2m19s
All checks were successful
release-tag / release-image (push) Successful in 2m19s
This commit is contained in:
99
main.go
99
main.go
@@ -143,6 +143,8 @@ type Monatsstatistik struct {
|
|||||||
Monat string // z. B. "07.2025"
|
Monat string // z. B. "07.2025"
|
||||||
Summe float64 // bezahlte
|
Summe float64 // bezahlte
|
||||||
SummeOffen float64 // noch nicht bezahlt
|
SummeOffen float64 // noch nicht bezahlt
|
||||||
|
Prozent float64
|
||||||
|
ProzentOffen float64
|
||||||
Eintraege []Entry
|
Eintraege []Entry
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -444,6 +446,8 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
monatsMap[monatKey].SummeOffen += e.Abgabe
|
monatsMap[monatKey].SummeOffen += e.Abgabe
|
||||||
}
|
}
|
||||||
|
monatsMap[monatKey].Prozent = monatsMap[monatKey].Summe / (monatsMap[monatKey].Summe + monatsMap[monatKey].SummeOffen) * 100
|
||||||
|
monatsMap[monatKey].ProzentOffen = monatsMap[monatKey].SummeOffen / (monatsMap[monatKey].Summe + monatsMap[monatKey].SummeOffen) * 100
|
||||||
}
|
}
|
||||||
|
|
||||||
var monatsStat []Monatsstatistik
|
var monatsStat []Monatsstatistik
|
||||||
@@ -686,92 +690,8 @@ const htmlTemplate = `
|
|||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary">Berechnen & Speichern</button>
|
<button type="submit" class="btn btn-primary">Berechnen & Speichern</button>
|
||||||
</form>
|
</form>
|
||||||
{{end}}
|
|
||||||
|
|
||||||
|
|
||||||
<h2 class="mb-3">Gespeicherte Einträge</h2>
|
|
||||||
<table class="table table-striped table-bordered">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>#</th>
|
|
||||||
<th>Datum</th>
|
|
||||||
<th>UEC Anfang</th>
|
|
||||||
<th>UEC Ende</th>
|
|
||||||
<th>UEC Profit</th>
|
|
||||||
<th>Prozent</th>
|
|
||||||
<th>UEC Abgabe</th>
|
|
||||||
<th>Status</th>
|
|
||||||
{{if .LoggedIn}}<th>Aktion</th>{{else}}<th>Erweitert</th>{{end}}
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody id="eintragsTabelle">
|
|
||||||
{{range .Entries}}
|
|
||||||
<tr>
|
|
||||||
<td>{{.ID}}</td>
|
|
||||||
<td>{{formatDate .CreatedAt}}</td>
|
|
||||||
<td>{{formatNumber .Anfangsbestand}}</td>
|
|
||||||
<td>{{formatNumber .Endbestand}}</td>
|
|
||||||
<td>{{formatNumber .Gesamtwert}}</td>
|
|
||||||
<td>{{formatNumber .Prozentwert}}%</td>
|
|
||||||
<td>{{formatNumber .Abgabe}}</td>
|
|
||||||
<td>
|
|
||||||
{{if .Bezahlt}}
|
|
||||||
{{if $.LoggedIn}}
|
|
||||||
<a href="/unmarkaspaid?id={{.ID}}" class="btn btn-sm btn-outline-danger">✗ stornieren</a>
|
|
||||||
{{else}}
|
|
||||||
<span class="badge bg-success">✓ Erledigt</span>
|
|
||||||
{{end}}
|
|
||||||
{{else}}
|
|
||||||
{{if $.LoggedIn}}
|
|
||||||
<a href="/markaspaid?id={{.ID}}" class="btn btn-sm btn-outline-success">✓ abgeben</a>
|
|
||||||
{{else}}
|
|
||||||
<span class="badge bg-secondary">✗ Offen</span>
|
|
||||||
{{end}}
|
|
||||||
{{end}}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<button class="btn btn-sm btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#details-{{.ID}}" aria-expanded="false" aria-controls="details-{{.ID}}">
|
|
||||||
Details
|
|
||||||
</button>
|
|
||||||
{{if $.LoggedIn}}
|
|
||||||
<a href="/delete?id={{.ID}}" class="btn btn-sm btn-danger" onclick="return confirm('Eintrag wirklich löschen?')">Löschen</a>
|
|
||||||
{{end}}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="9" class="p-0 border-0">
|
|
||||||
<div class="collapse" id="details-{{.ID}}">
|
|
||||||
<div class="bg-light p-3 border-top">
|
|
||||||
<strong>Interne Infos (Details):</strong>
|
|
||||||
<table class="table table-sm table-bordered mb-0">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Startort</th>
|
|
||||||
<th>Zielort</th>
|
|
||||||
<th>Schiff</th>
|
|
||||||
<th>Ware</th>
|
|
||||||
<th>Zeit (min)</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>{{.Startort}}</td>
|
|
||||||
<td>{{.Zielort}}</td>
|
|
||||||
<td>{{.Schiff}}</td>
|
|
||||||
<td>{{.Ware}}</td>
|
|
||||||
<td>{{formatNumber .Zeitaufwand}}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{{end}}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
{{end}}
|
||||||
|
|
||||||
<h2 class="mb-3">Auswertungen</h2>
|
<h2 class="mb-3">Auswertungen</h2>
|
||||||
|
|
||||||
@@ -804,6 +724,7 @@ const htmlTemplate = `
|
|||||||
<th>Monat</th>
|
<th>Monat</th>
|
||||||
<th>Abgaben verteilt</th>
|
<th>Abgaben verteilt</th>
|
||||||
<th>Abgaben offen</th>
|
<th>Abgaben offen</th>
|
||||||
|
<th>Statistik</th>
|
||||||
<th>Aktionen</th>
|
<th>Aktionen</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -813,6 +734,12 @@ const htmlTemplate = `
|
|||||||
<td>{{.Monat}}</td>
|
<td>{{.Monat}}</td>
|
||||||
<td>{{formatNumber .Summe}} UEC</td>
|
<td>{{formatNumber .Summe}} UEC</td>
|
||||||
<td>{{formatNumber .SummeOffen}} UEC</td>
|
<td>{{formatNumber .SummeOffen}} UEC</td>
|
||||||
|
<td>
|
||||||
|
<div class="progress">
|
||||||
|
<div class="progress-bar progress-bar-striped bg-success" role="progressbar" style="width: {{.Prozent}}%" aria-valuenow="{{.Prozent}}" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
|
<div class="progress-bar progress-bar-striped bg-danger" role="progressbar" style="width: {{.ProzentOffen}}%" aria-valuenow="{{.ProzentOffen}}" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="btn btn-sm btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#monat-{{.Monat}}" aria-expanded="false" aria-controls="monat-{{.Monat}}">
|
<button class="btn btn-sm btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#monat-{{.Monat}}" aria-expanded="false" aria-controls="monat-{{.Monat}}">
|
||||||
Details
|
Details
|
||||||
@@ -860,7 +787,7 @@ const htmlTemplate = `
|
|||||||
{{if $.LoggedIn}}
|
{{if $.LoggedIn}}
|
||||||
<a href="/markaspaid?id={{.ID}}" class="btn btn-sm btn-outline-success">✓ abgeben</a>
|
<a href="/markaspaid?id={{.ID}}" class="btn btn-sm btn-outline-success">✓ abgeben</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="badge bg-secondary">✗ Offen</span>
|
<span class="badge bg-danger">✗ Offen</span>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</td>
|
</td>
|
||||||
|
Reference in New Issue
Block a user