From 0ec97afafbe5b11a2615ec26bcc5e37597ac204c Mon Sep 17 00:00:00 2001 From: prosolis <5590409+prosolis@users.noreply.github.com> Date: Fri, 15 May 2026 19:09:49 -0700 Subject: [PATCH] Fix price chart growing unbounded on item results page Wrap the canvas in a fixed-height container so Chart.js's responsive + maintainAspectRatio:false combo has a stable parent to size against, instead of feeding back into itself each tick. Co-Authored-By: Claude Opus 4.7 (1M context) --- templates/results.templ | 4 ++- templates/results_templ.go | 60 +++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/templates/results.templ b/templates/results.templ index 705128c..0bb3710 100644 --- a/templates/results.templ +++ b/templates/results.templ @@ -128,7 +128,9 @@ templ itemResultsBody(d ItemResultsData) { // Chart data rides on a data- attribute, not } diff --git a/templates/results_templ.go b/templates/results_templ.go index e7eb538..8608399 100644 --- a/templates/results_templ.go +++ b/templates/results_templ.go @@ -421,20 +421,20 @@ func itemResultsBody(d ItemResultsData) templ.Component { return templ_7745c5c3_Err } } else { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, " ") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "\"> ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -492,7 +492,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var22 string templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(d.RunError) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 148, Col: 42} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 150, Col: 42} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22)) if templ_7745c5c3_Err != nil { @@ -510,7 +510,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var23 string templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(d.RunMsg) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 150, Col: 34} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 152, Col: 34} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) if templ_7745c5c3_Err != nil { @@ -528,7 +528,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var24 templ.SafeURL templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/items/%d/results?order=%s", d.Item.ID, toggleOrder(d.Order, "price")))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 159, Col: 115} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 161, Col: 115} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) if templ_7745c5c3_Err != nil { @@ -541,7 +541,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var25 templ.SafeURL templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/items/%d/results?order=%s", d.Item.ID, toggleOrder(d.Order, "found")))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 164, Col: 115} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 166, Col: 115} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) if templ_7745c5c3_Err != nil { @@ -564,7 +564,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var26 string templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.ImageURL) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 174, Col: 30} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 176, Col: 30} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26) if templ_7745c5c3_Err != nil { @@ -587,7 +587,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var27 templ.SafeURL templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.URL)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 179, Col: 39} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 181, Col: 39} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) if templ_7745c5c3_Err != nil { @@ -600,7 +600,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var28 string templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 179, Col: 82} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 181, Col: 82} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) if templ_7745c5c3_Err != nil { @@ -614,7 +614,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var29 string templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 181, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 183, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) if templ_7745c5c3_Err != nil { @@ -633,7 +633,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var30 string templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(r.MatchedQuery) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 184, Col: 59} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 186, Col: 59} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) if templ_7745c5c3_Err != nil { @@ -673,7 +673,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var33 string templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(fmtPrice(r.Price, r.Currency)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 187, Col: 105} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 189, Col: 105} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) if templ_7745c5c3_Err != nil { @@ -686,7 +686,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var34 string templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.Source) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 188, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 190, Col: 37} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) if templ_7745c5c3_Err != nil { @@ -707,7 +707,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var35 string templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(humanTime(r.FoundAt)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 190, Col: 57} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 192, Col: 57} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) if templ_7745c5c3_Err != nil { @@ -763,7 +763,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var38 templ.SafeURL templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/items/%d/results?page=%d&order=%s", d.Item.ID, i, d.Order))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 204, Col: 134} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 206, Col: 134} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) if templ_7745c5c3_Err != nil { @@ -776,7 +776,7 @@ func ItemResultsTable(d ItemResultsData) templ.Component { var templ_7745c5c3_Var39 string templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", i)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 204, Col: 159} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 206, Col: 159} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39)) if templ_7745c5c3_Err != nil { @@ -893,7 +893,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var42 string templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("%d", it.ID)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 248, Col: 46} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 250, Col: 46} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var42) if templ_7745c5c3_Err != nil { @@ -916,7 +916,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var43 string templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(it.Name) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 248, Col: 90} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 250, Col: 90} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43)) if templ_7745c5c3_Err != nil { @@ -934,7 +934,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var44 string templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.ResolveAttributeValue(d.From) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 254, Col: 65} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 256, Col: 65} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var44) if templ_7745c5c3_Err != nil { @@ -947,7 +947,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var45 string templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.ResolveAttributeValue(d.To) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 258, Col: 61} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 260, Col: 61} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var45) if templ_7745c5c3_Err != nil { @@ -965,7 +965,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var46 templ.SafeURL templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/items/%d/results", r.ItemID))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 270, Col: 78} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 272, Col: 78} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) if templ_7745c5c3_Err != nil { @@ -978,7 +978,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var47 string templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(r.ItemName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 270, Col: 93} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 272, Col: 93} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) if templ_7745c5c3_Err != nil { @@ -996,7 +996,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var48 templ.SafeURL templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.URL)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 273, Col: 39} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 275, Col: 39} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) if templ_7745c5c3_Err != nil { @@ -1009,7 +1009,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var49 string templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 273, Col: 82} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 275, Col: 82} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) if templ_7745c5c3_Err != nil { @@ -1023,7 +1023,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var50 string templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(r.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 275, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 277, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50)) if templ_7745c5c3_Err != nil { @@ -1042,7 +1042,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var51 string templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(r.MatchedQuery) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 278, Col: 59} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 280, Col: 59} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51)) if templ_7745c5c3_Err != nil { @@ -1060,7 +1060,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var52 string templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(fmtPrice(r.Price, r.Currency)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 281, Col: 60} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 283, Col: 60} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52)) if templ_7745c5c3_Err != nil { @@ -1073,7 +1073,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var53 string templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(r.Source) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 282, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 284, Col: 37} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53)) if templ_7745c5c3_Err != nil { @@ -1094,7 +1094,7 @@ func globalResultsBody(d GlobalResultsData) templ.Component { var templ_7745c5c3_Var54 string templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(humanTime(r.FoundAt)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 284, Col: 57} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/results.templ`, Line: 286, Col: 57} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54)) if templ_7745c5c3_Err != nil {