Misc Bugfixes (#2216)
* Folder watching will now appropriately ignore changes that occur in blacklisted folders. * Fixed up recently updated from dashboard not opening a pre-sorted page. There were issues with how encoding and decoding was done plus missing code. * Fixed up all streams from Dashboard opening to correctly filtered pages. * All search linking now works. * Rating tooltip and stars are bigger on mobile. * A bit of cleanup * Added day breakdown to user stats page. * Removed Token checks before we write events to the history table for scrobbling. Refactored so series holds will prevent writing events for reviews, ratings, etc. * Fixed a potential bug where series name could be taken from a chapter that isn't the first ordered (very unlikely) for epubs. Fixed a bug where Volume 1.5 could be selected for series-level metadata over Volume 1. * Optimized the license check code so that users without any license entered would still take advantage of the cache layer. * Sped up an API that checks if the library allows scrobbling * Cleaned up the mobile CSS a bit for filters.
This commit is contained in:
parent
ef3e76e3e5
commit
c84a3294e9
30 changed files with 324 additions and 246 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import {ChangeDetectionStrategy, Component, DestroyRef, inject} from '@angular/core';
|
||||
import {ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit} from '@angular/core';
|
||||
import {FormControl} from '@angular/forms';
|
||||
import { BarChartModule } from '@swimlane/ngx-charts';
|
||||
import {map, Observable} from 'rxjs';
|
||||
|
|
@ -18,8 +18,9 @@ import {TranslocoDirective} from "@ngneat/transloco";
|
|||
standalone: true,
|
||||
imports: [BarChartModule, AsyncPipe, TranslocoDirective]
|
||||
})
|
||||
export class DayBreakdownComponent {
|
||||
export class DayBreakdownComponent implements OnInit {
|
||||
|
||||
@Input() userId = 0;
|
||||
view: [number, number] = [0,0];
|
||||
showLegend: boolean = true;
|
||||
|
||||
|
|
@ -27,9 +28,11 @@ export class DayBreakdownComponent {
|
|||
dayBreakdown$!: Observable<Array<PieDataItem>>;
|
||||
private readonly destroyRef = inject(DestroyRef);
|
||||
|
||||
constructor(private statService: StatisticsService) {
|
||||
constructor(private statService: StatisticsService) {}
|
||||
|
||||
ngOnInit() {
|
||||
const dayOfWeekPipe = new DayOfWeekPipe();
|
||||
this.dayBreakdown$ = this.statService.getDayBreakdown().pipe(
|
||||
this.dayBreakdown$ = this.statService.getDayBreakdown(this.userId).pipe(
|
||||
map((data: Array<StatCount<DayOfWeek>>) => {
|
||||
return data.map(d => {
|
||||
return {name: dayOfWeekPipe.transform(d.value), value: d.count};
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import {ChangeDetectionStrategy, Component, DestroyRef, HostListener, inject} fr
|
|||
import {Router} from '@angular/router';
|
||||
import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
|
||||
import {map, Observable, ReplaySubject, shareReplay} from 'rxjs';
|
||||
import {FilterQueryParam, FilterUtilitiesService} from 'src/app/shared/_services/filter-utilities.service';
|
||||
import {FilterUtilitiesService} from 'src/app/shared/_services/filter-utilities.service';
|
||||
import {Breakpoint, UtilityService} from 'src/app/shared/_services/utility.service';
|
||||
import {Series} from 'src/app/_models/series';
|
||||
import {ImageService} from 'src/app/_services/image.service';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-0 pt-4 pb-2" style="height: 242px">
|
||||
<div class="col-md-12 col-sm-12 mt-4 pt-2">
|
||||
<app-day-breakdown [userId]="userId"></app-day-breakdown>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-0 pt-4 pb-2 " style="height: 242px">
|
||||
<app-stat-list [data$]="percentageRead$" [label]="t('read-percentage')" [title]="t('library-read-progress-title')"></app-stat-list>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import {StatListComponent} from '../stat-list/stat-list.component';
|
|||
import {ReadingActivityComponent} from '../reading-activity/reading-activity.component';
|
||||
import {UserStatsInfoCardsComponent} from '../user-stats-info-cards/user-stats-info-cards.component';
|
||||
import {TranslocoModule} from "@ngneat/transloco";
|
||||
import {DayBreakdownComponent} from "../day-breakdown/day-breakdown.component";
|
||||
|
||||
@Component({
|
||||
selector: 'app-user-stats',
|
||||
|
|
@ -27,6 +28,7 @@ import {TranslocoModule} from "@ngneat/transloco";
|
|||
StatListComponent,
|
||||
AsyncPipe,
|
||||
TranslocoModule,
|
||||
DayBreakdownComponent,
|
||||
],
|
||||
})
|
||||
export class UserStatsComponent implements OnInit {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue