From 70da228dcc9a171cdbd05fcdbf4fab03c73fef7a Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 3 Dec 2024 00:03:11 +0800 Subject: [PATCH] show legend in trend analysis for mobile version --- src/components/mobile/TrendsBarChart.vue | 81 ++++++++++++++++++---- src/styles/mobile/font-size-default.css | 2 + src/styles/mobile/font-size-large.css | 2 + src/styles/mobile/font-size-small.css | 2 + src/styles/mobile/font-size-x-large.css | 2 + src/styles/mobile/font-size-xx-large.css | 2 + src/styles/mobile/font-size-xxx-large.css | 2 + src/styles/mobile/font-size-xxxx-large.css | 2 + src/styles/mobile/global.css | 14 ++++ 9 files changed, 95 insertions(+), 14 deletions(-) diff --git a/src/components/mobile/TrendsBarChart.vue b/src/components/mobile/TrendsBarChart.vue index d688033f..5f700206 100644 --- a/src/components/mobile/TrendsBarChart.vue +++ b/src/components/mobile/TrendsBarChart.vue @@ -26,15 +26,25 @@ - + - + + +
+
+ + {{ legend.name }} +
+
+
@@ -58,8 +68,17 @@ @@ -114,6 +133,7 @@ export default { }, allDisplayDataItems: function () { const dateRangeItemsMap = {}; + const legends = []; for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; @@ -122,6 +142,14 @@ export default { continue; } + const id = (this.idField && item[this.idField]) ? item[this.idField] : this.getItemName(item[this.nameField]); + const legend = { + id: id, + name: (this.nameField && item[this.nameField]) ? this.getItemName(item[this.nameField]) : id, + color: this.getColor(item[this.colorField] ? item[this.colorField] : colorConstants.defaultChartColors[i % colorConstants.defaultChartColors.length]), + displayOrders: (this.displayOrdersField && item[this.displayOrdersField]) ? item[this.displayOrdersField] : [0] + }; + for (let j = 0; j < item.items.length; j++) { const dataItem = item.items[j]; let dateRangeKey = ''; @@ -135,21 +163,19 @@ export default { } const dataItems = dateRangeItemsMap[dateRangeKey] || []; - const id = (this.idField && item[this.idField]) ? item[this.idField] : this.getItemName(item[this.nameField]); - dataItems.push({ - id: id, - name: (this.nameField && item[this.nameField]) ? this.getItemName(item[this.nameField]) : id, - color: this.getColor(item[this.colorField] ? item[this.colorField] : colorConstants.defaultChartColors[i % colorConstants.defaultChartColors.length]), - displayOrders: (this.displayOrdersField && item[this.displayOrdersField]) ? item[this.displayOrdersField] : [0], + dataItems.push(Object.assign({}, legend, { totalAmount: (this.valueField && isNumber(dataItem[this.valueField])) ? dataItem[this.valueField] : 0 - }); + })); dateRangeItemsMap[dateRangeKey] = dataItems; } + + legends.push(legend); } const finalDataItems = []; + let maxTotalAmount = 0; for (let i = 0; i < this.allDateRanges.length; i++) { const dateRange = this.allDateRanges[i]; @@ -179,7 +205,13 @@ export default { sortStatisticsItems(dataItems, this.sortingType); for (let j = 0; j < dataItems.length; j++) { - totalAmount += dataItems[j].totalAmount; + if (dataItems[j].totalAmount > 0) { + totalAmount += dataItems[j].totalAmount; + } + } + + if (totalAmount > maxTotalAmount) { + maxTotalAmount = totalAmount; } finalDataItems.push({ @@ -190,7 +222,18 @@ export default { }); } - return finalDataItems; + for (let i = 0; i < finalDataItems.length; i++) { + if (maxTotalAmount > 0) { + finalDataItems[i].percent = 100.0 * finalDataItems[i].totalAmount / maxTotalAmount; + } else { + finalDataItems[i].percent = 100.0; + } + } + + return { + data: finalDataItems, + legends: legends + }; } }, methods: { @@ -241,3 +284,13 @@ export default { } } + + diff --git a/src/styles/mobile/font-size-default.css b/src/styles/mobile/font-size-default.css index 1c166241..1dc73863 100644 --- a/src/styles/mobile/font-size-default.css +++ b/src/styles/mobile/font-size-default.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 18px; --ebk-pie-chart-toolbox-text-font-size: 16px; + --ebk-trends-bar-chart-legend-icon-font-size: 18px; + --ebk-trends-bar-chart-legend-text-font-size: 14px; --ebk-account-list-group-title-height: 36px; --ebk-category-separate-icon-font-size: 18px; --ebk-transaction-date-width: 25px; diff --git a/src/styles/mobile/font-size-large.css b/src/styles/mobile/font-size-large.css index 31e3c4d3..ce6ce29e 100644 --- a/src/styles/mobile/font-size-large.css +++ b/src/styles/mobile/font-size-large.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 19px; --ebk-pie-chart-toolbox-text-font-size: 17px; + --ebk-trends-bar-chart-legend-icon-font-size: 19px; + --ebk-trends-bar-chart-legend-text-font-size: 15px; --ebk-account-list-group-title-height: 37px; --ebk-category-separate-icon-font-size: 18px; --ebk-transaction-date-width: 28px; diff --git a/src/styles/mobile/font-size-small.css b/src/styles/mobile/font-size-small.css index 35e218e6..c33afa93 100644 --- a/src/styles/mobile/font-size-small.css +++ b/src/styles/mobile/font-size-small.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 18px; --ebk-pie-chart-toolbox-text-font-size: 16px; + --ebk-trends-bar-chart-legend-icon-font-size: 16px; + --ebk-trends-bar-chart-legend-text-font-size: 12px; --ebk-account-list-group-title-height: 36px; --ebk-category-separate-icon-font-size: 18px; --ebk-transaction-date-width: 25px; diff --git a/src/styles/mobile/font-size-x-large.css b/src/styles/mobile/font-size-x-large.css index a1cf63d4..d642d532 100644 --- a/src/styles/mobile/font-size-x-large.css +++ b/src/styles/mobile/font-size-x-large.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 20px; --ebk-pie-chart-toolbox-text-font-size: 18px; + --ebk-trends-bar-chart-legend-icon-font-size: 20px; + --ebk-trends-bar-chart-legend-text-font-size: 16px; --ebk-account-list-group-title-height: 38px; --ebk-category-separate-icon-font-size: 18px; --ebk-transaction-date-width: 30px; diff --git a/src/styles/mobile/font-size-xx-large.css b/src/styles/mobile/font-size-xx-large.css index 345de60e..73015afa 100644 --- a/src/styles/mobile/font-size-xx-large.css +++ b/src/styles/mobile/font-size-xx-large.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 22px; --ebk-pie-chart-toolbox-text-font-size: 20px; + --ebk-trends-bar-chart-legend-icon-font-size: 22px; + --ebk-trends-bar-chart-legend-text-font-size: 18px; --ebk-account-list-group-title-height: 40px; --ebk-category-separate-icon-font-size: 20px; --ebk-transaction-date-width: 32px; diff --git a/src/styles/mobile/font-size-xxx-large.css b/src/styles/mobile/font-size-xxx-large.css index 22087e79..5f7a9b63 100644 --- a/src/styles/mobile/font-size-xxx-large.css +++ b/src/styles/mobile/font-size-xxx-large.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 24px; --ebk-pie-chart-toolbox-text-font-size: 22px; + --ebk-trends-bar-chart-legend-icon-font-size: 24px; + --ebk-trends-bar-chart-legend-text-font-size: 20px; --ebk-account-list-group-title-height: 42px; --ebk-category-separate-icon-font-size: 20px; --ebk-transaction-date-width: 36px; diff --git a/src/styles/mobile/font-size-xxxx-large.css b/src/styles/mobile/font-size-xxxx-large.css index a57b0537..8c70141e 100644 --- a/src/styles/mobile/font-size-xxxx-large.css +++ b/src/styles/mobile/font-size-xxxx-large.css @@ -68,6 +68,8 @@ --ebk-pie-chart-toolbox-percentage-height: 30px; --ebk-pie-chart-toolbox-percentage-font-size: 26px; --ebk-pie-chart-toolbox-text-font-size: 24px; + --ebk-trends-bar-chart-legend-icon-font-size: 26px; + --ebk-trends-bar-chart-legend-text-font-size: 22px; --ebk-account-list-group-title-height: 44px; --ebk-category-separate-icon-font-size: 22px; --ebk-transaction-date-width: 40px; diff --git a/src/styles/mobile/global.css b/src/styles/mobile/global.css index ee2c2c65..95bb7240 100644 --- a/src/styles/mobile/global.css +++ b/src/styles/mobile/global.css @@ -653,3 +653,17 @@ i.icon.la, i.icon.las, i.icon.lab { height: 4px; --f7-progressbar-bg-color: #f8f8f8; } + +.statistics-multi-percent-line > div > .progressbar { + border-radius: unset; +} + +.statistics-multi-percent-line > div:first-child > .progressbar { + border-top-left-radius: var(--f7-progressbar-border-radius); + border-bottom-left-radius: var(--f7-progressbar-border-radius); +} + +.statistics-multi-percent-line > div:last-child > .progressbar { + border-top-right-radius: var(--f7-progressbar-border-radius); + border-bottom-right-radius: var(--f7-progressbar-border-radius); +}