add total expense/income amount in statistics page

This commit is contained in:
MaysWind
2021-01-28 00:54:26 +08:00
parent 217c15a746
commit 63a0136234
3 changed files with 38 additions and 9 deletions
+2
View File
@@ -626,6 +626,8 @@ export default {
'No transaction data': 'No transaction data', 'No transaction data': 'No transaction data',
'Are you sure you want to delete this transaction?': 'Are you sure you want to delete this transaction?', 'Are you sure you want to delete this transaction?': 'Are you sure you want to delete this transaction?',
'Unable to delete this transaction': 'Unable to delete this transaction', 'Unable to delete this transaction': 'Unable to delete this transaction',
'Total Expense': 'Total Expense',
'Total Income': 'Total Income',
'Expense Chart': 'Expense Chart', 'Expense Chart': 'Expense Chart',
'Expense By Account': 'Expense By Account', 'Expense By Account': 'Expense By Account',
'Expense By Primary Category': 'Expense By Primary Category', 'Expense By Primary Category': 'Expense By Primary Category',
+2
View File
@@ -626,6 +626,8 @@ export default {
'No transaction data': '没有交易数据', 'No transaction data': '没有交易数据',
'Are you sure you want to delete this transaction?': '您确定要删除该交易?', 'Are you sure you want to delete this transaction?': '您确定要删除该交易?',
'Unable to delete this transaction': '无法删除该交易', 'Unable to delete this transaction': '无法删除该交易',
'Total Expense': '总支出',
'Total Income': '总收入',
'Expense Chart': '支出图表', 'Expense Chart': '支出图表',
'Expense By Account': '账号支出', 'Expense By Account': '账号支出',
'Expense By Primary Category': '一级分类支出', 'Expense By Primary Category': '一级分类支出',
+34 -9
View File
@@ -97,8 +97,19 @@
</div> </div>
</f7-list-item> </f7-list-item>
</f7-list> </f7-list>
<f7-list v-else-if="!loading"> <f7-list v-else-if="!loading && (!statisticsData || !statisticsData.items || !statisticsData.items.length)">
<f7-list-item v-for="(data, idx) in statisticsData" :key="idx" <f7-list-item :title="$t('No transaction data')"></f7-list-item>
</f7-list>
<f7-list v-else-if="!loading && statisticsData && statisticsData.items && statisticsData.items.length">
<f7-list-item class="statistics-list-item-overview">
<div slot="header" v-if="query.chartDataType === $constants.statistics.allChartDataTypes.ExpenseByAccount || query.chartDataType === $constants.statistics.allChartDataTypes.ExpenseByPrimaryCategory || query.chartDataType === $constants.statistics.allChartDataTypes.ExpenseBySecondaryCategory">{{ $t('Total Expense') }}</div>
<div slot="header" v-if="query.chartDataType === $constants.statistics.allChartDataTypes.IncomeByAccount || query.chartDataType === $constants.statistics.allChartDataTypes.IncomeByPrimaryCategory || query.chartDataType === $constants.statistics.allChartDataTypes.IncomeBySecondaryCategory">{{ $t('Total Income') }}</div>
<div slot="title"
:class="{ 'statistics-list-item-overview-amount': true, 'text-color-teal': query.chartDataType === $constants.statistics.allChartDataTypes.ExpenseByAccount || query.chartDataType === $constants.statistics.allChartDataTypes.ExpenseByPrimaryCategory || query.chartDataType === $constants.statistics.allChartDataTypes.ExpenseBySecondaryCategory, 'text-color-red': query.chartDataType === $constants.statistics.allChartDataTypes.IncomeByAccount || query.chartDataType === $constants.statistics.allChartDataTypes.IncomeByPrimaryCategory || query.chartDataType === $constants.statistics.allChartDataTypes.IncomeBySecondaryCategory }">
{{ statisticsData.totalAmount | currency(defaultCurrency) }}
</div>
</f7-list-item>
<f7-list-item v-for="(data, idx) in statisticsData.items" :key="idx"
class="statistics-list-item" class="statistics-list-item"
:link="`/transaction/list?${data.type}Id=${data.id}`"> :link="`/transaction/list?${data.type}Id=${data.id}`">
<div slot="media" class="display-flex no-padding-horizontal"> <div slot="media" class="display-flex no-padding-horizontal">
@@ -329,7 +340,7 @@ export default {
} }
} }
const allStatisticsData = []; const allStatisticsItems = [];
for (let id in combinedData) { for (let id in combinedData) {
if (!Object.prototype.hasOwnProperty.call(combinedData, id)) { if (!Object.prototype.hasOwnProperty.call(combinedData, id)) {
@@ -339,14 +350,17 @@ export default {
const data = combinedData[id]; const data = combinedData[id];
data.percent = data.totalAmount * 100 / allAmount; data.percent = data.totalAmount * 100 / allAmount;
allStatisticsData.push(data); allStatisticsItems.push(data);
} }
allStatisticsData.sort(function (data1, data2) { allStatisticsItems.sort(function (data1, data2) {
return data2.totalAmount - data1.totalAmount; return data2.totalAmount - data1.totalAmount;
}); });
return allStatisticsData; return {
totalAmount: allAmount,
items: allStatisticsItems
};
}, },
chartData() { chartData() {
const self = this; const self = this;
@@ -359,8 +373,8 @@ export default {
const allData = []; const allData = [];
for (let i = 0; i < this.statisticsData.length; i++) { for (let i = 0; i < this.statisticsData.items.length; i++) {
const data = this.statisticsData[i]; const data = this.statisticsData.items[i];
allData.push({ allData.push({
name: data.name, name: data.name,
@@ -657,11 +671,22 @@ export default {
</script> </script>
<style> <style>
.statistics-list-item-overview {
padding-top: 12px;
margin-bottom: 6px;
}
.statistics-list-item-overview-amount {
margin-top: 2px;
font-size: 1.5em;
}
.statistics-list-item .item-content { .statistics-list-item .item-content {
margin-top: 8px; margin-top: 8px;
margin-bottom: 12px; margin-bottom: 12px;
} }
.statistics-list-item .item-inner:after {
.statistics-list-item-overview .item-inner:after, .statistics-list-item .item-inner:after {
background-color: transparent; background-color: transparent;
} }