mirror of https://github.com/ghostfolio/ghostfolio
committed by
GitHub
24 changed files with 455 additions and 231 deletions
@ -1,4 +1,3 @@ |
|||
import { SymbolProfile } from '@prisma/client'; |
|||
|
|||
export interface DataProviderGhostfolioAssetProfileResponse |
|||
extends Partial<SymbolProfile> {} |
|||
export interface DataProviderGhostfolioAssetProfileResponse extends Partial<SymbolProfile> {} |
|||
|
|||
@ -1,50 +1,54 @@ |
|||
<div |
|||
class="card-container position-relative" |
|||
[ngClass]="{ premium: name === 'Premium' }" |
|||
> |
|||
<a |
|||
class="card-item d-flex flex-column justify-content-between p-4" |
|||
[routerLink]="routerLinkPricing" |
|||
> |
|||
<div class="d-flex justify-content-end"> |
|||
<gf-logo |
|||
size="large" |
|||
[ngClass]="{ 'text-muted': name === 'Basic' }" |
|||
[showLabel]="false" |
|||
/> |
|||
</div> |
|||
@if (hasPermissionToCreateApiKey) { |
|||
<div class="mt-5"> |
|||
<div class="heading text-muted" i18n>API Key</div> |
|||
<div class="align-items-center d-flex"> |
|||
<div class="text-monospace value">* * * * * * * * *</div> |
|||
<div class="ml-1"> |
|||
<button |
|||
class="no-min-width" |
|||
i18n-title |
|||
mat-button |
|||
title="Generate Ghostfolio Premium Data Provider API key for self-hosted environments..." |
|||
(click)="onGenerateApiKey($event)" |
|||
> |
|||
<ion-icon name="refresh-outline" /> |
|||
</button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
} |
|||
<div class="d-flex justify-content-between"> |
|||
<div> |
|||
<div class="heading text-muted" i18n>Membership</div> |
|||
<div class="text-truncate value">{{ name }}</div> |
|||
<div class="card-wrapper position-relative" [class.hover-3d]="hover3d"> |
|||
<div class="card-container" [ngClass]="{ premium: name === 'Premium' }"> |
|||
<a |
|||
class="card-item d-flex flex-column justify-content-between p-4" |
|||
[routerLink]="routerLinkPricing" |
|||
> |
|||
@if (hover3d) { |
|||
@for (zone of [1, 2, 3, 4, 5, 6, 7, 8, 9]; track zone) { |
|||
<span class="hover-zone position-absolute"></span> |
|||
} |
|||
} |
|||
<div class="d-flex justify-content-end"> |
|||
<gf-logo |
|||
size="large" |
|||
[ngClass]="{ 'text-muted': name === 'Basic' }" |
|||
[showLabel]="false" |
|||
/> |
|||
</div> |
|||
@if (expiresAt) { |
|||
<div> |
|||
<div class="heading text-muted" i18n>Valid until</div> |
|||
<div class="text-truncate value"> |
|||
{{ expiresAt }} |
|||
@if (hasPermissionToCreateApiKey) { |
|||
<div class="mt-5"> |
|||
<div class="heading text-muted" i18n>API Key</div> |
|||
<div class="align-items-center d-flex"> |
|||
<div class="text-monospace value">* * * * * * * * *</div> |
|||
<div class="ml-1"> |
|||
<button |
|||
class="bg-transparent no-min-width" |
|||
i18n-title |
|||
mat-button |
|||
title="Generate Ghostfolio Premium Data Provider API key for self-hosted environments..." |
|||
(click)="onGenerateApiKey($event)" |
|||
> |
|||
<ion-icon name="refresh-outline" /> |
|||
</button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
} |
|||
</div> |
|||
</a> |
|||
<div class="d-flex justify-content-between"> |
|||
<div> |
|||
<div class="heading text-muted" i18n>Membership</div> |
|||
<div class="text-truncate value">{{ name }}</div> |
|||
</div> |
|||
@if (expiresAt) { |
|||
<div> |
|||
<div class="heading text-muted" i18n>Valid until</div> |
|||
<div class="text-truncate value"> |
|||
{{ expiresAt }} |
|||
</div> |
|||
</div> |
|||
} |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
|
|||
Loading…
Reference in new issue