mirror of
https://github.com/Kareadita/Kavita.git
synced 2026-05-13 11:02:18 -04:00
Smart Filters & Dashboard Customization (#2282)
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user