feat(networth): hide other chart data points when clicking on account or currency name

This commit is contained in:
Herculino Trotta
2024-12-14 02:42:05 -03:00
parent b86e859c39
commit 216f9b8ef4
+51 -11
View File
@@ -9,7 +9,7 @@
{% block title %}{% translate 'Net Worth' %}{% endblock %} {% block title %}{% translate 'Net Worth' %}{% endblock %}
{% block content %} {% block content %}
<div class="container px-md-3 py-3 column-gap-5"> <div class="container px-md-3 py-3 column-gap-5">
<div class="row gx-xl-4 gy-3"> <div class="row gx-xl-4 gy-3">
<div class="col-12 col-xl-5"> <div class="col-12 col-xl-5">
<div class="row row-cols-1 g-4 mb-3"> <div class="row row-cols-1 g-4 mb-3">
@@ -24,7 +24,21 @@
{% for currency in currency_net_worth.values %} {% for currency in currency_net_worth.values %}
<div class="d-flex justify-content-between mt-2"> <div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100"> <div class="d-flex align-items-baseline w-100">
<div class="currency-name text-start font-monospace tw-text-gray-300">{{ currency.currency.name }}</div> <div class="currency-name text-start font-monospace tw-text-gray-300"
_="def showOnlyDatasetByName(datasetName)
set chart to Chart.getChart('currencyBalanceChart')
for dataset in chart.data.datasets
set isMatch to dataset.label is datasetName
call chart.setDatasetVisibility(chart.data.datasets.indexOf(dataset), isMatch)
end
call chart.update()
end
on click
showOnlyDatasetByName('{{ currency.currency.name }}')
end">
{{ currency.currency.name }}
</div>
<div class="dotted-line flex-grow-1"></div> <div class="dotted-line flex-grow-1"></div>
<div> <div>
<c-amount.display <c-amount.display
@@ -72,7 +86,19 @@
{% for account in data.list %} {% for account in data.list %}
<div class="d-flex justify-content-between mt-2"> <div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100"> <div class="d-flex align-items-baseline w-100">
<div class="text-start font-monospace tw-text-gray-300"> <div class="account-name text-start font-monospace tw-text-gray-300"
_="def showOnlyDatasetByName(datasetName)
set chart to Chart.getChart('accountBalanceChart')
for dataset in chart.data.datasets
set isMatch to dataset.label is datasetName
call chart.setDatasetVisibility(chart.data.datasets.indexOf(dataset), isMatch)
end
call chart.update()
end
on click
showOnlyDatasetByName('{{ account.account.name }}')
end">
<span class="hierarchy-line-icon"></span>{{ account.account.name }}</div> <span class="hierarchy-line-icon"></span>{{ account.account.name }}</div>
<div class="dotted-line flex-grow-1"></div> <div class="dotted-line flex-grow-1"></div>
<div class=""> <div class="">
@@ -99,7 +125,21 @@
{% for account in data.list %} {% for account in data.list %}
<div class="d-flex justify-content-between mt-2"> <div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100"> <div class="d-flex align-items-baseline w-100">
<div class="currency-name text-start font-monospace tw-text-gray-300">{{ account.account.name }}</div> <div class="account-name text-start font-monospace tw-text-gray-300"
_="def showOnlyDatasetByName(datasetName)
set chart to Chart.getChart('accountBalanceChart')
for dataset in chart.data.datasets
set isMatch to dataset.label is datasetName
call chart.setDatasetVisibility(chart.data.datasets.indexOf(dataset), isMatch)
end
call chart.update()
end
on click
showOnlyDatasetByName('{{ account.account.name }}')
end">
{{ account.account.name }}
</div>
<div class="dotted-line flex-grow-1"></div> <div class="dotted-line flex-grow-1"></div>
<div> <div>
<c-amount.display <c-amount.display
@@ -133,9 +173,9 @@
<canvas id="accountBalanceChart"></canvas> <canvas id="accountBalanceChart"></canvas>
</div> </div>
</div> </div>
</div> </div>
<script> <script>
var chartData = JSON.parse('{{ chart_data_currency_json|safe }}'); var chartData = JSON.parse('{{ chart_data_currency_json|safe }}');
var currencies = {{ currencies|safe }}; var currencies = {{ currencies|safe }};
@@ -176,7 +216,7 @@
}, },
ticks: { ticks: {
display: false, display: false,
format: { maximumFractionDigits: 40, minimumFractionDigits: 0 } format: {maximumFractionDigits: 40, minimumFractionDigits: 0}
}, },
border: { border: {
display: false display: false
@@ -186,9 +226,9 @@
} }
} }
}); });
</script> </script>
<script> <script>
var chartData = JSON.parse('{{ chart_data_accounts_json|safe }}'); var chartData = JSON.parse('{{ chart_data_accounts_json|safe }}');
var accounts = {{ accounts|safe }}; var accounts = {{ accounts|safe }};
@@ -231,7 +271,7 @@
}, },
ticks: { ticks: {
display: false, display: false,
format: { maximumFractionDigits: 40, minimumFractionDigits: 0 } format: {maximumFractionDigits: 40, minimumFractionDigits: 0}
}, },
border: { border: {
display: false display: false
@@ -241,6 +281,6 @@
} }
} }
}); });
</script> </script>
{% endblock %} {% endblock %}