mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-19 17:24:26 +08:00
toggle legend for trends bar chart
This commit is contained in:
@@ -33,10 +33,12 @@
|
|||||||
<f7-list v-else-if="!loading && allDisplayDataItems && allDisplayDataItems.data && allDisplayDataItems.data.length">
|
<f7-list v-else-if="!loading && allDisplayDataItems && allDisplayDataItems.data && allDisplayDataItems.data.length">
|
||||||
<f7-list-item v-if="allDisplayDataItems.legends && allDisplayDataItems.legends.length > 1">
|
<f7-list-item v-if="allDisplayDataItems.legends && allDisplayDataItems.legends.length > 1">
|
||||||
<div class="display-flex" style="flex-wrap: wrap">
|
<div class="display-flex" style="flex-wrap: wrap">
|
||||||
<div class="display-flex align-items-center" style="margin-right: 4px"
|
<div class="trends-bar-chart-legend display-flex align-items-center"
|
||||||
|
:class="{ 'trends-bar-chart-legend-unselected': !!unselectedLegends[legend.id] }"
|
||||||
:key="idx"
|
:key="idx"
|
||||||
v-for="(legend, idx) in allDisplayDataItems.legends">
|
v-for="(legend, idx) in allDisplayDataItems.legends"
|
||||||
<f7-icon f7="app_fill" class="trends-bar-chart-legend-icon" :style="{ 'color': legend.color }"></f7-icon>
|
@click="toggleLegend(legend)">
|
||||||
|
<f7-icon f7="app_fill" class="trends-bar-chart-legend-icon" :style="{ 'color': unselectedLegends[legend.id] ? '' : legend.color }"></f7-icon>
|
||||||
<span class="trends-bar-chart-legend-text">{{ legend.name }}</span>
|
<span class="trends-bar-chart-legend-text">{{ legend.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -126,6 +128,11 @@ export default {
|
|||||||
emits: [
|
emits: [
|
||||||
'click'
|
'click'
|
||||||
],
|
],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
unselectedLegends: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores(useSettingsStore, useUserStore),
|
...mapStores(useSettingsStore, useUserStore),
|
||||||
allDateRanges: function () {
|
allDateRanges: function () {
|
||||||
@@ -143,6 +150,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const id = (this.idField && item[this.idField]) ? item[this.idField] : this.getItemName(item[this.nameField]);
|
const id = (this.idField && item[this.idField]) ? item[this.idField] : this.getItemName(item[this.nameField]);
|
||||||
|
|
||||||
const legend = {
|
const legend = {
|
||||||
id: id,
|
id: id,
|
||||||
name: (this.nameField && item[this.nameField]) ? this.getItemName(item[this.nameField]) : 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]
|
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++) {
|
for (let j = 0; j < item.items.length; j++) {
|
||||||
const dataItem = item.items[j];
|
const dataItem = item.items[j];
|
||||||
let dateRangeKey = '';
|
let dateRangeKey = '';
|
||||||
@@ -170,8 +184,6 @@ export default {
|
|||||||
|
|
||||||
dateRangeItemsMap[dateRangeKey] = dataItems;
|
dateRangeItemsMap[dateRangeKey] = dataItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
legends.push(legend);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const finalDataItems = [];
|
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) {
|
getColor: function (color) {
|
||||||
if (color && color !== colorConstants.defaultColor) {
|
if (color && color !== colorConstants.defaultColor) {
|
||||||
color = '#' + color;
|
color = '#' + color;
|
||||||
@@ -286,11 +305,25 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.trends-bar-chart-legend {
|
||||||
|
margin-right: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.trends-bar-chart-legend-icon.f7-icons {
|
.trends-bar-chart-legend-icon.f7-icons {
|
||||||
font-size: var(--ebk-trends-bar-chart-legend-icon-font-size);
|
font-size: var(--ebk-trends-bar-chart-legend-icon-font-size);
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.trends-bar-chart-legend-unselected .trends-bar-chart-legend-icon.f7-icons {
|
||||||
|
color: #cccccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.trends-bar-chart-legend-text {
|
.trends-bar-chart-legend-text {
|
||||||
font-size: var(--ebk-trends-bar-chart-legend-text-font-size);
|
font-size: var(--ebk-trends-bar-chart-legend-text-font-size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.trends-bar-chart-legend-unselected .trends-bar-chart-legend-text {
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user