- Fixed song add form (3 HTMX bugs: reset on typeahead, wrong query param, artist-only find-or-create) - Added Played checkbox to add form; inline edit (✎/Save/Cancel) for setlist rows - View fixes: date format, location name instead of ID in jam list, notes on location detail, song count column, location name links to detail - Title typeahead + cross-filtering (artist↔title filter each other) - Fixed datalist accumulation bug: HTMX 2.0 inherits hx-swap from parent; added explicit hx-swap="innerHTML" on both inputs - Setlist sort by id (ULID = insertion order); created rejected by PocketBase - Location delete guard: OnRecordDelete hook blocks if jams exist; FK enforcement is app-level not SQLite-level Loose ends to pick up: - Focus-after-add not user-confirmed yet (setTimeout approach) - jams.participants and setlist.position still in DB schema but unused in UI (optional migration to clean up) - Logout flow and dashboard ranking not browser-tested
25 lines
518 B
Go
25 lines
518 B
Go
package views
|
|
|
|
import "fmt"
|
|
|
|
// SongCount holds the played/total song counts for a jam.
|
|
type SongCount struct {
|
|
Played int
|
|
Total int
|
|
}
|
|
|
|
// dateOnly extracts the YYYY-MM-DD prefix from a PocketBase datetime string.
|
|
func dateOnly(s string) string {
|
|
if len(s) >= 10 {
|
|
return s[:10]
|
|
}
|
|
return s
|
|
}
|
|
|
|
// songCountDisplay formats a played/total pair as "X / Y", or "" when total is 0.
|
|
func songCountDisplay(sc SongCount) string {
|
|
if sc.Total == 0 {
|
|
return ""
|
|
}
|
|
return fmt.Sprintf("%d / %d", sc.Played, sc.Total)
|
|
}
|