diff --git a/src/components/base/AccountBalanceTrendsChartBase.ts b/src/components/base/AccountBalanceTrendsChartBase.ts index bdc87894..52c7ca41 100644 --- a/src/components/base/AccountBalanceTrendsChartBase.ts +++ b/src/components/base/AccountBalanceTrendsChartBase.ts @@ -11,6 +11,7 @@ import { } from '@/core/datetime.ts'; import type { FiscalYearUnixTime } from '@/core/fiscalyear.ts'; import { ChartDateAggregationType } from '@/core/statistics.ts'; +import type { AccountInfoResponse } from '@/models/account.ts'; import type { TransactionReconciliationStatementResponseItem } from '@/models/transaction.ts'; import { isDefined, isArray } from '@/lib/common.ts'; @@ -39,7 +40,7 @@ export interface CommonAccountBalanceTrendsChartProps { items: TransactionReconciliationStatementResponseItem[] | undefined; dateAggregationType?: number; fiscalYearStart: number; - accountCurrency: string; + account: AccountInfoResponse; } export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTrendsChartProps) { @@ -152,7 +153,14 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren if (dataItem.time >= lastUnixTime) { lastUnixTime = dataItem.time; - lastAmount = dataItem.accountBalance; + + if (props.account.isAsset) { + lastAmount = dataItem.accountBalance; + } else if (props.account.isLiability) { + lastAmount = -dataItem.accountBalance; + } else { + lastAmount = dataItem.accountBalance; + } } } } diff --git a/src/components/desktop/AccountBalanceTrendsChart.vue b/src/components/desktop/AccountBalanceTrendsChart.vue index 44752f2a..266cc059 100644 --- a/src/components/desktop/AccountBalanceTrendsChart.vue +++ b/src/components/desktop/AccountBalanceTrendsChart.vue @@ -94,8 +94,8 @@ const yAxisWidth = computed(() => { } } - const maxValueText = formatAmountWithCurrency(maxValue, props.accountCurrency); - const minValueText = formatAmountWithCurrency(minValue, props.accountCurrency); + const maxValueText = formatAmountWithCurrency(maxValue, props.account.currency); + const minValueText = formatAmountWithCurrency(minValue, props.account.currency); const maxLengthText = maxValueText.length > minValueText.length ? maxValueText : minValueText; const canvas = document.createElement('canvas'); @@ -135,7 +135,7 @@ const chartOptions = computed(() => { }, formatter: (params: CallbackDataParams[]) => { const amount = params[0].data as number; - const value = formatAmountWithCurrency(amount, props.accountCurrency); + const value = formatAmountWithCurrency(amount, props.account.currency); return `${params[0].name}
` + '
' @@ -158,13 +158,13 @@ const chartOptions = computed(() => { type: 'value', axisLabel: { formatter: (value: string) => { - return formatAmountWithCurrency(value, props.accountCurrency); + return formatAmountWithCurrency(value, props.account.currency); } }, axisPointer: { label: { formatter: (params: CallbackDataParams) => { - return formatAmountWithCurrency(Math.floor(params.value as number), props.accountCurrency); + return formatAmountWithCurrency(Math.floor(params.value as number), props.account.currency); } } } diff --git a/src/components/mobile/AccountBalanceTrendsBarChart.vue b/src/components/mobile/AccountBalanceTrendsBarChart.vue index 7184bf63..966935f7 100644 --- a/src/components/mobile/AccountBalanceTrendsBarChart.vue +++ b/src/components/mobile/AccountBalanceTrendsBarChart.vue @@ -28,7 +28,7 @@ :style="`top: ${virtualDataItems.topPosition}px`" :virtual-list-index="item.index" :title="item.displayDate" - :after="formatAmountWithCurrency(item.amount, accountCurrency)" + :after="formatAmountWithCurrency(item.amount, account.currency)" v-for="item in virtualDataItems.items" >