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' },
],
}
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)
+ })
})
-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'
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()
(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 &&