From 43fca7ff43a71126e05220c266af43b5c68d31fd Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Tue, 23 Jul 2024 20:59:23 +0200
Subject: [PATCH] Feature/improve personal finance tools product page (#3599)
* Localize origin
* Localize regions
* Localize tags
---
.../product-page.component.ts | 40 ++++++++-
.../personal-finance-tools/product-page.html | 88 +++++--------------
libs/common/src/lib/interfaces/product.ts | 2 +-
libs/common/src/lib/personal-finance-tools.ts | 14 +--
libs/ui/src/lib/i18n.ts | 24 ++++-
5 files changed, 93 insertions(+), 75 deletions(-)
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
index 3004a3ec4..76fe7eb97 100644
--- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
+++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -1,6 +1,7 @@
import { DataService } from '@ghostfolio/client/services/data.service';
import { Product } from '@ghostfolio/common/interfaces';
import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools';
+import { translate } from '@ghostfolio/ui/i18n';
import { CommonModule } from '@angular/common';
import { Component, OnInit } from '@angular/core';
@@ -26,6 +27,7 @@ export class GfProductPageComponent implements OnInit {
'/' + $localize`resources`,
'personal-finance-tools'
];
+ public tags: string[];
public constructor(
private dataService: DataService,
@@ -56,7 +58,7 @@ export class GfProductPageComponent implements OnInit {
],
name: 'Ghostfolio',
origin: $localize`Switzerland`,
- region: $localize`Global`,
+ regions: [$localize`Global`],
slogan: 'Open Source Wealth Management',
useAnonymously: true
};
@@ -64,5 +66,41 @@ export class GfProductPageComponent implements OnInit {
this.product2 = personalFinanceTools.find(({ key }) => {
return key === this.route.snapshot.data['key'];
});
+
+ if (this.product2.origin) {
+ this.product2.origin = translate(this.product2.origin);
+ }
+
+ if (this.product2.regions) {
+ this.product2.regions = this.product2.regions.map((region) => {
+ return translate(region);
+ });
+ }
+
+ this.tags = [
+ this.product1.name,
+ this.product2.name,
+ $localize`Alternative`,
+ $localize`App`,
+ $localize`Budgeting`,
+ $localize`Community`,
+ $localize`Family Office`,
+ `Fintech`,
+ $localize`Investment`,
+ $localize`Investor`,
+ $localize`Open Source`,
+ `OSS`,
+ $localize`Personal Finance`,
+ $localize`Privacy`,
+ $localize`Portfolio`,
+ $localize`Software`,
+ $localize`Tool`,
+ $localize`User Experience`,
+ $localize`Wealth`,
+ $localize`Wealth Management`,
+ `WealthTech`
+ ].sort((a, b) => {
+ return a.localeCompare(b, undefined, { sensitivity: 'base' });
+ });
}
}
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
index a8bc1d197..1c7102ed9 100644
--- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
+++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -80,8 +80,24 @@
Region |
- {{ product1.region }} |
- {{ product2.region }} |
+
+ @for (
+ region of product1.regions;
+ track region;
+ let isLast = $last
+ ) {
+ {{ region }}{{ isLast ? '' : ', ' }}
+ }
+ |
+
+ @for (
+ region of product2.regions;
+ track region;
+ let isLast = $last
+ ) {
+ {{ region }}{{ isLast ? '' : ', ' }}
+ }
+ |
@@ -236,69 +252,11 @@
- -
- Alternative
-
- -
- App
-
- -
- Budgeting
-
- -
- Community
-
- -
- Family Office
-
- -
- Fintech
-
- -
- {{ product1.name }}
-
- -
- Investment
-
- -
- Investor
-
- -
- Open Source
-
- -
- OSS
-
- -
- Personal Finance
-
- -
- Privacy
-
- -
- Portfolio
-
- -
- Software
-
- -
- Tool
-
- -
- User Experience
-
- -
- Wealth
-
- -
- WealthTech
-
- -
- Wealth Management
-
- -
- {{ product2.name }}
-
+ @for (tag of tags; track tag) {
+ -
+ {{ tag }}
+
+ }
|