diff --git a/docs/configuration.md b/docs/configuration.md index 116f8da..242e9ea 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1539,7 +1539,7 @@ Preview: An array of markets for which to display information about. ##### `sort-by` -By default the markets are displayed in the order they were defined. You can customize their ordering by setting the `sort-by` property to `absolute-change` for descending order based on the stock's absolute price change. +By default the markets are displayed in the order they were defined. You can customize their ordering by setting the `sort-by` property to `change` for descending order based on the stock's percentage change (e.g. 1% would be sorted higher than -1%) or `absolute-change` for descending order based on the stock's absolute price change (e.g. -1% would be sorted higher than +0.5%). ###### Properties for each stock | Name | Type | Required | diff --git a/internal/feed/primitives.go b/internal/feed/primitives.go index 755b002..90a6a52 100644 --- a/internal/feed/primitives.go +++ b/internal/feed/primitives.go @@ -133,6 +133,12 @@ func (t Markets) SortByAbsChange() { }) } +func (t Markets) SortByChange() { + sort.Slice(t, func(i, j int) bool { + return t[i].PercentChange > t[j].PercentChange + }) +} + var weatherCodeTable = map[int]string{ 0: "Clear Sky", 1: "Mainly Clear", diff --git a/internal/widget/markets.go b/internal/widget/markets.go index 0d80973..27c431b 100644 --- a/internal/widget/markets.go +++ b/internal/widget/markets.go @@ -38,6 +38,10 @@ func (widget *Markets) Update(ctx context.Context) { markets.SortByAbsChange() } + if widget.Sort == "change" { + markets.SortByChange() + } + widget.Markets = markets }