Add leaderboard_rank filters to similar-replays screen

This commit is contained in:
Stedoss 2025-03-11 17:37:51 +00:00
parent f798a791bf
commit 3a73942602
3 changed files with 25 additions and 1 deletions

View File

@ -170,6 +170,8 @@ export interface SimilarReplay {
replay_date_2: string; replay_date_2: string;
replay_pp_1: number; replay_pp_1: number;
replay_pp_2: number; replay_pp_2: number;
replay_leaderboard_rank_1: number;
replay_leaderboard_rank_2: number;
beatmap_id: number; beatmap_id: number;
beatmap_title: string; beatmap_title: string;
beatmap_star_rating: number; beatmap_star_rating: number;

View File

@ -51,6 +51,20 @@
<input class="form-control" type="text" id="searchBeatmap" [(ngModel)]="this.filterManager.filters.searchBeatmap" (input)="filterScores()" <input class="form-control" type="text" id="searchBeatmap" [(ngModel)]="this.filterManager.filters.searchBeatmap" (input)="filterScores()"
[readOnly]="this.isUrlFilters" [disabled]="this.isUrlFilters"> [readOnly]="this.isUrlFilters" [disabled]="this.isUrlFilters">
</p> </p>
<!-- Min Rank -->
<p>
<label for="minRank" class="form-label">Min Rank (of stolen)</label>
<input class="form-control" type="number" id="minRank" [(ngModel)]="this.filterManager.filters.minRank" (input)="filterScores()"
[readOnly]="this.isUrlFilters" [disabled]="this.isUrlFilters">
</p>
<!-- Max Rank -->
<p>
<label for="maxRank" class="form-label">Max Rank (of stolen)</label>
<input class="form-control" type="number" id="maxRank" [(ngModel)]="this.filterManager.filters.maxRank" (input)="filterScores()"
[readOnly]="this.isUrlFilters" [disabled]="this.isUrlFilters">
</p>
</fieldset> </fieldset>
<div *ngIf="getTotalPages() > 1" style="padding: 20px"> <div *ngIf="getTotalPages() > 1" style="padding: 20px">

View File

@ -19,6 +19,9 @@ export interface FilterStolenReplays {
minSimilarity?: number; minSimilarity?: number;
maxSimilarity?: number; maxSimilarity?: number;
minRank?: number;
maxRank?: number;
} }
@Component({ @Component({
@ -133,7 +136,12 @@ export class ViewSimilarReplaysComponent implements OnInit {
const similarityMatch = (filters.minSimilarity !== undefined ? score.similarity >= filters.minSimilarity : true) && const similarityMatch = (filters.minSimilarity !== undefined ? score.similarity >= filters.minSimilarity : true) &&
(filters.maxSimilarity !== undefined ? score.similarity <= filters.maxSimilarity : true); (filters.maxSimilarity !== undefined ? score.similarity <= filters.maxSimilarity : true);
return usernameMatch && beatmapMatch && ppMatch && similarityMatch; const scoreHasRank = score.replay_leaderboard_rank_2 > 0;
const rankMatch = (filters.minRank == null || (score.replay_leaderboard_rank_2 <= filters.minRank && scoreHasRank)) &&
(filters.maxRank == null || score.replay_leaderboard_rank_2 >= filters.maxRank && scoreHasRank);
return usernameMatch && beatmapMatch && ppMatch && similarityMatch && rankMatch;
}); });
this.filterManager.persistToLocalStorage(); this.filterManager.persistToLocalStorage();