
* Updated theme support to be able to customize the tile color dynamically from a theme via --tile-color. In addition, --theme-color will update apple-mobile-web-app-status-bar-style as well as the non-apple variants * Removed --manga-reader-bg-color as it wasn't used anywhere. Fixed double pagination on swipe. * Cleaned up some dead threshold code for swipe. * Started refactoring tests to use an abstract test class. Stopping because I should do on the .net 7 branch to avoid large merge conflicts. Tests need to be re-designed so they can run in parallel. * Fixed a bug in reading lists where when deleting an item, order could be miscalculated. * Started adding new information for stat service. Refactored time spent reading to be more accurate by taking average time against how much of the chapter the user has read. * Hooked up total time reading at server stat level. Don't show fancy graphs on mobile. * Added new stats for v0.7 * Added a test for Clearing want to read * Fixed a few tests that weren't resetting state between runs * Fixed some broken unit tests * Ensure all Series queries sort by a case invariant string. * Added more aggressive caching of images. This will result in a min delay on pages after a cover is changed. * Fixed a bug where if during new word count calculation, new word count is zero, restoring the old count wasn't working. * Cleaned up some of the code for getting time estimates * Fixed a bug where triggering swipe right wasn't working when there was no scroll * Delete the temp folder for creating a download after a full zip is created.
123 lines
5.3 KiB
HTML
123 lines
5.3 KiB
HTML
<div class="container-fluid">
|
|
<div class="row g-0 mt-4 mb-3 d-flex justify-content-around" *ngIf="stats$ | async as stats">
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Series" [clickable]="false" fontClasses="fa-solid fa-book-open" title="Total Series">
|
|
{{stats.seriesCount | compactNumber}} Series
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container >
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Volumes" [clickable]="false" fontClasses="fas fa-book" title="Total Volumes">
|
|
{{stats.volumeCount | compactNumber}} Volumes
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Files" [clickable]="false" fontClasses="fa-regular fa-file" title="Total Files">
|
|
{{stats.totalFiles | compactNumber}} Files
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Size" [clickable]="false" fontClasses="fa-solid fa-scale-unbalanced" title="Total Size">
|
|
{{stats.totalSize | bytes}}
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Genres" [clickable]="true" fontClasses="fa-solid fa-tags" title="Total Genres" (click)="openGenreList();$event.stopPropagation();">
|
|
{{stats.totalGenres | compactNumber}} Genres
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Tags" [clickable]="true" fontClasses="fa-solid fa-tags" title="Total Tags" (click)="openTagList();$event.stopPropagation();">
|
|
{{stats.totalTags | compactNumber}} Tags
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total People" [clickable]="true" fontClasses="fa-solid fa-user-tag" title="Total People" (click)="openPeopleList();$event.stopPropagation();">
|
|
{{stats.totalPeople | compactNumber}} People
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container>
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Total Read Time" [clickable]="false" fontClasses="fas fa-eye" title="Total Read Time">
|
|
{{stats.totalReadingTime | compactNumber}} Hours
|
|
</app-icon-and-title>
|
|
</div>
|
|
</ng-container>
|
|
</div>
|
|
|
|
<div class="grid row g-0 pt-2 pb-2 d-flex justify-content-around">
|
|
<div class="col-auto">
|
|
<app-stat-list [data$]="releaseYears$" title="Release Years" label="series"></app-stat-list>
|
|
</div>
|
|
<div class="col-auto">
|
|
<app-stat-list [data$]="mostActiveUsers$" title="Most Active Users" label="reads"></app-stat-list>
|
|
</div>
|
|
<div class="col-auto">
|
|
<app-stat-list [data$]="mostActiveLibrary$" title="Popular Libraries" label="reads"></app-stat-list>
|
|
</div>
|
|
<div class="col-auto">
|
|
<app-stat-list [data$]="mostActiveSeries$" title="Popular Series" [image]="seriesImage" [handleClick]="openSeries">
|
|
</app-stat-list>
|
|
</div>
|
|
<div class="col-auto">
|
|
<app-stat-list [data$]="recentlyRead$" title="Recently Read" [image]="seriesImage" [handleClick]="openSeries"></app-stat-list>
|
|
</div>
|
|
</div>
|
|
|
|
<ng-container *ngIf="breakpoint$ | async as bp">
|
|
<div class="row g-0 pt-2 pb-2" *ngIf="bp > Breakpoint.Mobile">
|
|
<app-top-readers></app-top-readers>
|
|
</div>
|
|
|
|
<div class="row g-0 pt-4 pb-2" style="height: 242px" *ngIf="bp > Breakpoint.Mobile">
|
|
<div class="col-md-6 col-sm-12">
|
|
<app-file-breakdown-stats></app-file-breakdown-stats>
|
|
</div>
|
|
<div class="col-md-6 col-sm-12">
|
|
<app-publication-status-stats></app-publication-status-stats>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-0 pt-4 pb-2 " style="height: 242px" *ngIf="bp > Breakpoint.Mobile">
|
|
<div class="col-md-12 col-sm-12 mt-4 pt-2">
|
|
<app-read-by-day-and [isAdmin]="true"></app-read-by-day-and>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-0 pt-4 pb-2 " style="height: 242px" *ngIf="bp > Breakpoint.Mobile">
|
|
<div class="col-md-12 col-sm-12 mt-4 pt-2">
|
|
<app-day-breakdown></app-day-breakdown>
|
|
</div>
|
|
</div>
|
|
</ng-container>
|
|
|
|
|
|
|
|
</div>
|