Browse Source

Merge branch 'ghostfolio:main' into feature/migrate-open-page-and-value-component-to-standalone

pull/5639/head
s-vamshi 1 month ago
committed by GitHub
parent
commit
99f3c46bed
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 8
      CHANGELOG.md
  2. 9
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts
  3. 9
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
  4. 6
      apps/client/src/styles/table.scss
  5. 6
      libs/common/src/lib/chart-helper.ts
  6. 10
      libs/ui/src/lib/accounts-table/accounts-table.component.scss
  7. 4
      libs/ui/src/lib/activities-table/activities-table.component.html
  8. 10
      libs/ui/src/lib/benchmark/benchmark.component.scss
  9. 10
      libs/ui/src/lib/holdings-table/holdings-table.component.scss
  10. 4
      package-lock.json
  11. 2
      package.json

8
CHANGELOG.md

@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased ## 2.204.0 - 2025-09-30
### Added ### Added
@ -13,11 +13,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Improved the number formatting of the y-axis labels in the investment chart component
- Localized the number formatting of the y-axis labels in the line chart component - Localized the number formatting of the y-axis labels in the line chart component
- Improved the wording of the 4% rule in the _FIRE_ section - Improved the wording of the 4% rule in the _FIRE_ section
- Improved the usability of the create asset profile dialog in the market data section of the admin control panel
- Improved the language localization for German (`de`) - Improved the language localization for German (`de`)
- Refactored the open page to standalone - Refactored the open page to standalone
### Fixed
- Improved the table headers’ alignment of the activities table
## 2.203.0 - 2025-09-27 ## 2.203.0 - 2025-09-27
### Added ### Added

9
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts

@ -55,6 +55,7 @@ import { CreateAssetProfileDialogMode } from './interfaces/interfaces';
}) })
export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy { export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
public createAssetProfileForm: FormGroup; public createAssetProfileForm: FormGroup;
public ghostfolioPrefix = `${ghostfolioPrefix}_`;
public mode: CreateAssetProfileDialogMode; public mode: CreateAssetProfileDialogMode;
private customCurrencies: string[]; private customCurrencies: string[];
@ -77,9 +78,7 @@ export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
addCurrency: new FormControl(null, [ addCurrency: new FormControl(null, [
this.iso4217CurrencyCodeValidator() this.iso4217CurrencyCodeValidator()
]), ]),
addSymbol: new FormControl(`${ghostfolioPrefix}_`, [ addSymbol: new FormControl(null, [Validators.required]),
Validators.required
]),
searchSymbol: new FormControl(null, [Validators.required]) searchSymbol: new FormControl(null, [Validators.required])
}, },
{ {
@ -95,6 +94,8 @@ export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
} }
public onRadioChange(mode: CreateAssetProfileDialogMode) { public onRadioChange(mode: CreateAssetProfileDialogMode) {
this.createAssetProfileForm.reset();
this.mode = mode; this.mode = mode;
} }
@ -133,7 +134,7 @@ export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
} else if (this.mode === 'manual') { } else if (this.mode === 'manual') {
this.dialogRef.close({ this.dialogRef.close({
dataSource: 'MANUAL', dataSource: 'MANUAL',
symbol: this.createAssetProfileForm.get('addSymbol').value symbol: `${this.ghostfolioPrefix}${this.createAssetProfileForm.get('addSymbol').value}`
}); });
} }
} }

9
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html

@ -38,6 +38,7 @@
<mat-form-field appearance="outline" class="w-100"> <mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Symbol</mat-label> <mat-label i18n>Symbol</mat-label>
<input formControlName="addSymbol" matInput /> <input formControlName="addSymbol" matInput />
<span matTextPrefix>{{ ghostfolioPrefix }}</span>
</mat-form-field> </mat-form-field>
</div> </div>
} @else if (mode === 'currency') { } @else if (mode === 'currency') {
@ -53,7 +54,13 @@
} }
</div> </div>
<div class="d-flex justify-content-end" mat-dialog-actions> <div class="d-flex justify-content-end" mat-dialog-actions>
<button i18n mat-button type="button" (click)="onCancel()">Cancel</button> <button mat-button type="button" (click)="onCancel()">
@if (createAssetProfileForm.dirty) {
<ng-container i18n>Cancel</ng-container>
} @else {
<ng-container i18n>Close</ng-container>
}
</button>
<button <button
color="primary" color="primary"
mat-flat-button mat-flat-button

6
apps/client/src/styles/table.scss

@ -1,6 +1,12 @@
@mixin gf-table($darkTheme: false) { @mixin gf-table($darkTheme: false) {
--mat-table-background-color: var(--light-background); --mat-table-background-color: var(--light-background);
th {
.mat-sort-header-container {
justify-content: inherit;
}
}
.mat-footer-row, .mat-footer-row,
.mat-row { .mat-row {
.mat-cell, .mat-cell,

6
libs/common/src/lib/chart-helper.ts

@ -132,8 +132,10 @@ export function getVerticalHoverLinePlugin(
} }
export function transformTickToAbbreviation(value: number) { export function transformTickToAbbreviation(value: number) {
if (value >= -999 && value <= 999) { if (value === 0) {
return value.toString(); return '0';
} else if (value >= -999 && value <= 999) {
return value.toFixed(2);
} else if (value >= -999999 && value <= 999999) { } else if (value >= -999999 && value <= 999999) {
return `${value / 1000}K`; return `${value / 1000}K`;
} else { } else {

10
libs/ui/src/lib/accounts-table/accounts-table.component.scss

@ -1,13 +1,3 @@
:host { :host {
display: block; display: block;
.gf-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
} }

4
libs/ui/src/lib/activities-table/activities-table.component.html

@ -255,7 +255,7 @@
<ng-container matColumnDef="value"> <ng-container matColumnDef="value">
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1" class="d-none d-lg-table-cell px-1 text-right"
mat-header-cell mat-header-cell
> >
<ng-container i18n>Value</ng-container> <ng-container i18n>Value</ng-container>
@ -291,7 +291,7 @@
<ng-container matColumnDef="valueInBaseCurrency"> <ng-container matColumnDef="valueInBaseCurrency">
<th <th
*matHeaderCellDef *matHeaderCellDef
class="d-lg-none d-xl-none justify-content-end px-1" class="d-lg-none d-xl-none px-1 text-right"
mat-header-cell mat-header-cell
> >
<ng-container i18n>Value</ng-container> <ng-container i18n>Value</ng-container>

10
libs/ui/src/lib/benchmark/benchmark.component.scss

@ -1,13 +1,3 @@
:host { :host {
display: block; display: block;
.gf-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
} }

10
libs/ui/src/lib/holdings-table/holdings-table.component.scss

@ -1,13 +1,3 @@
:host { :host {
display: block; display: block;
.gf-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
} }

4
package-lock.json

@ -1,12 +1,12 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.203.0", "version": "2.204.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.203.0", "version": "2.204.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "AGPL-3.0", "license": "AGPL-3.0",
"dependencies": { "dependencies": {

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.203.0", "version": "2.204.0",
"homepage": "https://ghostfol.io", "homepage": "https://ghostfol.io",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio", "repository": "https://github.com/ghostfolio/ghostfolio",

Loading…
Cancel
Save