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
+80 -39
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"
@@ -56,12 +56,45 @@
<i class="fa-solid fa-trash text-danger"></i> <i class="fa-solid fa-trash text-danger"></i>
</button> </button>
<div class="vr mx-3 tw-align-middle"></div> <div class="vr mx-3 tw-align-middle"></div>
<span _="on selected_transactions_updated from #actions-bar {# <span _="on selected_transactions_updated from #actions-bar#}
{# set realTotal to 0.0#}
{# set flatTotal to 0.0#}
{# for transaction in <.transaction:has(input[name='transactions']:checked)/>#}
{# set amt to first <.main-amount .amount/> in transaction#}
{# set amountValue to parseFloat(amt.getAttribute('data-amount'))#}
{# 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#}
{# set realTotal to realTotal / 100#}
{# put realTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into me#}
{# end#}
{# 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"#}
{# class="" role="button"></span>#}
<div class="btn-group"
_="on selected_transactions_updated from #actions-bar
set realTotal to 0.0 set realTotal to 0.0
set flatTotal to 0.0 set flatTotal to 0.0
for transaction in <.transaction:has(input[name='transactions']:checked)/> set transactions to <.transaction:has(input[name='transactions']:checked)/>
set amountValues to []
for transaction in transactions
set amt to first <.main-amount .amount/> in transaction set amt to first <.main-amount .amount/> in transaction
set amountValue to parseFloat(amt.getAttribute('data-amount')) set amountValue to parseFloat(amt.getAttribute('data-amount'))
append amountValue to amountValues
if not isNaN(amountValue) if not isNaN(amountValue)
set flatTotal to flatTotal + (amountValue * 100) set flatTotal to flatTotal + (amountValue * 100)
@@ -72,17 +105,158 @@
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
put flatTotal.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-flat-total's innerText
log amountValues
put Math.max.apply(Math, amountValues) into #calc-menu-max's innerText
put Math.min.apply(Math, amountValues) into #calc-menu-min's innerText
put flatTotal / amountValues.length into #calc-menu-mean's innerText
put amountValues.length into #calc-menu-count's innerText
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 set original_value to my innerText
writeText(my innerText) on navigator.clipboard writeText(my innerText) on navigator.clipboard
put '{% translate "copied!" %}' into me put '{% translate "copied!" %}' into me
wait 1s wait 1s
put original_value into me put original_value into me
end" end">0</span>
class="" role="button"></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>