Skip to content

Commit

Permalink
Fix: consistent monetary field display in list and cards
Browse files Browse the repository at this point in the history
  • Loading branch information
shamoon committed May 9, 2024
1 parent 48092d4 commit 33683af
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const document: Document = {
title: 'Doc 1',
custom_fields: [
{ field: 1, document: 1, created: null, value: 'Text value' },
{ field: 2, document: 1, created: null, value: '100 USD' },
{ field: 2, document: 1, created: null, value: 'USD100' },
{ field: 3, document: 1, created: null, value: '1,2,3' },
],
}
Expand Down Expand Up @@ -86,4 +86,16 @@ describe('CustomFieldDisplayComponent', () => {
expect(title2).toEqual('Document 2')
expect(title3).toEqual('Document 3')
})

it('should fallback to default currency', () => {
component['defaultCurrencyCode'] = 'EUR' // mock default locale injection
component.fieldId = 2
component.document = {
id: 1,
title: 'Doc 1',
custom_fields: [{ field: 2, document: 1, created: null, value: '100' }],
}
expect(component.currency).toEqual('EUR')
expect(component.value).toEqual(100)
})
})
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { Component, Input, OnDestroy, OnInit } from '@angular/core'
import { getLocaleCurrencyCode } from '@angular/common'
import {
Component,
Inject,
Input,
LOCALE_ID,
OnDestroy,
OnInit,
} from '@angular/core'
import { Subject, takeUntil } from 'rxjs'
import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field'
import { DisplayField, Document } from 'src/app/data/document'
Expand Down Expand Up @@ -54,11 +62,14 @@ export class CustomFieldDisplayComponent implements OnInit, OnDestroy {
private docLinkDocuments: Document[] = []

private unsubscribeNotifier: Subject<any> = new Subject()
private defaultCurrencyCode: any

constructor(
private customFieldService: CustomFieldsService,
private documentService: DocumentService
private documentService: DocumentService,
@Inject(LOCALE_ID) currentLocale: string
) {
this.defaultCurrencyCode = getLocaleCurrencyCode(currentLocale)
this.customFieldService.listAll().subscribe((r) => {
this.customFields = r.results
this.init()
Expand All @@ -78,7 +89,8 @@ export class CustomFieldDisplayComponent implements OnInit, OnDestroy {
(f) => f.field === this._fieldId
)?.value
if (this.value && this.field.data_type === CustomFieldDataType.Monetary) {
this.currency = this.value.match(/([A-Z]{3})/)?.[0]
this.currency =
this.value.match(/([A-Z]{3})/)?.[0] ?? this.defaultCurrencyCode
this.value = parseFloat(this.value.replace(this.currency, ''))
} else if (
this.value?.length &&
Expand Down

0 comments on commit 33683af

Please sign in to comment.