diff --git a/CHANGELOG.md b/CHANGELOG.md index 92c970aa6a..6cc09560af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Harmonized the colors in the investment chart component - Improved the language localization for Chinese (`zh`) ## 3.82.0 - 2026-10-09 diff --git a/apps/client/src/app/components/investment-chart/investment-chart.component.ts b/apps/client/src/app/components/investment-chart/investment-chart.component.ts index 34500422ed..8b74a74d4c 100644 --- a/apps/client/src/app/components/investment-chart/investment-chart.component.ts +++ b/apps/client/src/app/components/investment-chart/investment-chart.component.ts @@ -113,10 +113,15 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy { } private initialize() { - // Create a clone + const isBarChart = !!this.groupBy; + + const benchmarkColorRgb = isBarChart ? primaryColorRgb : secondaryColorRgb; + + // Create clones of the input data this.investments = this.benchmarkDataItems.map((item) => Object.assign({}, item) ); + this.values = this.historicalDataItems.map((item) => Object.assign({}, item) ); @@ -127,9 +132,9 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy { }), datasets: [ { - backgroundColor: `rgb(${secondaryColorRgb.r}, ${secondaryColorRgb.g}, ${secondaryColorRgb.b})`, - borderColor: `rgb(${secondaryColorRgb.r}, ${secondaryColorRgb.g}, ${secondaryColorRgb.b})`, - borderWidth: this.groupBy ? 0 : 1, + backgroundColor: `rgb(${benchmarkColorRgb.r}, ${benchmarkColorRgb.g}, ${benchmarkColorRgb.b})`, + borderColor: `rgb(${benchmarkColorRgb.r}, ${benchmarkColorRgb.g}, ${benchmarkColorRgb.b})`, + borderWidth: isBarChart ? 0 : 1, data: this.investments.map(({ date, investment }) => { return { x: parseDate(date)?.getTime() ?? null, @@ -141,7 +146,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy { borderColor: (context) => this.isInFuture( context, - `rgba(${secondaryColorRgb.r}, ${secondaryColorRgb.g}, ${secondaryColorRgb.b}, 0.67)` + `rgba(${benchmarkColorRgb.r}, ${benchmarkColorRgb.g}, ${benchmarkColorRgb.b}, 0.67)` ), borderDash: (context) => this.isInFuture(context, [2, 2]) }, @@ -200,10 +205,10 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy { annotations: { savingsRate: this.savingsRate ? { - borderColor: `rgba(${primaryColorRgb.r}, ${primaryColorRgb.g}, ${primaryColorRgb.b}, 0.75)`, + borderColor: `rgba(${secondaryColorRgb.r}, ${secondaryColorRgb.g}, ${secondaryColorRgb.b}, 0.75)`, borderWidth: 1, label: { - backgroundColor: `rgb(${primaryColorRgb.r}, ${primaryColorRgb.g}, ${primaryColorRgb.b})`, + backgroundColor: `rgb(${secondaryColorRgb.r}, ${secondaryColorRgb.g}, ${secondaryColorRgb.b})`, borderRadius: 2, color: 'white', content: $localize`Savings Rate`, @@ -234,7 +239,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy { responsive: true, scales: { x: getTimeAxisOptions({ - borderWidth: this.groupBy ? 0 : 1, + borderWidth: isBarChart ? 0 : 1, colorScheme: this.colorScheme, locale: this.locale }), @@ -250,7 +255,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy { plugins: [ getVerticalHoverLinePlugin(this.chartCanvas(), this.colorScheme) ], - type: this.groupBy ? 'bar' : 'line' + type: isBarChart ? 'bar' : 'line' } ); }