|
|
|
@ -20,23 +20,43 @@
|
|
|
|
|
[enableLink]="false"
|
|
|
|
|
/>
|
|
|
|
|
</a>
|
|
|
|
|
@if (isGhostfolioApiKeyValid === true) {
|
|
|
|
|
<div class="line-height-1">
|
|
|
|
|
<small class="text-muted">
|
|
|
|
|
<ng-container i18n>Valid until</ng-container>
|
|
|
|
|
{{
|
|
|
|
|
ghostfolioApiStatus?.subscription?.expiresAt
|
|
|
|
|
| date: defaultDateFormat
|
|
|
|
|
}}</small
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="w-50">
|
|
|
|
|
@if (isGhostfolioApiKeyValid === true) {
|
|
|
|
|
<div class="align-items-center d-flex flex-wrap">
|
|
|
|
|
<div class="mr-3">
|
|
|
|
|
<div class="flex-grow-1 mr-3">
|
|
|
|
|
{{ ghostfolioApiStatus.dailyRequests }}
|
|
|
|
|
<ng-container i18n>of</ng-container>
|
|
|
|
|
{{ ghostfolioApiStatus.dailyRequestsMax }}
|
|
|
|
|
<ng-container i18n>daily requests</ng-container>
|
|
|
|
|
</div>
|
|
|
|
|
<button
|
|
|
|
|
color="warn"
|
|
|
|
|
mat-flat-button
|
|
|
|
|
(click)="onRemoveGhostfolioApiKey()"
|
|
|
|
|
class="mx-1 no-min-width px-2"
|
|
|
|
|
mat-button
|
|
|
|
|
[matMenuTriggerFor]="ghostfolioApiMenu"
|
|
|
|
|
(click)="$event.stopPropagation()"
|
|
|
|
|
>
|
|
|
|
|
<span i18n>Remove API key</span>
|
|
|
|
|
<ion-icon name="ellipsis-horizontal" />
|
|
|
|
|
</button>
|
|
|
|
|
<mat-menu #ghostfolioApiMenu="matMenu" xPosition="before">
|
|
|
|
|
<button mat-menu-item (click)="onRemoveGhostfolioApiKey()">
|
|
|
|
|
<span class="align-items-center d-flex">
|
|
|
|
|
<ion-icon class="mr-2" name="trash-outline" />
|
|
|
|
|
<span i18n>Remove API key</span>
|
|
|
|
|
</span>
|
|
|
|
|
</button>
|
|
|
|
|
</mat-menu>
|
|
|
|
|
</div>
|
|
|
|
|
} @else if (isGhostfolioApiKeyValid === false) {
|
|
|
|
|
<button
|
|
|
|
|