From ab1a6ab1c7f7a978ce85038f599c5463672c1753 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 4 Nov 2023 09:35:20 +0100 Subject: [PATCH] Introduce alias and add 8FIGURES --- apps/api/src/assets/sitemap.xml | 16 ++++++++++ ...sonal-finance-tools-page-routing.module.ts | 4 +-- .../personal-finance-tools-page.component.ts | 10 ++++-- .../personal-finance-tools-page.html | 2 +- .../personal-finance-tools/products.ts | 10 ++++++ .../products/eightfigures-page.component.ts | 31 +++++++++++++++++++ libs/common/src/lib/interfaces/product.ts | 1 + 7 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index c2356bde6..2e5d46e46 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -54,6 +54,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-8figures + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-altoo ${currentDate}T00:00:00+00:00 @@ -328,6 +332,10 @@ https://ghostfol.io/en/resources/personal-finance-tools ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-8figures + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-altoo ${currentDate}T00:00:00+00:00 @@ -630,6 +638,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-8figures + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-altoo ${currentDate}T00:00:00+00:00 @@ -778,6 +790,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-8figures + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo ${currentDate}T00:00:00+00:00 diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts index ad4fc699e..1daf63e11 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts @@ -16,10 +16,10 @@ const routes: Routes = [ .filter(({ key }) => { return key !== 'ghostfolio'; }) - .map(({ component, key, name }) => { + .map(({ alias, component, key, name }) => { return { canActivate: [AuthGuard], - path: $localize`open-source-alternative-to` + `-${key}`, + path: $localize`open-source-alternative-to` + `-${alias ?? key}`, loadComponent: () => import(`./products/${key}-page.component`).then(() => component), title: $localize`Open Source Alternative to ${name}` diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index b06d46f38..173b5426f 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -12,9 +12,13 @@ import { products } from './products'; export class PersonalFinanceToolsPageComponent implements OnDestroy { public pathAlternativeTo = $localize`open-source-alternative-to` + '-'; public pathResources = '/' + $localize`resources`; - public products = products.filter(({ key }) => { - return key !== 'ghostfolio'; - }); + public products = products + .filter(({ key }) => { + return key !== 'ghostfolio'; + }) + .sort((a, b) => { + return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); + }); public routerLinkAbout = ['/' + $localize`about`]; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html index 6a22b6552..51584e451 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html @@ -29,7 +29,7 @@
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts index 5d66186b7..050ee5383 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts @@ -7,6 +7,7 @@ import { CapMonPageComponent } from './products/capmon-page.component'; import { CopilotMoneyPageComponent } from './products/copilot-money-page.component'; import { DeltaPageComponent } from './products/delta-page.component'; import { DivvyDiaryPageComponent } from './products/divvydiary-page.component'; +import { EightFiguresPageComponent } from './products/eightfigures-page.component'; import { ExirioPageComponent } from './products/exirio-page.component'; import { FinaryPageComponent } from './products/finary-page.component'; import { FolisharePageComponent } from './products/folishare-page.component'; @@ -132,6 +133,15 @@ export const products: Product[] = [ pricingPerYear: '€65', slogan: 'Your personal Dividend Calendar' }, + { + alias: '8figures', + component: EightFiguresPageComponent, + founded: 2022, + key: 'eightfigures', + name: '8FIGURES', + origin: $localize`United States`, + slogan: 'Portfolio Tracker Designed by Professional Investors' + }, { component: ExirioPageComponent, founded: 2020, diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts new file mode 100644 index 000000000..8ea2e745c --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-8figures-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class EightFiguresPageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'eightfigures'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +} diff --git a/libs/common/src/lib/interfaces/product.ts b/libs/common/src/lib/interfaces/product.ts index c5465898d..274ee8207 100644 --- a/libs/common/src/lib/interfaces/product.ts +++ b/libs/common/src/lib/interfaces/product.ts @@ -1,4 +1,5 @@ export interface Product { + alias?: string; component: any; founded?: number; hasFreePlan?: boolean;