Merge pull request #23

feat(transactions:action-bar): add more math options in a dropdown
This commit is contained in:
Herculino Trotta
2025-01-05 14:36:07 -03:00
committed by GitHub
2 changed files with 319 additions and 104 deletions

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-04 21:19+0000\n" "POT-Creation-Date: 2025-01-05 17:33+0000\n"
"PO-Revision-Date: 2025-01-04 18:22-0300\n" "PO-Revision-Date: 2025-01-05 14:35-0300\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: pt_BR\n" "Language: pt_BR\n"
@@ -85,12 +85,13 @@ msgstr "Tags"
#: apps/transactions/models.py:39 apps/transactions/models.py:58 #: apps/transactions/models.py:39 apps/transactions/models.py:58
#: templates/account_groups/fragments/list.html:25 #: templates/account_groups/fragments/list.html:25
#: templates/accounts/fragments/list.html:25 #: templates/accounts/fragments/list.html:25
#: templates/categories/fragments/list.html:25 #: templates/categories/fragments/table.html:16
#: templates/currencies/fragments/list.html:26 #: templates/currencies/fragments/list.html:26
#: templates/entities/fragments/list.html:25 #: templates/entities/fragments/table.html:16
#: templates/installment_plans/fragments/table.html:16 #: templates/installment_plans/fragments/table.html:16
#: templates/recurring_transactions/fragments/table.html:18 #: templates/recurring_transactions/fragments/table.html:18
#: templates/rules/fragments/list.html:26 templates/tags/fragments/list.html:25 #: templates/rules/fragments/list.html:26
#: templates/tags/fragments/table.html:16
msgid "Name" msgid "Name"
msgstr "Nome" msgstr "Nome"
@@ -130,6 +131,9 @@ msgstr ""
"mês." "mês."
#: apps/accounts/models.py:54 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:54 templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24
#: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
msgstr "Arquivada" msgstr "Arquivada"
@@ -213,7 +217,7 @@ msgstr "Entidade com esse ID não existe."
msgid "Invalid entity data. Provide an ID or name." msgid "Invalid entity data. Provide an ID or name."
msgstr "Dados da entidade inválidos. Forneça um ID ou nome." msgstr "Dados da entidade inválidos. Forneça um ID ou nome."
#: apps/api/serializers/transactions.py:96 #: apps/api/serializers/transactions.py:163
msgid "Either 'date' or 'reference_date' must be provided." msgid "Either 'date' or 'reference_date' must be provided."
msgstr "É necessário fornecer “date” ou “reference_date”." msgstr "É necessário fornecer “date” ou “reference_date”."
@@ -682,8 +686,10 @@ msgid "Mute"
msgstr "Silenciada" msgstr "Silenciada"
#: apps/transactions/models.py:23 apps/transactions/models.py:42 #: apps/transactions/models.py:23 apps/transactions/models.py:42
#: apps/transactions/models.py:61 #: apps/transactions/models.py:61 templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21
#: templates/recurring_transactions/fragments/list.html:21 #: templates/recurring_transactions/fragments/list.html:21
#: templates/tags/fragments/list.html:21
msgid "Active" msgid "Active"
msgstr "Ativo" msgstr "Ativo"
@@ -867,27 +873,27 @@ msgstr "%(value)s tem muitas casas decimais. O máximo é 30."
msgid "%(value)s is not a non-negative number" msgid "%(value)s is not a non-negative number"
msgstr "%(value)s não é um número positivo" msgstr "%(value)s não é um número positivo"
#: apps/transactions/views/categories.py:44 #: apps/transactions/views/categories.py:66
msgid "Category added successfully" msgid "Category added successfully"
msgstr "Categoria adicionada com sucesso" msgstr "Categoria adicionada com sucesso"
#: apps/transactions/views/categories.py:72 #: apps/transactions/views/categories.py:94
msgid "Category updated successfully" msgid "Category updated successfully"
msgstr "Categoria atualizada com sucesso" msgstr "Categoria atualizada com sucesso"
#: apps/transactions/views/categories.py:99 #: apps/transactions/views/categories.py:121
msgid "Category deleted successfully" msgid "Category deleted successfully"
msgstr "Categoria apagada com sucesso" msgstr "Categoria apagada com sucesso"
#: apps/transactions/views/entities.py:43 #: apps/transactions/views/entities.py:65
msgid "Entity added successfully" msgid "Entity added successfully"
msgstr "Entidade adicionada com sucesso" msgstr "Entidade adicionada com sucesso"
#: apps/transactions/views/entities.py:71 #: apps/transactions/views/entities.py:93
msgid "Entity updated successfully" msgid "Entity updated successfully"
msgstr "Entidade atualizada com sucesso" msgstr "Entidade atualizada com sucesso"
#: apps/transactions/views/entities.py:98 #: apps/transactions/views/entities.py:120
msgid "Entity deleted successfully" msgid "Entity deleted successfully"
msgstr "Entidade apagada com sucesso" msgstr "Entidade apagada com sucesso"
@@ -931,15 +937,15 @@ msgstr "Transação Recorrente finalizada com sucesso"
msgid "Recurring Transaction deleted successfully" msgid "Recurring Transaction deleted successfully"
msgstr "Transação Recorrente apagada com sucesso" msgstr "Transação Recorrente apagada com sucesso"
#: apps/transactions/views/tags.py:43 #: apps/transactions/views/tags.py:65
msgid "Tag added successfully" msgid "Tag added successfully"
msgstr "Tag adicionada com sucesso" msgstr "Tag adicionada com sucesso"
#: apps/transactions/views/tags.py:71 #: apps/transactions/views/tags.py:93
msgid "Tag updated successfully" msgid "Tag updated successfully"
msgstr "Tag atualizada com sucesso" msgstr "Tag atualizada com sucesso"
#: apps/transactions/views/tags.py:98 #: apps/transactions/views/tags.py:120
msgid "Tag deleted successfully" msgid "Tag deleted successfully"
msgstr "Tag apagada com sucesso" msgstr "Tag apagada com sucesso"
@@ -1065,62 +1071,63 @@ msgstr "Editar grupo de conta"
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/list.html:33 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:33
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/list.html:32 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
#: templates/installment_plans/fragments/table.html:23 #: templates/installment_plans/fragments/table.html:23
#: templates/recurring_transactions/fragments/table.html:25 #: templates/recurring_transactions/fragments/table.html:25
#: templates/rules/fragments/list.html:33 templates/tags/fragments/list.html:32 #: templates/rules/fragments/list.html:33
#: templates/tags/fragments/table.html:23
msgid "Actions" msgid "Actions"
msgstr "Ações" msgstr "Ações"
#: templates/account_groups/fragments/list.html:36 #: templates/account_groups/fragments/list.html:36
#: templates/accounts/fragments/list.html:41 #: templates/accounts/fragments/list.html:41
#: templates/categories/fragments/list.html:37 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:109 #: templates/cotton/transaction/item.html:109
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:37
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:34 #: templates/dca/fragments/strategy/list.html:34
#: templates/entities/fragments/list.html:36 #: templates/entities/fragments/table.html:28
#: templates/exchange_rates/fragments/table.html:23 #: templates/exchange_rates/fragments/table.html:23
#: templates/installment_plans/fragments/table.html:27 #: templates/installment_plans/fragments/table.html:27
#: templates/recurring_transactions/fragments/table.html:29 #: templates/recurring_transactions/fragments/table.html:29
#: templates/rules/fragments/transaction_rule/view.html:22 #: templates/rules/fragments/transaction_rule/view.html:22
#: templates/rules/fragments/transaction_rule/view.html:48 #: templates/rules/fragments/transaction_rule/view.html:48
#: templates/tags/fragments/list.html:36 #: templates/tags/fragments/table.html:28
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: templates/account_groups/fragments/list.html:43 #: templates/account_groups/fragments/list.html:43
#: templates/accounts/fragments/list.html:48 #: templates/accounts/fragments/list.html:48
#: templates/categories/fragments/list.html:44 #: templates/categories/fragments/table.html:36
#: templates/cotton/transaction/item.html:116 #: templates/cotton/transaction/item.html:116
#: templates/cotton/ui/transactions_action_bar.html:50 #: templates/cotton/ui/transactions_action_bar.html:50
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:44
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:42 #: templates/dca/fragments/strategy/list.html:42
#: templates/entities/fragments/list.html:43 #: templates/entities/fragments/table.html:36
#: templates/exchange_rates/fragments/table.html:31 #: templates/exchange_rates/fragments/table.html:31
#: templates/installment_plans/fragments/table.html:56 #: templates/installment_plans/fragments/table.html:56
#: templates/mini_tools/unit_price_calculator.html:18 #: templates/mini_tools/unit_price_calculator.html:18
#: templates/recurring_transactions/fragments/table.html:91 #: templates/recurring_transactions/fragments/table.html:91
#: templates/rules/fragments/list.html:44 #: templates/rules/fragments/list.html:44
#: templates/rules/fragments/transaction_rule/view.html:56 #: templates/rules/fragments/transaction_rule/view.html:56
#: templates/tags/fragments/list.html:43 #: templates/tags/fragments/table.html:36
msgid "Delete" msgid "Delete"
msgstr "Apagar" msgstr "Apagar"
#: templates/account_groups/fragments/list.html:47 #: templates/account_groups/fragments/list.html:47
#: templates/accounts/fragments/list.html:52 #: templates/accounts/fragments/list.html:52
#: templates/categories/fragments/list.html:48 #: templates/categories/fragments/table.html:41
#: templates/cotton/transaction/item.html:120 #: templates/cotton/transaction/item.html:120
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:48
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:46 #: templates/dca/fragments/strategy/list.html:46
#: templates/entities/fragments/list.html:47 #: templates/entities/fragments/table.html:40
#: templates/exchange_rates/fragments/table.html:36 #: templates/exchange_rates/fragments/table.html:36
#: templates/installment_plans/fragments/table.html:48 #: templates/installment_plans/fragments/table.html:48
#: templates/installment_plans/fragments/table.html:60 #: templates/installment_plans/fragments/table.html:60
@@ -1130,40 +1137,40 @@ msgstr "Apagar"
#: templates/recurring_transactions/fragments/table.html:96 #: templates/recurring_transactions/fragments/table.html:96
#: templates/rules/fragments/list.html:48 #: templates/rules/fragments/list.html:48
#: templates/rules/fragments/transaction_rule/view.html:60 #: templates/rules/fragments/transaction_rule/view.html:60
#: templates/tags/fragments/list.html:47 #: templates/tags/fragments/table.html:40
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Tem certeza?" msgstr "Tem certeza?"
#: templates/account_groups/fragments/list.html:48 #: templates/account_groups/fragments/list.html:48
#: templates/accounts/fragments/list.html:53 #: templates/accounts/fragments/list.html:53
#: templates/categories/fragments/list.html:49 #: templates/categories/fragments/table.html:42
#: templates/cotton/transaction/item.html:121 #: templates/cotton/transaction/item.html:121
#: templates/cotton/ui/transactions_action_bar.html:53 #: templates/cotton/ui/transactions_action_bar.html:53
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:47 #: templates/dca/fragments/strategy/list.html:47
#: templates/entities/fragments/list.html:48 #: templates/entities/fragments/table.html:41
#: templates/exchange_rates/fragments/table.html:37 #: templates/exchange_rates/fragments/table.html:37
#: templates/rules/fragments/list.html:49 #: templates/rules/fragments/list.html:49
#: templates/rules/fragments/transaction_rule/view.html:61 #: templates/rules/fragments/transaction_rule/view.html:61
#: templates/tags/fragments/list.html:48 #: templates/tags/fragments/table.html:41
msgid "You won't be able to revert this!" msgid "You won't be able to revert this!"
msgstr "Você não será capaz de reverter isso!" msgstr "Você não será capaz de reverter isso!"
#: templates/account_groups/fragments/list.html:49 #: templates/account_groups/fragments/list.html:49
#: templates/accounts/fragments/list.html:54 #: templates/accounts/fragments/list.html:54
#: templates/categories/fragments/list.html:50 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:122 #: templates/cotton/transaction/item.html:122
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/list.html:49 #: templates/entities/fragments/table.html:42
#: templates/exchange_rates/fragments/table.html:38 #: templates/exchange_rates/fragments/table.html:38
#: templates/installment_plans/fragments/table.html:62 #: templates/installment_plans/fragments/table.html:62
#: templates/recurring_transactions/fragments/table.html:98 #: templates/recurring_transactions/fragments/table.html:98
#: templates/rules/fragments/list.html:50 #: templates/rules/fragments/list.html:50
#: templates/rules/fragments/transaction_rule/view.html:62 #: templates/rules/fragments/transaction_rule/view.html:62
#: templates/tags/fragments/list.html:49 #: templates/tags/fragments/table.html:42
msgid "Yes, delete it!" msgid "Yes, delete it!"
msgstr "Sim, apague!" msgstr "Sim, apague!"
@@ -1273,11 +1280,11 @@ msgstr "Adicionar categoria"
msgid "Edit category" msgid "Edit category"
msgstr "Editar categoria" msgstr "Editar categoria"
#: templates/categories/fragments/list.html:26 #: templates/categories/fragments/table.html:17
msgid "Muted" msgid "Muted"
msgstr "Silenciada" msgstr "Silenciada"
#: templates/categories/fragments/list.html:63 #: templates/categories/fragments/table.html:57
msgid "No categories" msgid "No categories"
msgstr "Nenhum categoria" msgstr "Nenhum categoria"
@@ -1337,10 +1344,44 @@ msgstr "Marcar como não pago"
msgid "Yes, delete them!" msgid "Yes, delete them!"
msgstr "Sim, apague!" msgstr "Sim, apague!"
#: templates/cotton/ui/transactions_action_bar.html:81 #: templates/cotton/ui/transactions_action_bar.html:127
#: templates/cotton/ui/transactions_action_bar.html:149
#: templates/cotton/ui/transactions_action_bar.html:169
#: templates/cotton/ui/transactions_action_bar.html:189
#: templates/cotton/ui/transactions_action_bar.html:209
#: templates/cotton/ui/transactions_action_bar.html:229
#: templates/cotton/ui/transactions_action_bar.html:249
msgid "copied!" msgid "copied!"
msgstr "copiado!" msgstr "copiado!"
#: templates/cotton/ui/transactions_action_bar.html:134
msgid "Toggle Dropdown"
msgstr "Alternar menu suspenso"
#: templates/cotton/ui/transactions_action_bar.html:142
msgid "Flat Total"
msgstr "Total Fixo"
#: templates/cotton/ui/transactions_action_bar.html:162
msgid "Real Total"
msgstr "Total Real"
#: templates/cotton/ui/transactions_action_bar.html:182
msgid "Mean"
msgstr "Média"
#: templates/cotton/ui/transactions_action_bar.html:202
msgid "Max"
msgstr "Máximo"
#: templates/cotton/ui/transactions_action_bar.html:222
msgid "Min"
msgstr "Minímo"
#: templates/cotton/ui/transactions_action_bar.html:242
msgid "Count"
msgstr "Contagem"
#: templates/currencies/fragments/add.html:5 #: templates/currencies/fragments/add.html:5
msgid "Add currency" msgid "Add currency"
msgstr "Adicionar moeda" msgstr "Adicionar moeda"
@@ -1479,7 +1520,7 @@ msgstr "Adicionar entidade"
msgid "Edit entity" msgid "Edit entity"
msgstr "Editar entidade" msgstr "Editar entidade"
#: templates/entities/fragments/list.html:59 #: templates/entities/fragments/table.html:53
msgid "No entities" msgid "No entities"
msgstr "Sem entidades" msgstr "Sem entidades"
@@ -1884,7 +1925,7 @@ msgstr "Adicionar tag"
msgid "Edit tag" msgid "Edit tag"
msgstr "Editar tag" msgstr "Editar tag"
#: templates/tags/fragments/list.html:59 #: templates/tags/fragments/table.html:53
msgid "No tags" msgid "No tags"
msgstr "Nenhuma tag" msgstr "Nenhuma tag"

View File

@@ -11,78 +11,252 @@
<div class="card slide-in-left"> <div class="card slide-in-left">
<div class="card-body p-2"> <div class="card-body p-2">
{% spaceless %} {% spaceless %}
<div class="btn-group" role="group"> <div class="btn-group" role="group">
<button class="btn btn-secondary btn-sm"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Select All' %}"
_="on click set <#transactions-list input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
<i class="fa-regular fa-square-check tw-text-green-400"></i>
</button>
<button class="btn btn-secondary btn-sm"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Unselect All' %}"
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
<i class="fa-regular fa-square tw-text-red-400"></i>
</button>
</div>
<div class="vr mx-3 tw-align-middle"></div>
<div class="btn-group me-3" role="group">
<button class="btn btn-secondary btn-sm"
hx-get="{% url 'transactions_bulk_pay' %}"
hx-include=".transaction"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Mark as paid' %}">
<i class="fa-regular fa-circle-check tw-text-green-400"></i>
</button>
<button class="btn btn-secondary btn-sm"
hx-get="{% url 'transactions_bulk_unpay' %}"
hx-include=".transaction"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Mark as unpaid' %}">
<i class="fa-regular fa-circle tw-text-red-400"></i>
</button>
</div>
<button class="btn btn-secondary btn-sm" <button class="btn btn-secondary btn-sm"
data-bs-toggle="tooltip" hx-get="{% url 'transactions_bulk_delete' %}"
data-bs-title="{% translate 'Select All' %}"
_="on click set <#transactions-list input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
<i class="fa-regular fa-square-check tw-text-green-400"></i>
</button>
<button class="btn btn-secondary btn-sm"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Unselect All' %}"
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
<i class="fa-regular fa-square tw-text-red-400"></i>
</button>
</div>
<div class="vr mx-3 tw-align-middle"></div>
<div class="btn-group me-3" role="group">
<button class="btn btn-secondary btn-sm"
hx-get="{% url 'transactions_bulk_pay' %}"
hx-include=".transaction"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Mark as paid' %}">
<i class="fa-regular fa-circle-check tw-text-green-400"></i>
</button>
<button class="btn btn-secondary btn-sm"
hx-get="{% url 'transactions_bulk_unpay' %}"
hx-include=".transaction" hx-include=".transaction"
hx-trigger="confirmed"
data-bs-toggle="tooltip" data-bs-toggle="tooltip"
data-bs-title="{% translate 'Mark as unpaid' %}"> data-bs-title="{% translate 'Delete' %}"
<i class="fa-regular fa-circle tw-text-red-400"></i> data-bypass-on-ctrl="true"
data-title="{% translate "Are you sure?" %}"
data-text="{% translate "You won't be able to revert this!" %}"
data-confirm-text="{% translate "Yes, delete them!" %}"
_="install prompt_swal">
<i class="fa-solid fa-trash text-danger"></i>
</button> </button>
</div> <div class="vr mx-3 tw-align-middle"></div>
<button class="btn btn-secondary btn-sm" {# <span _="on selected_transactions_updated from #actions-bar#}
hx-get="{% url 'transactions_bulk_delete' %}" {# set realTotal to 0.0#}
hx-include=".transaction" {# set flatTotal to 0.0#}
hx-trigger="confirmed" {# for transaction in <.transaction:has(input[name='transactions']:checked)/>#}
data-bs-toggle="tooltip" {# set amt to first <.main-amount .amount/> in transaction#}
data-bs-title="{% translate 'Delete' %}" {# set amountValue to parseFloat(amt.getAttribute('data-amount'))#}
data-bypass-on-ctrl="true" {# if not isNaN(amountValue)#}
data-title="{% translate "Are you sure?" %}" {# set flatTotal to flatTotal + (amountValue * 100)#}
data-text="{% translate "You won't be able to revert this!" %}" {##}
data-confirm-text="{% translate "Yes, delete them!" %}" {# if transaction match .income#}
_="install prompt_swal"> {# set realTotal to realTotal + (amountValue * 100)#}
<i class="fa-solid fa-trash text-danger"></i> {# else#}
</button> {# set realTotal to realTotal - (amountValue * 100)#}
<div class="vr mx-3 tw-align-middle"></div> {# end#}
<span _="on selected_transactions_updated from #actions-bar {# end#}
set realTotal to 0.0 {# end#}
set flatTotal to 0.0 {# set realTotal to realTotal / 100#}
for transaction in <.transaction:has(input[name='transactions']:checked)/> {# put realTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into me#}
set amt to first <.main-amount .amount/> in transaction {# end#}
set amountValue to parseFloat(amt.getAttribute('data-amount')) {# on click#}
if not isNaN(amountValue) {# set original_value to my innerText#}
set flatTotal to flatTotal + (amountValue * 100) {# writeText(my innerText) on navigator.clipboard#}
{# put '{% translate "copied!" %}' into me#}
{# wait 1s#}
{# put original_value into me#}
{# end"#}
{# class="" role="button"></span>#}
<div class="btn-group"
_="on selected_transactions_updated from #actions-bar
set realTotal to 0.0
set flatTotal to 0.0
set transactions to <.transaction:has(input[name='transactions']:checked)/>
set amountValues to []
if transaction match .income for transaction in transactions
set realTotal to realTotal + (amountValue * 100) set amt to first <.main-amount .amount/> in transaction
else set amountValue to parseFloat(amt.getAttribute('data-amount'))
set realTotal to realTotal - (amountValue * 100) append amountValue to amountValues
if not isNaN(amountValue)
set flatTotal to flatTotal + (amountValue * 100)
if transaction match .income
set realTotal to realTotal + (amountValue * 100)
else
set realTotal to realTotal - (amountValue * 100)
end
end end
end end
end
set realTotal to realTotal / 100 set realTotal to realTotal / 100
put realTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into me put realTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #real-total-front's innerText
end put realTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-real-total's innerText
on click set flatTotal to flatTotal / 100
set original_value to my innerText put flatTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-flat-total's innerText
writeText(my innerText) on navigator.clipboard log amountValues
put '{% translate "copied!" %}' into me put Math.max.apply(Math, amountValues) into #calc-menu-max's innerText
wait 1s put Math.min.apply(Math, amountValues) into #calc-menu-min's innerText
put original_value into me put flatTotal / amountValues.length into #calc-menu-mean's innerText
end" put amountValues.length into #calc-menu-count's innerText
class="" role="button"></span> end"
>
<button class="btn btn-secondary btn-sm">
<i class="fa-solid fa-plus fa-fw me-2 text-primary"></i>
<span id="real-total-front"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">0</span>
</button>
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split"
data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
<span class="visually-hidden">{% trans "Toggle Dropdown" %}</span>
</button>
<ul class="dropdown-menu">
<li>
<div class="dropdown-item-text p-0">
<div>
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
{% trans "Flat Total" %}
</div>
<div class="dropdown-item px-3 tw-cursor-pointer"
id="calc-menu-flat-total"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">
0
</div>
</div>
</div>
</li>
<li>
<div class="dropdown-item-text p-0">
<div>
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
{% trans "Real Total" %}
</div>
<div class="dropdown-item px-3 tw-cursor-pointer"
id="calc-menu-real-total"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">
0
</div>
</div>
</div>
</li>
<li>
<div class="dropdown-item-text p-0">
<div>
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
{% trans "Mean" %}
</div>
<div class="dropdown-item px-3 tw-cursor-pointer"
id="calc-menu-mean"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">
0
</div>
</div>
</div>
</li>
<li>
<div class="dropdown-item-text p-0">
<div>
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
{% trans "Max" %}
</div>
<div class="dropdown-item px-3 tw-cursor-pointer"
id="calc-menu-max"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">
0
</div>
</div>
</div>
</li>
<li>
<div class="dropdown-item-text p-0">
<div>
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
{% trans "Min" %}
</div>
<div class="dropdown-item px-3 tw-cursor-pointer"
id="calc-menu-min"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">
0
</div>
</div>
</div>
</li>
<li>
<div class="dropdown-item-text p-0">
<div>
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
{% trans "Count" %}
</div>
<div class="dropdown-item px-3 tw-cursor-pointer"
id="calc-menu-count"
_="on click
set original_value to my innerText
writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me
wait 1s
put original_value into me
end">
0
</div>
</div>
</div>
</li>
</ul>
</div>
{% endspaceless %} {% endspaceless %}
</div> </div>
</div> </div>