Browse Source

Feature/add tags to account detail dialog (#7460)

* Add tags (read-only)

* Update changelog
pull/7267/merge
Thomas Kaul 1 day ago
committed by GitHub
parent
commit
19fe447655
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 15
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
  3. 4
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
  4. 2
      libs/ui/src/lib/tags-selector/tags-selector.component.ts

1
CHANGELOG.md

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Added an overview tab to the account detail dialog - Added an overview tab to the account detail dialog
- Added the tags (read-only) to the account detail dialog (experimental)
### Changed ### Changed

15
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts

@ -20,7 +20,9 @@ import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table';
import { GfDialogFooterComponent } from '@ghostfolio/ui/dialog-footer'; import { GfDialogFooterComponent } from '@ghostfolio/ui/dialog-footer';
import { GfDialogHeaderComponent } from '@ghostfolio/ui/dialog-header'; import { GfDialogHeaderComponent } from '@ghostfolio/ui/dialog-header';
import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table'; import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table';
import { translate } from '@ghostfolio/ui/i18n';
import { DataService } from '@ghostfolio/ui/services'; import { DataService } from '@ghostfolio/ui/services';
import { GfTagsSelectorComponent } from '@ghostfolio/ui/tags-selector';
import { GfValueComponent } from '@ghostfolio/ui/value'; import { GfValueComponent } from '@ghostfolio/ui/value';
import { import {
@ -42,6 +44,7 @@ import { MatTableDataSource } from '@angular/material/table';
import { MatTabsModule } from '@angular/material/tabs'; import { MatTabsModule } from '@angular/material/tabs';
import { NavigationStart, Router } from '@angular/router'; import { NavigationStart, Router } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone'; import { IonIcon } from '@ionic/angular/standalone';
import { Tag } from '@prisma/client';
import { Big } from 'big.js'; import { Big } from 'big.js';
import { format, parseISO } from 'date-fns'; import { format, parseISO } from 'date-fns';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
@ -70,6 +73,7 @@ import {
GfDialogHeaderComponent, GfDialogHeaderComponent,
GfHoldingsTableComponent, GfHoldingsTableComponent,
GfInvestmentChartComponent, GfInvestmentChartComponent,
GfTagsSelectorComponent,
GfValueComponent, GfValueComponent,
IonIcon, IonIcon,
MatButtonModule, MatButtonModule,
@ -105,6 +109,7 @@ export class GfAccountDetailDialogComponent implements OnInit {
protected platformName: string; protected platformName: string;
protected sortColumn = 'date'; protected sortColumn = 'date';
protected sortDirection: SortDirection = 'desc'; protected sortDirection: SortDirection = 'desc';
protected tags: Tag[];
protected totalItems: number; protected totalItems: number;
protected user: User; protected user: User;
protected valueInBaseCurrency: number; protected valueInBaseCurrency: number;
@ -236,6 +241,7 @@ export class GfAccountDetailDialogComponent implements OnInit {
interestInBaseCurrency, interestInBaseCurrency,
name, name,
platform, platform,
tags,
value, value,
valueInBaseCurrency valueInBaseCurrency
}) => { }) => {
@ -285,6 +291,15 @@ export class GfAccountDetailDialogComponent implements OnInit {
this.name = name; this.name = name;
this.platformName = platform?.name ?? '-'; this.platformName = platform?.name ?? '-';
this.tags =
tags?.map((tag) => {
return {
...tag,
name: translate(tag.name)
};
}) ?? [];
this.valueInBaseCurrency = valueInBaseCurrency; this.valueInBaseCurrency = valueInBaseCurrency;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();

4
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html

@ -179,6 +179,10 @@
/> />
</mat-tab> </mat-tab>
</mat-tab-group> </mat-tab-group>
@if (user?.settings?.isExperimentalFeatures) {
<gf-tags-selector [readonly]="true" [tags]="tags" />
}
</div> </div>
</div> </div>

2
libs/ui/src/lib/tags-selector/tags-selector.component.ts

@ -167,7 +167,7 @@ export class GfTagsSelectorComponent
return id; return id;
}); });
return this.tagsAvailable return (this.tagsAvailable ?? [])
.filter(({ id, name }) => { .filter(({ id, name }) => {
return ( return (
!tagIds.includes(id) && !tagIds.includes(id) &&

Loading…
Cancel
Save