-
-
+
+
+
-
-
-
-
+
diff --git a/UI/Web/src/app/metadata-filter/metadata-filter.component.ts b/UI/Web/src/app/metadata-filter/metadata-filter.component.ts
index 8ffb1ac38..3ffdc9654 100644
--- a/UI/Web/src/app/metadata-filter/metadata-filter.component.ts
+++ b/UI/Web/src/app/metadata-filter/metadata-filter.component.ts
@@ -30,6 +30,8 @@ import {MetadataService} from "../_services/metadata.service";
import {FilterUtilitiesService} from "../shared/_services/filter-utilities.service";
import {FilterService} from "../_services/filter.service";
import {ToastrService} from "ngx-toastr";
+import {Select2Module, Select2Option, Select2UpdateEvent} from "ng-select2-component";
+import {SmartFilter} from "../_models/metadata/v2/smart-filter";
@Component({
selector: 'app-metadata-filter',
@@ -38,7 +40,7 @@ import {ToastrService} from "ngx-toastr";
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [NgIf, NgbCollapse, NgTemplateOutlet, DrawerComponent, NgbTooltip, TypeaheadComponent,
- ReactiveFormsModule, FormsModule, NgbRating, AsyncPipe, TranslocoModule, SortFieldPipe, MetadataBuilderComponent, NgForOf]
+ ReactiveFormsModule, FormsModule, NgbRating, AsyncPipe, TranslocoModule, SortFieldPipe, MetadataBuilderComponent, NgForOf, Select2Module]
})
export class MetadataFilterComponent implements OnInit {
@@ -78,16 +80,22 @@ export class MetadataFilterComponent implements OnInit {
allSortFields = allSortFields;
allFilterFields = allFields;
- handleFilters(filter: SeriesFilterV2) {
- this.filterV2 = filter;
- }
-
+ smartFilters!: Array
;
private readonly cdRef = inject(ChangeDetectorRef);
private readonly toastr = inject(ToastrService);
- constructor(public toggleService: ToggleService, private filterService: FilterService) {}
+ constructor(public toggleService: ToggleService, private filterService: FilterService) {
+ this.filterService.getAllFilters().subscribe(res => {
+ this.smartFilters = res.map(r => {
+ return {
+ value: r,
+ label: r.name,
+ }
+ });
+ });
+ }
ngOnInit(): void {
if (this.filterSettings === undefined) {
@@ -106,6 +114,11 @@ export class MetadataFilterComponent implements OnInit {
this.loadFromPresetsAndSetup();
}
+ updateFilterValue(event: Select2UpdateEvent) {
+ console.log('event: ', event);
+ }
+
+
close() {
this.filterOpen.emit(false);
this.filteringCollapsed = true;
@@ -137,6 +150,10 @@ export class MetadataFilterComponent implements OnInit {
return clonedObj;
}
+ handleFilters(filter: SeriesFilterV2) {
+ this.filterV2 = filter;
+ }
+
loadFromPresetsAndSetup() {
this.fullyLoaded = false;
@@ -187,7 +204,7 @@ export class MetadataFilterComponent implements OnInit {
apply() {
this.applyFilter.emit({isFirst: this.updateApplied === 0, filterV2: this.filterV2!});
-
+
if (this.utilityService.getActiveBreakpoint() === Breakpoint.Mobile && this.updateApplied !== 0) {
this.toggleSelected();
}
diff --git a/UI/Web/src/app/pipe/sort-field.pipe.ts b/UI/Web/src/app/pipe/sort-field.pipe.ts
index be9679e76..1fe878860 100644
--- a/UI/Web/src/app/pipe/sort-field.pipe.ts
+++ b/UI/Web/src/app/pipe/sort-field.pipe.ts
@@ -14,17 +14,19 @@ export class SortFieldPipe implements PipeTransform {
transform(value: SortField): string {
switch (value) {
case SortField.SortName:
- return this.translocoService.translate('sort-field-pipe.sort-name')
+ return this.translocoService.translate('sort-field-pipe.sort-name');
case SortField.Created:
- return this.translocoService.translate('sort-field-pipe.created')
+ return this.translocoService.translate('sort-field-pipe.created');
case SortField.LastModified:
- return this.translocoService.translate('sort-field-pipe.last-modified')
+ return this.translocoService.translate('sort-field-pipe.last-modified');
case SortField.LastChapterAdded:
- return this.translocoService.translate('sort-field-pipe.last-chapter-added')
+ return this.translocoService.translate('sort-field-pipe.last-chapter-added');
case SortField.TimeToRead:
- return this.translocoService.translate('sort-field-pipe.time-to-read')
+ return this.translocoService.translate('sort-field-pipe.time-to-read');
case SortField.ReleaseYear:
- return this.translocoService.translate('sort-field-pipe.release-year')
+ return this.translocoService.translate('sort-field-pipe.release-year');
+ case SortField.ReadProgress:
+ return this.translocoService.translate('sort-field-pipe.read-progress');
}
}
diff --git a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html
index fa204a2c4..cfa6b5e02 100644
--- a/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html
+++ b/UI/Web/src/app/series-detail/_components/series-detail/series-detail.component.html
@@ -74,7 +74,7 @@
@@ -101,7 +101,7 @@
-