In-Depth Filtering (#850)

* Laying the foundation for the filter rework

* Filtering by Genre is now possible.

* Cleaned up code and preparing for People filtering

* People filtering is hooked up for the frontend

* Filtering now works. On Deck does not work with filtering currently due to a unique implementation.

* More cleanup

* Implemented the ability to reset the filters

* Added a mobile drawer for filtering

* Added some additional cases for NaturalSortComparer. Filter now uses a drawer on smaller screens.

* Fixed a bug where backup service was not pointing to the correct directory.

* Undid the fix, it's working as expected
This commit is contained in:
Joseph Milazzo 2021-12-15 10:23:10 -06:00 committed by GitHub
parent ca893930d3
commit 28688ada8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 2354 additions and 187 deletions

View file

@ -13,6 +13,7 @@ export enum PersonRole {
}
export interface Person {
id: number;
name: string;
role: PersonRole;
}

View file

@ -1,38 +1,53 @@
import { MangaFormat } from "./manga-format";
export interface FilterItem {
export interface FilterItem<T> {
title: string;
value: any;
value: T;
selected: boolean;
}
export interface SeriesFilter {
formats: Array<MangaFormat>;
libraries: Array<number>,
readStatus: ReadStatus;
genres: Array<number>;
writers: Array<number>;
penciller: Array<number>;
inker: Array<number>;
colorist: Array<number>;
letterer: Array<number>;
coverArtist: Array<number>;
editor: Array<number>;
publisher: Array<number>;
character: Array<number>;
collectionTags: Array<number>;
rating: number;
}
export interface ReadStatus {
notRead: boolean,
inProgress: boolean,
read: boolean,
}
export const mangaFormatFilters = [
{
title: 'Format: All',
value: null,
selected: false
},
{
title: 'Format: Images',
title: 'Images',
value: MangaFormat.IMAGE,
selected: false
},
{
title: 'Format: EPUB',
title: 'EPUB',
value: MangaFormat.EPUB,
selected: false
},
{
title: 'Format: PDF',
title: 'PDF',
value: MangaFormat.PDF,
selected: false
},
{
title: 'Format: ARCHIVE',
title: 'ARCHIVE',
value: MangaFormat.ARCHIVE,
selected: false
}