diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html index 7c91e9900..228ae9cdb 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html @@ -10,8 +10,8 @@ - +
diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.ts b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.ts index 513558fa0..4443cd4ed 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.ts +++ b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.ts @@ -1,4 +1,4 @@ -import { Component, AfterViewInit, ViewChild, EventEmitter, Output, ChangeDetectorRef } from "@angular/core"; +import { Component, AfterViewInit, ViewChild, EventEmitter, Output, ChangeDetectorRef, OnInit } from "@angular/core"; import { IMovieRequests, IRequestsViewModel } from "../../../interfaces"; import { MatPaginator, MatSort } from "@angular/material"; import { merge, Observable, of as observableOf } from 'rxjs'; @@ -6,13 +6,14 @@ import { catchError, map, startWith, switchMap } from 'rxjs/operators'; import { RequestServiceV2 } from "../../../services/requestV2.service"; import { AuthService } from "../../../auth/auth.service"; +import { StorageService } from "../../../shared/storage/storage-service"; @Component({ templateUrl: "./movies-grid.component.html", selector: "movies-grid", styleUrls: ["../requests-list.component.scss"] }) -export class MoviesGridComponent implements AfterViewInit { +export class MoviesGridComponent implements OnInit, AfterViewInit { public dataSource: IMovieRequests[] = []; public resultsLength: number; public isLoadingResults = true; @@ -20,6 +21,11 @@ export class MoviesGridComponent implements AfterViewInit { public gridCount: string = "15"; public showUnavailableRequests: boolean; public isAdmin: boolean; + public defaultSort: string = "requestedDate"; + public defaultOrder: string = "desc"; + + private storageKey = "Movie_DefaultRequestListSort"; + private storageKeyOrder = "Movie_DefaultRequestListSortOrder"; @Output() public onOpenOptions = new EventEmitter<{ request: any, filter: any, onChange: any }>(); @@ -27,9 +33,20 @@ export class MoviesGridComponent implements AfterViewInit { @ViewChild(MatSort, { static: false }) sort: MatSort; constructor(private requestService: RequestServiceV2, private ref: ChangeDetectorRef, - private auth: AuthService) { + private auth: AuthService, private storageService: StorageService) { } + + public ngOnInit() { + const defaultSort = this.storageService.get(this.storageKey); + const defaultOrder = this.storageService.get(this.storageKeyOrder); + if (defaultSort) { + this.defaultSort = defaultSort; + } + if (defaultOrder) { + this.defaultOrder = defaultOrder; + } + } public async ngAfterViewInit() { // const results = await this.requestService.getMovieRequests(this.gridCount, 0, OrderType.RequestedDateDesc, @@ -45,10 +62,12 @@ export class MoviesGridComponent implements AfterViewInit { merge(this.sort.sortChange, this.paginator.page) .pipe( startWith({}), - switchMap(() => { + switchMap((value: any) => { this.isLoadingResults = true; - // eturn this.exampleDatabase!.getRepoIssues( - // this.sort.active, this.sort.direction, this.paginator.pageIndex); + if (value.active || value.direction) { + this.storageService.save(this.storageKey, value.active); + this.storageService.save(this.storageKeyOrder, value.direction); + } return this.loadData(); }), map((data: IRequestsViewModel) => { diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.html index 381865c0c..a5b9364fe 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.html @@ -11,7 +11,7 @@ -

Some more tab content

+

Coming soon

...

diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html index 343b9f255..2b9cec0d6 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html @@ -11,8 +11,8 @@ -
+
diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts index 78dd23c1a..3e13a5ce2 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts +++ b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts @@ -1,4 +1,4 @@ -import { Component, AfterViewInit, ViewChild, Output, EventEmitter, ChangeDetectorRef } from "@angular/core"; +import { Component, AfterViewInit, ViewChild, Output, EventEmitter, ChangeDetectorRef, OnInit } from "@angular/core"; import { IRequestsViewModel, IChildRequests } from "../../../interfaces"; import { MatPaginator, MatSort } from "@angular/material"; import { merge, of as observableOf, Observable } from 'rxjs'; @@ -6,13 +6,14 @@ import { catchError, map, startWith, switchMap } from 'rxjs/operators'; import { RequestServiceV2 } from "../../../services/requestV2.service"; import { AuthService } from "../../../auth/auth.service"; +import { StorageService } from "../../../shared/storage/storage-service"; @Component({ templateUrl: "./tv-grid.component.html", selector: "tv-grid", styleUrls: ["../requests-list.component.scss"] }) -export class TvGridComponent implements AfterViewInit { +export class TvGridComponent implements OnInit, AfterViewInit { public dataSource: IChildRequests[] = []; public resultsLength: number; public isLoadingResults = true; @@ -20,6 +21,11 @@ export class TvGridComponent implements AfterViewInit { public gridCount: string = "15"; public showUnavailableRequests: boolean; public isAdmin: boolean; + public defaultSort: string = "requestedDate"; + public defaultOrder: string = "desc"; + + private storageKey = "Tv_DefaultRequestListSort"; + private storageKeyOrder = "Tv_DefaultRequestListSortOrder"; @Output() public onOpenOptions = new EventEmitter<{request: any, filter: any, onChange: any}>(); @@ -27,10 +33,21 @@ export class TvGridComponent implements AfterViewInit { @ViewChild(MatSort, {static: false}) sort: MatSort; constructor(private requestService: RequestServiceV2, private auth: AuthService, - private ref: ChangeDetectorRef) { + private ref: ChangeDetectorRef, private storageService: StorageService) { } + public ngOnInit() { + const defaultSort = this.storageService.get(this.storageKey); + const defaultOrder = this.storageService.get(this.storageKeyOrder); + if (defaultSort) { + this.defaultSort = defaultSort; + } + if (defaultOrder) { + this.defaultOrder = defaultOrder; + } + } + public async ngAfterViewInit() { this.isAdmin = this.auth.hasRole("admin") || this.auth.hasRole("poweruser"); @@ -40,8 +57,13 @@ export class TvGridComponent implements AfterViewInit { merge(this.sort.sortChange, this.paginator.page) .pipe( startWith({}), - switchMap(() => { + switchMap((value: any) => { this.isLoadingResults = true; + + if (value.active || value.direction) { + this.storageService.save(this.storageKey, value.active); + this.storageService.save(this.storageKeyOrder, value.direction); + } return this.loadData(); }), map((data: IRequestsViewModel) => {