* Updated dependencies * Updated the default key to be 256 bits to meet security requirements. * Added basic implementation of web link resolving favicon. Needs lots more work and testing on all OSes. * Implemented ability to see links and click on them for an individual chapter. * Hooked up the ability to set Series web links. * Render out the web link * Refactored out the favicon so there is a backup in case it fails. Refactored the baseline image placeholders to be dark mode since that is the default. * Added Robbie's nice error weblink fallbacks.
89 lines
No EOL
4.5 KiB
HTML
89 lines
No EOL
4.5 KiB
HTML
<div class="row g-0 mt-4 mb-3">
|
|
<ng-container *ngIf="chapter !== undefined && chapter.releaseDate && (chapter.releaseDate | date: 'shortDate') !== '1/1/01'">
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Release Date" [clickable]="false" fontClasses="fa-regular fa-calendar" title="Release">
|
|
{{chapter.releaseDate | date:'shortDate' | defaultDate}}
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="chapter.ageRating !== AgeRating.Unknown">
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Age Rating" [clickable]="false" fontClasses="fas fa-eye" title="Age Rating">
|
|
{{chapter.ageRating | ageRating | async}}
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="totalPages > 0">
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Length" [clickable]="false" fontClasses="fa-regular fa-file-lines" title="Pages">
|
|
{{totalPages | compactNumber}} Pages
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="chapter.files[0].format === MangaFormat.EPUB && totalWordCount > 0">
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Length" [clickable]="false" fontClasses="fa-solid fa-book-open">
|
|
{{totalWordCount | compactNumber}} Words
|
|
</app-icon-and-title>
|
|
</div>
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="chapter.files[0].format === MangaFormat.EPUB && totalWordCount > 0 || chapter.files[0].format !== MangaFormat.EPUB">
|
|
<div class="col-auto mb-2">
|
|
<app-icon-and-title label="Read Time" [clickable]="false" fontClasses="fa-regular fa-clock">
|
|
<ng-container *ngIf="readingTime.maxHours === 0 || readingTime.minHours === 0; else normalReadTime"><1 Hour</ng-container>
|
|
<ng-template #normalReadTime>
|
|
{{readingTime.minHours}}{{readingTime.maxHours !== readingTime.minHours ? ('-' + readingTime.maxHours) : ''}} Hour{{readingTime.minHours > 1 ? 's' : ''}}
|
|
</ng-template>
|
|
</app-icon-and-title>
|
|
</div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="showExtendedProperties && chapter.created && chapter.created !== '' && (chapter.created | date: 'shortDate') !== '1/1/01'">
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
<div class="col-auto">
|
|
<app-icon-and-title label="Date Added" [clickable]="false" fontClasses="fa-solid fa-file-import" title="Date Added">
|
|
{{chapter.created | date:'short' | defaultDate}}
|
|
</app-icon-and-title>
|
|
</div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="showExtendedProperties && size > 0">
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
<div class="col-auto">
|
|
<app-icon-and-title label="Size" [clickable]="false" fontClasses="fa-solid fa-scale-unbalanced" title="ID">
|
|
{{size | bytes}}
|
|
</app-icon-and-title>
|
|
</div>
|
|
</ng-container>
|
|
|
|
<ng-container *ngIf="showExtendedProperties">
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
<div class="col-auto">
|
|
<app-icon-and-title label="ID" [clickable]="false" fontClasses="fa-solid fa-fingerprint" title="ID">
|
|
{{entity.id}}
|
|
</app-icon-and-title>
|
|
</div>
|
|
<ng-container *ngIf="WebLinks.length > 0">
|
|
<div class="vr d-none d-lg-block m-2"></div>
|
|
<div class="col-auto">
|
|
<app-icon-and-title label="Links" [clickable]="false" fontClasses="fa-solid fa-link" title="Links">
|
|
<a class="me-1" [href]="link | safeHtml" *ngFor="let link of WebLinks" target="_blank" rel="noopener noreferrer" [title]="link">
|
|
<img width="24px" height="24px" #img class="lazyload img-placeholder"
|
|
src="data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
|
|
[attr.data-src]="imageService.getWebLinkImage(link)"
|
|
(error)="imageService.updateErroredWebLinkImage($event)"
|
|
aria-hidden="true">
|
|
</a>
|
|
</app-icon-and-title>
|
|
</div>
|
|
</ng-container>
|
|
</ng-container>
|
|
</div> |