From 21c86c9dfa436626bac0ab900b15cc3853065a4b Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 3 Dec 2024 22:42:35 +0800 Subject: [PATCH] toggle legend for trends bar chart --- src/components/mobile/TrendsBarChart.vue | 43 +++++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/components/mobile/TrendsBarChart.vue b/src/components/mobile/TrendsBarChart.vue index 5f700206..879ebe2c 100644 --- a/src/components/mobile/TrendsBarChart.vue +++ b/src/components/mobile/TrendsBarChart.vue @@ -33,10 +33,12 @@
-
- + v-for="(legend, idx) in allDisplayDataItems.legends" + @click="toggleLegend(legend)"> + {{ legend.name }}
@@ -126,6 +128,11 @@ export default { emits: [ 'click' ], + data() { + return { + unselectedLegends: {} + }; + }, computed: { ...mapStores(useSettingsStore, useUserStore), allDateRanges: function () { @@ -143,6 +150,7 @@ export default { } 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, @@ -150,6 +158,12 @@ export default { displayOrders: (this.displayOrdersField && item[this.displayOrdersField]) ? item[this.displayOrdersField] : [0] }; + legends.push(legend); + + if (this.unselectedLegends[id]) { + continue; + } + for (let j = 0; j < item.items.length; j++) { const dataItem = item.items[j]; let dateRangeKey = ''; @@ -170,8 +184,6 @@ export default { dateRangeItemsMap[dateRangeKey] = dataItems; } - - legends.push(legend); } const finalDataItems = []; @@ -268,6 +280,13 @@ export default { } }); }, + toggleLegend(legend) { + if (this.unselectedLegends[legend.id]) { + delete this.unselectedLegends[legend.id]; + } else { + this.unselectedLegends[legend.id] = true; + } + }, getColor: function (color) { if (color && color !== colorConstants.defaultColor) { color = '#' + color; @@ -286,11 +305,25 @@ export default {