Browse Source

feat(client): implement computed signal for tags

pull/7099/head
KenTandrian 4 weeks ago
parent
commit
e5322d5f57
  1. 26
      apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
  2. 2
      apps/client/src/app/pages/resources/personal-finance-tools/product-page.html

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

@ -5,7 +5,7 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { translate } from '@ghostfolio/ui/i18n'; import { translate } from '@ghostfolio/ui/i18n';
import { DataService } from '@ghostfolio/ui/services'; import { DataService } from '@ghostfolio/ui/services';
import { Component, computed, inject, OnInit } from '@angular/core'; import { Component, computed, inject } from '@angular/core';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { ActivatedRoute, RouterModule } from '@angular/router'; import { ActivatedRoute, RouterModule } from '@angular/router';
@ -16,7 +16,7 @@ import { ActivatedRoute, RouterModule } from '@angular/router';
styleUrls: ['./product-page.scss'], styleUrls: ['./product-page.scss'],
templateUrl: './product-page.html' templateUrl: './product-page.html'
}) })
export class GfProductPageComponent implements OnInit { export class GfProductPageComponent {
protected readonly price = computed(() => { protected readonly price = computed(() => {
const { subscriptionOffer } = this.dataService.fetchInfo(); const { subscriptionOffer } = this.dataService.fetchInfo();
return subscriptionOffer?.price; return subscriptionOffer?.price;
@ -75,17 +75,16 @@ export class GfProductPageComponent implements OnInit {
protected readonly routerLinkFeatures = publicRoutes.features.routerLink; protected readonly routerLinkFeatures = publicRoutes.features.routerLink;
protected readonly routerLinkResourcesPersonalFinanceTools = protected readonly routerLinkResourcesPersonalFinanceTools =
publicRoutes.resources.subRoutes.personalFinanceTools.routerLink; publicRoutes.resources.subRoutes.personalFinanceTools.routerLink;
protected tags: string[];
private readonly dataService = inject(DataService); protected readonly tags = computed<string[]>(() => {
private readonly route = inject(ActivatedRoute); const p1 = this.product1();
const p2 = this.product2();
public ngOnInit() { return [
this.tags = [ p1.name,
this.product1().name, p1.origin,
this.product1().origin, p2.name,
this.product2().name, p2.origin,
this.product2().origin,
$localize`Alternative`, $localize`Alternative`,
$localize`App`, $localize`App`,
$localize`Budgeting`, $localize`Budgeting`,
@ -112,5 +111,8 @@ export class GfProductPageComponent implements OnInit {
.sort((a, b) => { .sort((a, b) => {
return a.localeCompare(b, undefined, { sensitivity: 'base' }); return a.localeCompare(b, undefined, { sensitivity: 'base' });
}); });
} });
private readonly dataService = inject(DataService);
private readonly route = inject(ActivatedRoute);
} }

2
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html

@ -337,7 +337,7 @@
</section> </section>
<section class="mb-4"> <section class="mb-4">
<ul class="list-inline"> <ul class="list-inline">
@for (tag of tags; track tag) { @for (tag of tags(); track tag) {
<li class="list-inline-item"> <li class="list-inline-item">
<span class="badge badge-light">{{ tag }}</span> <span class="badge badge-light">{{ tag }}</span>
</li> </li>

Loading…
Cancel
Save