From 35b85844ea5a3c1dc1fe9d4e80a33b7a06576e02 Mon Sep 17 00:00:00 2001 From: Hlib Date: Tue, 8 Oct 2024 14:51:00 +0300 Subject: [PATCH] feat: update get paged albums component - add pagination - add search filed --- .../public/no-items-found.webp | Bin 0 -> 54546 bytes .../album-view/album-view.component.html | 8 +- .../album/album-view/album-view.component.ts | 4 +- .../albums-view/albums-view.component.html | 223 ++++++++++-------- .../albums-view/albums-view.component.ts | 99 ++++++-- .../src/app/login/login.component.ts | 9 +- .../src/app/services/album.service.ts | 23 +- .../item-no-found.component.html | 2 +- 8 files changed, 232 insertions(+), 136 deletions(-) create mode 100644 src/CoinyProject.Client/public/no-items-found.webp diff --git a/src/CoinyProject.Client/public/no-items-found.webp b/src/CoinyProject.Client/public/no-items-found.webp new file mode 100644 index 0000000000000000000000000000000000000000..b89dcdd9b2fe747c5148497056b90253cf95eb9b GIT binary patch literal 54546 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
- -
- {{ errorMessage }} +
+
+ +
@@ -87,5 +88,6 @@

{{ album.name }}

+
diff --git a/src/CoinyProject.Client/src/app/album/album-view/album-view.component.ts b/src/CoinyProject.Client/src/app/album/album-view/album-view.component.ts index 9f2a828..7f4d175 100644 --- a/src/CoinyProject.Client/src/app/album/album-view/album-view.component.ts +++ b/src/CoinyProject.Client/src/app/album/album-view/album-view.component.ts @@ -6,6 +6,7 @@ import {DatePipe, NgClass, NgIf} from "@angular/common"; import {ModalComponent} from "../../shared/modal/modal.component"; import {AuthService} from "../../services/auth.service"; import {UserModel} from "../../services/user.model"; +import {ItemNoFoundComponent} from "../../shared/item-no-found/item-no-found.component"; @Component({ selector: 'app-album-view', @@ -15,7 +16,8 @@ import {UserModel} from "../../services/user.model"; DatePipe, NgIf, ModalComponent, - NgClass + NgClass, + ItemNoFoundComponent ], templateUrl: './album-view.component.html', styleUrl: './album-view.component.css' diff --git a/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.html b/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.html index e4f8533..0296bfb 100644 --- a/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.html +++ b/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.html @@ -1,7 +1,10 @@ +
+ +
- -
- + + -
-
- - -
- -
-
- -
- - - - -
- - - -
+ + +
- - - -
- Album Image - - - - +
+ +
- -
+ +
+ +
+
+ + +
+ + + + + + + + Album Image + + + + + + +
-
-
- - -
- - - -

{{ album.name }}

- - -

- {{ album.description || 'No description available' }} -

+
+
+ + +
+ + + +

{{ album.name }}

+ + +

+ {{ album.description || 'No description available' }} +

+ + +
+ Rate: + {{ album.rate }} +
+ + + + + +
+ Updated: + {{ album.updatedAt | date:'dd MMM yyyy, HH:mm' }} +
+
+ +
+ {{ album.status === 'Inactive' ? 'Inactive' : 'Not Approved' }} +
- -
- Rate: - {{ album.rate }}
+
+ +
+ + - - + + + Page {{ page }} of {{ totalPages }} + - -
- Updated: - {{ album.updatedAt | date:'dd MMM yyyy, HH:mm' }} -
+ +
+
-
- {{ album.status === 'Inactive' ? 'Inactive' : 'Not Approved' }} -
+
-
-
-
diff --git a/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.ts b/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.ts index 957ca25..8979755 100644 --- a/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.ts +++ b/src/CoinyProject.Client/src/app/album/albums-view/albums-view.component.ts @@ -6,6 +6,7 @@ import {FormsModule} from "@angular/forms"; import {ActivatedRoute, RouterLink} from "@angular/router"; import {UserModel} from "../../services/user.model"; import {AuthService} from "../../services/auth.service"; +import {ItemNoFoundComponent} from "../../shared/item-no-found/item-no-found.component"; @Component({ selector: 'app-albums-view', @@ -17,7 +18,8 @@ import {AuthService} from "../../services/auth.service"; NgForOf, DatePipe, RouterLink, - NgIf + NgIf, + ItemNoFoundComponent ], styleUrls: ['./albums-view.component.css'] }) @@ -25,10 +27,11 @@ export class AlbumsViewComponent implements OnInit { albums: AlbumViewGetDto[] = []; filteredAlbums: AlbumViewGetDto[] = []; page: number = 1; - size: number = 10; + size: number = 2; sortItem: string = 'time'; isAscending: boolean = false; searchQuery: string = ''; + totalPages: number = 0; userId: string | null = null; isCurrentUser: boolean = false; @@ -58,39 +61,70 @@ export class AlbumsViewComponent implements OnInit { this.getAlbums(); } - getAlbums(): void { - // Якщо переглядаються альбоми поточного користувача + // Error message field to store any errors + errorMessage: string | null = null; + + getAlbums(search: string | null = null): void { + // Clear any existing error messages before making a request + this.errorMessage = null; + if (this.isCurrentUser || this.userId) { - this.albumService.getPagedAlbumsByUser(this.userId, this.page, this.size, this.sortItem, this.isAscending).subscribe(response => { - this.albums = response.items.map(album => { - album.currentImageIndex = 0; - return album; - }); - this.filteredAlbums = this.albums; - }); - } - else { - this.albumService.getPagedAlbumsForView(this.page, this.size, this.sortItem, this.isAscending).subscribe(response => { - this.albums = response.items.map(album => { - album.currentImageIndex = 0; - return album; - }); - this.filteredAlbums = this.albums; - }); + // Fetch albums for the current user or a specific user + this.albumService.getPagedAlbumsByUser(this.userId, this.page, this.size, this.sortItem, this.isAscending, search) + .subscribe({ + next: (response) => { + this.totalPages = response.totalPages; + this.albums = response.items.map(album => { + album.currentImageIndex = 0; + return album; + }); + this.filteredAlbums = this.albums; + }, + error: (error) => { + this.albums = []; + console.error('Error fetching user albums:', error); + this.errorMessage = 'Failed to load albums. Please try again later.'; + } + }); + } else { + // Fetch albums for viewing (not specific to a user) + this.albumService.getPagedAlbumsForView(this.page, this.size, this.sortItem, this.isAscending, search) + .subscribe({ + next: (response) => { + this.totalPages = response.totalPages; + this.albums = response.items.map(album => { + album.currentImageIndex = 0; + return album; + }); + this.filteredAlbums = this.albums; + }, + error: (error) => { + this.albums = []; + console.error('Error fetching albums:', error); + this.errorMessage = 'Failed to load albums. Please try again later.'; + } + }); } } setSort(sortType: string, isAscending: boolean): void { this.sortItem = sortType; - this.isAscending = isAscending; - this.getAlbums(); + this.isAscending = isAscending; + this.getAlbums(); // Re-fetch albums with new sort settings } - searchAlbums(): void { - this.filteredAlbums = this.albums.filter(album => - album.name.toLowerCase().includes(this.searchQuery.toLowerCase())); + onSearch(): void { + const trimmedQuery = this.searchQuery.trim(); // Trim spaces before searching + + // If search query is present, trigger search, otherwise load all albums + if (trimmedQuery) { + this.getAlbums(trimmedQuery); + } else { + this.getAlbums(); // Load all albums if the search query is cleared + } } + getPreviousImage(album: any) { album.currentImageIndex = (album.currentImageIndex > 0) ? album.currentImageIndex - 1 @@ -114,4 +148,19 @@ export class AlbumsViewComponent implements OnInit { target.src = 'no-image.jpg'; } + // Pagination methods + nextPage(): void { + if (this.page < this.totalPages) { + this.page++; + this.getAlbums(); + } + } + + previousPage(): void { + if (this.page > 1) { + this.page--; + this.getAlbums(); + } + } + } diff --git a/src/CoinyProject.Client/src/app/login/login.component.ts b/src/CoinyProject.Client/src/app/login/login.component.ts index 67f58c9..c2943ca 100644 --- a/src/CoinyProject.Client/src/app/login/login.component.ts +++ b/src/CoinyProject.Client/src/app/login/login.component.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import {Router} from "@angular/router"; +import {ActivatedRoute, Router} from "@angular/router"; import {AuthService} from "../services/auth.service"; import {FormsModule} from "@angular/forms"; import {LoginRequestDto} from "./login-request.module"; @@ -23,7 +23,7 @@ export class LoginComponent { }; errorMessage = ''; - constructor(private authService: AuthService, private cookieService: CookieService, private router: Router) {} + constructor(private authService: AuthService, private cookieService: CookieService, private router: Router, private route: ActivatedRoute) {} onLoginFormSubmit() { this.authService.login(this.loginDto) @@ -38,8 +38,11 @@ export class LoginComponent { email: response.email, roles: response.roles }); + // Get the returnUrl from query parameters or use a default + const returnUrl = this.route.snapshot.queryParamMap.get('returnUrl') || '/'; - this.router.navigate(['']); + // Navigate to the returnUrl + this.router.navigateByUrl(returnUrl).then(r => console.log(`Navigated to ${returnUrl}`)); }, error: (err) => { this.errorMessage = `Incorrect login or password (${err.status})`; diff --git a/src/CoinyProject.Client/src/app/services/album.service.ts b/src/CoinyProject.Client/src/app/services/album.service.ts index f624884..9951849 100644 --- a/src/CoinyProject.Client/src/app/services/album.service.ts +++ b/src/CoinyProject.Client/src/app/services/album.service.ts @@ -16,17 +16,20 @@ export class AlbumService { constructor(private http: HttpClient) { } - getPagedAlbumsForView(page: number, size: number, sortItem: string, isAscending: boolean): Observable> { - const params = { - page: page.toString(), - size: size.toString(), - sortItem: sortItem, - isAscending: isAscending.toString(), - }; + getPagedAlbumsForView(page: number, size: number, sortItem: string, isAscending: boolean, search: string | null = null): Observable> { + let params = new HttpParams(); + params = params.append('page', page.toString()); + params = params.append('size', size.toString(),); + params = params.append('sortItem', sortItem); + params = params.append('isAscending', isAscending.toString()); + + if (search) { + params = params.append('search', search); + } return this.http.get>(this.baseUrl, {params}); } - getPagedAlbumsByUser(userId: string | null, page: number, size: number, sortItem: string, isAscending: boolean): Observable> { + getPagedAlbumsByUser(userId: string | null, page: number, size: number, sortItem: string, isAscending: boolean, search: string | null = null): Observable> { let params = new HttpParams(); if (userId) { params = params.append('userId', userId); @@ -40,6 +43,10 @@ export class AlbumService { params = params.append('sortItem', sortItem); params = params.append('isAscending', isAscending.toString()); + if (search) { + params = params.append('search', search); + } + return this.http.get>(`${this.baseUrl}/by-user`, { params }); } diff --git a/src/CoinyProject.Client/src/app/shared/item-no-found/item-no-found.component.html b/src/CoinyProject.Client/src/app/shared/item-no-found/item-no-found.component.html index 27950ae..06c5414 100644 --- a/src/CoinyProject.Client/src/app/shared/item-no-found/item-no-found.component.html +++ b/src/CoinyProject.Client/src/app/shared/item-no-found/item-no-found.component.html @@ -1,4 +1,4 @@ -
+
No Items Found Illustration