Browse Source

Bugfix/color scheme of investment chart (#7972)

* Fix color scheme of investment chart component

* Update changelog
pull/7976/head
Thomas Kaul 1 week ago
committed by GitHub
parent
commit
2db2a47114
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 1
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
  3. 24
      apps/client/src/app/components/investment-chart/investment-chart.component.ts
  4. 3
      apps/client/src/app/pages/portfolio/analysis/analysis-page.html

1
CHANGELOG.md

@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed ### Fixed
- Fixed the colors of the investment chart component (dark mode)
- Fixed the value column of the top holdings on the allocations page in the _Presenter View_ - Fixed the value column of the top holdings on the allocations page in the _Presenter View_
- Fixed the projected sustainable retirement income on the _FIRE_ page for a projected total amount of zero (experimental) - Fixed the projected sustainable retirement income on the _FIRE_ page for a projected total amount of zero (experimental)
- Fixed the emergency fund in the portfolio summary for redacted values - Fixed the emergency fund in the portfolio summary for redacted values

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

@ -23,6 +23,7 @@
<div class="chart-container mb-3"> <div class="chart-container mb-3">
<gf-investment-chart <gf-investment-chart
class="h-100" class="h-100"
[colorScheme]="user?.settings?.colorScheme"
[currency]="user?.settings?.baseCurrency" [currency]="user?.settings?.baseCurrency"
[historicalDataItems]="historicalDataItems" [historicalDataItems]="historicalDataItems"
[isInPercentage]="showValuesInPercentage()" [isInPercentage]="showValuesInPercentage()"

24
apps/client/src/app/components/investment-chart/investment-chart.component.ts

@ -7,7 +7,11 @@ import {
getZeroLineAnnotation, getZeroLineAnnotation,
transformTickToAbbreviation transformTickToAbbreviation
} from '@ghostfolio/common/chart-helper'; } from '@ghostfolio/common/chart-helper';
import { primaryColorRgb, secondaryColorRgb } from '@ghostfolio/common/config'; import {
DEFAULT_COLOR_SCHEME,
primaryColorRgb,
secondaryColorRgb
} from '@ghostfolio/common/config';
import { getLocale, parseDate } from '@ghostfolio/common/helper'; import { getLocale, parseDate } from '@ghostfolio/common/helper';
import { LineChartItem } from '@ghostfolio/common/interfaces'; import { LineChartItem } from '@ghostfolio/common/interfaces';
import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface'; import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface';
@ -55,7 +59,7 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
export class GfInvestmentChartComponent implements OnChanges, OnDestroy { export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
@Input() public benchmarkDataItems: InvestmentItem[] = []; @Input() public benchmarkDataItems: InvestmentItem[] = [];
@Input() public benchmarkDataLabel = ''; @Input() public benchmarkDataLabel = '';
@Input() public colorScheme: ColorScheme; @Input() public colorScheme?: ColorScheme;
@Input() public currency?: string; @Input() public currency?: string;
@Input() public groupBy: GroupBy; @Input() public groupBy: GroupBy;
@Input() public historicalDataItems: LineChartItem[] = []; @Input() public historicalDataItems: LineChartItem[] = [];
@ -170,13 +174,15 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
this.chart.update(); this.chart.update();
} else { } else {
const colorScheme = this.colorScheme ?? DEFAULT_COLOR_SCHEME;
this.chart = new Chart<'bar' | 'line'>( this.chart = new Chart<'bar' | 'line'>(
this.chartCanvas().nativeElement, this.chartCanvas().nativeElement,
{ {
data: chartData, data: chartData,
options: { options: {
animation: false, animation: false,
elements: getChartElementsOptions(this.colorScheme), elements: getChartElementsOptions(colorScheme),
interaction: { intersect: false, mode: 'index' }, interaction: { intersect: false, mode: 'index' },
maintainAspectRatio: true, maintainAspectRatio: true,
plugins: { plugins: {
@ -204,7 +210,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
value: this.savingsRate value: this.savingsRate
} }
: undefined, : undefined,
yAxis: getZeroLineAnnotation(this.colorScheme) yAxis: getZeroLineAnnotation(colorScheme)
} }
}, },
legend: { legend: {
@ -212,18 +218,18 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
}, },
tooltip: this.getTooltipPluginConfiguration(), tooltip: this.getTooltipPluginConfiguration(),
verticalHoverLine: { verticalHoverLine: {
color: getChartBorderColor(this.colorScheme) color: getChartBorderColor(colorScheme)
} }
}, },
responsive: true, responsive: true,
scales: { scales: {
x: getTimeAxisOptions({ x: getTimeAxisOptions({
colorScheme,
borderWidth: this.groupBy ? 0 : 1, borderWidth: this.groupBy ? 0 : 1,
colorScheme: this.colorScheme,
locale: this.locale locale: this.locale
}), }),
y: getValueAxisOptions({ y: getValueAxisOptions({
colorScheme: this.colorScheme, colorScheme,
display: !this.isInPercentage, display: !this.isInPercentage,
tickCallback: (tickValue) => { tickCallback: (tickValue) => {
return transformTickToAbbreviation(Number(tickValue)); return transformTickToAbbreviation(Number(tickValue));
@ -232,7 +238,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
} }
}, },
plugins: [ plugins: [
getVerticalHoverLinePlugin(this.chartCanvas(), this.colorScheme) getVerticalHoverLinePlugin(this.chartCanvas(), colorScheme)
], ],
type: this.groupBy ? 'bar' : 'line' type: this.groupBy ? 'bar' : 'line'
} }
@ -245,7 +251,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
TooltipOptions<'bar' | 'line'> TooltipOptions<'bar' | 'line'>
> { > {
return getTimeSeriesTooltipOptions<'bar' | 'line'>({ return getTimeSeriesTooltipOptions<'bar' | 'line'>({
colorScheme: this.colorScheme, colorScheme: this.colorScheme ?? DEFAULT_COLOR_SCHEME,
currency: this.isInPercentage ? undefined : this.currency, currency: this.isInPercentage ? undefined : this.currency,
groupBy: this.groupBy, groupBy: this.groupBy,
locale: this.isInPercentage ? undefined : this.locale, locale: this.isInPercentage ? undefined : this.locale,

3
apps/client/src/app/pages/portfolio/analysis/analysis-page.html

@ -443,6 +443,7 @@
class="h-100" class="h-100"
[benchmarkDataItems]="investments" [benchmarkDataItems]="investments"
[benchmarkDataLabel]="portfolioEvolutionDataLabel" [benchmarkDataLabel]="portfolioEvolutionDataLabel"
[colorScheme]="user?.settings?.colorScheme"
[currency]="user?.settings?.baseCurrency" [currency]="user?.settings?.baseCurrency"
[historicalDataItems]="performanceDataItems" [historicalDataItems]="performanceDataItems"
[isInPercentage]="showValuesInPercentage()" [isInPercentage]="showValuesInPercentage()"
@ -499,6 +500,7 @@
class="h-100" class="h-100"
[benchmarkDataItems]="investmentsByGroup" [benchmarkDataItems]="investmentsByGroup"
[benchmarkDataLabel]="investmentTimelineDataLabel" [benchmarkDataLabel]="investmentTimelineDataLabel"
[colorScheme]="user?.settings?.colorScheme"
[currency]="user?.settings?.baseCurrency" [currency]="user?.settings?.baseCurrency"
[groupBy]="mode()" [groupBy]="mode()"
[isInPercentage]="showValuesInPercentage()" [isInPercentage]="showValuesInPercentage()"
@ -534,6 +536,7 @@
class="h-100" class="h-100"
[benchmarkDataItems]="dividendsByGroup" [benchmarkDataItems]="dividendsByGroup"
[benchmarkDataLabel]="dividendTimelineDataLabel" [benchmarkDataLabel]="dividendTimelineDataLabel"
[colorScheme]="user?.settings?.colorScheme"
[currency]="user?.settings?.baseCurrency" [currency]="user?.settings?.baseCurrency"
[groupBy]="mode()" [groupBy]="mode()"
[isInPercentage]="showValuesInPercentage()" [isInPercentage]="showValuesInPercentage()"

Loading…
Cancel
Save