Smart Filters & Dashboard Customization (#2282)

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
This commit is contained in:
Joe Milazzo 2023-09-12 11:24:47 -07:00 committed by GitHub
parent 3d501c9532
commit 84f85b4f24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
92 changed files with 7149 additions and 555 deletions

View file

@ -14,7 +14,7 @@ namespace API.Extensions.QueryExtensions.Filtering;
public static class SeriesFilter
{
private const float FloatingPointTolerance = 0.01f;
public static IQueryable<Series> HasLanguage(this IQueryable<Series> queryable, bool condition,
FilterComparison comparison, IList<string> languages)
{
@ -94,7 +94,7 @@ public static class SeriesFilter
switch (comparison)
{
case FilterComparison.Equal:
return queryable.Where(s => s.Ratings.Any(r => r.Rating == rating && r.AppUserId == userId));
return queryable.Where(s => s.Ratings.Any(r => Math.Abs(r.Rating - rating) < FloatingPointTolerance && r.AppUserId == userId));
case FilterComparison.GreaterThan:
return queryable.Where(s => s.Ratings.Any(r => r.Rating > rating && r.AppUserId == userId));
case FilterComparison.GreaterThanEqual:
@ -252,7 +252,7 @@ public static class SeriesFilter
switch (comparison)
{
case FilterComparison.Equal:
subQuery = subQuery.Where(s => s.Percentage == readProgress);
subQuery = subQuery.Where(s => Math.Abs(s.Percentage - readProgress) < FloatingPointTolerance);
break;
case FilterComparison.GreaterThan:
subQuery = subQuery.Where(s => s.Percentage > readProgress);
@ -267,7 +267,7 @@ public static class SeriesFilter
subQuery = subQuery.Where(s => s.Percentage <= readProgress);
break;
case FilterComparison.NotEqual:
subQuery = subQuery.Where(s => s.Percentage != readProgress);
subQuery = subQuery.Where(s => Math.Abs(s.Percentage - readProgress) > FloatingPointTolerance);
break;
case FilterComparison.Matches:
case FilterComparison.Contains:

View file

@ -31,6 +31,7 @@ public static class SeriesSort
SortField.LastChapterAdded => query.OrderBy(s => s.LastChapterAdded),
SortField.TimeToRead => query.OrderBy(s => s.AvgHoursToRead),
SortField.ReleaseYear => query.OrderBy(s => s.Metadata.ReleaseYear),
//SortField.ReadProgress => query.OrderBy()
_ => query
};
}

View file

@ -130,6 +130,17 @@ public static class IncludesExtensions
query = query.Include(u => u.ScrobbleHolds);
}
if (includeFlags.HasFlag(AppUserIncludes.SmartFilters))
{
query = query.Include(u => u.SmartFilters);
}
if (includeFlags.HasFlag(AppUserIncludes.DashboardStreams))
{
query = query.Include(u => u.DashboardStreams)
.ThenInclude(s => s.SmartFilter);
}
return query.AsSplitQuery();
}