Browse Source

Add previous and next navigation

pull/7899/head
Thomas Kaul 4 weeks ago
parent
commit
ce080cedf8
  1. 5
      apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts
  2. 12
      apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
  3. 20
      libs/common/src/lib/personal-finance-tools.ts

5
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts

@ -23,9 +23,8 @@ export class PersonalFinanceToolsPageComponent {
public pathResources = publicRoutes.resources.path; public pathResources = publicRoutes.resources.path;
public pathPersonalFinanceTools = public pathPersonalFinanceTools =
publicRoutes.resources.subRoutes.personalFinanceTools.path; publicRoutes.resources.subRoutes.personalFinanceTools.path;
public personalFinanceTools = personalFinanceTools.sort((a, b) => {
return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); public personalFinanceTools = personalFinanceTools;
});
public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkAbout = publicRoutes.about.routerLink;
public constructor() { public constructor() {

12
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts

@ -99,11 +99,11 @@ export class GfProductPageComponent {
protected readonly titlePrefix = $localize`The Open Source Alternative to`; protected readonly titlePrefix = $localize`The Open Source Alternative to`;
protected readonly nextProduct = computed(() => { protected readonly nextProduct = computed(() => {
return this.sortedPersonalFinanceTools[this.getCurrentProductIndex() + 1]; return personalFinanceTools[this.getCurrentProductIndex() + 1];
}); });
protected readonly previousProduct = computed(() => { protected readonly previousProduct = computed(() => {
return this.sortedPersonalFinanceTools[this.getCurrentProductIndex() - 1]; return personalFinanceTools[this.getCurrentProductIndex() - 1];
}); });
protected readonly tags = computed<string[]>(() => { protected readonly tags = computed<string[]>(() => {
@ -151,12 +151,6 @@ export class GfProductPageComponent {
private readonly dataService = inject(DataService); private readonly dataService = inject(DataService);
private readonly route = inject(ActivatedRoute); private readonly route = inject(ActivatedRoute);
private readonly sortedPersonalFinanceTools = [...personalFinanceTools].sort(
(a, b) => {
return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
}
);
protected getProductRouterLink(product?: Product) { protected getProductRouterLink(product?: Product) {
if (!product) { if (!product) {
return this.routerLinkResourcesPersonalFinanceTools; return this.routerLinkResourcesPersonalFinanceTools;
@ -173,7 +167,7 @@ export class GfProductPageComponent {
} }
private getCurrentProductIndex() { private getCurrentProductIndex() {
return this.sortedPersonalFinanceTools.findIndex(({ key }) => { return personalFinanceTools.findIndex(({ key }) => {
return key === this.product2().key; return key === this.product2().key;
}); });
} }

20
libs/common/src/lib/personal-finance-tools.ts

@ -1,6 +1,7 @@
import { Product } from '@ghostfolio/common/interfaces'; import { Product } from '@ghostfolio/common/interfaces';
export const personalFinanceTools: Product[] = [ export const personalFinanceTools: Product[] = (
[
{ {
categories: ['BUDGETING'], categories: ['BUDGETING'],
hasFreePlan: true, hasFreePlan: true,
@ -215,7 +216,8 @@ export const personalFinanceTools: Product[] = [
isArchived: true, isArchived: true,
key: 'basil-finance', key: 'basil-finance',
name: 'Basil Finance', name: 'Basil Finance',
slogan: 'The ultimate solution for tracking and managing your investments', slogan:
'The ultimate solution for tracking and managing your investments',
url: 'https://basil.fi' url: 'https://basil.fi'
}, },
{ {
@ -1536,7 +1538,8 @@ export const personalFinanceTools: Product[] = [
name: 'My Stocks Portfolio & Market', name: 'My Stocks Portfolio & Market',
platforms: ['ANDROID', 'IOS'], platforms: ['ANDROID', 'IOS'],
pricingPerYear: '$49.99', pricingPerYear: '$49.99',
slogan: 'Keep track of and visualize your investments throughout your day', slogan:
'Keep track of and visualize your investments throughout your day',
url: 'https://peeksoft.co' url: 'https://peeksoft.co'
}, },
{ {
@ -1607,7 +1610,8 @@ export const personalFinanceTools: Product[] = [
origin: 'CA', origin: 'CA',
platforms: ['ANDROID', 'IOS', 'WEB'], platforms: ['ANDROID', 'IOS', 'WEB'],
pricingPerYear: '$75', pricingPerYear: '$75',
slogan: 'Everything you own. Everything you owe. Everything in one place.', slogan:
'Everything you own. Everything you owe. Everything in one place.',
url: 'https://neontra.com' url: 'https://neontra.com'
}, },
{ {
@ -2011,7 +2015,8 @@ export const personalFinanceTools: Product[] = [
key: 'sharescope', key: 'sharescope',
name: 'ShareScope', name: 'ShareScope',
origin: 'GB', origin: 'GB',
slogan: 'Award-winning investment, trading and portfolio management tools', slogan:
'Award-winning investment, trading and portfolio management tools',
url: 'https://www.sharescope.co.uk' url: 'https://www.sharescope.co.uk'
}, },
{ {
@ -2718,4 +2723,7 @@ export const personalFinanceTools: Product[] = [
slogan: 'Your solution for investing success', slogan: 'Your solution for investing success',
url: 'https://ziggma.com' url: 'https://ziggma.com'
} }
]; ] satisfies Product[]
).sort((a, b) => {
return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
});

Loading…
Cancel
Save