From 96a9d7aa47e19adc5a981764f7a0f70603e5b92a Mon Sep 17 00:00:00 2001 From: EdwinBetanc0urt Date: Mon, 25 Nov 2019 18:28:47 -0400 Subject: [PATCH] feat: Add show totals to Smart Browser. (#181) * feat: Add show totals to Smart Browser. * change N/A with empty string. --- src/components/ADempiere/DataTable/index.vue | 48 ++++++++++++++++++- .../ADempiere/Field/FieldNumber.vue | 2 +- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/components/ADempiere/DataTable/index.vue b/src/components/ADempiere/DataTable/index.vue index b01e79e7..158e6f9b 100644 --- a/src/components/ADempiere/DataTable/index.vue +++ b/src/components/ADempiere/DataTable/index.vue @@ -2,7 +2,7 @@ - + { + if (index === 0) { + sums[index] = 'Σ' + return + } + const field = this.fieldList.find(field => field.columnName === column.property) + if (field.componentPath !== 'FieldNumber') { + sums[index] = '' + return + } + const values = data.map(item => Number(item[column.property])) + if (values.every(value => isNaN(value))) { + sums[index] = '' + } else { + const total = values.reduce((prev, curr) => { + const value = Number(curr) + if (!isNaN(value)) { + return prev + curr + } + return prev + }, 0) + sums[index] = this.formatNumber({ referenceType: field.referenceType, number: total }) + } + }) + + return sums + }, + formatNumber({ referenceType, number }) { + let fixed = 0 + if (['Amount', 'Costs+Prices', 'Number'].includes(referenceType)) { + fixed = 2 + } + return new Intl.NumberFormat().format(number.toFixed(fixed)) + }, handleChangePage(newPage) { this.$store.dispatch('setPageNumber', { parentUuid: this.parentUuid, @@ -913,7 +957,7 @@ export default { text-overflow: ellipsis; white-space: nowrap; word-break: break-all; - line-height: 50px; + line-height: 23px; padding-left: 10px; padding-right: 10px; } diff --git a/src/components/ADempiere/Field/FieldNumber.vue b/src/components/ADempiere/Field/FieldNumber.vue index a01ddbe0..8df188c3 100644 --- a/src/components/ADempiere/Field/FieldNumber.vue +++ b/src/components/ADempiere/Field/FieldNumber.vue @@ -51,7 +51,7 @@ export default { .join('-').toLowerCase() }, precision() { - if (['Number', 'Amount'].includes()) { + if (['Amount', 'Costs+Prices', 'Number'].includes(this.metadata.referenceType)) { return 2 } return undefined