Introduce base product page (#2687)

This commit is contained in:
Thomas Kaul 2023-11-25 18:48:39 +01:00 committed by GitHub
parent b3e72383bc
commit 6ff2e0f952
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 122 additions and 57 deletions

View File

@ -111,14 +111,14 @@ export class SubscriptionService {
aSubscriptions: Subscription[] aSubscriptions: Subscription[]
): UserWithSettings['subscription'] { ): UserWithSettings['subscription'] {
if (aSubscriptions.length > 0) { if (aSubscriptions.length > 0) {
const latestSubscription = aSubscriptions.reduce((a, b) => { const { expiresAt, price } = aSubscriptions.reduce((a, b) => {
return new Date(a.expiresAt) > new Date(b.expiresAt) ? a : b; return new Date(a.expiresAt) > new Date(b.expiresAt) ? a : b;
}); });
return { return {
expiresAt: latestSubscription.expiresAt, expiresAt,
offer: latestSubscription.price === 0 ? 'default' : 'renewal', offer: price ? 'renewal' : 'default',
type: isBefore(new Date(), latestSubscription.expiresAt) type: isBefore(new Date(), expiresAt)
? SubscriptionType.Premium ? SubscriptionType.Premium
: SubscriptionType.Basic : SubscriptionType.Basic
}; };

View File

@ -181,13 +181,14 @@
</tr> </tr>
<tr class="mat-mdc-row"> <tr class="mat-mdc-row">
<td class="mat-mdc-cell px-3 py-2 text-right" i18n>Pricing</td> <td class="mat-mdc-cell px-3 py-2 text-right" i18n>Pricing</td>
<td class="mat-mdc-cell px-1 py-2" i18n> <td class="mat-mdc-cell px-1 py-2">
Starting from {{ product1.pricingPerYear }} / year <span i18n>Starting from</span> ${{ price }} /
<span i18n>year</span>
</td> </td>
<td class="mat-mdc-cell px-1 py-2"> <td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product2.pricingPerYear" i18n <ng-container *ngIf="product2.pricingPerYear"
>Starting from {{ product2.pricingPerYear }} / ><span i18n>Starting from</span> {{ product2.pricingPerYear
year</ng-container }} / <span i18n>year</span></ng-container
> >
</td> </td>
</tr> </tr>

View File

@ -67,7 +67,6 @@ export const products: Product[] = [
], ],
name: 'Ghostfolio', name: 'Ghostfolio',
origin: $localize`Switzerland`, origin: $localize`Switzerland`,
pricingPerYear: '$24',
region: $localize`Global`, region: $localize`Global`,
slogan: 'Open Source Wealth Management', slogan: 'Open Source Wealth Management',
useAnonymously: true useAnonymously: true

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class AllvueSystemsPageComponent { export class AllvueSystemsPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class AltooPageComponent { export class AltooPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -0,0 +1,18 @@
import { Component, OnInit } from '@angular/core';
import { DataService } from '@ghostfolio/client/services/data.service';
@Component({
selector: 'gf-base-product-page',
template: ''
})
export class BaseProductPageComponent implements OnInit {
public price: number;
public constructor(private dataService: DataService) {}
public ngOnInit() {
const { subscriptions } = this.dataService.fetchInfo();
this.price = subscriptions?.default?.price;
}
}

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class BasilFinancePageComponent { export class BasilFinancePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class BeanvestPageComponent { export class BeanvestPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class CapitallyPageComponent { export class CapitallyPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class CapMonPageComponent { export class CapMonPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class CompoundPlanningPageComponent { export class CompoundPlanningPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class CopilotMoneyPageComponent { export class CopilotMoneyPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class DeFiPageComponent { export class DeFiPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class DeltaPageComponent { export class DeltaPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class DivvyDiaryPageComponent { export class DivvyDiaryPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class EightFiguresPageComponent { export class EightFiguresPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class EmpowerPageComponent { export class EmpowerPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class ExirioPageComponent { export class ExirioPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class FinaryPageComponent { export class FinaryPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class FinWisePageComponent { export class FinWisePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class FolisharePageComponent { export class FolisharePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class GetquinPageComponent { export class GetquinPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class GoSpatzPageComponent { export class GoSpatzPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class IntuitMintPageComponent { export class IntuitMintPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class JustEtfPageComponent { export class JustEtfPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class KuberaPageComponent { export class KuberaPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class MagnifiPageComponent { export class MagnifiPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class MarketsShPageComponent { export class MarketsShPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class MaybeFinancePageComponent { export class MaybeFinancePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class MonarchMoneyPageComponent { export class MonarchMoneyPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class MonsePageComponent { export class MonsePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class ParqetPageComponent { export class ParqetPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class PlannixPageComponent { export class PlannixPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class PortfolioDividendTrackerPageComponent { export class PortfolioDividendTrackerPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class PortseidoPageComponent { export class PortseidoPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class ProjectionLabPageComponent { export class ProjectionLabPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class RocketMoneyPageComponent { export class RocketMoneyPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class SeekingAlphaPageComponent { export class SeekingAlphaPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class SharesightPageComponent { export class SharesightPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class SimplePortfolioPageComponent { export class SimplePortfolioPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class SnowballAnalyticsPageComponent { export class SnowballAnalyticsPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class StocklePageComponent { export class StocklePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class StockMarketEyePageComponent { export class StockMarketEyePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class SumioPageComponent { export class SumioPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class TillerPageComponent { export class TillerPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class UtlunaPageComponent { export class UtlunaPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class VyzerPageComponent { export class VyzerPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class WealthicaPageComponent { export class WealthicaPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class WhalPageComponent { export class WhalPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class YeekateePageComponent { export class YeekateePageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });

View File

@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { products } from '../products'; import { products } from '../products';
import { BaseProductPageComponent } from './base-page.component';
@Component({ @Component({
host: { class: 'page' }, host: { class: 'page' },
@ -13,7 +14,7 @@ import { products } from '../products';
styleUrls: ['../product-page-template.scss'], styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html' templateUrl: '../product-page-template.html'
}) })
export class YnabPageComponent { export class YnabPageComponent extends BaseProductPageComponent {
public product1 = products.find(({ key }) => { public product1 = products.find(({ key }) => {
return key === 'ghostfolio'; return key === 'ghostfolio';
}); });