added from stores
This commit is contained in:
@@ -45,3 +45,49 @@ func (f StoreFilter) Filter (stores []Store) []Store {
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
type ListingFilter struct{
|
||||
Limit int
|
||||
|
||||
IncludeIds []int
|
||||
ExcludeIds []int
|
||||
|
||||
FromStores []int
|
||||
}
|
||||
|
||||
|
||||
func (f ListingFilter) Filter (listings []Listing) []Listing {
|
||||
result := make([]Listing, 0)
|
||||
|
||||
if len(f.IncludeIds) > 0 {
|
||||
for _, l := range listings {
|
||||
if f.Limit > 0 && len(result) >= f.Limit {
|
||||
break
|
||||
}
|
||||
|
||||
if slices.Contains(f.IncludeIds, l.Id) {
|
||||
result = append(result, l)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for _, l := range listings {
|
||||
if f.Limit > 0 && len(result) >= f.Limit {
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
if slices.Contains(f.ExcludeIds, l.Id) || slices.Contains(f.IncludeIds, l.Id) {
|
||||
continue
|
||||
}
|
||||
|
||||
if len(f.FromStores) > 0 && !slices.Contains(f.FromStores, l.Store.Id) {
|
||||
continue
|
||||
}
|
||||
|
||||
result = append(result, l)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ type RenderingConfig struct {
|
||||
SearchInputName string
|
||||
|
||||
StoreFilter diyhrt.StoreFilter
|
||||
ListingFilter diyhrt.ListingFilter
|
||||
|
||||
Listings []diyhrt.Listing
|
||||
Stores []diyhrt.Store
|
||||
@@ -44,6 +45,10 @@ func DefaultRenderingConfig() RenderingConfig {
|
||||
Limit: 0,
|
||||
IncludeIds: []int{7},
|
||||
},
|
||||
|
||||
ListingFilter: diyhrt.ListingFilter{
|
||||
FromStores: []int{7},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,6 +59,6 @@ func (rc *RenderingConfig) LoadDiyHrt(listings []diyhrt.Listing) {
|
||||
existingStores[listing.Store.Id] = listing.Store
|
||||
}
|
||||
|
||||
rc.Listings = listings
|
||||
rc.Listings = rc.ListingFilter.Filter(listings)
|
||||
rc.Stores = rc.StoreFilter.Filter(slices.Collect(maps.Values(existingStores)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user