mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-05-01 13:04:24 +02:00
Compare commits
33 Commits
0.13.0
...
fix/amount
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0832ec75ca | ||
|
|
6b4fbee7a6 | ||
|
|
e7fe6622cd | ||
|
|
3017593ed5 | ||
|
|
ceb8e9ea97 | ||
|
|
9b5b7683dd | ||
|
|
514600e34a | ||
|
|
07dd805b07 | ||
|
|
905e9b4c54 | ||
|
|
60d367dec5 | ||
|
|
6e0842a697 | ||
|
|
858934b7c5 | ||
|
|
47d9e4078c | ||
|
|
fa6f3e87c0 | ||
|
|
5f101af879 | ||
|
|
b27633a28e | ||
|
|
7716eee0b3 | ||
|
|
37c447ae0a | ||
|
|
e544d7068b | ||
|
|
8d93da99c1 | ||
|
|
cc87477a2e | ||
|
|
e86e0b8c08 | ||
|
|
eb0c872c50 | ||
|
|
b4578df242 | ||
|
|
756de12835 | ||
|
|
d573d02657 | ||
|
|
250b352217 | ||
|
|
b4e9446cf6 | ||
|
|
90944f0179 | ||
|
|
008d34b1d0 | ||
|
|
46dfc7dad4 | ||
|
|
22900b5d9e | ||
|
|
0c48e9fe3d |
@@ -165,7 +165,7 @@ To configure OIDC, you need to set the following environment variables:
|
|||||||
|
|
||||||
When configuring your OIDC provider, you will need to provide a callback URL (also known as a Redirect URI). For WYGIWYH, the default callback URL is:
|
When configuring your OIDC provider, you will need to provide a callback URL (also known as a Redirect URI). For WYGIWYH, the default callback URL is:
|
||||||
|
|
||||||
`https://your.wygiwyh.domain/daa/accounts/oidc/<OIDC_CLIENT_NAME>/login/callback/`
|
`https://your.wygiwyh.domain/auth/oidc/<OIDC_CLIENT_NAME>/login/callback/`
|
||||||
|
|
||||||
Replace `https://your.wygiwyh.domain` with the actual URL where your WYGIWYH instance is accessible. And `<OIDC_CLIENT_NAME>` with the slugfied value set in OIDC_CLIENT_NAME or the default `openid-connect` if you haven't set this variable.
|
Replace `https://your.wygiwyh.domain` with the actual URL where your WYGIWYH instance is accessible. And `<OIDC_CLIENT_NAME>` with the slugfied value set in OIDC_CLIENT_NAME or the default `openid-connect` if you haven't set this variable.
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from django.utils.formats import get_format as original_get_format
|
|||||||
def get_format(format_type=None, lang=None, use_l10n=None):
|
def get_format(format_type=None, lang=None, use_l10n=None):
|
||||||
user = get_current_user()
|
user = get_current_user()
|
||||||
|
|
||||||
if user and user.is_authenticated and hasattr(user, "settings"):
|
if user and user.is_authenticated and hasattr(user, "settings") and use_l10n:
|
||||||
user_settings = user.settings
|
user_settings = user.settings
|
||||||
if format_type == "THOUSAND_SEPARATOR":
|
if format_type == "THOUSAND_SEPARATOR":
|
||||||
number_format = getattr(user_settings, "number_format", None)
|
number_format = getattr(user_settings, "number_format", None)
|
||||||
|
|||||||
@@ -37,7 +37,9 @@ class AirDatePickerInput(widgets.DateInput):
|
|||||||
def _get_current_language():
|
def _get_current_language():
|
||||||
"""Get current language code in format compatible with AirDatepicker"""
|
"""Get current language code in format compatible with AirDatepicker"""
|
||||||
lang_code = translation.get_language()
|
lang_code = translation.get_language()
|
||||||
# AirDatepicker uses simple language codes
|
# AirDatepicker uses simple language codes, except for pt-br
|
||||||
|
if lang_code.lower() == "pt-br":
|
||||||
|
return "pt-BR"
|
||||||
return lang_code.split("-")[0]
|
return lang_code.split("-")[0]
|
||||||
|
|
||||||
def _get_format(self):
|
def _get_format(self):
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ class ArbitraryDecimalDisplayNumberInput(forms.TextInput):
|
|||||||
"x-data": "",
|
"x-data": "",
|
||||||
"x-mask:dynamic": f"$money($input, '{get_format('DECIMAL_SEPARATOR')}', "
|
"x-mask:dynamic": f"$money($input, '{get_format('DECIMAL_SEPARATOR')}', "
|
||||||
f"'{get_format('THOUSAND_SEPARATOR')}', '30')",
|
f"'{get_format('THOUSAND_SEPARATOR')}', '30')",
|
||||||
|
"x-on:keyup": "$el.dispatchEvent(new Event('input'))",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from django.views.decorators.http import require_http_methods
|
|||||||
|
|
||||||
from apps.common.decorators.htmx import only_htmx
|
from apps.common.decorators.htmx import only_htmx
|
||||||
from apps.transactions.forms import QuickTransactionForm
|
from apps.transactions.forms import QuickTransactionForm
|
||||||
from apps.transactions.models import QuickTransaction
|
from apps.transactions.models import QuickTransaction, transaction_created
|
||||||
from apps.transactions.models import Transaction
|
from apps.transactions.models import Transaction
|
||||||
|
|
||||||
|
|
||||||
@@ -142,6 +142,8 @@ def quick_transaction_add_as_transaction(request, quick_transaction_id):
|
|||||||
new_transaction.tags.set(quick_transaction.tags.all())
|
new_transaction.tags.set(quick_transaction.tags.all())
|
||||||
new_transaction.entities.set(quick_transaction.entities.all())
|
new_transaction.entities.set(quick_transaction.entities.all())
|
||||||
|
|
||||||
|
transaction_created.send(sender=new_transaction)
|
||||||
|
|
||||||
messages.success(request, _("Transaction added successfully"))
|
messages.success(request, _("Transaction added successfully"))
|
||||||
|
|
||||||
return HttpResponse(
|
return HttpResponse(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from crispy_forms.bootstrap import (
|
|||||||
FormActions,
|
FormActions,
|
||||||
)
|
)
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Layout, Submit, Row, Column, Field, Div
|
from crispy_forms.layout import Layout, Submit, Row, Column, Field, Div, HTML
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.forms import (
|
from django.contrib.auth.forms import (
|
||||||
@@ -115,6 +115,7 @@ class UserSettingsForm(forms.ModelForm):
|
|||||||
"date_format",
|
"date_format",
|
||||||
"datetime_format",
|
"datetime_format",
|
||||||
"number_format",
|
"number_format",
|
||||||
|
"volume",
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@@ -126,10 +127,14 @@ class UserSettingsForm(forms.ModelForm):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"language",
|
"language",
|
||||||
"timezone",
|
"timezone",
|
||||||
|
HTML("<hr />"),
|
||||||
"date_format",
|
"date_format",
|
||||||
"datetime_format",
|
"datetime_format",
|
||||||
"number_format",
|
"number_format",
|
||||||
|
HTML("<hr />"),
|
||||||
"start_page",
|
"start_page",
|
||||||
|
HTML("<hr />"),
|
||||||
|
"volume",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit(
|
||||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
||||||
|
|||||||
@@ -0,0 +1,479 @@
|
|||||||
|
# Generated by Django 5.1.1 on 2025-06-29 00:48
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("users", "0021_alter_usersettings_timezone"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="usersettings",
|
||||||
|
name="volume",
|
||||||
|
field=models.PositiveIntegerField(
|
||||||
|
default=10,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.MinValueValidator(1),
|
||||||
|
django.core.validators.MaxValueValidator(10),
|
||||||
|
],
|
||||||
|
verbose_name="Volume",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="usersettings",
|
||||||
|
name="timezone",
|
||||||
|
field=models.CharField(
|
||||||
|
choices=[
|
||||||
|
("auto", "Auto"),
|
||||||
|
("Africa/Abidjan", "Africa/Abidjan"),
|
||||||
|
("Africa/Accra", "Africa/Accra"),
|
||||||
|
("Africa/Addis_Ababa", "Africa/Addis_Ababa"),
|
||||||
|
("Africa/Algiers", "Africa/Algiers"),
|
||||||
|
("Africa/Asmara", "Africa/Asmara"),
|
||||||
|
("Africa/Bamako", "Africa/Bamako"),
|
||||||
|
("Africa/Bangui", "Africa/Bangui"),
|
||||||
|
("Africa/Banjul", "Africa/Banjul"),
|
||||||
|
("Africa/Bissau", "Africa/Bissau"),
|
||||||
|
("Africa/Blantyre", "Africa/Blantyre"),
|
||||||
|
("Africa/Brazzaville", "Africa/Brazzaville"),
|
||||||
|
("Africa/Bujumbura", "Africa/Bujumbura"),
|
||||||
|
("Africa/Cairo", "Africa/Cairo"),
|
||||||
|
("Africa/Casablanca", "Africa/Casablanca"),
|
||||||
|
("Africa/Ceuta", "Africa/Ceuta"),
|
||||||
|
("Africa/Conakry", "Africa/Conakry"),
|
||||||
|
("Africa/Dakar", "Africa/Dakar"),
|
||||||
|
("Africa/Dar_es_Salaam", "Africa/Dar_es_Salaam"),
|
||||||
|
("Africa/Djibouti", "Africa/Djibouti"),
|
||||||
|
("Africa/Douala", "Africa/Douala"),
|
||||||
|
("Africa/El_Aaiun", "Africa/El_Aaiun"),
|
||||||
|
("Africa/Freetown", "Africa/Freetown"),
|
||||||
|
("Africa/Gaborone", "Africa/Gaborone"),
|
||||||
|
("Africa/Harare", "Africa/Harare"),
|
||||||
|
("Africa/Johannesburg", "Africa/Johannesburg"),
|
||||||
|
("Africa/Juba", "Africa/Juba"),
|
||||||
|
("Africa/Kampala", "Africa/Kampala"),
|
||||||
|
("Africa/Khartoum", "Africa/Khartoum"),
|
||||||
|
("Africa/Kigali", "Africa/Kigali"),
|
||||||
|
("Africa/Kinshasa", "Africa/Kinshasa"),
|
||||||
|
("Africa/Lagos", "Africa/Lagos"),
|
||||||
|
("Africa/Libreville", "Africa/Libreville"),
|
||||||
|
("Africa/Lome", "Africa/Lome"),
|
||||||
|
("Africa/Luanda", "Africa/Luanda"),
|
||||||
|
("Africa/Lubumbashi", "Africa/Lubumbashi"),
|
||||||
|
("Africa/Lusaka", "Africa/Lusaka"),
|
||||||
|
("Africa/Malabo", "Africa/Malabo"),
|
||||||
|
("Africa/Maputo", "Africa/Maputo"),
|
||||||
|
("Africa/Maseru", "Africa/Maseru"),
|
||||||
|
("Africa/Mbabane", "Africa/Mbabane"),
|
||||||
|
("Africa/Mogadishu", "Africa/Mogadishu"),
|
||||||
|
("Africa/Monrovia", "Africa/Monrovia"),
|
||||||
|
("Africa/Nairobi", "Africa/Nairobi"),
|
||||||
|
("Africa/Ndjamena", "Africa/Ndjamena"),
|
||||||
|
("Africa/Niamey", "Africa/Niamey"),
|
||||||
|
("Africa/Nouakchott", "Africa/Nouakchott"),
|
||||||
|
("Africa/Ouagadougou", "Africa/Ouagadougou"),
|
||||||
|
("Africa/Porto-Novo", "Africa/Porto-Novo"),
|
||||||
|
("Africa/Sao_Tome", "Africa/Sao_Tome"),
|
||||||
|
("Africa/Tripoli", "Africa/Tripoli"),
|
||||||
|
("Africa/Tunis", "Africa/Tunis"),
|
||||||
|
("Africa/Windhoek", "Africa/Windhoek"),
|
||||||
|
("America/Adak", "America/Adak"),
|
||||||
|
("America/Anchorage", "America/Anchorage"),
|
||||||
|
("America/Anguilla", "America/Anguilla"),
|
||||||
|
("America/Antigua", "America/Antigua"),
|
||||||
|
("America/Araguaina", "America/Araguaina"),
|
||||||
|
(
|
||||||
|
"America/Argentina/Buenos_Aires",
|
||||||
|
"America/Argentina/Buenos_Aires",
|
||||||
|
),
|
||||||
|
("America/Argentina/Catamarca", "America/Argentina/Catamarca"),
|
||||||
|
("America/Argentina/Cordoba", "America/Argentina/Cordoba"),
|
||||||
|
("America/Argentina/Jujuy", "America/Argentina/Jujuy"),
|
||||||
|
("America/Argentina/La_Rioja", "America/Argentina/La_Rioja"),
|
||||||
|
("America/Argentina/Mendoza", "America/Argentina/Mendoza"),
|
||||||
|
(
|
||||||
|
"America/Argentina/Rio_Gallegos",
|
||||||
|
"America/Argentina/Rio_Gallegos",
|
||||||
|
),
|
||||||
|
("America/Argentina/Salta", "America/Argentina/Salta"),
|
||||||
|
("America/Argentina/San_Juan", "America/Argentina/San_Juan"),
|
||||||
|
("America/Argentina/San_Luis", "America/Argentina/San_Luis"),
|
||||||
|
("America/Argentina/Tucuman", "America/Argentina/Tucuman"),
|
||||||
|
("America/Argentina/Ushuaia", "America/Argentina/Ushuaia"),
|
||||||
|
("America/Aruba", "America/Aruba"),
|
||||||
|
("America/Asuncion", "America/Asuncion"),
|
||||||
|
("America/Atikokan", "America/Atikokan"),
|
||||||
|
("America/Bahia", "America/Bahia"),
|
||||||
|
("America/Bahia_Banderas", "America/Bahia_Banderas"),
|
||||||
|
("America/Barbados", "America/Barbados"),
|
||||||
|
("America/Belem", "America/Belem"),
|
||||||
|
("America/Belize", "America/Belize"),
|
||||||
|
("America/Blanc-Sablon", "America/Blanc-Sablon"),
|
||||||
|
("America/Boa_Vista", "America/Boa_Vista"),
|
||||||
|
("America/Bogota", "America/Bogota"),
|
||||||
|
("America/Boise", "America/Boise"),
|
||||||
|
("America/Cambridge_Bay", "America/Cambridge_Bay"),
|
||||||
|
("America/Campo_Grande", "America/Campo_Grande"),
|
||||||
|
("America/Cancun", "America/Cancun"),
|
||||||
|
("America/Caracas", "America/Caracas"),
|
||||||
|
("America/Cayenne", "America/Cayenne"),
|
||||||
|
("America/Cayman", "America/Cayman"),
|
||||||
|
("America/Chicago", "America/Chicago"),
|
||||||
|
("America/Chihuahua", "America/Chihuahua"),
|
||||||
|
("America/Ciudad_Juarez", "America/Ciudad_Juarez"),
|
||||||
|
("America/Costa_Rica", "America/Costa_Rica"),
|
||||||
|
("America/Creston", "America/Creston"),
|
||||||
|
("America/Cuiaba", "America/Cuiaba"),
|
||||||
|
("America/Curacao", "America/Curacao"),
|
||||||
|
("America/Danmarkshavn", "America/Danmarkshavn"),
|
||||||
|
("America/Dawson", "America/Dawson"),
|
||||||
|
("America/Dawson_Creek", "America/Dawson_Creek"),
|
||||||
|
("America/Denver", "America/Denver"),
|
||||||
|
("America/Detroit", "America/Detroit"),
|
||||||
|
("America/Dominica", "America/Dominica"),
|
||||||
|
("America/Edmonton", "America/Edmonton"),
|
||||||
|
("America/Eirunepe", "America/Eirunepe"),
|
||||||
|
("America/El_Salvador", "America/El_Salvador"),
|
||||||
|
("America/Fort_Nelson", "America/Fort_Nelson"),
|
||||||
|
("America/Fortaleza", "America/Fortaleza"),
|
||||||
|
("America/Glace_Bay", "America/Glace_Bay"),
|
||||||
|
("America/Goose_Bay", "America/Goose_Bay"),
|
||||||
|
("America/Grand_Turk", "America/Grand_Turk"),
|
||||||
|
("America/Grenada", "America/Grenada"),
|
||||||
|
("America/Guadeloupe", "America/Guadeloupe"),
|
||||||
|
("America/Guatemala", "America/Guatemala"),
|
||||||
|
("America/Guayaquil", "America/Guayaquil"),
|
||||||
|
("America/Guyana", "America/Guyana"),
|
||||||
|
("America/Halifax", "America/Halifax"),
|
||||||
|
("America/Havana", "America/Havana"),
|
||||||
|
("America/Hermosillo", "America/Hermosillo"),
|
||||||
|
("America/Indiana/Indianapolis", "America/Indiana/Indianapolis"),
|
||||||
|
("America/Indiana/Knox", "America/Indiana/Knox"),
|
||||||
|
("America/Indiana/Marengo", "America/Indiana/Marengo"),
|
||||||
|
("America/Indiana/Petersburg", "America/Indiana/Petersburg"),
|
||||||
|
("America/Indiana/Tell_City", "America/Indiana/Tell_City"),
|
||||||
|
("America/Indiana/Vevay", "America/Indiana/Vevay"),
|
||||||
|
("America/Indiana/Vincennes", "America/Indiana/Vincennes"),
|
||||||
|
("America/Indiana/Winamac", "America/Indiana/Winamac"),
|
||||||
|
("America/Inuvik", "America/Inuvik"),
|
||||||
|
("America/Iqaluit", "America/Iqaluit"),
|
||||||
|
("America/Jamaica", "America/Jamaica"),
|
||||||
|
("America/Juneau", "America/Juneau"),
|
||||||
|
("America/Kentucky/Louisville", "America/Kentucky/Louisville"),
|
||||||
|
("America/Kentucky/Monticello", "America/Kentucky/Monticello"),
|
||||||
|
("America/Kralendijk", "America/Kralendijk"),
|
||||||
|
("America/La_Paz", "America/La_Paz"),
|
||||||
|
("America/Lima", "America/Lima"),
|
||||||
|
("America/Los_Angeles", "America/Los_Angeles"),
|
||||||
|
("America/Lower_Princes", "America/Lower_Princes"),
|
||||||
|
("America/Maceio", "America/Maceio"),
|
||||||
|
("America/Managua", "America/Managua"),
|
||||||
|
("America/Manaus", "America/Manaus"),
|
||||||
|
("America/Marigot", "America/Marigot"),
|
||||||
|
("America/Martinique", "America/Martinique"),
|
||||||
|
("America/Matamoros", "America/Matamoros"),
|
||||||
|
("America/Mazatlan", "America/Mazatlan"),
|
||||||
|
("America/Menominee", "America/Menominee"),
|
||||||
|
("America/Merida", "America/Merida"),
|
||||||
|
("America/Metlakatla", "America/Metlakatla"),
|
||||||
|
("America/Mexico_City", "America/Mexico_City"),
|
||||||
|
("America/Miquelon", "America/Miquelon"),
|
||||||
|
("America/Moncton", "America/Moncton"),
|
||||||
|
("America/Monterrey", "America/Monterrey"),
|
||||||
|
("America/Montevideo", "America/Montevideo"),
|
||||||
|
("America/Montserrat", "America/Montserrat"),
|
||||||
|
("America/Nassau", "America/Nassau"),
|
||||||
|
("America/New_York", "America/New_York"),
|
||||||
|
("America/Nome", "America/Nome"),
|
||||||
|
("America/Noronha", "America/Noronha"),
|
||||||
|
("America/North_Dakota/Beulah", "America/North_Dakota/Beulah"),
|
||||||
|
("America/North_Dakota/Center", "America/North_Dakota/Center"),
|
||||||
|
(
|
||||||
|
"America/North_Dakota/New_Salem",
|
||||||
|
"America/North_Dakota/New_Salem",
|
||||||
|
),
|
||||||
|
("America/Nuuk", "America/Nuuk"),
|
||||||
|
("America/Ojinaga", "America/Ojinaga"),
|
||||||
|
("America/Panama", "America/Panama"),
|
||||||
|
("America/Paramaribo", "America/Paramaribo"),
|
||||||
|
("America/Phoenix", "America/Phoenix"),
|
||||||
|
("America/Port-au-Prince", "America/Port-au-Prince"),
|
||||||
|
("America/Port_of_Spain", "America/Port_of_Spain"),
|
||||||
|
("America/Porto_Velho", "America/Porto_Velho"),
|
||||||
|
("America/Puerto_Rico", "America/Puerto_Rico"),
|
||||||
|
("America/Punta_Arenas", "America/Punta_Arenas"),
|
||||||
|
("America/Rankin_Inlet", "America/Rankin_Inlet"),
|
||||||
|
("America/Recife", "America/Recife"),
|
||||||
|
("America/Regina", "America/Regina"),
|
||||||
|
("America/Resolute", "America/Resolute"),
|
||||||
|
("America/Rio_Branco", "America/Rio_Branco"),
|
||||||
|
("America/Santarem", "America/Santarem"),
|
||||||
|
("America/Santiago", "America/Santiago"),
|
||||||
|
("America/Santo_Domingo", "America/Santo_Domingo"),
|
||||||
|
("America/Sao_Paulo", "America/Sao_Paulo"),
|
||||||
|
("America/Scoresbysund", "America/Scoresbysund"),
|
||||||
|
("America/Sitka", "America/Sitka"),
|
||||||
|
("America/St_Barthelemy", "America/St_Barthelemy"),
|
||||||
|
("America/St_Johns", "America/St_Johns"),
|
||||||
|
("America/St_Kitts", "America/St_Kitts"),
|
||||||
|
("America/St_Lucia", "America/St_Lucia"),
|
||||||
|
("America/St_Thomas", "America/St_Thomas"),
|
||||||
|
("America/St_Vincent", "America/St_Vincent"),
|
||||||
|
("America/Swift_Current", "America/Swift_Current"),
|
||||||
|
("America/Tegucigalpa", "America/Tegucigalpa"),
|
||||||
|
("America/Thule", "America/Thule"),
|
||||||
|
("America/Tijuana", "America/Tijuana"),
|
||||||
|
("America/Toronto", "America/Toronto"),
|
||||||
|
("America/Tortola", "America/Tortola"),
|
||||||
|
("America/Vancouver", "America/Vancouver"),
|
||||||
|
("America/Whitehorse", "America/Whitehorse"),
|
||||||
|
("America/Winnipeg", "America/Winnipeg"),
|
||||||
|
("America/Yakutat", "America/Yakutat"),
|
||||||
|
("Antarctica/Casey", "Antarctica/Casey"),
|
||||||
|
("Antarctica/Davis", "Antarctica/Davis"),
|
||||||
|
("Antarctica/DumontDUrville", "Antarctica/DumontDUrville"),
|
||||||
|
("Antarctica/Macquarie", "Antarctica/Macquarie"),
|
||||||
|
("Antarctica/Mawson", "Antarctica/Mawson"),
|
||||||
|
("Antarctica/McMurdo", "Antarctica/McMurdo"),
|
||||||
|
("Antarctica/Palmer", "Antarctica/Palmer"),
|
||||||
|
("Antarctica/Rothera", "Antarctica/Rothera"),
|
||||||
|
("Antarctica/Syowa", "Antarctica/Syowa"),
|
||||||
|
("Antarctica/Troll", "Antarctica/Troll"),
|
||||||
|
("Antarctica/Vostok", "Antarctica/Vostok"),
|
||||||
|
("Arctic/Longyearbyen", "Arctic/Longyearbyen"),
|
||||||
|
("Asia/Aden", "Asia/Aden"),
|
||||||
|
("Asia/Almaty", "Asia/Almaty"),
|
||||||
|
("Asia/Amman", "Asia/Amman"),
|
||||||
|
("Asia/Anadyr", "Asia/Anadyr"),
|
||||||
|
("Asia/Aqtau", "Asia/Aqtau"),
|
||||||
|
("Asia/Aqtobe", "Asia/Aqtobe"),
|
||||||
|
("Asia/Ashgabat", "Asia/Ashgabat"),
|
||||||
|
("Asia/Atyrau", "Asia/Atyrau"),
|
||||||
|
("Asia/Baghdad", "Asia/Baghdad"),
|
||||||
|
("Asia/Bahrain", "Asia/Bahrain"),
|
||||||
|
("Asia/Baku", "Asia/Baku"),
|
||||||
|
("Asia/Bangkok", "Asia/Bangkok"),
|
||||||
|
("Asia/Barnaul", "Asia/Barnaul"),
|
||||||
|
("Asia/Beirut", "Asia/Beirut"),
|
||||||
|
("Asia/Bishkek", "Asia/Bishkek"),
|
||||||
|
("Asia/Brunei", "Asia/Brunei"),
|
||||||
|
("Asia/Chita", "Asia/Chita"),
|
||||||
|
("Asia/Colombo", "Asia/Colombo"),
|
||||||
|
("Asia/Damascus", "Asia/Damascus"),
|
||||||
|
("Asia/Dhaka", "Asia/Dhaka"),
|
||||||
|
("Asia/Dili", "Asia/Dili"),
|
||||||
|
("Asia/Dubai", "Asia/Dubai"),
|
||||||
|
("Asia/Dushanbe", "Asia/Dushanbe"),
|
||||||
|
("Asia/Famagusta", "Asia/Famagusta"),
|
||||||
|
("Asia/Gaza", "Asia/Gaza"),
|
||||||
|
("Asia/Hebron", "Asia/Hebron"),
|
||||||
|
("Asia/Ho_Chi_Minh", "Asia/Ho_Chi_Minh"),
|
||||||
|
("Asia/Hong_Kong", "Asia/Hong_Kong"),
|
||||||
|
("Asia/Hovd", "Asia/Hovd"),
|
||||||
|
("Asia/Irkutsk", "Asia/Irkutsk"),
|
||||||
|
("Asia/Jakarta", "Asia/Jakarta"),
|
||||||
|
("Asia/Jayapura", "Asia/Jayapura"),
|
||||||
|
("Asia/Jerusalem", "Asia/Jerusalem"),
|
||||||
|
("Asia/Kabul", "Asia/Kabul"),
|
||||||
|
("Asia/Kamchatka", "Asia/Kamchatka"),
|
||||||
|
("Asia/Karachi", "Asia/Karachi"),
|
||||||
|
("Asia/Kathmandu", "Asia/Kathmandu"),
|
||||||
|
("Asia/Khandyga", "Asia/Khandyga"),
|
||||||
|
("Asia/Kolkata", "Asia/Kolkata"),
|
||||||
|
("Asia/Krasnoyarsk", "Asia/Krasnoyarsk"),
|
||||||
|
("Asia/Kuala_Lumpur", "Asia/Kuala_Lumpur"),
|
||||||
|
("Asia/Kuching", "Asia/Kuching"),
|
||||||
|
("Asia/Kuwait", "Asia/Kuwait"),
|
||||||
|
("Asia/Macau", "Asia/Macau"),
|
||||||
|
("Asia/Magadan", "Asia/Magadan"),
|
||||||
|
("Asia/Makassar", "Asia/Makassar"),
|
||||||
|
("Asia/Manila", "Asia/Manila"),
|
||||||
|
("Asia/Muscat", "Asia/Muscat"),
|
||||||
|
("Asia/Nicosia", "Asia/Nicosia"),
|
||||||
|
("Asia/Novokuznetsk", "Asia/Novokuznetsk"),
|
||||||
|
("Asia/Novosibirsk", "Asia/Novosibirsk"),
|
||||||
|
("Asia/Omsk", "Asia/Omsk"),
|
||||||
|
("Asia/Oral", "Asia/Oral"),
|
||||||
|
("Asia/Phnom_Penh", "Asia/Phnom_Penh"),
|
||||||
|
("Asia/Pontianak", "Asia/Pontianak"),
|
||||||
|
("Asia/Pyongyang", "Asia/Pyongyang"),
|
||||||
|
("Asia/Qatar", "Asia/Qatar"),
|
||||||
|
("Asia/Qostanay", "Asia/Qostanay"),
|
||||||
|
("Asia/Qyzylorda", "Asia/Qyzylorda"),
|
||||||
|
("Asia/Riyadh", "Asia/Riyadh"),
|
||||||
|
("Asia/Sakhalin", "Asia/Sakhalin"),
|
||||||
|
("Asia/Samarkand", "Asia/Samarkand"),
|
||||||
|
("Asia/Seoul", "Asia/Seoul"),
|
||||||
|
("Asia/Shanghai", "Asia/Shanghai"),
|
||||||
|
("Asia/Singapore", "Asia/Singapore"),
|
||||||
|
("Asia/Srednekolymsk", "Asia/Srednekolymsk"),
|
||||||
|
("Asia/Taipei", "Asia/Taipei"),
|
||||||
|
("Asia/Tashkent", "Asia/Tashkent"),
|
||||||
|
("Asia/Tbilisi", "Asia/Tbilisi"),
|
||||||
|
("Asia/Tehran", "Asia/Tehran"),
|
||||||
|
("Asia/Thimphu", "Asia/Thimphu"),
|
||||||
|
("Asia/Tokyo", "Asia/Tokyo"),
|
||||||
|
("Asia/Tomsk", "Asia/Tomsk"),
|
||||||
|
("Asia/Ulaanbaatar", "Asia/Ulaanbaatar"),
|
||||||
|
("Asia/Urumqi", "Asia/Urumqi"),
|
||||||
|
("Asia/Ust-Nera", "Asia/Ust-Nera"),
|
||||||
|
("Asia/Vientiane", "Asia/Vientiane"),
|
||||||
|
("Asia/Vladivostok", "Asia/Vladivostok"),
|
||||||
|
("Asia/Yakutsk", "Asia/Yakutsk"),
|
||||||
|
("Asia/Yangon", "Asia/Yangon"),
|
||||||
|
("Asia/Yekaterinburg", "Asia/Yekaterinburg"),
|
||||||
|
("Asia/Yerevan", "Asia/Yerevan"),
|
||||||
|
("Atlantic/Azores", "Atlantic/Azores"),
|
||||||
|
("Atlantic/Bermuda", "Atlantic/Bermuda"),
|
||||||
|
("Atlantic/Canary", "Atlantic/Canary"),
|
||||||
|
("Atlantic/Cape_Verde", "Atlantic/Cape_Verde"),
|
||||||
|
("Atlantic/Faroe", "Atlantic/Faroe"),
|
||||||
|
("Atlantic/Madeira", "Atlantic/Madeira"),
|
||||||
|
("Atlantic/Reykjavik", "Atlantic/Reykjavik"),
|
||||||
|
("Atlantic/South_Georgia", "Atlantic/South_Georgia"),
|
||||||
|
("Atlantic/St_Helena", "Atlantic/St_Helena"),
|
||||||
|
("Atlantic/Stanley", "Atlantic/Stanley"),
|
||||||
|
("Australia/Adelaide", "Australia/Adelaide"),
|
||||||
|
("Australia/Brisbane", "Australia/Brisbane"),
|
||||||
|
("Australia/Broken_Hill", "Australia/Broken_Hill"),
|
||||||
|
("Australia/Darwin", "Australia/Darwin"),
|
||||||
|
("Australia/Eucla", "Australia/Eucla"),
|
||||||
|
("Australia/Hobart", "Australia/Hobart"),
|
||||||
|
("Australia/Lindeman", "Australia/Lindeman"),
|
||||||
|
("Australia/Lord_Howe", "Australia/Lord_Howe"),
|
||||||
|
("Australia/Melbourne", "Australia/Melbourne"),
|
||||||
|
("Australia/Perth", "Australia/Perth"),
|
||||||
|
("Australia/Sydney", "Australia/Sydney"),
|
||||||
|
("Canada/Atlantic", "Canada/Atlantic"),
|
||||||
|
("Canada/Central", "Canada/Central"),
|
||||||
|
("Canada/Eastern", "Canada/Eastern"),
|
||||||
|
("Canada/Mountain", "Canada/Mountain"),
|
||||||
|
("Canada/Newfoundland", "Canada/Newfoundland"),
|
||||||
|
("Canada/Pacific", "Canada/Pacific"),
|
||||||
|
("Europe/Amsterdam", "Europe/Amsterdam"),
|
||||||
|
("Europe/Andorra", "Europe/Andorra"),
|
||||||
|
("Europe/Astrakhan", "Europe/Astrakhan"),
|
||||||
|
("Europe/Athens", "Europe/Athens"),
|
||||||
|
("Europe/Belgrade", "Europe/Belgrade"),
|
||||||
|
("Europe/Berlin", "Europe/Berlin"),
|
||||||
|
("Europe/Bratislava", "Europe/Bratislava"),
|
||||||
|
("Europe/Brussels", "Europe/Brussels"),
|
||||||
|
("Europe/Bucharest", "Europe/Bucharest"),
|
||||||
|
("Europe/Budapest", "Europe/Budapest"),
|
||||||
|
("Europe/Busingen", "Europe/Busingen"),
|
||||||
|
("Europe/Chisinau", "Europe/Chisinau"),
|
||||||
|
("Europe/Copenhagen", "Europe/Copenhagen"),
|
||||||
|
("Europe/Dublin", "Europe/Dublin"),
|
||||||
|
("Europe/Gibraltar", "Europe/Gibraltar"),
|
||||||
|
("Europe/Guernsey", "Europe/Guernsey"),
|
||||||
|
("Europe/Helsinki", "Europe/Helsinki"),
|
||||||
|
("Europe/Isle_of_Man", "Europe/Isle_of_Man"),
|
||||||
|
("Europe/Istanbul", "Europe/Istanbul"),
|
||||||
|
("Europe/Jersey", "Europe/Jersey"),
|
||||||
|
("Europe/Kaliningrad", "Europe/Kaliningrad"),
|
||||||
|
("Europe/Kirov", "Europe/Kirov"),
|
||||||
|
("Europe/Kyiv", "Europe/Kyiv"),
|
||||||
|
("Europe/Lisbon", "Europe/Lisbon"),
|
||||||
|
("Europe/Ljubljana", "Europe/Ljubljana"),
|
||||||
|
("Europe/London", "Europe/London"),
|
||||||
|
("Europe/Luxembourg", "Europe/Luxembourg"),
|
||||||
|
("Europe/Madrid", "Europe/Madrid"),
|
||||||
|
("Europe/Malta", "Europe/Malta"),
|
||||||
|
("Europe/Mariehamn", "Europe/Mariehamn"),
|
||||||
|
("Europe/Minsk", "Europe/Minsk"),
|
||||||
|
("Europe/Monaco", "Europe/Monaco"),
|
||||||
|
("Europe/Moscow", "Europe/Moscow"),
|
||||||
|
("Europe/Oslo", "Europe/Oslo"),
|
||||||
|
("Europe/Paris", "Europe/Paris"),
|
||||||
|
("Europe/Podgorica", "Europe/Podgorica"),
|
||||||
|
("Europe/Prague", "Europe/Prague"),
|
||||||
|
("Europe/Riga", "Europe/Riga"),
|
||||||
|
("Europe/Rome", "Europe/Rome"),
|
||||||
|
("Europe/Samara", "Europe/Samara"),
|
||||||
|
("Europe/San_Marino", "Europe/San_Marino"),
|
||||||
|
("Europe/Sarajevo", "Europe/Sarajevo"),
|
||||||
|
("Europe/Saratov", "Europe/Saratov"),
|
||||||
|
("Europe/Simferopol", "Europe/Simferopol"),
|
||||||
|
("Europe/Skopje", "Europe/Skopje"),
|
||||||
|
("Europe/Sofia", "Europe/Sofia"),
|
||||||
|
("Europe/Stockholm", "Europe/Stockholm"),
|
||||||
|
("Europe/Tallinn", "Europe/Tallinn"),
|
||||||
|
("Europe/Tirane", "Europe/Tirane"),
|
||||||
|
("Europe/Ulyanovsk", "Europe/Ulyanovsk"),
|
||||||
|
("Europe/Vaduz", "Europe/Vaduz"),
|
||||||
|
("Europe/Vatican", "Europe/Vatican"),
|
||||||
|
("Europe/Vienna", "Europe/Vienna"),
|
||||||
|
("Europe/Vilnius", "Europe/Vilnius"),
|
||||||
|
("Europe/Volgograd", "Europe/Volgograd"),
|
||||||
|
("Europe/Warsaw", "Europe/Warsaw"),
|
||||||
|
("Europe/Zagreb", "Europe/Zagreb"),
|
||||||
|
("Europe/Zurich", "Europe/Zurich"),
|
||||||
|
("GMT", "GMT"),
|
||||||
|
("Indian/Antananarivo", "Indian/Antananarivo"),
|
||||||
|
("Indian/Chagos", "Indian/Chagos"),
|
||||||
|
("Indian/Christmas", "Indian/Christmas"),
|
||||||
|
("Indian/Cocos", "Indian/Cocos"),
|
||||||
|
("Indian/Comoro", "Indian/Comoro"),
|
||||||
|
("Indian/Kerguelen", "Indian/Kerguelen"),
|
||||||
|
("Indian/Mahe", "Indian/Mahe"),
|
||||||
|
("Indian/Maldives", "Indian/Maldives"),
|
||||||
|
("Indian/Mauritius", "Indian/Mauritius"),
|
||||||
|
("Indian/Mayotte", "Indian/Mayotte"),
|
||||||
|
("Indian/Reunion", "Indian/Reunion"),
|
||||||
|
("Pacific/Apia", "Pacific/Apia"),
|
||||||
|
("Pacific/Auckland", "Pacific/Auckland"),
|
||||||
|
("Pacific/Bougainville", "Pacific/Bougainville"),
|
||||||
|
("Pacific/Chatham", "Pacific/Chatham"),
|
||||||
|
("Pacific/Chuuk", "Pacific/Chuuk"),
|
||||||
|
("Pacific/Easter", "Pacific/Easter"),
|
||||||
|
("Pacific/Efate", "Pacific/Efate"),
|
||||||
|
("Pacific/Fakaofo", "Pacific/Fakaofo"),
|
||||||
|
("Pacific/Fiji", "Pacific/Fiji"),
|
||||||
|
("Pacific/Funafuti", "Pacific/Funafuti"),
|
||||||
|
("Pacific/Galapagos", "Pacific/Galapagos"),
|
||||||
|
("Pacific/Gambier", "Pacific/Gambier"),
|
||||||
|
("Pacific/Guadalcanal", "Pacific/Guadalcanal"),
|
||||||
|
("Pacific/Guam", "Pacific/Guam"),
|
||||||
|
("Pacific/Honolulu", "Pacific/Honolulu"),
|
||||||
|
("Pacific/Kanton", "Pacific/Kanton"),
|
||||||
|
("Pacific/Kiritimati", "Pacific/Kiritimati"),
|
||||||
|
("Pacific/Kosrae", "Pacific/Kosrae"),
|
||||||
|
("Pacific/Kwajalein", "Pacific/Kwajalein"),
|
||||||
|
("Pacific/Majuro", "Pacific/Majuro"),
|
||||||
|
("Pacific/Marquesas", "Pacific/Marquesas"),
|
||||||
|
("Pacific/Midway", "Pacific/Midway"),
|
||||||
|
("Pacific/Nauru", "Pacific/Nauru"),
|
||||||
|
("Pacific/Niue", "Pacific/Niue"),
|
||||||
|
("Pacific/Norfolk", "Pacific/Norfolk"),
|
||||||
|
("Pacific/Noumea", "Pacific/Noumea"),
|
||||||
|
("Pacific/Pago_Pago", "Pacific/Pago_Pago"),
|
||||||
|
("Pacific/Palau", "Pacific/Palau"),
|
||||||
|
("Pacific/Pitcairn", "Pacific/Pitcairn"),
|
||||||
|
("Pacific/Pohnpei", "Pacific/Pohnpei"),
|
||||||
|
("Pacific/Port_Moresby", "Pacific/Port_Moresby"),
|
||||||
|
("Pacific/Rarotonga", "Pacific/Rarotonga"),
|
||||||
|
("Pacific/Saipan", "Pacific/Saipan"),
|
||||||
|
("Pacific/Tahiti", "Pacific/Tahiti"),
|
||||||
|
("Pacific/Tarawa", "Pacific/Tarawa"),
|
||||||
|
("Pacific/Tongatapu", "Pacific/Tongatapu"),
|
||||||
|
("Pacific/Wake", "Pacific/Wake"),
|
||||||
|
("Pacific/Wallis", "Pacific/Wallis"),
|
||||||
|
("US/Alaska", "US/Alaska"),
|
||||||
|
("US/Arizona", "US/Arizona"),
|
||||||
|
("US/Central", "US/Central"),
|
||||||
|
("US/Eastern", "US/Eastern"),
|
||||||
|
("US/Hawaii", "US/Hawaii"),
|
||||||
|
("US/Mountain", "US/Mountain"),
|
||||||
|
("US/Pacific", "US/Pacific"),
|
||||||
|
("UTC", "UTC"),
|
||||||
|
],
|
||||||
|
default="auto",
|
||||||
|
max_length=50,
|
||||||
|
verbose_name="Time Zone",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
File diff suppressed because one or more lines are too long
@@ -2,11 +2,449 @@ import pytz
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.models import AbstractUser, Group
|
from django.contrib.auth.models import AbstractUser, Group
|
||||||
|
from django.core.validators import MaxValueValidator, MinValueValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.users.managers import UserManager
|
from apps.users.managers import UserManager
|
||||||
|
|
||||||
|
timezones = [
|
||||||
|
("auto", _("Auto")),
|
||||||
|
("Africa/Abidjan", "Africa/Abidjan"),
|
||||||
|
("Africa/Accra", "Africa/Accra"),
|
||||||
|
("Africa/Addis_Ababa", "Africa/Addis_Ababa"),
|
||||||
|
("Africa/Algiers", "Africa/Algiers"),
|
||||||
|
("Africa/Asmara", "Africa/Asmara"),
|
||||||
|
("Africa/Bamako", "Africa/Bamako"),
|
||||||
|
("Africa/Bangui", "Africa/Bangui"),
|
||||||
|
("Africa/Banjul", "Africa/Banjul"),
|
||||||
|
("Africa/Bissau", "Africa/Bissau"),
|
||||||
|
("Africa/Blantyre", "Africa/Blantyre"),
|
||||||
|
("Africa/Brazzaville", "Africa/Brazzaville"),
|
||||||
|
("Africa/Bujumbura", "Africa/Bujumbura"),
|
||||||
|
("Africa/Cairo", "Africa/Cairo"),
|
||||||
|
("Africa/Casablanca", "Africa/Casablanca"),
|
||||||
|
("Africa/Ceuta", "Africa/Ceuta"),
|
||||||
|
("Africa/Conakry", "Africa/Conakry"),
|
||||||
|
("Africa/Dakar", "Africa/Dakar"),
|
||||||
|
("Africa/Dar_es_Salaam", "Africa/Dar_es_Salaam"),
|
||||||
|
("Africa/Djibouti", "Africa/Djibouti"),
|
||||||
|
("Africa/Douala", "Africa/Douala"),
|
||||||
|
("Africa/El_Aaiun", "Africa/El_Aaiun"),
|
||||||
|
("Africa/Freetown", "Africa/Freetown"),
|
||||||
|
("Africa/Gaborone", "Africa/Gaborone"),
|
||||||
|
("Africa/Harare", "Africa/Harare"),
|
||||||
|
("Africa/Johannesburg", "Africa/Johannesburg"),
|
||||||
|
("Africa/Juba", "Africa/Juba"),
|
||||||
|
("Africa/Kampala", "Africa/Kampala"),
|
||||||
|
("Africa/Khartoum", "Africa/Khartoum"),
|
||||||
|
("Africa/Kigali", "Africa/Kigali"),
|
||||||
|
("Africa/Kinshasa", "Africa/Kinshasa"),
|
||||||
|
("Africa/Lagos", "Africa/Lagos"),
|
||||||
|
("Africa/Libreville", "Africa/Libreville"),
|
||||||
|
("Africa/Lome", "Africa/Lome"),
|
||||||
|
("Africa/Luanda", "Africa/Luanda"),
|
||||||
|
("Africa/Lubumbashi", "Africa/Lubumbashi"),
|
||||||
|
("Africa/Lusaka", "Africa/Lusaka"),
|
||||||
|
("Africa/Malabo", "Africa/Malabo"),
|
||||||
|
("Africa/Maputo", "Africa/Maputo"),
|
||||||
|
("Africa/Maseru", "Africa/Maseru"),
|
||||||
|
("Africa/Mbabane", "Africa/Mbabane"),
|
||||||
|
("Africa/Mogadishu", "Africa/Mogadishu"),
|
||||||
|
("Africa/Monrovia", "Africa/Monrovia"),
|
||||||
|
("Africa/Nairobi", "Africa/Nairobi"),
|
||||||
|
("Africa/Ndjamena", "Africa/Ndjamena"),
|
||||||
|
("Africa/Niamey", "Africa/Niamey"),
|
||||||
|
("Africa/Nouakchott", "Africa/Nouakchott"),
|
||||||
|
("Africa/Ouagadougou", "Africa/Ouagadougou"),
|
||||||
|
("Africa/Porto-Novo", "Africa/Porto-Novo"),
|
||||||
|
("Africa/Sao_Tome", "Africa/Sao_Tome"),
|
||||||
|
("Africa/Tripoli", "Africa/Tripoli"),
|
||||||
|
("Africa/Tunis", "Africa/Tunis"),
|
||||||
|
("Africa/Windhoek", "Africa/Windhoek"),
|
||||||
|
("America/Adak", "America/Adak"),
|
||||||
|
("America/Anchorage", "America/Anchorage"),
|
||||||
|
("America/Anguilla", "America/Anguilla"),
|
||||||
|
("America/Antigua", "America/Antigua"),
|
||||||
|
("America/Araguaina", "America/Araguaina"),
|
||||||
|
("America/Argentina/Buenos_Aires", "America/Argentina/Buenos_Aires"),
|
||||||
|
("America/Argentina/Catamarca", "America/Argentina/Catamarca"),
|
||||||
|
("America/Argentina/Cordoba", "America/Argentina/Cordoba"),
|
||||||
|
("America/Argentina/Jujuy", "America/Argentina/Jujuy"),
|
||||||
|
("America/Argentina/La_Rioja", "America/Argentina/La_Rioja"),
|
||||||
|
("America/Argentina/Mendoza", "America/Argentina/Mendoza"),
|
||||||
|
("America/Argentina/Rio_Gallegos", "America/Argentina/Rio_Gallegos"),
|
||||||
|
("America/Argentina/Salta", "America/Argentina/Salta"),
|
||||||
|
("America/Argentina/San_Juan", "America/Argentina/San_Juan"),
|
||||||
|
("America/Argentina/San_Luis", "America/Argentina/San_Luis"),
|
||||||
|
("America/Argentina/Tucuman", "America/Argentina/Tucuman"),
|
||||||
|
("America/Argentina/Ushuaia", "America/Argentina/Ushuaia"),
|
||||||
|
("America/Aruba", "America/Aruba"),
|
||||||
|
("America/Asuncion", "America/Asuncion"),
|
||||||
|
("America/Atikokan", "America/Atikokan"),
|
||||||
|
("America/Bahia", "America/Bahia"),
|
||||||
|
("America/Bahia_Banderas", "America/Bahia_Banderas"),
|
||||||
|
("America/Barbados", "America/Barbados"),
|
||||||
|
("America/Belem", "America/Belem"),
|
||||||
|
("America/Belize", "America/Belize"),
|
||||||
|
("America/Blanc-Sablon", "America/Blanc-Sablon"),
|
||||||
|
("America/Boa_Vista", "America/Boa_Vista"),
|
||||||
|
("America/Bogota", "America/Bogota"),
|
||||||
|
("America/Boise", "America/Boise"),
|
||||||
|
("America/Cambridge_Bay", "America/Cambridge_Bay"),
|
||||||
|
("America/Campo_Grande", "America/Campo_Grande"),
|
||||||
|
("America/Cancun", "America/Cancun"),
|
||||||
|
("America/Caracas", "America/Caracas"),
|
||||||
|
("America/Cayenne", "America/Cayenne"),
|
||||||
|
("America/Cayman", "America/Cayman"),
|
||||||
|
("America/Chicago", "America/Chicago"),
|
||||||
|
("America/Chihuahua", "America/Chihuahua"),
|
||||||
|
("America/Ciudad_Juarez", "America/Ciudad_Juarez"),
|
||||||
|
("America/Costa_Rica", "America/Costa_Rica"),
|
||||||
|
("America/Coyhaique", "America/Coyhaique"),
|
||||||
|
("America/Creston", "America/Creston"),
|
||||||
|
("America/Cuiaba", "America/Cuiaba"),
|
||||||
|
("America/Curacao", "America/Curacao"),
|
||||||
|
("America/Danmarkshavn", "America/Danmarkshavn"),
|
||||||
|
("America/Dawson", "America/Dawson"),
|
||||||
|
("America/Dawson_Creek", "America/Dawson_Creek"),
|
||||||
|
("America/Denver", "America/Denver"),
|
||||||
|
("America/Detroit", "America/Detroit"),
|
||||||
|
("America/Dominica", "America/Dominica"),
|
||||||
|
("America/Edmonton", "America/Edmonton"),
|
||||||
|
("America/Eirunepe", "America/Eirunepe"),
|
||||||
|
("America/El_Salvador", "America/El_Salvador"),
|
||||||
|
("America/Fort_Nelson", "America/Fort_Nelson"),
|
||||||
|
("America/Fortaleza", "America/Fortaleza"),
|
||||||
|
("America/Glace_Bay", "America/Glace_Bay"),
|
||||||
|
("America/Goose_Bay", "America/Goose_Bay"),
|
||||||
|
("America/Grand_Turk", "America/Grand_Turk"),
|
||||||
|
("America/Grenada", "America/Grenada"),
|
||||||
|
("America/Guadeloupe", "America/Guadeloupe"),
|
||||||
|
("America/Guatemala", "America/Guatemala"),
|
||||||
|
("America/Guayaquil", "America/Guayaquil"),
|
||||||
|
("America/Guyana", "America/Guyana"),
|
||||||
|
("America/Halifax", "America/Halifax"),
|
||||||
|
("America/Havana", "America/Havana"),
|
||||||
|
("America/Hermosillo", "America/Hermosillo"),
|
||||||
|
("America/Indiana/Indianapolis", "America/Indiana/Indianapolis"),
|
||||||
|
("America/Indiana/Knox", "America/Indiana/Knox"),
|
||||||
|
("America/Indiana/Marengo", "America/Indiana/Marengo"),
|
||||||
|
("America/Indiana/Petersburg", "America/Indiana/Petersburg"),
|
||||||
|
("America/Indiana/Tell_City", "America/Indiana/Tell_City"),
|
||||||
|
("America/Indiana/Vevay", "America/Indiana/Vevay"),
|
||||||
|
("America/Indiana/Vincennes", "America/Indiana/Vincennes"),
|
||||||
|
("America/Indiana/Winamac", "America/Indiana/Winamac"),
|
||||||
|
("America/Inuvik", "America/Inuvik"),
|
||||||
|
("America/Iqaluit", "America/Iqaluit"),
|
||||||
|
("America/Jamaica", "America/Jamaica"),
|
||||||
|
("America/Juneau", "America/Juneau"),
|
||||||
|
("America/Kentucky/Louisville", "America/Kentucky/Louisville"),
|
||||||
|
("America/Kentucky/Monticello", "America/Kentucky/Monticello"),
|
||||||
|
("America/Kralendijk", "America/Kralendijk"),
|
||||||
|
("America/La_Paz", "America/La_Paz"),
|
||||||
|
("America/Lima", "America/Lima"),
|
||||||
|
("America/Los_Angeles", "America/Los_Angeles"),
|
||||||
|
("America/Lower_Princes", "America/Lower_Princes"),
|
||||||
|
("America/Maceio", "America/Maceio"),
|
||||||
|
("America/Managua", "America/Managua"),
|
||||||
|
("America/Manaus", "America/Manaus"),
|
||||||
|
("America/Marigot", "America/Marigot"),
|
||||||
|
("America/Martinique", "America/Martinique"),
|
||||||
|
("America/Matamoros", "America/Matamoros"),
|
||||||
|
("America/Mazatlan", "America/Mazatlan"),
|
||||||
|
("America/Menominee", "America/Menominee"),
|
||||||
|
("America/Merida", "America/Merida"),
|
||||||
|
("America/Metlakatla", "America/Metlakatla"),
|
||||||
|
("America/Mexico_City", "America/Mexico_City"),
|
||||||
|
("America/Miquelon", "America/Miquelon"),
|
||||||
|
("America/Moncton", "America/Moncton"),
|
||||||
|
("America/Monterrey", "America/Monterrey"),
|
||||||
|
("America/Montevideo", "America/Montevideo"),
|
||||||
|
("America/Montserrat", "America/Montserrat"),
|
||||||
|
("America/Nassau", "America/Nassau"),
|
||||||
|
("America/New_York", "America/New_York"),
|
||||||
|
("America/Nome", "America/Nome"),
|
||||||
|
("America/Noronha", "America/Noronha"),
|
||||||
|
("America/North_Dakota/Beulah", "America/North_Dakota/Beulah"),
|
||||||
|
("America/North_Dakota/Center", "America/North_Dakota/Center"),
|
||||||
|
("America/North_Dakota/New_Salem", "America/North_Dakota/New_Salem"),
|
||||||
|
("America/Nuuk", "America/Nuuk"),
|
||||||
|
("America/Ojinaga", "America/Ojinaga"),
|
||||||
|
("America/Panama", "America/Panama"),
|
||||||
|
("America/Paramaribo", "America/Paramaribo"),
|
||||||
|
("America/Phoenix", "America/Phoenix"),
|
||||||
|
("America/Port-au-Prince", "America/Port-au-Prince"),
|
||||||
|
("America/Port_of_Spain", "America/Port_of_Spain"),
|
||||||
|
("America/Porto_Velho", "America/Porto_Velho"),
|
||||||
|
("America/Puerto_Rico", "America/Puerto_Rico"),
|
||||||
|
("America/Punta_Arenas", "America/Punta_Arenas"),
|
||||||
|
("America/Rankin_Inlet", "America/Rankin_Inlet"),
|
||||||
|
("America/Recife", "America/Recife"),
|
||||||
|
("America/Regina", "America/Regina"),
|
||||||
|
("America/Resolute", "America/Resolute"),
|
||||||
|
("America/Rio_Branco", "America/Rio_Branco"),
|
||||||
|
("America/Santarem", "America/Santarem"),
|
||||||
|
("America/Santiago", "America/Santiago"),
|
||||||
|
("America/Santo_Domingo", "America/Santo_Domingo"),
|
||||||
|
("America/Sao_Paulo", "America/Sao_Paulo"),
|
||||||
|
("America/Scoresbysund", "America/Scoresbysund"),
|
||||||
|
("America/Sitka", "America/Sitka"),
|
||||||
|
("America/St_Barthelemy", "America/St_Barthelemy"),
|
||||||
|
("America/St_Johns", "America/St_Johns"),
|
||||||
|
("America/St_Kitts", "America/St_Kitts"),
|
||||||
|
("America/St_Lucia", "America/St_Lucia"),
|
||||||
|
("America/St_Thomas", "America/St_Thomas"),
|
||||||
|
("America/St_Vincent", "America/St_Vincent"),
|
||||||
|
("America/Swift_Current", "America/Swift_Current"),
|
||||||
|
("America/Tegucigalpa", "America/Tegucigalpa"),
|
||||||
|
("America/Thule", "America/Thule"),
|
||||||
|
("America/Tijuana", "America/Tijuana"),
|
||||||
|
("America/Toronto", "America/Toronto"),
|
||||||
|
("America/Tortola", "America/Tortola"),
|
||||||
|
("America/Vancouver", "America/Vancouver"),
|
||||||
|
("America/Whitehorse", "America/Whitehorse"),
|
||||||
|
("America/Winnipeg", "America/Winnipeg"),
|
||||||
|
("America/Yakutat", "America/Yakutat"),
|
||||||
|
("Antarctica/Casey", "Antarctica/Casey"),
|
||||||
|
("Antarctica/Davis", "Antarctica/Davis"),
|
||||||
|
("Antarctica/DumontDUrville", "Antarctica/DumontDUrville"),
|
||||||
|
("Antarctica/Macquarie", "Antarctica/Macquarie"),
|
||||||
|
("Antarctica/Mawson", "Antarctica/Mawson"),
|
||||||
|
("Antarctica/McMurdo", "Antarctica/McMurdo"),
|
||||||
|
("Antarctica/Palmer", "Antarctica/Palmer"),
|
||||||
|
("Antarctica/Rothera", "Antarctica/Rothera"),
|
||||||
|
("Antarctica/Syowa", "Antarctica/Syowa"),
|
||||||
|
("Antarctica/Troll", "Antarctica/Troll"),
|
||||||
|
("Antarctica/Vostok", "Antarctica/Vostok"),
|
||||||
|
("Arctic/Longyearbyen", "Arctic/Longyearbyen"),
|
||||||
|
("Asia/Aden", "Asia/Aden"),
|
||||||
|
("Asia/Almaty", "Asia/Almaty"),
|
||||||
|
("Asia/Amman", "Asia/Amman"),
|
||||||
|
("Asia/Anadyr", "Asia/Anadyr"),
|
||||||
|
("Asia/Aqtau", "Asia/Aqtau"),
|
||||||
|
("Asia/Aqtobe", "Asia/Aqtobe"),
|
||||||
|
("Asia/Ashgabat", "Asia/Ashgabat"),
|
||||||
|
("Asia/Atyrau", "Asia/Atyrau"),
|
||||||
|
("Asia/Baghdad", "Asia/Baghdad"),
|
||||||
|
("Asia/Bahrain", "Asia/Bahrain"),
|
||||||
|
("Asia/Baku", "Asia/Baku"),
|
||||||
|
("Asia/Bangkok", "Asia/Bangkok"),
|
||||||
|
("Asia/Barnaul", "Asia/Barnaul"),
|
||||||
|
("Asia/Beirut", "Asia/Beirut"),
|
||||||
|
("Asia/Bishkek", "Asia/Bishkek"),
|
||||||
|
("Asia/Brunei", "Asia/Brunei"),
|
||||||
|
("Asia/Chita", "Asia/Chita"),
|
||||||
|
("Asia/Colombo", "Asia/Colombo"),
|
||||||
|
("Asia/Damascus", "Asia/Damascus"),
|
||||||
|
("Asia/Dhaka", "Asia/Dhaka"),
|
||||||
|
("Asia/Dili", "Asia/Dili"),
|
||||||
|
("Asia/Dubai", "Asia/Dubai"),
|
||||||
|
("Asia/Dushanbe", "Asia/Dushanbe"),
|
||||||
|
("Asia/Famagusta", "Asia/Famagusta"),
|
||||||
|
("Asia/Gaza", "Asia/Gaza"),
|
||||||
|
("Asia/Hebron", "Asia/Hebron"),
|
||||||
|
("Asia/Ho_Chi_Minh", "Asia/Ho_Chi_Minh"),
|
||||||
|
("Asia/Hong_Kong", "Asia/Hong_Kong"),
|
||||||
|
("Asia/Hovd", "Asia/Hovd"),
|
||||||
|
("Asia/Irkutsk", "Asia/Irkutsk"),
|
||||||
|
("Asia/Jakarta", "Asia/Jakarta"),
|
||||||
|
("Asia/Jayapura", "Asia/Jayapura"),
|
||||||
|
("Asia/Jerusalem", "Asia/Jerusalem"),
|
||||||
|
("Asia/Kabul", "Asia/Kabul"),
|
||||||
|
("Asia/Kamchatka", "Asia/Kamchatka"),
|
||||||
|
("Asia/Karachi", "Asia/Karachi"),
|
||||||
|
("Asia/Kathmandu", "Asia/Kathmandu"),
|
||||||
|
("Asia/Khandyga", "Asia/Khandyga"),
|
||||||
|
("Asia/Kolkata", "Asia/Kolkata"),
|
||||||
|
("Asia/Krasnoyarsk", "Asia/Krasnoyarsk"),
|
||||||
|
("Asia/Kuala_Lumpur", "Asia/Kuala_Lumpur"),
|
||||||
|
("Asia/Kuching", "Asia/Kuching"),
|
||||||
|
("Asia/Kuwait", "Asia/Kuwait"),
|
||||||
|
("Asia/Macau", "Asia/Macau"),
|
||||||
|
("Asia/Magadan", "Asia/Magadan"),
|
||||||
|
("Asia/Makassar", "Asia/Makassar"),
|
||||||
|
("Asia/Manila", "Asia/Manila"),
|
||||||
|
("Asia/Muscat", "Asia/Muscat"),
|
||||||
|
("Asia/Nicosia", "Asia/Nicosia"),
|
||||||
|
("Asia/Novokuznetsk", "Asia/Novokuznetsk"),
|
||||||
|
("Asia/Novosibirsk", "Asia/Novosibirsk"),
|
||||||
|
("Asia/Omsk", "Asia/Omsk"),
|
||||||
|
("Asia/Oral", "Asia/Oral"),
|
||||||
|
("Asia/Phnom_Penh", "Asia/Phnom_Penh"),
|
||||||
|
("Asia/Pontianak", "Asia/Pontianak"),
|
||||||
|
("Asia/Pyongyang", "Asia/Pyongyang"),
|
||||||
|
("Asia/Qatar", "Asia/Qatar"),
|
||||||
|
("Asia/Qostanay", "Asia/Qostanay"),
|
||||||
|
("Asia/Qyzylorda", "Asia/Qyzylorda"),
|
||||||
|
("Asia/Riyadh", "Asia/Riyadh"),
|
||||||
|
("Asia/Sakhalin", "Asia/Sakhalin"),
|
||||||
|
("Asia/Samarkand", "Asia/Samarkand"),
|
||||||
|
("Asia/Seoul", "Asia/Seoul"),
|
||||||
|
("Asia/Shanghai", "Asia/Shanghai"),
|
||||||
|
("Asia/Singapore", "Asia/Singapore"),
|
||||||
|
("Asia/Srednekolymsk", "Asia/Srednekolymsk"),
|
||||||
|
("Asia/Taipei", "Asia/Taipei"),
|
||||||
|
("Asia/Tashkent", "Asia/Tashkent"),
|
||||||
|
("Asia/Tbilisi", "Asia/Tbilisi"),
|
||||||
|
("Asia/Tehran", "Asia/Tehran"),
|
||||||
|
("Asia/Thimphu", "Asia/Thimphu"),
|
||||||
|
("Asia/Tokyo", "Asia/Tokyo"),
|
||||||
|
("Asia/Tomsk", "Asia/Tomsk"),
|
||||||
|
("Asia/Ulaanbaatar", "Asia/Ulaanbaatar"),
|
||||||
|
("Asia/Urumqi", "Asia/Urumqi"),
|
||||||
|
("Asia/Ust-Nera", "Asia/Ust-Nera"),
|
||||||
|
("Asia/Vientiane", "Asia/Vientiane"),
|
||||||
|
("Asia/Vladivostok", "Asia/Vladivostok"),
|
||||||
|
("Asia/Yakutsk", "Asia/Yakutsk"),
|
||||||
|
("Asia/Yangon", "Asia/Yangon"),
|
||||||
|
("Asia/Yekaterinburg", "Asia/Yekaterinburg"),
|
||||||
|
("Asia/Yerevan", "Asia/Yerevan"),
|
||||||
|
("Atlantic/Azores", "Atlantic/Azores"),
|
||||||
|
("Atlantic/Bermuda", "Atlantic/Bermuda"),
|
||||||
|
("Atlantic/Canary", "Atlantic/Canary"),
|
||||||
|
("Atlantic/Cape_Verde", "Atlantic/Cape_Verde"),
|
||||||
|
("Atlantic/Faroe", "Atlantic/Faroe"),
|
||||||
|
("Atlantic/Madeira", "Atlantic/Madeira"),
|
||||||
|
("Atlantic/Reykjavik", "Atlantic/Reykjavik"),
|
||||||
|
("Atlantic/South_Georgia", "Atlantic/South_Georgia"),
|
||||||
|
("Atlantic/St_Helena", "Atlantic/St_Helena"),
|
||||||
|
("Atlantic/Stanley", "Atlantic/Stanley"),
|
||||||
|
("Australia/Adelaide", "Australia/Adelaide"),
|
||||||
|
("Australia/Brisbane", "Australia/Brisbane"),
|
||||||
|
("Australia/Broken_Hill", "Australia/Broken_Hill"),
|
||||||
|
("Australia/Darwin", "Australia/Darwin"),
|
||||||
|
("Australia/Eucla", "Australia/Eucla"),
|
||||||
|
("Australia/Hobart", "Australia/Hobart"),
|
||||||
|
("Australia/Lindeman", "Australia/Lindeman"),
|
||||||
|
("Australia/Lord_Howe", "Australia/Lord_Howe"),
|
||||||
|
("Australia/Melbourne", "Australia/Melbourne"),
|
||||||
|
("Australia/Perth", "Australia/Perth"),
|
||||||
|
("Australia/Sydney", "Australia/Sydney"),
|
||||||
|
("Canada/Atlantic", "Canada/Atlantic"),
|
||||||
|
("Canada/Central", "Canada/Central"),
|
||||||
|
("Canada/Eastern", "Canada/Eastern"),
|
||||||
|
("Canada/Mountain", "Canada/Mountain"),
|
||||||
|
("Canada/Newfoundland", "Canada/Newfoundland"),
|
||||||
|
("Canada/Pacific", "Canada/Pacific"),
|
||||||
|
("Europe/Amsterdam", "Europe/Amsterdam"),
|
||||||
|
("Europe/Andorra", "Europe/Andorra"),
|
||||||
|
("Europe/Astrakhan", "Europe/Astrakhan"),
|
||||||
|
("Europe/Athens", "Europe/Athens"),
|
||||||
|
("Europe/Belgrade", "Europe/Belgrade"),
|
||||||
|
("Europe/Berlin", "Europe/Berlin"),
|
||||||
|
("Europe/Bratislava", "Europe/Bratislava"),
|
||||||
|
("Europe/Brussels", "Europe/Brussels"),
|
||||||
|
("Europe/Bucharest", "Europe/Bucharest"),
|
||||||
|
("Europe/Budapest", "Europe/Budapest"),
|
||||||
|
("Europe/Busingen", "Europe/Busingen"),
|
||||||
|
("Europe/Chisinau", "Europe/Chisinau"),
|
||||||
|
("Europe/Copenhagen", "Europe/Copenhagen"),
|
||||||
|
("Europe/Dublin", "Europe/Dublin"),
|
||||||
|
("Europe/Gibraltar", "Europe/Gibraltar"),
|
||||||
|
("Europe/Guernsey", "Europe/Guernsey"),
|
||||||
|
("Europe/Helsinki", "Europe/Helsinki"),
|
||||||
|
("Europe/Isle_of_Man", "Europe/Isle_of_Man"),
|
||||||
|
("Europe/Istanbul", "Europe/Istanbul"),
|
||||||
|
("Europe/Jersey", "Europe/Jersey"),
|
||||||
|
("Europe/Kaliningrad", "Europe/Kaliningrad"),
|
||||||
|
("Europe/Kirov", "Europe/Kirov"),
|
||||||
|
("Europe/Kyiv", "Europe/Kyiv"),
|
||||||
|
("Europe/Lisbon", "Europe/Lisbon"),
|
||||||
|
("Europe/Ljubljana", "Europe/Ljubljana"),
|
||||||
|
("Europe/London", "Europe/London"),
|
||||||
|
("Europe/Luxembourg", "Europe/Luxembourg"),
|
||||||
|
("Europe/Madrid", "Europe/Madrid"),
|
||||||
|
("Europe/Malta", "Europe/Malta"),
|
||||||
|
("Europe/Mariehamn", "Europe/Mariehamn"),
|
||||||
|
("Europe/Minsk", "Europe/Minsk"),
|
||||||
|
("Europe/Monaco", "Europe/Monaco"),
|
||||||
|
("Europe/Moscow", "Europe/Moscow"),
|
||||||
|
("Europe/Oslo", "Europe/Oslo"),
|
||||||
|
("Europe/Paris", "Europe/Paris"),
|
||||||
|
("Europe/Podgorica", "Europe/Podgorica"),
|
||||||
|
("Europe/Prague", "Europe/Prague"),
|
||||||
|
("Europe/Riga", "Europe/Riga"),
|
||||||
|
("Europe/Rome", "Europe/Rome"),
|
||||||
|
("Europe/Samara", "Europe/Samara"),
|
||||||
|
("Europe/San_Marino", "Europe/San_Marino"),
|
||||||
|
("Europe/Sarajevo", "Europe/Sarajevo"),
|
||||||
|
("Europe/Saratov", "Europe/Saratov"),
|
||||||
|
("Europe/Simferopol", "Europe/Simferopol"),
|
||||||
|
("Europe/Skopje", "Europe/Skopje"),
|
||||||
|
("Europe/Sofia", "Europe/Sofia"),
|
||||||
|
("Europe/Stockholm", "Europe/Stockholm"),
|
||||||
|
("Europe/Tallinn", "Europe/Tallinn"),
|
||||||
|
("Europe/Tirane", "Europe/Tirane"),
|
||||||
|
("Europe/Ulyanovsk", "Europe/Ulyanovsk"),
|
||||||
|
("Europe/Vaduz", "Europe/Vaduz"),
|
||||||
|
("Europe/Vatican", "Europe/Vatican"),
|
||||||
|
("Europe/Vienna", "Europe/Vienna"),
|
||||||
|
("Europe/Vilnius", "Europe/Vilnius"),
|
||||||
|
("Europe/Volgograd", "Europe/Volgograd"),
|
||||||
|
("Europe/Warsaw", "Europe/Warsaw"),
|
||||||
|
("Europe/Zagreb", "Europe/Zagreb"),
|
||||||
|
("Europe/Zurich", "Europe/Zurich"),
|
||||||
|
("GMT", "GMT"),
|
||||||
|
("Indian/Antananarivo", "Indian/Antananarivo"),
|
||||||
|
("Indian/Chagos", "Indian/Chagos"),
|
||||||
|
("Indian/Christmas", "Indian/Christmas"),
|
||||||
|
("Indian/Cocos", "Indian/Cocos"),
|
||||||
|
("Indian/Comoro", "Indian/Comoro"),
|
||||||
|
("Indian/Kerguelen", "Indian/Kerguelen"),
|
||||||
|
("Indian/Mahe", "Indian/Mahe"),
|
||||||
|
("Indian/Maldives", "Indian/Maldives"),
|
||||||
|
("Indian/Mauritius", "Indian/Mauritius"),
|
||||||
|
("Indian/Mayotte", "Indian/Mayotte"),
|
||||||
|
("Indian/Reunion", "Indian/Reunion"),
|
||||||
|
("Pacific/Apia", "Pacific/Apia"),
|
||||||
|
("Pacific/Auckland", "Pacific/Auckland"),
|
||||||
|
("Pacific/Bougainville", "Pacific/Bougainville"),
|
||||||
|
("Pacific/Chatham", "Pacific/Chatham"),
|
||||||
|
("Pacific/Chuuk", "Pacific/Chuuk"),
|
||||||
|
("Pacific/Easter", "Pacific/Easter"),
|
||||||
|
("Pacific/Efate", "Pacific/Efate"),
|
||||||
|
("Pacific/Fakaofo", "Pacific/Fakaofo"),
|
||||||
|
("Pacific/Fiji", "Pacific/Fiji"),
|
||||||
|
("Pacific/Funafuti", "Pacific/Funafuti"),
|
||||||
|
("Pacific/Galapagos", "Pacific/Galapagos"),
|
||||||
|
("Pacific/Gambier", "Pacific/Gambier"),
|
||||||
|
("Pacific/Guadalcanal", "Pacific/Guadalcanal"),
|
||||||
|
("P2025-06-29T01:43:14.671389745Z acific/Guam", "Pacific/Guam"),
|
||||||
|
("Pacific/Honolulu", "Pacific/Honolulu"),
|
||||||
|
("Pacific/Kanton", "Pacific/Kanton"),
|
||||||
|
("Pacific/Kiritimati", "Pacific/Kiritimati"),
|
||||||
|
("Pacific/Kosrae", "Pacific/Kosrae"),
|
||||||
|
("Pacific/Kwajalein", "Pacific/Kwajalein"),
|
||||||
|
("Pacific/Majuro", "Pacific/Majuro"),
|
||||||
|
("Pacific/Marquesas", "Pacific/Marquesas"),
|
||||||
|
("Pacific/Midway", "Pacific/Midway"),
|
||||||
|
("Pacific/Nauru", "Pacific/Nauru"),
|
||||||
|
("Pacific/Niue", "Pacific/Niue"),
|
||||||
|
("Pacific/Norfolk", "Pacific/Norfolk"),
|
||||||
|
("Pacific/Noumea", "Pacific/Noumea"),
|
||||||
|
("Pacific/Pago_Pago", "Pacific/Pago_Pago"),
|
||||||
|
("Pacific/Palau", "Pacific/Palau"),
|
||||||
|
("Pacific/Pitcairn", "Pacific/Pitcairn"),
|
||||||
|
("Pacific/Pohnpei", "Pacific/Pohnpei"),
|
||||||
|
("Pacific/Port_Moresby", "Pacific/Port_Moresby"),
|
||||||
|
("Pacific/Rarotonga", "Pacific/Rarotonga"),
|
||||||
|
("Pacific/Saipan", "Pacific/Saipan"),
|
||||||
|
("Pacific/Tahiti", "Pacific/Tahiti"),
|
||||||
|
("Pacific/Tarawa", "Pacific/Tarawa"),
|
||||||
|
("Pacific/Tongatapu", "Pacific/Tongatapu"),
|
||||||
|
("Pacific/Wake", "Pacific/Wake"),
|
||||||
|
("Pacific/Wallis", "Pacific/Wallis"),
|
||||||
|
("US/Alaska", "US/Alaska"),
|
||||||
|
("US/Arizona", "US/Arizona"),
|
||||||
|
("US/Central", "US/Central"),
|
||||||
|
("US/Eastern", "US/Eastern"),
|
||||||
|
("US/Hawaii", "US/Hawaii"),
|
||||||
|
("US/Mountain", "US/Mountain"),
|
||||||
|
("US/Pacific", "US/Pacific"),
|
||||||
|
("UTC", "UTC"),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class User(AbstractUser):
|
class User(AbstractUser):
|
||||||
username = None
|
username = None
|
||||||
@@ -36,6 +474,11 @@ class UserSettings(models.Model):
|
|||||||
)
|
)
|
||||||
hide_amounts = models.BooleanField(default=False)
|
hide_amounts = models.BooleanField(default=False)
|
||||||
mute_sounds = models.BooleanField(default=False)
|
mute_sounds = models.BooleanField(default=False)
|
||||||
|
volume = models.PositiveIntegerField(
|
||||||
|
default=10,
|
||||||
|
validators=[MinValueValidator(1), MaxValueValidator(10)],
|
||||||
|
verbose_name=_("Volume"),
|
||||||
|
)
|
||||||
|
|
||||||
date_format = models.CharField(
|
date_format = models.CharField(
|
||||||
max_length=100, default="SHORT_DATE_FORMAT", verbose_name=_("Date Format")
|
max_length=100, default="SHORT_DATE_FORMAT", verbose_name=_("Date Format")
|
||||||
@@ -57,7 +500,7 @@ class UserSettings(models.Model):
|
|||||||
)
|
)
|
||||||
timezone = models.CharField(
|
timezone = models.CharField(
|
||||||
max_length=50,
|
max_length=50,
|
||||||
choices=[("auto", _("Auto"))] + [(tz, tz) for tz in pytz.common_timezones],
|
choices=timezones,
|
||||||
default="auto",
|
default="auto",
|
||||||
verbose_name=_("Time Zone"),
|
verbose_name=_("Time Zone"),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ 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-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2025-05-23 17:16+0000\n"
|
"PO-Revision-Date: 2025-05-23 17:16+0000\n"
|
||||||
"Last-Translator: JHoh <jean-luc.hoh@gmx.de>\n"
|
"Last-Translator: JHoh <jean-luc.hoh@gmx.de>\n"
|
||||||
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
@@ -31,8 +31,8 @@ msgstr "Gruppe Name"
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualisierung"
|
msgstr "Aktualisierung"
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ msgstr "Aktualisierung"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -338,7 +338,7 @@ msgstr ""
|
|||||||
"Privat: Nur für den Besitzer und geteilte Nutzer sichtbar.<br/>Öffentlich: "
|
"Privat: Nur für den Besitzer und geteilte Nutzer sichtbar.<br/>Öffentlich: "
|
||||||
"Sichtbar für alle Nutzer. Nur bearbeitbar durch Besitzer."
|
"Sichtbar für alle Nutzer. Nur bearbeitbar durch Besitzer."
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Speichern"
|
msgstr "Speichern"
|
||||||
|
|
||||||
@@ -437,12 +437,12 @@ msgstr "Info"
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr "Cache erfolgreich geleert"
|
msgstr "Cache erfolgreich geleert"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Heute"
|
msgstr "Heute"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr "Jetzt"
|
msgstr "Jetzt"
|
||||||
|
|
||||||
@@ -1432,7 +1432,7 @@ msgstr "Keine Beschreibung"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jährlich"
|
msgstr "Jährlich"
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Monatlich"
|
msgstr "Monatlich"
|
||||||
@@ -1636,7 +1636,7 @@ msgstr "Regel erfolgreich aktualisiert"
|
|||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr "Regel erfolgreich gelöscht"
|
msgstr "Regel erfolgreich gelöscht"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1725,7 +1725,8 @@ msgstr "Berechtigungen"
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr "Wichtige Daten"
|
msgstr "Wichtige Daten"
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
@@ -1747,19 +1748,19 @@ msgstr "Dieses Konto ist deaktiviert"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Standard"
|
msgstr "Standard"
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr "Datumsformat"
|
msgstr "Datumsformat"
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr "Datums- und Zeitformat"
|
msgstr "Datums- und Zeitformat"
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr "Zahlenformat"
|
msgstr "Zahlenformat"
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1770,25 +1771,25 @@ msgstr ""
|
|||||||
"angezeigt werden.\n"
|
"angezeigt werden.\n"
|
||||||
"Hilf mit WYGIWYH in deine Sprache zu übersetzten: %(translation_link)s"
|
"Hilf mit WYGIWYH in deine Sprache zu übersetzten: %(translation_link)s"
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr "Neues Passwort"
|
msgstr "Neues Passwort"
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr "Leer lassen um Passwort zu belassen."
|
msgstr "Leer lassen um Passwort zu belassen."
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr "Bestätige das neue Passwort"
|
msgstr "Bestätige das neue Passwort"
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
msgstr "Abwählen um den Nutzer zu deaktivieren. Besser als gleich zu löschen."
|
msgstr "Abwählen um den Nutzer zu deaktivieren. Besser als gleich zu löschen."
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
@@ -1796,75 +1797,79 @@ msgstr ""
|
|||||||
"Anwählen damit der Nutzer alle Berechtigungen hat, ohne diese explizit "
|
"Anwählen damit der Nutzer alle Berechtigungen hat, ohne diese explizit "
|
||||||
"hinzuzufügen."
|
"hinzuzufügen."
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr "Diese E-Mail-Adresse wird bereits von jemand anders benutzt."
|
msgstr "Diese E-Mail-Adresse wird bereits von jemand anders benutzt."
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr "Die eingegebenen Passwörter stimmen nicht überein."
|
msgstr "Die eingegebenen Passwörter stimmen nicht überein."
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr "Bitte bestätige dein neues Passwort."
|
msgstr "Bitte bestätige dein neues Passwort."
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr "Bitte gebe erst dein neues Passwort ein."
|
msgstr "Bitte gebe erst dein neues Passwort ein."
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr "Du kannst deinen Nutzer nicht hier deaktivieren."
|
msgstr "Du kannst deinen Nutzer nicht hier deaktivieren."
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr "Du kannst deinen eigenen Superuser-Status nicht hier entfernen."
|
msgstr "Du kannst deinen eigenen Superuser-Status nicht hier entfernen."
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."
|
msgstr "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr "Jährlich nach Währung"
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr "Jährlich nach Konto"
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr "Aktuelles Nettovermögen"
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr "Erwartetes Nettovermögen"
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr "Alle Transaktionen"
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr "Kalender"
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automatisch"
|
msgstr "Automatisch"
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr "Jährlich nach Währung"
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr "Jährlich nach Konto"
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr "Aktuelles Nettovermögen"
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr "Erwartetes Nettovermögen"
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr "Alle Transaktionen"
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr "Kalender"
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Sprache"
|
msgstr "Sprache"
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr "Zeitzone"
|
msgstr "Zeitzone"
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr "Startseite"
|
msgstr "Startseite"
|
||||||
|
|
||||||
@@ -2678,25 +2683,31 @@ msgstr "Nur benutzen, wenn du weißt was du tust"
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Admin"
|
msgstr "Django Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Rechner"
|
msgstr "Rechner"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Import Profiles"
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr "Import-Profile"
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Edit import profile"
|
#| msgid "Edit import profile"
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr "Import-Profil bearbeiten"
|
msgstr "Import-Profil bearbeiten"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr "Cache leeren"
|
msgstr "Cache leeren"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Abmelden"
|
msgstr "Abmelden"
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -30,8 +30,8 @@ msgstr ""
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ msgstr ""
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -328,7 +328,7 @@ msgid ""
|
|||||||
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -427,12 +427,12 @@ msgstr ""
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1397,7 +1397,7 @@ msgstr ""
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1590,7 +1590,7 @@ msgstr ""
|
|||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1679,7 +1679,8 @@ msgstr ""
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1701,19 +1702,19 @@ msgstr ""
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1721,99 +1722,103 @@ msgid ""
|
|||||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2624,23 +2629,27 @@ msgstr ""
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2025-04-27 19:12+0000\n"
|
"PO-Revision-Date: 2025-04-27 19:12+0000\n"
|
||||||
"Last-Translator: ThomasE <thomas-evano@hotmail.fr>\n"
|
"Last-Translator: ThomasE <thomas-evano@hotmail.fr>\n"
|
||||||
"Language-Team: French <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: French <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
@@ -31,8 +31,8 @@ msgstr "Nom de groupe"
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Mise à jour"
|
msgstr "Mise à jour"
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ msgstr "Mise à jour"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -339,7 +339,7 @@ msgstr ""
|
|||||||
"partagés. Seulement modifiable par le propriétaire.<br/> Publique : Visible "
|
"partagés. Seulement modifiable par le propriétaire.<br/> Publique : Visible "
|
||||||
"par tous. Seulement modifiable par le propriétaire."
|
"par tous. Seulement modifiable par le propriétaire."
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Sauvegarder"
|
msgstr "Sauvegarder"
|
||||||
|
|
||||||
@@ -438,12 +438,12 @@ msgstr "Info"
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr "Cache vidé avec succès"
|
msgstr "Cache vidé avec succès"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Aujourd'hui"
|
msgstr "Aujourd'hui"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr "Maintenant"
|
msgstr "Maintenant"
|
||||||
|
|
||||||
@@ -1430,7 +1430,7 @@ msgstr "Pas de description"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Annuel"
|
msgstr "Annuel"
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensuel"
|
msgstr "Mensuel"
|
||||||
@@ -1635,7 +1635,7 @@ msgstr "Rule updated successfully"
|
|||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr "Règle supprimée avec succès"
|
msgstr "Règle supprimée avec succès"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -1744,7 +1744,8 @@ msgstr "Permissions"
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr "Important dates"
|
msgstr "Important dates"
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
@@ -1771,22 +1772,22 @@ msgstr "This account is deactivated"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Default"
|
msgstr "Default"
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr "Date Format"
|
msgstr "Date Format"
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr "Datetime Format"
|
msgstr "Datetime Format"
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr "Number Format"
|
msgstr "Number Format"
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1794,110 +1795,114 @@ msgid ""
|
|||||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr "Password"
|
msgstr "Password"
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr "A value for this field already exists in the rule."
|
msgstr "A value for this field already exists in the rule."
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
#, fuzzy
|
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr "Yearly by currency"
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr "Yearly by account"
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr "Current Net Worth"
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr "Projected Net Worth"
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
#, fuzzy
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr "All Transactions"
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr "Calendar"
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Auto"
|
msgstr "Auto"
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr "Yearly by currency"
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr "Yearly by account"
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr "Current Net Worth"
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr "Projected Net Worth"
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
#, fuzzy
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr "All Transactions"
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr "Calendar"
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Language"
|
msgstr "Language"
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr "Time Zone"
|
msgstr "Time Zone"
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr "Start page"
|
msgstr "Start page"
|
||||||
@@ -2859,27 +2864,33 @@ msgstr "Only use this if you know what you're doing"
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Admin"
|
msgstr "Django Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Calculator"
|
msgstr "Calculator"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Import Profiles"
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr "Importer des profils"
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Settings"
|
msgstr "Settings"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr "Edit import profile"
|
msgstr "Edit import profile"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr "Clear cache"
|
msgstr "Clear cache"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Logout"
|
msgstr "Logout"
|
||||||
|
|||||||
@@ -7,8 +7,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-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2025-05-01 09:16+0000\n"
|
"PO-Revision-Date: 2025-06-21 16:16+0000\n"
|
||||||
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
|
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
|
||||||
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
"app/nl/>\n"
|
"app/nl/>\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.11.1\n"
|
"X-Generator: Weblate 5.11.4\n"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:24
|
#: apps/accounts/forms.py:24
|
||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
@@ -31,8 +31,8 @@ msgstr "Groepsnaam"
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Bijwerken"
|
msgstr "Bijwerken"
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ msgstr "Bijwerken"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -339,7 +339,7 @@ msgstr ""
|
|||||||
"bewerkbaar door de eigenaar.<br/>Publiek: Weergegeven voor alle gebruikers. "
|
"bewerkbaar door de eigenaar.<br/>Publiek: Weergegeven voor alle gebruikers. "
|
||||||
"Alleen bewerkbaar door de eigenaar."
|
"Alleen bewerkbaar door de eigenaar."
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Opslaan"
|
msgstr "Opslaan"
|
||||||
|
|
||||||
@@ -438,12 +438,12 @@ msgstr "Info"
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr "Cache succesvol gewist"
|
msgstr "Cache succesvol gewist"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Vandaag"
|
msgstr "Vandaag"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr "Nu"
|
msgstr "Nu"
|
||||||
|
|
||||||
@@ -785,11 +785,11 @@ msgstr "Item succesvol toegevoegd"
|
|||||||
|
|
||||||
#: apps/dca/views.py:265
|
#: apps/dca/views.py:265
|
||||||
msgid "Entry updated successfully"
|
msgid "Entry updated successfully"
|
||||||
msgstr "Item succesvol bijgewerkt"
|
msgstr "Invoer succesvol bijgewerkt"
|
||||||
|
|
||||||
#: apps/dca/views.py:291
|
#: apps/dca/views.py:291
|
||||||
msgid "Entry deleted successfully"
|
msgid "Entry deleted successfully"
|
||||||
msgstr "Item succesvol verwijderd"
|
msgstr "Invoer succesvol verwijderd"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:149 templates/users/fragments/list.html:6
|
#: templates/includes/navbar.html:149 templates/users/fragments/list.html:6
|
||||||
@@ -1428,7 +1428,7 @@ msgstr "Geen Beschrijving"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jaarlijks"
|
msgstr "Jaarlijks"
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Maandelijks"
|
msgstr "Maandelijks"
|
||||||
@@ -1515,18 +1515,14 @@ msgid "Last Generated Reference Date"
|
|||||||
msgstr "Laatste Gegenereerde Referentiedatum"
|
msgstr "Laatste Gegenereerde Referentiedatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:964 templates/cotton/ui/transactions_fab.html:59
|
#: apps/transactions/models.py:964 templates/cotton/ui/transactions_fab.html:59
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Edit Transaction"
|
|
||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr "Bewerk verrichting"
|
msgstr "Snelle verrichting"
|
||||||
|
|
||||||
#: apps/transactions/models.py:965 templates/includes/navbar.html:72
|
#: apps/transactions/models.py:965 templates/includes/navbar.html:72
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Transactions"
|
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
msgstr "Verrichtingen"
|
msgstr "Snelle Verrichtingen"
|
||||||
|
|
||||||
#: apps/transactions/validators.py:8
|
#: apps/transactions/validators.py:8
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -1622,12 +1618,10 @@ msgid "Item updated successfully"
|
|||||||
msgstr "Item succesvol bijgewerkt"
|
msgstr "Item succesvol bijgewerkt"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:99
|
#: apps/transactions/views/quick_transactions.py:99
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Rule deleted successfully"
|
|
||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr "Regel succesvol verwijderd"
|
msgstr "Item succesvol verwijderd"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1716,7 +1710,8 @@ msgstr "Rechten"
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr "Belangrijke datums"
|
msgstr "Belangrijke datums"
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-mailadres"
|
msgstr "E-mailadres"
|
||||||
|
|
||||||
@@ -1738,19 +1733,19 @@ msgstr "Deze gebruiker is gedeactiveerd"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Standaard"
|
msgstr "Standaard"
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr "Datumnotatie"
|
msgstr "Datumnotatie"
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr "Tijdsnotatie"
|
msgstr "Tijdsnotatie"
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr "Schrijfwijze Nummers"
|
msgstr "Schrijfwijze Nummers"
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1761,19 +1756,19 @@ msgstr ""
|
|||||||
"weergegeven\n"
|
"weergegeven\n"
|
||||||
"Overweeg om WYGIWYH te helpen vertalen naar jouw taal op %(translation_link)s"
|
"Overweeg om WYGIWYH te helpen vertalen naar jouw taal op %(translation_link)s"
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr "Nieuw Wachtwoord"
|
msgstr "Nieuw Wachtwoord"
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr "Laat leeg om het huidige wachtwoord te behouden."
|
msgstr "Laat leeg om het huidige wachtwoord te behouden."
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr "Bevestig Nieuw Wachtwoord"
|
msgstr "Bevestig Nieuw Wachtwoord"
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
@@ -1781,7 +1776,7 @@ msgstr ""
|
|||||||
"Geeft aan of deze gebruiker als actief moet worden behandeld. Deselecteer "
|
"Geeft aan of deze gebruiker als actief moet worden behandeld. Deselecteer "
|
||||||
"dit in plaats van accounts te verwijderen."
|
"dit in plaats van accounts te verwijderen."
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
@@ -1789,75 +1784,79 @@ msgstr ""
|
|||||||
"Geeft aan dat deze gebruiker alle rechten heeft zonder ze expliciet toe te "
|
"Geeft aan dat deze gebruiker alle rechten heeft zonder ze expliciet toe te "
|
||||||
"kennen."
|
"kennen."
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr "Dit e-mailadres wordt al gebruikt door een ander account."
|
msgstr "Dit e-mailadres wordt al gebruikt door een ander account."
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr "De twee wachtwoordvelden komen niet overeen."
|
msgstr "De twee wachtwoordvelden komen niet overeen."
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr "Bevestig je nieuwe wachtwoord."
|
msgstr "Bevestig je nieuwe wachtwoord."
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr "Geef eerst het nieuwe wachtwoord op."
|
msgstr "Geef eerst het nieuwe wachtwoord op."
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr "Je kunt je eigen account niet deactiveren met dit formulier."
|
msgstr "Je kunt je eigen account niet deactiveren met dit formulier."
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr "Kan de status van de laatste Hoofdadmin niet verwijderen."
|
msgstr "Kan de status van de laatste Hoofdadmin niet verwijderen."
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr "Je kunt je eigen hoofdadminrechten niet verwijderen met dit formulier."
|
msgstr "Je kunt je eigen hoofdadminrechten niet verwijderen met dit formulier."
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr "Er bestaat al een gebruiker met dit e-mailadres."
|
msgstr "Er bestaat al een gebruiker met dit e-mailadres."
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr "Jaarlijks per munteenheid"
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr "Jaarlijks per rekening"
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr "Huidige Nettowaarde"
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr "Verwachte Nettowaarde"
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr "Alle Verrichtingen"
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr "Kalender"
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automatisch"
|
msgstr "Automatisch"
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr "Jaarlijks per munteenheid"
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr "Jaarlijks per rekening"
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr "Huidige Nettowaarde"
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr "Verwachte Nettowaarde"
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr "Alle Verrichtingen"
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr "Kalender"
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Taal"
|
msgstr "Taal"
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr "Tijdszone"
|
msgstr "Tijdszone"
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr "Startpagina"
|
msgstr "Startpagina"
|
||||||
|
|
||||||
@@ -2669,23 +2668,29 @@ msgstr "Gebruik dit alleen als je weet wat je doet"
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Beheerder"
|
msgstr "Django Beheerder"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Rekenmachine"
|
msgstr "Rekenmachine"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Import Profiles"
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr "Profielen importeren"
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Instellingen"
|
msgstr "Instellingen"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr "Profiel bewerken"
|
msgstr "Profiel bewerken"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr "Leegmaken"
|
msgstr "Cache leegmaken"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Uitloggen"
|
msgstr "Uitloggen"
|
||||||
|
|
||||||
@@ -3019,27 +3024,21 @@ msgstr "Evolutie per rekening"
|
|||||||
|
|
||||||
#: templates/quick_transactions/fragments/add.html:5
|
#: templates/quick_transactions/fragments/add.html:5
|
||||||
#: templates/quick_transactions/fragments/create_menu.html:5
|
#: templates/quick_transactions/fragments/create_menu.html:5
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Add recurring transaction"
|
|
||||||
msgid "Add quick transaction"
|
msgid "Add quick transaction"
|
||||||
msgstr "Voeg terugkerende verrichtingen toe"
|
msgstr "Voeg snelle verrichtingen toe"
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/create_menu.html:13
|
#: templates/quick_transactions/fragments/create_menu.html:13
|
||||||
#: templates/quick_transactions/fragments/list.html:55
|
#: templates/quick_transactions/fragments/list.html:55
|
||||||
msgid "Nothing to see here..."
|
msgid "Nothing to see here..."
|
||||||
msgstr ""
|
msgstr "Hier is niets te zien..."
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/edit.html:5
|
#: templates/quick_transactions/fragments/edit.html:5
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Edit transaction"
|
|
||||||
msgid "Edit quick transaction"
|
msgid "Edit quick transaction"
|
||||||
msgstr "Bewerk verrichting"
|
msgstr "Bewerk snelle verrichting"
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/list.html:38
|
#: templates/quick_transactions/fragments/list.html:38
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Yes, delete them!"
|
|
||||||
msgid "This will delete this item"
|
msgid "This will delete this item"
|
||||||
msgstr "Ja, verwijder ze!"
|
msgstr "Hiermee wordt dit item verwijderd"
|
||||||
|
|
||||||
#: templates/recurring_transactions/fragments/add.html:5
|
#: templates/recurring_transactions/fragments/add.html:5
|
||||||
msgid "Add recurring transaction"
|
msgid "Add recurring transaction"
|
||||||
@@ -3285,10 +3284,8 @@ msgid "Use the credentials below to login"
|
|||||||
msgstr "Gebruik de onderstaande gegevens om in te loggen"
|
msgstr "Gebruik de onderstaande gegevens om in te loggen"
|
||||||
|
|
||||||
#: templates/users/login.html:40
|
#: templates/users/login.html:40
|
||||||
#, fuzzy
|
|
||||||
#| msgid "ends with"
|
|
||||||
msgid "Login with"
|
msgid "Login with"
|
||||||
msgstr "eindigd op"
|
msgstr "Aanmelden met"
|
||||||
|
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ 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-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2025-04-13 08:16+0000\n"
|
"PO-Revision-Date: 2025-04-13 08:16+0000\n"
|
||||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||||
"Language-Team: Portuguese <https://translations.herculino.com/projects/"
|
"Language-Team: Portuguese <https://translations.herculino.com/projects/"
|
||||||
@@ -31,8 +31,8 @@ msgstr "Nome do grupo"
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Atualizar"
|
msgstr "Atualizar"
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ msgstr "Atualizar"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -337,7 +337,7 @@ msgstr ""
|
|||||||
"Somente editável pelo proprietário.<br/>Público: Exibido para todos os "
|
"Somente editável pelo proprietário.<br/>Público: Exibido para todos os "
|
||||||
"usuários. Somente editável pelo proprietário."
|
"usuários. Somente editável pelo proprietário."
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Salvar"
|
msgstr "Salvar"
|
||||||
|
|
||||||
@@ -436,12 +436,12 @@ msgstr "Informação"
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr "Cache limpo com sucesso"
|
msgstr "Cache limpo com sucesso"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Hoje"
|
msgstr "Hoje"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr "Agora"
|
msgstr "Agora"
|
||||||
|
|
||||||
@@ -1425,7 +1425,7 @@ msgstr "Sem descrição"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Anual"
|
msgstr "Anual"
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensal"
|
msgstr "Mensal"
|
||||||
@@ -1628,7 +1628,7 @@ msgstr "Regra atualizada com sucesso"
|
|||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr "Regra apagada com sucesso"
|
msgstr "Regra apagada com sucesso"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1717,7 +1717,8 @@ msgstr "Permissões"
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr "Datas importantes"
|
msgstr "Datas importantes"
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -1739,19 +1740,19 @@ msgstr "Essa conta está desativada"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Padrão"
|
msgstr "Padrão"
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr "Formato de Data"
|
msgstr "Formato de Data"
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr "Formato de Data e Hora"
|
msgstr "Formato de Data e Hora"
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr "Formato de Número"
|
msgstr "Formato de Número"
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1762,103 +1763,107 @@ msgstr ""
|
|||||||
"são exibidos\n"
|
"são exibidos\n"
|
||||||
"Considere ajudar a traduzir WYGIWYH para seu idioma em %(translation_link)s"
|
"Considere ajudar a traduzir WYGIWYH para seu idioma em %(translation_link)s"
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Password"
|
#| msgid "Password"
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr "Senha"
|
msgstr "Senha"
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "A value for this field already exists in the rule."
|
#| msgid "A value for this field already exists in the rule."
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr "Já existe um valor para esse campo na regra."
|
msgstr "Já existe um valor para esse campo na regra."
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr "Anual por moeda"
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr "Anual por conta"
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr "Patrimônio Atual"
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr "Patrimônio Previsto"
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr "Todas as transações"
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr "Calendário"
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automático"
|
msgstr "Automático"
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr "Anual por moeda"
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr "Anual por conta"
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr "Patrimônio Atual"
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr "Patrimônio Previsto"
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr "Todas as transações"
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr "Calendário"
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Linguagem"
|
msgstr "Linguagem"
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr "Fuso horário"
|
msgstr "Fuso horário"
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr "Página inicial"
|
msgstr "Página inicial"
|
||||||
|
|
||||||
@@ -2672,25 +2677,31 @@ msgstr "Só use isso se você souber o que está fazendo"
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Admin"
|
msgstr "Django Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Calculadora"
|
msgstr "Calculadora"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Import Profiles"
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr "Perfis de Importação"
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Configurações"
|
msgstr "Configurações"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Edit import profile"
|
#| msgid "Edit import profile"
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr "Editar perfil de importação"
|
msgstr "Editar perfil de importação"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr "Limpar cache"
|
msgstr "Limpar cache"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Sair"
|
msgstr "Sair"
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,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-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 19:29+0000\n"
|
||||||
"PO-Revision-Date: 2025-04-27 20:17+0000\n"
|
"PO-Revision-Date: 2025-06-29 19:34+0000\n"
|
||||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||||
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
|
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
|
||||||
"projects/wygiwyh/app/pt_BR/>\n"
|
"projects/wygiwyh/app/pt_BR/>\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 5.11\n"
|
"X-Generator: Weblate 5.12.2\n"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:24
|
#: apps/accounts/forms.py:24
|
||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
@@ -31,8 +31,8 @@ msgstr "Nome do grupo"
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Atualizar"
|
msgstr "Atualizar"
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ msgstr "Atualizar"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -68,7 +68,7 @@ msgstr "Adicionar"
|
|||||||
|
|
||||||
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26
|
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26
|
||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr "Grupo da Conta"
|
msgstr "Grupo"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:115
|
#: apps/accounts/forms.py:115
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
@@ -337,7 +337,7 @@ msgstr ""
|
|||||||
"Somente editável pelo proprietário.<br/>Público: Exibido para todos os "
|
"Somente editável pelo proprietário.<br/>Público: Exibido para todos os "
|
||||||
"usuários. Somente editável pelo proprietário."
|
"usuários. Somente editável pelo proprietário."
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Salvar"
|
msgstr "Salvar"
|
||||||
|
|
||||||
@@ -436,12 +436,12 @@ msgstr "Informação"
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr "Cache limpo com sucesso"
|
msgstr "Cache limpo com sucesso"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Hoje"
|
msgstr "Hoje"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr "Agora"
|
msgstr "Agora"
|
||||||
|
|
||||||
@@ -1425,7 +1425,7 @@ msgstr "Sem descrição"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Anual"
|
msgstr "Anual"
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensal"
|
msgstr "Mensal"
|
||||||
@@ -1512,18 +1512,14 @@ msgid "Last Generated Reference Date"
|
|||||||
msgstr "Última data de referência gerada"
|
msgstr "Última data de referência gerada"
|
||||||
|
|
||||||
#: apps/transactions/models.py:964 templates/cotton/ui/transactions_fab.html:59
|
#: apps/transactions/models.py:964 templates/cotton/ui/transactions_fab.html:59
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Edit Transaction"
|
|
||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr "Editar Transação"
|
msgstr "Transação Rápida"
|
||||||
|
|
||||||
#: apps/transactions/models.py:965 templates/includes/navbar.html:72
|
#: apps/transactions/models.py:965 templates/includes/navbar.html:72
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Transactions"
|
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
msgstr "Transações"
|
msgstr "Transações Rápidas"
|
||||||
|
|
||||||
#: apps/transactions/validators.py:8
|
#: apps/transactions/validators.py:8
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -1619,12 +1615,10 @@ msgid "Item updated successfully"
|
|||||||
msgstr "Item atualizado com sucesso"
|
msgstr "Item atualizado com sucesso"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:99
|
#: apps/transactions/views/quick_transactions.py:99
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Rule deleted successfully"
|
|
||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr "Regra apagada com sucesso"
|
msgstr "Item apagado com sucesso"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1713,7 +1707,8 @@ msgstr "Permissões"
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr "Datas importantes"
|
msgstr "Datas importantes"
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -1735,19 +1730,19 @@ msgstr "Essa conta está desativada"
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Padrão"
|
msgstr "Padrão"
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr "Formato de Data"
|
msgstr "Formato de Data"
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr "Formato de Data e Hora"
|
msgstr "Formato de Data e Hora"
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr "Formato de Número"
|
msgstr "Formato de Número"
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1758,19 +1753,19 @@ msgstr ""
|
|||||||
"são exibidos\n"
|
"são exibidos\n"
|
||||||
"Considere ajudar a traduzir WYGIWYH para seu idioma em %(translation_link)s"
|
"Considere ajudar a traduzir WYGIWYH para seu idioma em %(translation_link)s"
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr "Nova senha"
|
msgstr "Nova senha"
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr "Deixe em branco para usar a senha atual."
|
msgstr "Deixe em branco para usar a senha atual."
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr "Confirmar nova senha"
|
msgstr "Confirmar nova senha"
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
@@ -1778,7 +1773,7 @@ msgstr ""
|
|||||||
"Designa se esse usuário deve ser tratado como ativo. Desmarque essa opção em "
|
"Designa se esse usuário deve ser tratado como ativo. Desmarque essa opção em "
|
||||||
"vez de excluir usuários."
|
"vez de excluir usuários."
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
@@ -1786,77 +1781,81 @@ msgstr ""
|
|||||||
"Designa que esse usuário tem todas as permissões sem atribuí-las "
|
"Designa que esse usuário tem todas as permissões sem atribuí-las "
|
||||||
"explicitamente."
|
"explicitamente."
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr "Esse endereço de e-mail já está sendo usado por outra conta."
|
msgstr "Esse endereço de e-mail já está sendo usado por outra conta."
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr "Os dois campos de senha não coincidem."
|
msgstr "Os dois campos de senha não coincidem."
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr "Confirme sua nova senha."
|
msgstr "Confirme sua nova senha."
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr "Digite a nova senha primeiro."
|
msgstr "Digite a nova senha primeiro."
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr "Não é possível desativar sua própria conta usando esse formulário."
|
msgstr "Não é possível desativar sua própria conta usando esse formulário."
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr "Não é possível remover o status do último superusuário."
|
msgstr "Não é possível remover o status do último superusuário."
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Não é possível remover seu próprio status de superusuário usando esse "
|
"Não é possível remover seu próprio status de superusuário usando esse "
|
||||||
"formulário."
|
"formulário."
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr "Já existe um usuário com esse endereço de e-mail."
|
msgstr "Já existe um usuário com esse endereço de e-mail."
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr "Anual por moeda"
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr "Anual por conta"
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr "Patrimônio Atual"
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr "Patrimônio Previsto"
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr "Todas as transações"
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr "Calendário"
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Automático"
|
msgstr "Automático"
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr "Anual por moeda"
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr "Anual por conta"
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr "Patrimônio Atual"
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr "Patrimônio Previsto"
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr "Todas as transações"
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr "Calendário"
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr "Volume"
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Linguagem"
|
msgstr "Linguagem"
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr "Fuso horário"
|
msgstr "Fuso horário"
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr "Página inicial"
|
msgstr "Página inicial"
|
||||||
|
|
||||||
@@ -2670,23 +2669,27 @@ msgstr "Só use isso se você souber o que está fazendo"
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Admin"
|
msgstr "Django Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Calculadora"
|
msgstr "Calculadora"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr "Perfil"
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Configurações"
|
msgstr "Configurações"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr "Editar perfil"
|
msgstr "Editar perfil"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr "Limpar cache"
|
msgstr "Limpar cache"
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Sair"
|
msgstr "Sair"
|
||||||
|
|
||||||
@@ -3018,27 +3021,21 @@ msgstr "Evolução por conta"
|
|||||||
|
|
||||||
#: templates/quick_transactions/fragments/add.html:5
|
#: templates/quick_transactions/fragments/add.html:5
|
||||||
#: templates/quick_transactions/fragments/create_menu.html:5
|
#: templates/quick_transactions/fragments/create_menu.html:5
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Add recurring transaction"
|
|
||||||
msgid "Add quick transaction"
|
msgid "Add quick transaction"
|
||||||
msgstr "Adicionar transação recorrente"
|
msgstr "Adicionar transação rápida"
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/create_menu.html:13
|
#: templates/quick_transactions/fragments/create_menu.html:13
|
||||||
#: templates/quick_transactions/fragments/list.html:55
|
#: templates/quick_transactions/fragments/list.html:55
|
||||||
msgid "Nothing to see here..."
|
msgid "Nothing to see here..."
|
||||||
msgstr ""
|
msgstr "Nada para ver aqui..."
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/edit.html:5
|
#: templates/quick_transactions/fragments/edit.html:5
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Edit transaction"
|
|
||||||
msgid "Edit quick transaction"
|
msgid "Edit quick transaction"
|
||||||
msgstr "Editar transação"
|
msgstr "Editar transação rápida"
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/list.html:38
|
#: templates/quick_transactions/fragments/list.html:38
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Yes, delete them!"
|
|
||||||
msgid "This will delete this item"
|
msgid "This will delete this item"
|
||||||
msgstr "Sim, apague!"
|
msgstr "Isso apagará este item"
|
||||||
|
|
||||||
#: templates/recurring_transactions/fragments/add.html:5
|
#: templates/recurring_transactions/fragments/add.html:5
|
||||||
msgid "Add recurring transaction"
|
msgid "Add recurring transaction"
|
||||||
@@ -3281,10 +3278,8 @@ msgid "Use the credentials below to login"
|
|||||||
msgstr "Use as credenciais abaixo para fazer login"
|
msgstr "Use as credenciais abaixo para fazer login"
|
||||||
|
|
||||||
#: templates/users/login.html:40
|
#: templates/users/login.html:40
|
||||||
#, fuzzy
|
|
||||||
#| msgid "ends with"
|
|
||||||
msgid "Login with"
|
msgid "Login with"
|
||||||
msgstr "termina em"
|
msgstr "Login com"
|
||||||
|
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2025-04-14 06:16+0000\n"
|
"PO-Revision-Date: 2025-04-14 06:16+0000\n"
|
||||||
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
|
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
|
||||||
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
@@ -31,8 +31,8 @@ msgstr ""
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Uppdatera"
|
msgstr "Uppdatera"
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ msgstr "Uppdatera"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -329,7 +329,7 @@ msgid ""
|
|||||||
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -428,12 +428,12 @@ msgstr ""
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1398,7 +1398,7 @@ msgstr ""
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1591,7 +1591,7 @@ msgstr ""
|
|||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1680,7 +1680,8 @@ msgstr ""
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1702,19 +1703,19 @@ msgstr ""
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1722,99 +1723,103 @@ msgid ""
|
|||||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2625,23 +2630,27 @@ msgstr ""
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-06-20 05:07+0000\n"
|
"POT-Creation-Date: 2025-06-29 17:42+0000\n"
|
||||||
"PO-Revision-Date: 2025-05-12 14:16+0000\n"
|
"PO-Revision-Date: 2025-05-12 14:16+0000\n"
|
||||||
"Last-Translator: Felix <xnovaua@gmail.com>\n"
|
"Last-Translator: Felix <xnovaua@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian <https://translations.herculino.com/projects/"
|
"Language-Team: Ukrainian <https://translations.herculino.com/projects/"
|
||||||
@@ -32,8 +32,8 @@ msgstr "Назва групи"
|
|||||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||||
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
#: apps/transactions/forms.py:776 apps/transactions/forms.py:819
|
||||||
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
#: apps/transactions/forms.py:851 apps/transactions/forms.py:886
|
||||||
#: apps/transactions/forms.py:1038 apps/users/forms.py:210
|
#: apps/transactions/forms.py:1038 apps/users/forms.py:215
|
||||||
#: apps/users/forms.py:372
|
#: apps/users/forms.py:377
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Оновлення"
|
msgstr "Оновлення"
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ msgstr "Оновлення"
|
|||||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
#: apps/transactions/forms.py:378 apps/transactions/forms.py:784
|
||||||
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
#: apps/transactions/forms.py:827 apps/transactions/forms.py:859
|
||||||
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
#: apps/transactions/forms.py:894 apps/transactions/forms.py:1046
|
||||||
#: apps/users/forms.py:218 apps/users/forms.py:380
|
#: apps/users/forms.py:223 apps/users/forms.py:385
|
||||||
#: templates/account_groups/fragments/list.html:9
|
#: templates/account_groups/fragments/list.html:9
|
||||||
#: templates/accounts/fragments/list.html:9
|
#: templates/accounts/fragments/list.html:9
|
||||||
#: templates/categories/fragments/list.html:9
|
#: templates/categories/fragments/list.html:9
|
||||||
@@ -338,7 +338,7 @@ msgstr ""
|
|||||||
"доступом. Редагувати може лише власник.<br/> Public: Відображається для всіх "
|
"доступом. Редагувати може лише власник.<br/> Public: Відображається для всіх "
|
||||||
"користувачів. Редагувати може лише власник."
|
"користувачів. Редагувати може лише власник."
|
||||||
|
|
||||||
#: apps/common/forms.py:80 apps/users/forms.py:135
|
#: apps/common/forms.py:80 apps/users/forms.py:140
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Зберегти"
|
msgstr "Зберегти"
|
||||||
|
|
||||||
@@ -441,12 +441,12 @@ msgstr "Info"
|
|||||||
msgid "Cache cleared successfully"
|
msgid "Cache cleared successfully"
|
||||||
msgstr "Кеш успішно очищено"
|
msgstr "Кеш успішно очищено"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:53 apps/common/widgets/datepicker.py:206
|
#: apps/common/widgets/datepicker.py:55 apps/common/widgets/datepicker.py:208
|
||||||
#: apps/common/widgets/datepicker.py:264
|
#: apps/common/widgets/datepicker.py:266
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Сьогодні"
|
msgstr "Сьогодні"
|
||||||
|
|
||||||
#: apps/common/widgets/datepicker.py:139
|
#: apps/common/widgets/datepicker.py:141
|
||||||
msgid "Now"
|
msgid "Now"
|
||||||
msgstr "Зараз"
|
msgstr "Зараз"
|
||||||
|
|
||||||
@@ -1411,7 +1411,7 @@ msgstr ""
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:455 apps/users/models.py:26
|
#: apps/transactions/models.py:455 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:26
|
#: templates/includes/navbar.html:26
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1606,7 +1606,7 @@ msgstr ""
|
|||||||
msgid "Item deleted successfully"
|
msgid "Item deleted successfully"
|
||||||
msgstr "Рахунок успішно видалено"
|
msgstr "Рахунок успішно видалено"
|
||||||
|
|
||||||
#: apps/transactions/views/quick_transactions.py:145
|
#: apps/transactions/views/quick_transactions.py:147
|
||||||
#: apps/transactions/views/transactions.py:52
|
#: apps/transactions/views/transactions.py:52
|
||||||
#: apps/transactions/views/transactions.py:148
|
#: apps/transactions/views/transactions.py:148
|
||||||
msgid "Transaction added successfully"
|
msgid "Transaction added successfully"
|
||||||
@@ -1695,7 +1695,8 @@ msgstr ""
|
|||||||
msgid "Important dates"
|
msgid "Important dates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:23 apps/users/models.py:13 templates/users/login.html:20
|
#: apps/users/forms.py:23 apps/users/models.py:451
|
||||||
|
#: templates/users/login.html:20
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1717,19 +1718,19 @@ msgstr ""
|
|||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:95 apps/users/models.py:41
|
#: apps/users/forms.py:95 apps/users/models.py:484
|
||||||
msgid "Date Format"
|
msgid "Date Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:100 apps/users/models.py:46
|
#: apps/users/forms.py:100 apps/users/models.py:489
|
||||||
msgid "Datetime Format"
|
msgid "Datetime Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:106 apps/users/models.py:49
|
#: apps/users/forms.py:106 apps/users/models.py:492
|
||||||
msgid "Number Format"
|
msgid "Number Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:141
|
#: apps/users/forms.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This changes the language (if available) and how numbers and dates are "
|
"This changes the language (if available) and how numbers and dates are "
|
||||||
@@ -1737,99 +1738,103 @@ msgid ""
|
|||||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:150
|
#: apps/users/forms.py:155
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:153
|
#: apps/users/forms.py:158
|
||||||
msgid "Leave blank to keep the current password."
|
msgid "Leave blank to keep the current password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:156
|
#: apps/users/forms.py:161
|
||||||
msgid "Confirm New Password"
|
msgid "Confirm New Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:168 apps/users/forms.py:329
|
#: apps/users/forms.py:173 apps/users/forms.py:334
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates whether this user should be treated as active. Unselect this "
|
"Designates whether this user should be treated as active. Unselect this "
|
||||||
"instead of deleting accounts."
|
"instead of deleting accounts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:171 apps/users/forms.py:332
|
#: apps/users/forms.py:176 apps/users/forms.py:337
|
||||||
msgid ""
|
msgid ""
|
||||||
"Designates that this user has all permissions without explicitly assigning "
|
"Designates that this user has all permissions without explicitly assigning "
|
||||||
"them."
|
"them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:242
|
#: apps/users/forms.py:247
|
||||||
msgid "This email address is already in use by another account."
|
msgid "This email address is already in use by another account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:250
|
#: apps/users/forms.py:255
|
||||||
msgid "The two password fields didn't match."
|
msgid "The two password fields didn't match."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:252
|
#: apps/users/forms.py:257
|
||||||
msgid "Please confirm your new password."
|
msgid "Please confirm your new password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:254
|
#: apps/users/forms.py:259
|
||||||
msgid "Please enter the new password first."
|
msgid "Please enter the new password first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:274
|
#: apps/users/forms.py:279
|
||||||
msgid "You cannot deactivate your own account using this form."
|
msgid "You cannot deactivate your own account using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:287
|
#: apps/users/forms.py:292
|
||||||
msgid "Cannot remove status from the last superuser."
|
msgid "Cannot remove status from the last superuser."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:293
|
#: apps/users/forms.py:298
|
||||||
msgid "You cannot remove your own superuser status using this form."
|
msgid "You cannot remove your own superuser status using this form."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/forms.py:390
|
#: apps/users/forms.py:395
|
||||||
msgid "A user with this email address already exists."
|
msgid "A user with this email address already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:27 templates/includes/navbar.html:28
|
#: apps/users/models.py:12 apps/users/models.py:497
|
||||||
msgid "Yearly by currency"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:28 templates/includes/navbar.html:30
|
|
||||||
msgid "Yearly by account"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:29 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Current Net Worth"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:30 templates/net_worth/net_worth.html:9
|
|
||||||
msgid "Projected Net Worth"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:31
|
|
||||||
msgid "All Transactions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:32 templates/includes/navbar.html:32
|
|
||||||
msgid "Calendar"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/users/models.py:54 apps/users/models.py:60
|
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:56
|
#: apps/users/models.py:465 templates/includes/navbar.html:28
|
||||||
|
msgid "Yearly by currency"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:466 templates/includes/navbar.html:30
|
||||||
|
msgid "Yearly by account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:467 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Current Net Worth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:468 templates/net_worth/net_worth.html:9
|
||||||
|
msgid "Projected Net Worth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:469
|
||||||
|
msgid "All Transactions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:470 templates/includes/navbar.html:32
|
||||||
|
msgid "Calendar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:480
|
||||||
|
msgid "Volume"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/users/models.py:499
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:62
|
#: apps/users/models.py:505
|
||||||
msgid "Time Zone"
|
msgid "Time Zone"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:68
|
#: apps/users/models.py:511
|
||||||
msgid "Start page"
|
msgid "Start page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2640,23 +2645,27 @@ msgstr ""
|
|||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:167
|
#: templates/includes/navbar.html:167 templates/includes/navbar.html:170
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:14
|
#: templates/includes/navbar/user_menu.html:6
|
||||||
|
msgid "Profile"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/includes/navbar/user_menu.html:15
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:19
|
#: templates/includes/navbar/user_menu.html:20
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:46
|
#: templates/includes/navbar/user_menu.html:47
|
||||||
msgid "Clear cache"
|
msgid "Clear cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar/user_menu.html:50
|
#: templates/includes/navbar/user_menu.html:51
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Account Groups' %}<span>
|
<div>{% translate 'Account Groups' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Accounts' %}<span>
|
<div>{% translate 'Accounts' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class="tw-hidden lg:tw-grid lg:tw-grid-cols-7 tw-gap-4 lg:tw-gap-0">
|
<div class="tw:hidden tw:lg:grid tw:lg:grid-cols-7 tw:gap-4 tw:lg:gap-0">
|
||||||
<div class="border-start border-top border-bottom p-2 text-center">
|
<div class="border-start border-top border-bottom p-2 text-center">
|
||||||
{% translate 'MON' %}
|
{% translate 'MON' %}
|
||||||
</div>
|
</div>
|
||||||
@@ -25,44 +25,44 @@
|
|||||||
{% translate 'SUN' %}
|
{% translate 'SUN' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-grid tw-grid-cols-1 tw-grid-rows-1 lg:tw-grid-cols-7 lg:tw-grid-rows-6 tw-gap-4 lg:tw-gap-0">
|
<div class="tw:grid tw:grid-cols-1 tw:grid-rows-1 tw:lg:grid-cols-7 tw:lg:grid-rows-6 tw:gap-4 tw:lg:gap-0">
|
||||||
{% for date in dates %}
|
{% for date in dates %}
|
||||||
{% if date %}
|
{% if date %}
|
||||||
<div class="card h-100 hover:tw-bg-zinc-900 rounded-0{% if not date.transactions %} !tw-hidden lg:!tw-flex{% endif %}{% if today == date.date %} tw-border-yellow-300 border-primary{% endif %} " role="button"
|
<div class="card h-100 tw:hover:bg-zinc-900! rounded-0{% if not date.transactions %} tw:hidden! tw:lg:flex!{% endif %}{% if today == date.date %} tw:border-yellow-300 border-primary{% endif %} " role="button"
|
||||||
hx-get="{% url 'calendar_transactions_list' day=date.date.day month=date.date.month year=date.date.year %}"
|
hx-get="{% url 'calendar_transactions_list' day=date.date.day month=date.date.month year=date.date.year %}"
|
||||||
hx-target="#persistent-generic-offcanvas-left">
|
hx-target="#persistent-generic-offcanvas-left">
|
||||||
<div class="card-header border-0 bg-transparent text-end tw-flex justify-content-between p-2 w-100">
|
<div class="card-header border-0 bg-transparent text-end tw:flex justify-content-between p-2 w-100">
|
||||||
<div class="lg:tw-hidden text-start w-100">{{ date.date|date:"l"|lower }}</div>
|
<div class="tw:lg:hidden text-start w-100">{{ date.date|date:"l"|lower }}</div>
|
||||||
<div class="text-end w-100">{{ date.day }}</div>
|
<div class="text-end w-100">{{ date.day }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body p-2">
|
<div class="card-body p-2">
|
||||||
{% for transaction in date.transactions %}
|
{% for transaction in date.transactions %}
|
||||||
{% if transaction.is_paid %}
|
{% if transaction.is_paid %}
|
||||||
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw-text-green-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check tw:text-green-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw-text-green-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check tw:text-green-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw-text-red-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check tw:text-red-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw-text-red-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check tw:text-red-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw-text-green-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle tw:text-green-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw-text-green-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle tw:text-green-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw-text-red-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle tw:text-red-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw-text-red-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle tw:text-red-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="!tw-hidden lg:!tw-block card h-100 rounded-0"></div>
|
<div class="tw:hidden! tw:lg:block! card h-100 rounded-0"></div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
||||||
{# Date picker#}
|
{# Date picker#}
|
||||||
<div class="col-12 col-xl-4 flex-row align-items-center d-flex">
|
<div class="col-12 col-xl-4 flex-row align-items-center d-flex">
|
||||||
<div class="tw-text-base h-100 align-items-center d-flex">
|
<div class="tw:text-base h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="pe-4 py-2"
|
class="pe-4 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
@@ -25,14 +25,14 @@
|
|||||||
href="{% url 'calendar' month=previous_month year=previous_year %}"><i
|
href="{% url 'calendar' month=previous_month year=previous_year %}"><i
|
||||||
class="fa-solid fa-chevron-left"></i></a>
|
class="fa-solid fa-chevron-left"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full text-center"
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full text-center"
|
||||||
hx-get="{% url 'month_year_picker' %}"
|
hx-get="{% url 'month_year_picker' %}"
|
||||||
hx-target="#generic-offcanvas-left"
|
hx-target="#generic-offcanvas-left"
|
||||||
hx-trigger="click, date_picker from:window"
|
hx-trigger="click, date_picker from:window"
|
||||||
hx-vals='{"month": {{ month }}, "year": {{ year }}, "for": "calendar", "field": "date"}' role="button">
|
hx-vals='{"month": {{ month }}, "year": {{ year }}, "for": "calendar", "field": "date"}' role="button">
|
||||||
{{ month|month_name }} {{ year }}
|
{{ month|month_name }} {{ year }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-base mx-2 h-100 align-items-center d-flex">
|
<div class="tw:text-base mx-2 h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="ps-3 py-2"
|
class="ps-3 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Categories' %}<span>
|
<div>{% translate 'Categories' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
tabindex="0">
|
tabindex="0">
|
||||||
<ul class="list-group list-group-flush" id="month-year-list">
|
<ul class="list-group list-group-flush" id="month-year-list">
|
||||||
{% for month_data in x.list %}
|
{% for month_data in x.list %}
|
||||||
<li class="list-group-item hover:tw-bg-zinc-900
|
<li class="list-group-item tw:hover:bg-zinc-900
|
||||||
{% if month_data.month == current_month and month_data.year == current_year %} disabled bg-primary{% endif %}"
|
{% if month_data.month == current_month and month_data.year == current_year %} disabled bg-primary{% endif %}"
|
||||||
{% if month_data.month == current_month and month_data.year == current_year %}aria-disabled="true"{% endif %}>
|
{% if month_data.month == current_month and month_data.year == current_year %}aria-disabled="true"{% endif %}>
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% if not divless %}
|
{% if not divless %}
|
||||||
<div class="{% if text_end %}text-end{% elif text_start %}text-start{% endif %}">
|
<div class="{% if text_end %}text-end{% elif text_start %}text-start{% endif %}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<span class="amount{% if color == 'grey' or color == "gray" %} tw-text-gray-500{% elif color == 'green' %} tw-text-green-400{% elif color == 'red' %} tw-text-red-400{% endif %} {{ custom_class }}"
|
<span class="amount{% if color == 'grey' or color == "gray" %} tw:text-gray-500{% elif color == 'green' %} tw:text-green-400{% elif color == 'red' %} tw:text-red-400{% endif %} {{ custom_class }}"
|
||||||
data-original-value="{% currency_display amount=amount prefix=prefix suffix=suffix decimal_places=decimal_places %}"
|
data-original-value="{% currency_display amount=amount prefix=prefix suffix=suffix decimal_places=decimal_places %}"
|
||||||
data-amount="{{ amount|floatformat:"-40u" }}">
|
data-amount="{{ amount|floatformat:"-40u" }}">
|
||||||
</span><span>{{ slot }}</span>
|
</span><span>{{ slot }}</span>
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
<div class="tw-min-h-16">
|
<div class="tw:min-h-16">
|
||||||
<div
|
<div
|
||||||
id="fab-wrapper"
|
id="fab-wrapper"
|
||||||
class="tw-fixed tw-bottom-5 tw-right-5 tw-ml-auto tw-w-max tw-flex tw-flex-col tw-items-end mt-5">
|
class="tw:fixed tw:bottom-5 tw:right-5 tw:ml-auto tw:w-max tw:flex tw:flex-col tw:items-end mt-5">
|
||||||
<div
|
<div
|
||||||
id="menu"
|
id="menu"
|
||||||
class="tw-flex tw-flex-col tw-items-end tw-space-y-6 tw-transition-all tw-duration-300 tw-ease-in-out tw-opacity-0 tw-invisible tw-hidden tw-mb-2">
|
class="tw:flex tw:flex-col tw:items-end tw:space-y-6 tw:transition-all tw:duration-300 tw:ease-in-out tw:opacity-0 tw:invisible tw:hidden tw:mb-2">
|
||||||
|
|
||||||
{{ slot }}
|
{{ slot }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="btn btn-primary rounded-circle p-0 tw-w-12 tw-h-12 tw-flex tw-items-center tw-justify-center tw-shadow-lg hover:tw-shadow-xl focus:tw-shadow-xl tw-transition-all tw-duration-300 tw-ease-in-out"
|
class="btn btn-primary rounded-circle p-0 tw:w-12 tw:h-12 tw:flex tw:items-center tw:justify-center tw:shadow-lg tw:hover:shadow-xl tw:focus:shadow-xl tw:transition-all tw:duration-300 tw:ease-in-out"
|
||||||
_="
|
_="
|
||||||
on click or focusout
|
on click or focusout
|
||||||
if #menu matches .tw-invisible and event.type === 'click'
|
if #menu.classList.contains('tw:invisible') and event.type === 'click'
|
||||||
add .tw-rotate-45 to #fab-icon
|
add .{'tw:rotate-45'} to #fab-icon
|
||||||
remove .tw-invisible from #menu
|
remove .{'tw:invisible'} from #menu
|
||||||
remove .tw-hidden from #menu
|
remove .{'tw:hidden'} from #menu
|
||||||
remove .tw-opacity-0 from #menu
|
remove .{'tw:opacity-0'} from #menu
|
||||||
else
|
else
|
||||||
wait 0.2s
|
wait 0.2s
|
||||||
remove .tw-rotate-45 from #fab-icon
|
remove .{'tw:rotate-45'} from #fab-icon
|
||||||
add .tw-invisible to #menu
|
add .{'tw:invisible'} to #menu
|
||||||
add .tw-hidden to #menu
|
add .{'tw:hidden'} to #menu
|
||||||
add .tw-opacity-0 to #menu
|
add .{'tw:opacity-0'} to #menu
|
||||||
end
|
end
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<i id="fab-icon" class="fa-solid fa-plus tw-text-3xl tw-transition-transform tw-duration-300 tw-ease-in-out"></i>
|
<i id="fab-icon" class="fa-solid fa-plus tw:text-3xl tw:transition-transform tw:duration-300 tw:ease-in-out"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="tw-relative fab-item">
|
<div class="tw:relative fab-item">
|
||||||
<button class="btn btn-sm btn-{{ color }}"
|
<button class="btn btn-sm btn-{{ color }}"
|
||||||
hx-get="{{ url }}"
|
hx-get="{{ url }}"
|
||||||
hx-trigger="{{ hx_trigger }}"
|
hx-trigger="{{ hx_trigger }}"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="row {% if not remove_padding %}p-5{% endif %}">
|
<div class="row {% if not remove_padding %}p-5{% endif %}">
|
||||||
<div class="col {% if not remove_padding %}p-5{% endif %}">
|
<div class="col {% if not remove_padding %}p-5{% endif %}">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<i class="{% if icon %}{{ icon }}{% else %}fa-solid fa-circle-xmark{% endif %} tw-text-6xl"></i>
|
<i class="{% if icon %}{{ icon }}{% else %}fa-solid fa-circle-xmark{% endif %} tw:text-6xl"></i>
|
||||||
<p class="lead mt-4 mb-0">{{ title }}</p>
|
<p class="lead mt-4 mb-0">{{ title }}</p>
|
||||||
<p class="tw-text-gray-500">{{ subtitle }}</p>
|
<p class="tw:text-gray-500">{{ subtitle }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,17 +8,17 @@
|
|||||||
id="check-{{ transaction.id }}" aria-label="{% translate 'Select' %}" hx-preserve>
|
id="check-{{ transaction.id }}" aria-label="{% translate 'Select' %}" hx-preserve>
|
||||||
</label>
|
</label>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="tw-border-s-6 tw-border-e-0 tw-border-t-0 tw-border-b-0 border-bottom
|
<div class="tw:border-s-4 tw:border-e-0 tw:border-t-0 tw:border-b-0 border-bottom
|
||||||
hover:tw-bg-zinc-900 p-2 {% if transaction.account.is_asset %}tw-border-dashed{% else %}tw-border-solid{% endif %}
|
tw:hover:bg-zinc-900 p-2 {% if transaction.account.is_asset %}tw:border-dashed{% else %}tw:border-solid{% endif %}
|
||||||
{% if transaction.type == "EX" %}tw-border-red-500{% else %}tw-border-green-500{% endif %} tw-relative
|
{% if transaction.type == "EX" %}tw:border-red-500{% else %}tw:border-green-500{% endif %} tw:relative
|
||||||
w-100 transaction-item"
|
w-100 transaction-item"
|
||||||
_="on mouseover remove .tw-invisible from the first .transaction-actions in me end
|
_="on mouseover remove .{'tw:invisible'} from the first .transaction-actions in me end
|
||||||
on mouseout add .tw-invisible to the first .transaction-actions in me end">
|
on mouseout add .{'tw:invisible'} to the first .transaction-actions in me end">
|
||||||
<div class="row font-monospace tw-text-sm align-items-center">
|
<div class="row font-monospace tw:text-sm align-items-center">
|
||||||
<div
|
<div
|
||||||
class="col-lg-auto col-12 d-flex align-items-center tw-text-2xl lg:tw-text-xl text-lg-center text-center p-0 ps-1">
|
class="col-lg-auto col-12 d-flex align-items-center tw:text-2xl tw:lg:text-xl text-lg-center text-center p-0 ps-1">
|
||||||
{% if not transaction.deleted %}
|
{% if not transaction.deleted %}
|
||||||
<a class="text-decoration-none p-3 tw-text-gray-500"
|
<a class="text-decoration-none p-3 tw:text-gray-500!"
|
||||||
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}"
|
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}"
|
||||||
role="button"
|
role="button"
|
||||||
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
|
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
class="fa-regular fa-circle"></i>{% endif %}
|
class="fa-regular fa-circle"></i>{% endif %}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="text-decoration-none p-3 tw-text-gray-500"
|
<div class="text-decoration-none p-3 tw:text-gray-500!"
|
||||||
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}">
|
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}">
|
||||||
{% if transaction.is_paid %}<i class="fa-regular fa-circle-check"></i>{% else %}<i
|
{% if transaction.is_paid %}<i class="fa-regular fa-circle-check"></i>{% else %}<i
|
||||||
class="fa-regular fa-circle"></i>{% endif %}
|
class="fa-regular fa-circle"></i>{% endif %}
|
||||||
@@ -37,13 +37,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg col-12">
|
<div class="col-lg col-12">
|
||||||
{# Date#}
|
{# Date#}
|
||||||
<div class="row mb-2 mb-lg-1 tw-text-gray-400">
|
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-calendar fa-fw me-1 fa-xs"></i></div>
|
<div class="col-auto pe-1"><i class="fa-solid fa-calendar fa-fw me-1 fa-xs"></i></div>
|
||||||
<div
|
<div
|
||||||
class="col ps-0">{{ transaction.date|date:"SHORT_DATE_FORMAT" }} • {{ transaction.reference_date|date:"b/Y" }}</div>
|
class="col ps-0">{{ transaction.date|date:"SHORT_DATE_FORMAT" }} • {{ transaction.reference_date|date:"b/Y" }}</div>
|
||||||
</div>
|
</div>
|
||||||
{# Description#}
|
{# Description#}
|
||||||
<div class="mb-2 mb-lg-1 text-white tw-text-base">
|
<div class="mb-2 mb-lg-1 text-body tw:text-base">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<span class="{% if transaction.description %}me-2{% endif %}">{{ transaction.description }}</span>
|
<span class="{% if transaction.description %}me-2{% endif %}">{{ transaction.description }}</span>
|
||||||
{% if transaction.installment_plan and transaction.installment_id %}
|
{% if transaction.installment_plan and transaction.installment_id %}
|
||||||
@@ -51,18 +51,18 @@
|
|||||||
class="badge text-bg-secondary">{{ transaction.installment_id }}/{{ transaction.installment_plan.installment_total_number }}</span>
|
class="badge text-bg-secondary">{{ transaction.installment_id }}/{{ transaction.installment_plan.installment_total_number }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if transaction.recurring_transaction %}
|
{% if transaction.recurring_transaction %}
|
||||||
<span class="text-primary tw-text-xs"><i class="fa-solid fa-arrows-rotate fa-fw"></i></span>
|
<span class="text-primary tw:text-xs"><i class="fa-solid fa-arrows-rotate fa-fw"></i></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if transaction.dca_expense_entries.all or transaction.dca_income_entries.all %}
|
{% if transaction.dca_expense_entries.all or transaction.dca_income_entries.all %}
|
||||||
<span class="badge text-bg-secondary">{% trans 'DCA' %}</span>
|
<span class="badge text-bg-secondary">{% trans 'DCA' %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-gray-400 tw-text-sm">
|
<div class="tw:text-gray-400 tw:text-sm">
|
||||||
{# Entities #}
|
{# Entities #}
|
||||||
{% with transaction.entities.all as entities %}
|
{% with transaction.entities.all as entities %}
|
||||||
{% if entities %}
|
{% if entities %}
|
||||||
<div class="row mb-2 mb-lg-1 tw-text-gray-400">
|
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div>
|
<div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ entities|join:", " }}</div>
|
<div class="col ps-0">{{ entities|join:", " }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -70,14 +70,14 @@
|
|||||||
{% endwith %}
|
{% endwith %}
|
||||||
{# Notes#}
|
{# Notes#}
|
||||||
{% if transaction.notes %}
|
{% if transaction.notes %}
|
||||||
<div class="row mb-2 mb-lg-1 tw-text-gray-400">
|
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-align-left fa-fw me-1 fa-xs"></i></div>
|
<div class="col-auto pe-1"><i class="fa-solid fa-align-left fa-fw me-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ transaction.notes | limited_markdown | linebreaksbr }}</div>
|
<div class="col ps-0">{{ transaction.notes | limited_markdown | linebreaksbr }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# Category#}
|
{# Category#}
|
||||||
{% if transaction.category %}
|
{% if transaction.category %}
|
||||||
<div class="row mb-2 mb-lg-1 tw-text-gray-400">
|
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-icons fa-fw me-1 fa-xs"></i></div>
|
<div class="col-auto pe-1"><i class="fa-solid fa-icons fa-fw me-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ transaction.category.name }}</div>
|
<div class="col ps-0">{{ transaction.category.name }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
{# Tags#}
|
{# Tags#}
|
||||||
{% with transaction.tags.all as tags %}
|
{% with transaction.tags.all as tags %}
|
||||||
{% if tags %}
|
{% if tags %}
|
||||||
<div class="row mb-2 mb-lg-1 tw-text-gray-400">
|
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div>
|
<div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ tags|join:", " }}</div>
|
<div class="col ps-0">{{ tags|join:", " }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
<div>
|
<div>
|
||||||
{# Item actions#}
|
{# Item actions#}
|
||||||
<div
|
<div
|
||||||
class="transaction-actions !tw-absolute tw-left-1/2 tw-top-0 tw--translate-x-1/2 tw--translate-y-1/2 tw-invisible d-flex flex-row card">
|
class="transaction-actions tw:absolute! tw:left-1/2 tw:top-0 tw:-translate-x-1/2 tw:-translate-y-1/2 tw:invisible d-flex flex-row card">
|
||||||
<div class="card-body p-1 shadow-lg">
|
<div class="card-body p-1 shadow-lg">
|
||||||
{% if not transaction.deleted %}
|
{% if not transaction.deleted %}
|
||||||
<a class="btn btn-secondary btn-sm transaction-action"
|
<a class="btn btn-secondary btn-sm transaction-action"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="card mb-2 transaction-item">
|
<div class="card mb-2 transaction-item">
|
||||||
<div class="card-body p-2 tw-flex tw-items-center tw-gap-3" data-bs-toggle="collapse" data-bs-target="#{{ transaction.id }}" role="button" aria-expanded="false" aria-controls="{{ transaction.id }}">
|
<div class="card-body p-2 tw:flex tw:items-center tw:gap-3" data-bs-toggle="collapse" data-bs-target="#{{ transaction.id }}" role="button" aria-expanded="false" aria-controls="{{ transaction.id }}">
|
||||||
<!-- Main visible content -->
|
<!-- Main visible content -->
|
||||||
<div class="tw-flex flex-lg-row flex-column lg:tw-items-center tw-w-full tw-gap-3">
|
<div class="tw:flex flex-lg-row flex-column tw:lg:items-center tw:w-full tw:gap-3">
|
||||||
<!-- Type indicator -->
|
<!-- Type indicator -->
|
||||||
<div class="tw-w-8">
|
<div class="tw:w-8">
|
||||||
{% if transaction.type == 'IN' %}
|
{% if transaction.type == 'IN' %}
|
||||||
<span class="badge bg-success">↑</span>
|
<span class="badge bg-success">↑</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Payment status -->
|
<!-- Payment status -->
|
||||||
<div class="tw-w-8">
|
<div class="tw:w-8">
|
||||||
{% if transaction.is_paid %}
|
{% if transaction.is_paid %}
|
||||||
<span class="badge bg-success">✓</span>
|
<span class="badge bg-success">✓</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -21,13 +21,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Description -->
|
<!-- Description -->
|
||||||
<div class="tw-flex-grow">
|
<div class="tw:flex-grow">
|
||||||
<span class="tw-font-medium">{{ transaction.description }}</span>
|
<span class="tw:font-medium">{{ transaction.description }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Amount -->
|
<!-- Amount -->
|
||||||
<div class="tw-text-right tw-whitespace-nowrap">
|
<div class="tw:text-right tw:whitespace-nowrap">
|
||||||
<span class="{% if transaction.type == 'IN' %}tw-text-green-400{% else %}tw-text-red-400{% endif %}">
|
<span class="{% if transaction.type == 'IN' %}tw:text-green-400{% else %}tw:text-red-400{% endif %}">
|
||||||
{{ transaction.amount }}
|
{{ transaction.amount }}
|
||||||
</span>
|
</span>
|
||||||
{% if transaction.exchanged_amount %}
|
{% if transaction.exchanged_amount %}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="col card shadow">
|
<div class="col card shadow">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% if account.account.group %}
|
{% if account.account.group %}
|
||||||
<div class="tw-text-sm mb-2">
|
<div class="tw:text-sm mb-2">
|
||||||
<span class="badge text-bg-primary ">{{ account.account.group }}</span>
|
<span class="badge text-bg-primary ">{{ account.account.group }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -12,11 +12,11 @@
|
|||||||
</h5>
|
</h5>
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected income' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected income' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if account.income_projected != 0 %}
|
{% if account.income_projected != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-green-400">
|
<div class="text-end font-monospace tw:text-green-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.income_projected"
|
:amount="account.income_projected"
|
||||||
:prefix="account.currency.prefix"
|
:prefix="account.currency.prefix"
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.income_projected %}
|
{% if account.exchanged and account.exchanged.income_projected %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.income_projected"
|
:amount="account.exchanged.income_projected"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
@@ -38,12 +38,12 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected expenses' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected expenses' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div>
|
<div>
|
||||||
{% if account.expense_projected != 0 %}
|
{% if account.expense_projected != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-red-400">
|
<div class="text-end font-monospace tw:text-red-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.expense_projected"
|
:amount="account.expense_projected"
|
||||||
:prefix="account.currency.prefix"
|
:prefix="account.currency.prefix"
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.expense_projected %}
|
{% if account.exchanged and account.exchanged.expense_projected %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.expense_projected"
|
:amount="account.exchanged.expense_projected"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div
|
<div
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged.total_projected and account.exchanged.total_projected %}
|
{% if account.exchanged.total_projected and account.exchanged.total_projected %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.total_projected"
|
:amount="account.exchanged.total_projected"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
@@ -91,11 +91,11 @@
|
|||||||
<hr class="my-3">
|
<hr class="my-3">
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current income' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current income' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if account.income_current != 0 %}
|
{% if account.income_current != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-green-400">
|
<div class="text-end font-monospace tw:text-green-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.income_current"
|
:amount="account.income_current"
|
||||||
:prefix="account.currency.prefix"
|
:prefix="account.currency.prefix"
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.income_current %}
|
{% if account.exchanged and account.exchanged.income_current %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.income_current"
|
:amount="account.exchanged.income_current"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
@@ -117,11 +117,11 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current expenses' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current expenses' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if account.expense_current != 0 %}
|
{% if account.expense_current != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-red-400">
|
<div class="text-end font-monospace tw:text-red-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.expense_current"
|
:amount="account.expense_current"
|
||||||
:prefix="account.currency.prefix"
|
:prefix="account.currency.prefix"
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.expense_current %}
|
{% if account.exchanged and account.exchanged.expense_current %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.expense_current"
|
:amount="account.exchanged.expense_current"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.total_current %}
|
{% if account.exchanged and account.exchanged.total_current %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.total_current"
|
:amount="account.exchanged.total_current"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
<hr class="my-3">
|
<hr class="my-3">
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'final total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'final total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.total_final %}
|
{% if account.exchanged and account.exchanged.total_final %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.exchanged.total_final"
|
:amount="account.exchanged.total_final"
|
||||||
:prefix="account.exchanged.currency.prefix"
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="card tw-relative h-100 shadow">
|
<div class="card tw:relative h-100 shadow">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{{ slot }}
|
{{ slot }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
</h5>
|
</h5>
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected income' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected income' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if currency.income_projected != 0 %}
|
{% if currency.income_projected != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-green-400">
|
<div class="text-end font-monospace tw:text-green-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.income_projected"
|
:amount="currency.income_projected"
|
||||||
:prefix="currency.currency.prefix"
|
:prefix="currency.currency.prefix"
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.income_projected %}
|
{% if currency.exchanged and currency.exchanged.income_projected %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.income_projected"
|
:amount="currency.exchanged.income_projected"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
@@ -33,12 +33,12 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected expenses' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected expenses' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div>
|
<div>
|
||||||
{% if currency.expense_projected != 0 %}
|
{% if currency.expense_projected != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-red-400">
|
<div class="text-end font-monospace tw:text-red-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.expense_projected"
|
:amount="currency.expense_projected"
|
||||||
:prefix="currency.currency.prefix"
|
:prefix="currency.currency.prefix"
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.expense_projected %}
|
{% if currency.exchanged and currency.exchanged.expense_projected %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.expense_projected"
|
:amount="currency.exchanged.expense_projected"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged.total_projected and currency.exchanged.total_projected %}
|
{% if currency.exchanged.total_projected and currency.exchanged.total_projected %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.total_projected"
|
:amount="currency.exchanged.total_projected"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
@@ -85,11 +85,11 @@
|
|||||||
<hr class="my-3">
|
<hr class="my-3">
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current income' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current income' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if currency.income_current != 0 %}
|
{% if currency.income_current != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-green-400">
|
<div class="text-end font-monospace tw:text-green-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.income_current"
|
:amount="currency.income_current"
|
||||||
:prefix="currency.currency.prefix"
|
:prefix="currency.currency.prefix"
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.income_current %}
|
{% if currency.exchanged and currency.exchanged.income_current %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.income_current"
|
:amount="currency.exchanged.income_current"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
@@ -111,11 +111,11 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current expenses' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current expenses' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if currency.expense_current != 0 %}
|
{% if currency.expense_current != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-red-400">
|
<div class="text-end font-monospace tw:text-red-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.expense_current"
|
:amount="currency.expense_current"
|
||||||
:prefix="currency.currency.prefix"
|
:prefix="currency.currency.prefix"
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.expense_current %}
|
{% if currency.exchanged and currency.exchanged.expense_current %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.expense_current"
|
:amount="currency.exchanged.expense_current"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.total_current %}
|
{% if currency.exchanged and currency.exchanged.total_current %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.total_current"
|
:amount="currency.exchanged.total_current"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
<hr class="my-3">
|
<hr class="my-3">
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'final total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'final total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.total_final %}
|
{% if currency.exchanged and currency.exchanged.total_final %}
|
||||||
<div class="text-end font-monospace tw-text-gray-500">
|
<div class="text-end font-monospace tw:text-gray-500">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.exchanged.total_final"
|
:amount="currency.exchanged.total_final"
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="tw-sticky tw-bottom-4 tw-left-0 tw-right-0 tw-z-50 tw-hidden mx-auto tw-w-fit" id="actions-bar"
|
<div class="tw:sticky tw:bottom-4 tw:left-0 tw:right-0 tw:z-50 tw:hidden mx-auto tw:w-fit" id="actions-bar"
|
||||||
_="on change from #transactions-list or htmx:afterSettle from window
|
_="on change from #transactions-list or htmx:afterSettle from window
|
||||||
if #actions-bar then
|
if #actions-bar then
|
||||||
if no <input[type='checkbox']:checked/> in #transactions-list
|
if no <input[type='checkbox']:checked/> in #transactions-list
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
add .slide-in-bottom-reverse then settle
|
add .slide-in-bottom-reverse then settle
|
||||||
then add .tw-hidden to #actions-bar
|
then add .tw:hidden to #actions-bar
|
||||||
then remove .slide-in-bottom-reverse
|
then remove .slide-in-bottom-reverse
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
remove .tw-hidden from #actions-bar
|
remove .tw:hidden from #actions-bar
|
||||||
then trigger selected_transactions_updated
|
then trigger selected_transactions_updated
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -26,20 +26,20 @@
|
|||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
_="on click set <#transactions-list input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
|
_="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 me-3"></i>{% translate 'Select All' %}
|
<i class="fa-regular fa-square-check tw:text-green-400 me-3"></i>{% translate 'Select All' %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
|
_="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 me-3"></i>{% translate 'Unselect All' %}
|
<i class="fa-regular fa-square tw:text-red-400 me-3"></i>{% translate 'Unselect All' %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="vr tw-align-middle"></div>
|
<div class="vr tw:align-middle"></div>
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-secondary btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_undelete' %}"
|
hx-get="{% url 'transactions_bulk_undelete' %}"
|
||||||
hx-include=".transaction"
|
hx-include=".transaction"
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
_="install prompt_swal">
|
_="install prompt_swal">
|
||||||
<i class="fa-solid fa-trash text-danger"></i>
|
<i class="fa-solid fa-trash text-danger"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="vr tw-align-middle"></div>
|
<div class="vr tw:align-middle"></div>
|
||||||
<div class="btn-group"
|
<div class="btn-group"
|
||||||
_="on selected_transactions_updated from #actions-bar
|
_="on selected_transactions_updated from #actions-bar
|
||||||
set realTotal to math.bignumber(0)
|
set realTotal to math.bignumber(0)
|
||||||
@@ -118,10 +118,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Flat Total" %}
|
{% trans "Flat Total" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-flat-total"
|
id="calc-menu-flat-total"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -138,10 +138,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Real Total" %}
|
{% trans "Real Total" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-real-total"
|
id="calc-menu-real-total"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -158,10 +158,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Mean" %}
|
{% trans "Mean" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-mean"
|
id="calc-menu-mean"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -178,10 +178,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Max" %}
|
{% trans "Max" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-max"
|
id="calc-menu-max"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -198,10 +198,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Min" %}
|
{% trans "Min" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-min"
|
id="calc-menu-min"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -218,10 +218,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Count" %}
|
{% trans "Count" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-count"
|
id="calc-menu-count"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<span class="tw-text-xs text-white-50 mx-1"
|
<span class="tw:text-xs text-white-50 mx-1"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{{ content }}">
|
data-bs-title="{{ content }}">
|
||||||
<i class="{% if not icon %}fa-solid fa-circle-question{% else %}{{ icon }}{% endif %} fa-fw"></i>
|
<i class="{% if not icon %}fa-solid fa-circle-question{% else %}{{ icon }}{% endif %} fa-fw"></i>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="card tw-relative h-100 shadow">
|
<div class="card tw:relative h-100 shadow">
|
||||||
<div class="tw-absolute tw-h-8 tw-w-8 tw-right-2 tw-top-2 tw-bg-{{ color }}-300 tw-text-{{ color }}-800 text-center align-items-center d-flex justify-content-center rounded-2">
|
<div class="tw:absolute tw:h-8 tw:w-8 tw:right-2 tw:top-2 tw:bg-{{ color }}-300 tw:text-{{ color }}-800 text-center align-items-center d-flex justify-content-center rounded-2">
|
||||||
{% if icon %}<i class="{{ icon }}"></i>{% else %}<span class="fw-bold">{{ title.0 }}</span>{% endif %}
|
{% if icon %}<i class="{{ icon }}"></i>{% else %}<span class="fw-bold">{{ title.0 }}</span>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="tw-text-{{ color }}-400 fw-bold tw-mr-[50px]" {{ attrs }}>{{ title }}{% if help_text %}<c-ui.help-icon :content="help_text" icon=""></c-ui.help-icon>{% endif %}</h5>
|
<h5 class="tw:text-{{ color }}-400 fw-bold tw:mr-[50px]" {{ attrs }}>{{ title }}{% if help_text %}<c-ui.help-icon :content="help_text" icon=""></c-ui.help-icon>{% endif %}</h5>
|
||||||
{{ slot }}
|
{{ slot }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="progress-stacked">
|
<div class="progress-stacked">
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.income_projected|floatformat:"2u" }}%">
|
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.income_projected|floatformat:"2u" }}%">
|
||||||
<div class="progress-bar progress-bar-striped !tw-bg-green-300"
|
<div class="progress-bar progress-bar-striped tw:bg-green-300!"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-placement="top"
|
data-bs-placement="top"
|
||||||
title="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)">
|
title="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Current Income' %} ({{ percentage.percentages.income_current|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.income_current|floatformat:"2u" }}%">
|
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Current Income' %} ({{ percentage.percentages.income_current|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.income_current|floatformat:"2u" }}%">
|
||||||
<div class="progress-bar !tw-bg-green-400"
|
<div class="progress-bar tw:bg-green-400!"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-placement="top"
|
data-bs-placement="top"
|
||||||
title="{% trans 'Current Income' %} ({{ p.percentages.income_current|floatformat:2 }}%)">
|
title="{% trans 'Current Income' %} ({{ p.percentages.income_current|floatformat:2 }}%)">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.expense_projected|floatformat:"2u" }}%">
|
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.expense_projected|floatformat:"2u" }}%">
|
||||||
<div class="progress-bar progress-bar-striped !tw-bg-red-300"
|
<div class="progress-bar progress-bar-striped tw:bg-red-300!"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-placement="top"
|
data-bs-placement="top"
|
||||||
title="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)">
|
title="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.expense_current|floatformat:"2u" }}%">
|
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.expense_current|floatformat:"2u" }}%">
|
||||||
<div class="progress-bar !tw-bg-red-400"
|
<div class="progress-bar tw:bg-red-400!"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-placement="top"
|
data-bs-placement="top"
|
||||||
title="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)">
|
title="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)">
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="tw-sticky tw-bottom-4 tw-left-0 tw-right-0 tw-z-50 tw-hidden mx-auto tw-w-fit" id="actions-bar"
|
<div class="tw:sticky tw:bottom-4 tw:left-0 tw:right-0 tw:z-50 tw:hidden mx-auto tw:w-fit" id="actions-bar"
|
||||||
_="on change from #transactions-list or htmx:afterSettle from window
|
_="on change from #transactions-list or htmx:afterSettle from window
|
||||||
if #actions-bar then
|
if #actions-bar then
|
||||||
if no <input[type='checkbox']:checked/> in #transactions-list
|
if no <input[type='checkbox']:checked/> in #transactions-list
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
add .slide-in-bottom-reverse then settle
|
add .slide-in-bottom-reverse then settle
|
||||||
then add .tw-hidden to #actions-bar
|
then add .tw:hidden to #actions-bar
|
||||||
then remove .slide-in-bottom-reverse
|
then remove .slide-in-bottom-reverse
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
remove .tw-hidden from #actions-bar
|
remove .tw:hidden from #actions-bar
|
||||||
then trigger selected_transactions_updated
|
then trigger selected_transactions_updated
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -26,20 +26,20 @@
|
|||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
_="on click set <#transactions-list .transaction:not([style*='display: none']) input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
|
_="on click set <#transactions-list .transaction:not([style*='display: none']) 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 me-3"></i>{% translate 'Select All' %}
|
<i class="fa-regular fa-square-check tw:text-green-400 me-3"></i>{% translate 'Select All' %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
|
_="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 me-3"></i>{% translate 'Unselect All' %}
|
<i class="fa-regular fa-square tw:text-red-400 me-3"></i>{% translate 'Unselect All' %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="vr tw-align-middle"></div>
|
<div class="vr tw:align-middle"></div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-secondary btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_edit' %}"
|
hx-get="{% url 'transactions_bulk_edit' %}"
|
||||||
@@ -56,17 +56,17 @@
|
|||||||
|
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
hx-get="{% url 'transactions_bulk_unpay' %}"
|
hx-get="{% url 'transactions_bulk_unpay' %}"
|
||||||
hx-include=".transaction">
|
hx-include=".transaction">
|
||||||
<i class="fa-regular fa-circle tw-text-red-400 fa-fw me-3"></i>{% translate 'Mark as unpaid' %}
|
<i class="fa-regular fa-circle tw:text-red-400 fa-fw me-3"></i>{% translate 'Mark as unpaid' %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
hx-get="{% url 'transactions_bulk_pay' %}"
|
hx-get="{% url 'transactions_bulk_pay' %}"
|
||||||
hx-include=".transaction">
|
hx-include=".transaction">
|
||||||
<i class="fa-regular fa-circle-check tw-text-green-400 fa-fw me-3"></i>{% translate 'Mark as paid' %}
|
<i class="fa-regular fa-circle-check tw:text-green-400 fa-fw me-3"></i>{% translate 'Mark as paid' %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
_="install prompt_swal">
|
_="install prompt_swal">
|
||||||
<i class="fa-solid fa-trash text-danger"></i>
|
<i class="fa-solid fa-trash text-danger"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="vr tw-align-middle"></div>
|
<div class="vr tw:align-middle"></div>
|
||||||
<div class="btn-group"
|
<div class="btn-group"
|
||||||
_="on selected_transactions_updated from #actions-bar
|
_="on selected_transactions_updated from #actions-bar
|
||||||
set realTotal to math.bignumber(0)
|
set realTotal to math.bignumber(0)
|
||||||
@@ -149,10 +149,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Flat Total" %}
|
{% trans "Flat Total" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-flat-total"
|
id="calc-menu-flat-total"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -169,10 +169,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Real Total" %}
|
{% trans "Real Total" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-real-total"
|
id="calc-menu-real-total"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -189,10 +189,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Mean" %}
|
{% trans "Mean" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-mean"
|
id="calc-menu-mean"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -209,10 +209,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Max" %}
|
{% trans "Max" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-max"
|
id="calc-menu-max"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -229,10 +229,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Min" %}
|
{% trans "Min" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-min"
|
id="calc-menu-min"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
@@ -249,10 +249,10 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item-text p-0">
|
<div class="dropdown-item-text p-0">
|
||||||
<div>
|
<div>
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium px-3">
|
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
||||||
{% trans "Count" %}
|
{% trans "Count" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-item px-3 tw-cursor-pointer"
|
<div class="dropdown-item px-3 tw:cursor-pointer"
|
||||||
id="calc-menu-count"
|
id="calc-menu-count"
|
||||||
_="on click
|
_="on click
|
||||||
set original_value to my innerText
|
set original_value to my innerText
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Currencies' %}<span>
|
<div>{% translate 'Currencies' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container-fluid px-md-3 py-3 column-gap-5">
|
<div class="container-fluid px-md-3 py-3 column-gap-5">
|
||||||
<div class="d-lg-flex justify-content-between mb-3 w-100">
|
<div class="d-lg-flex justify-content-between mb-3 w-100">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace d-flex align-items-center">
|
<div class="tw:text-3xl fw-bold font-monospace d-flex align-items-center">
|
||||||
{{ strategy.name }}
|
{{ strategy.name }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm text-lg-end mt-2 mt-lg-0">
|
<div class="tw:text-sm text-lg-end mt-2 mt-lg-0">
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<span class="badge rounded-pill text-bg-secondary">{{ strategy.payment_currency.name }}</span> x <span class="badge rounded-pill text-bg-secondary">{{ strategy.target_currency.name }}</span>
|
<span class="badge rounded-pill text-bg-secondary">{{ strategy.payment_currency.name }}</span> x <span class="badge rounded-pill text-bg-secondary">{{ strategy.target_currency.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
• {{ strategy.current_price.1|date:"SHORT_DATETIME_FORMAT" }}
|
• {{ strategy.current_price.1|date:"SHORT_DATETIME_FORMAT" }}
|
||||||
</c-amount.display>
|
</c-amount.display>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="tw-text-red-400">{% trans "No exchange rate available" %}</div>
|
<div class="tw:text-red-400">{% trans "No exchange rate available" %}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div class="card-title tw-text-xl">{% trans "Entries" %}<span>
|
<div class="card-title tw:text-xl">{% trans "Entries" %}<span>
|
||||||
<a class="text-decoration-none p-1 category-action"
|
<a class="text-decoration-none p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{% trans "Total P/L" %}</h5>
|
<h5 class="card-title">{% trans "Total P/L" %}</h5>
|
||||||
<div
|
<div
|
||||||
class="card-text {% if strategy.total_profit_loss >= 0 %}tw-text-green-400{% else %}tw-text-red-400{% endif %}">
|
class="card-text {% if strategy.total_profit_loss >= 0 %}tw:text-green-400{% else %}tw:text-red-400{% endif %}">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="strategy.total_profit_loss"
|
:amount="strategy.total_profit_loss"
|
||||||
:prefix="strategy.payment_currency.prefix"
|
:prefix="strategy.payment_currency.prefix"
|
||||||
@@ -206,7 +206,7 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{% trans "Total % P/L" %}</h5>
|
<h5 class="card-title">{% trans "Total % P/L" %}</h5>
|
||||||
<div
|
<div
|
||||||
class="card-text {% if strategy.total_profit_loss >= 0 %}tw-text-green-400{% else %}tw-text-red-400{% endif %}">
|
class="card-text {% if strategy.total_profit_loss >= 0 %}tw:text-green-400{% else %}tw:text-red-400{% endif %}">
|
||||||
{{ strategy.total_profit_loss_percentage|floatformat:2 }}%
|
{{ strategy.total_profit_loss_percentage|floatformat:2 }}%
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -451,7 +451,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{% trans "Investment Frequency" %}</h5>
|
<h5 class="card-title">{% trans "Investment Frequency" %}</h5>
|
||||||
<p class="card-text tw-text-gray-400">
|
<p class="card-text tw:text-gray-400">
|
||||||
{% trans "The straighter the blue line, the more consistent your DCA strategy is." %}
|
{% trans "The straighter the blue line, the more consistent your DCA strategy is." %}
|
||||||
</p>
|
</p>
|
||||||
<canvas id="frequencyChart"></canvas>
|
<canvas id="frequencyChart"></canvas>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Dollar Cost Average Strategies' %}<span>
|
<div>{% translate 'Dollar Cost Average Strategies' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
@@ -25,12 +25,12 @@
|
|||||||
<a href="{% url 'dca_strategy_detail_index' strategy_id=strategy.id %}" hx-boost="true"
|
<a href="{% url 'dca_strategy_detail_index' strategy_id=strategy.id %}" hx-boost="true"
|
||||||
class="text-decoration-none card-body">
|
class="text-decoration-none card-body">
|
||||||
<div class="">
|
<div class="">
|
||||||
<div class="card-title tw-text-xl">{{ strategy.name }}</div>
|
<div class="card-title tw:text-xl">{{ strategy.name }}</div>
|
||||||
<div class="card-text tw-text-gray-400">{{ strategy.notes }}</div>
|
<div class="card-text tw:text-gray-400">{{ strategy.notes }}</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<div class="card-footer text-end">
|
<div class="card-footer text-end">
|
||||||
<a class="text-decoration-none tw-text-gray-400 p-1"
|
<a class="text-decoration-none tw:text-gray-400 p-1"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Edit" %}"
|
data-bs-title="{% translate "Edit" %}"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Entities' %}<span>
|
<div>{% translate 'Entities' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{% load currency_display %}
|
{% load currency_display %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Exchange Rates' %}<span>
|
<div>{% translate 'Exchange Rates' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
<nav aria-label="{% translate 'Page navigation' %}">
|
<nav aria-label="{% translate 'Page navigation' %}">
|
||||||
<ul class="pagination justify-content-center mt-5">
|
<ul class="pagination justify-content-center mt-5">
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
|
<a class="page-link tw:cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
|
||||||
hx-get="{% if page_obj.has_previous %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
hx-get="{% if page_obj.has_previous %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
||||||
hx-vals='{"page": 1, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": 1, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -79,13 +79,13 @@
|
|||||||
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
||||||
{% if page_obj.number == page_number %}
|
{% if page_obj.number == page_number %}
|
||||||
<li class="page-item active">
|
<li class="page-item active">
|
||||||
<a class="page-link tw-cursor-pointer">
|
<a class="page-link tw:cursor-pointer">
|
||||||
{{ page_number }}
|
{{ page_number }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer"
|
<a class="page-link tw:cursor-pointer"
|
||||||
hx-get="{% url 'exchange_rates_list_pair' %}"
|
hx-get="{% url 'exchange_rates_list_pair' %}"
|
||||||
hx-vals='{"page": {{ page_number }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": {{ page_number }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-target="#exchange-rates-table"
|
hx-target="#exchange-rates-table"
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer"
|
<a class="page-link tw:cursor-pointer"
|
||||||
hx-get="{% url 'exchange_rates_list_pair' %}" hx-target="#exchange-rates-table"
|
hx-get="{% url 'exchange_rates_list_pair' %}" hx-target="#exchange-rates-table"
|
||||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw-cursor-pointer"
|
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer"
|
||||||
hx-get="{% if page_obj.has_next %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
hx-get="{% if page_obj.has_next %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
||||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{% load currency_display %}
|
{% load currency_display %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Automatic Exchange Rates' %}<span>
|
<div>{% translate 'Automatic Exchange Rates' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
<nav aria-label="{% translate 'Page navigation' %}">
|
<nav aria-label="{% translate 'Page navigation' %}">
|
||||||
<ul class="pagination justify-content-center mt-5">
|
<ul class="pagination justify-content-center mt-5">
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
|
<a class="page-link tw:cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
|
||||||
hx-get="{% if page_obj.has_previous %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
hx-get="{% if page_obj.has_previous %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
||||||
hx-vals='{"page": 1, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": 1, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -79,13 +79,13 @@
|
|||||||
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
||||||
{% if page_obj.number == page_number %}
|
{% if page_obj.number == page_number %}
|
||||||
<li class="page-item active">
|
<li class="page-item active">
|
||||||
<a class="page-link tw-cursor-pointer">
|
<a class="page-link tw:cursor-pointer">
|
||||||
{{ page_number }}
|
{{ page_number }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer"
|
<a class="page-link tw:cursor-pointer"
|
||||||
hx-get="{% url 'exchange_rates_list_pair' %}"
|
hx-get="{% url 'exchange_rates_list_pair' %}"
|
||||||
hx-vals='{"page": {{ page_number }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": {{ page_number }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-target="#exchange-rates-table"
|
hx-target="#exchange-rates-table"
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer"
|
<a class="page-link tw:cursor-pointer"
|
||||||
hx-get="{% url 'exchange_rates_list_pair' %}" hx-target="#exchange-rates-table"
|
hx-get="{% url 'exchange_rates_list_pair' %}" hx-target="#exchange-rates-table"
|
||||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw-cursor-pointer"
|
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer"
|
||||||
hx-get="{% if page_obj.has_next %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
hx-get="{% if page_obj.has_next %}{% url 'exchange_rates_list_pair' %}{% endif %}"
|
||||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
hx-vals='{"page": {{ page_obj.paginator.num_pages }}, "from": "{{ from_currency|default_if_none:"" }}", "to": "{{ to_currency|default_if_none:"" }}"}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{% block body %}
|
{% block body %}
|
||||||
{% if message %}
|
{% if message %}
|
||||||
<div class="alert alert-info" role="alert" id="msg" hx-preserve="true">
|
<div class="alert alert-info" role="alert" id="msg" hx-preserve="true">
|
||||||
<h6 class="alert-heading tw-italic tw-font-bold">{% trans 'A message from the author' %}</h6>
|
<h6 class="alert-heading tw:italic tw:font-bold">{% trans 'A message from the author' %}</h6>
|
||||||
<hr>
|
<hr>
|
||||||
<p class="mb-0">{{ message|linebreaksbr }}</p>
|
<p class="mb-0">{{ message|linebreaksbr }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Import Profiles' %}<span>
|
<div>{% translate 'Import Profiles' %}<span>
|
||||||
<span class="dropdown" data-bs-toggle="tooltip"
|
<span class="dropdown" data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}">
|
data-bs-title="{% translate "Add" %}">
|
||||||
<a class="text-decoration-none tw-text-2xl p-1" role="button"
|
<a class="text-decoration-none tw:text-2xl p-1" role="button"
|
||||||
data-bs-toggle="dropdown"
|
data-bs-toggle="dropdown"
|
||||||
data-bs-title="{% translate "Add" %}" aria-expanded="false">
|
data-bs-title="{% translate "Add" %}" aria-expanded="false">
|
||||||
<i class="fa-solid fa-circle-plus fa-fw"></i>
|
<i class="fa-solid fa-circle-plus fa-fw"></i>
|
||||||
|
|||||||
@@ -15,20 +15,20 @@
|
|||||||
{% for run in runs %}
|
{% for run in runs %}
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header tw-text-sm {% if run.status == run.Status.QUEUED %}tw-text-white{% elif run.status == run.Status.PROCESSING %}text-warning{% elif run.status == run.Status.FINISHED %}text-success{% else %}text-danger{% endif %}">
|
<div class="card-header tw:text-sm {% if run.status == run.Status.QUEUED %}text-body{% elif run.status == run.Status.PROCESSING %}text-warning{% elif run.status == run.Status.FINISHED %}text-success{% else %}text-danger{% endif %}">
|
||||||
<span><i class="fa-solid {% if run.status == run.Status.QUEUED %}fa-hourglass-half{% elif run.status == run.Status.PROCESSING %}fa-spinner{% elif run.status == run.Status.FINISHED %}fa-check{% else %}fa-xmark{% endif %} fa-fw me-2"></i>{{ run.get_status_display }}</span>
|
<span><i class="fa-solid {% if run.status == run.Status.QUEUED %}fa-hourglass-half{% elif run.status == run.Status.PROCESSING %}fa-spinner{% elif run.status == run.Status.FINISHED %}fa-check{% else %}fa-xmark{% endif %} fa-fw me-2"></i>{{ run.get_status_display }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title"><i class="fa-solid fa-hashtag me-1 tw-text-xs tw-text-gray-400"></i>{{ run.id }}<span class="tw-text-xs tw-text-gray-400 ms-1">({{ run.file_name }})</span></h5>
|
<h5 class="card-title"><i class="fa-solid fa-hashtag me-1 tw:text-xs tw:text-gray-400"></i>{{ run.id }}<span class="tw:text-xs tw:text-gray-400 ms-1">({{ run.file_name }})</span></h5>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 w-100 g-4">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 w-100 g-4">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="d-flex flex-row">
|
<div class="d-flex flex-row">
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium">
|
<div class="text-body-secondary tw:text-xs tw:font-medium">
|
||||||
{% trans 'Total Items' %}
|
{% trans 'Total Items' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm">
|
<div class="tw:text-sm">
|
||||||
{{ run.total_rows }}
|
{{ run.total_rows }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -38,10 +38,10 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="d-flex flex-row">
|
<div class="d-flex flex-row">
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium">
|
<div class="text-body-secondary tw:text-xs tw:font-medium">
|
||||||
{% trans 'Processed Items' %}
|
{% trans 'Processed Items' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm">
|
<div class="tw:text-sm">
|
||||||
{{ run.processed_rows }}
|
{{ run.processed_rows }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -51,10 +51,10 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="d-flex flex-row">
|
<div class="d-flex flex-row">
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium">
|
<div class="text-body-secondary tw:text-xs tw:font-medium">
|
||||||
{% trans 'Skipped Items' %}
|
{% trans 'Skipped Items' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm">
|
<div class="tw:text-sm">
|
||||||
{{ run.skipped_rows }}
|
{{ run.skipped_rows }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -64,10 +64,10 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="d-flex flex-row">
|
<div class="d-flex flex-row">
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium">
|
<div class="text-body-secondary tw:text-xs tw:font-medium">
|
||||||
{% trans 'Failed Items' %}
|
{% trans 'Failed Items' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm">
|
<div class="tw:text-sm">
|
||||||
{{ run.failed_rows }}
|
{{ run.failed_rows }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -77,10 +77,10 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="d-flex flex-row">
|
<div class="d-flex flex-row">
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<div class="text-body-secondary tw-text-xs tw-font-medium">
|
<div class="text-body-secondary tw:text-xs tw:font-medium">
|
||||||
{% trans 'Successful Items' %}
|
{% trans 'Successful Items' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm">
|
<div class="tw:text-sm">
|
||||||
{{ run.successful_rows }}
|
{{ run.successful_rows }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% block title %}{% translate 'Logs for' %} #{{ run.id }}{% endblock %}
|
{% block title %}{% translate 'Logs for' %} #{{ run.id }}{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="card tw-max-h-full tw-overflow-auto">
|
<div class="card tw:max-h-full tw:overflow-auto">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{{ run.logs|linebreaks }}
|
{{ run.logs|linebreaks }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="navbarContent">
|
<div class="collapse navbar-collapse" id="navbarContent">
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0 nav-underline" hx-push-url="true">
|
<ul class="navbar-nav me-auto mb-3 mb-lg-0 nav-underline" hx-push-url="true">
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle {% active_link views='monthly_overview||yearly_overview_currency||yearly_overview_account||calendar' %}"
|
<a class="nav-link dropdown-toggle {% active_link views='monthly_overview||yearly_overview_currency||yearly_overview_account||calendar' %}"
|
||||||
href="#"
|
href="#"
|
||||||
@@ -161,16 +161,16 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="navbar-nav mt-3 mb-2 mb-lg-0 mt-lg-0">
|
<ul class="navbar-nav mb-2 mb-lg-0 gap-3">
|
||||||
<li class="nav-item text-center w-100">
|
<li class="nav-item">
|
||||||
<a class="nav-item tw-text-2xl tw-cursor-pointer me-lg-4"
|
<div class="nav-link tw:lg:text-2xl! tw:cursor-pointer"
|
||||||
data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="{% trans "Calculator" %}"
|
data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="{% trans "Calculator" %}"
|
||||||
_="on click trigger show on #calculator">
|
_="on click trigger show on #calculator">
|
||||||
<i class="fa-solid fa-calculator"></i>
|
<i class="fa-solid fa-calculator"></i>
|
||||||
</a>
|
<span class="d-lg-none d-inline">{% trans "Calculator" %}</span>
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="text-center w-100">{% include 'includes/navbar/user_menu.html' %}</li>
|
<li class="w-100">{% include 'includes/navbar/user_menu.html' %}</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
{% load settings %}
|
{% load settings %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<a class="tw-text-2xl" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
<div class="nav-link tw:lg:text-2xl! tw:cursor-pointer" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
<i class="fa-solid fa-user"></i>
|
<i class="fa-solid fa-user"></i>
|
||||||
</a>
|
<span class="d-lg-none d-inline">{% trans "Profile" %}</span>
|
||||||
|
</div>
|
||||||
<ul class="dropdown-menu dropdown-menu-start dropdown-menu-lg-end">
|
<ul class="dropdown-menu dropdown-menu-start dropdown-menu-lg-end">
|
||||||
<li class="dropdown-item-text">{{ user.email }}</li>
|
<li class="dropdown-item-text">{{ user.email }}</li>
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
{# We use this to preload dynamically generated tailwind classes so the compiler can build them ahead of time #}
|
{# We use this to preload dynamically generated tailwind classes so the compiler can build them ahead of time #}
|
||||||
|
|
||||||
<div class="tw-text-blue-800"></div>
|
<div class="tw:text-blue-800"></div>
|
||||||
<div class="tw-text-yellow-800"></div>
|
<div class="tw:text-yellow-800"></div>
|
||||||
<div class="tw-text-red-800"></div>
|
<div class="tw:text-red-800"></div>
|
||||||
<div class="tw-text-green-800"></div>
|
<div class="tw:text-green-800"></div>
|
||||||
<div class="tw-text-blue-400"></div>
|
<div class="tw:text-blue-400"></div>
|
||||||
<div class="tw-text-yellow-400"></div>
|
<div class="tw:text-yellow-400"></div>
|
||||||
<div class="tw-text-red-400"></div>
|
<div class="tw:text-red-400"></div>
|
||||||
<div class="tw-text-green-400"></div>
|
<div class="tw:text-green-400"></div>
|
||||||
<div class="tw-bg-blue-300"></div>
|
<div class="tw:bg-blue-300"></div>
|
||||||
<div class="tw-bg-yellow-300"></div>
|
<div class="tw:bg-yellow-300"></div>
|
||||||
<div class="tw-bg-red-300"></div>
|
<div class="tw:bg-red-300"></div>
|
||||||
<div class="tw-bg-green-300"></div>
|
<div class="tw:bg-green-300"></div>
|
||||||
|
|||||||
@@ -1,15 +1,19 @@
|
|||||||
<script type="text/hyperscript">
|
<script type="text/hyperscript">
|
||||||
on paid if body do not include #settings-mute-sound
|
on paid if body do not include #settings-mute-sound
|
||||||
js
|
js
|
||||||
|
volume = JSON.parse(document.getElementById('volume').textContent) / 10
|
||||||
paidSound.pause()
|
paidSound.pause()
|
||||||
paidSound.currentTime = 0
|
paidSound.currentTime = 0
|
||||||
|
paidSound.volume = volume
|
||||||
paidSound.play()
|
paidSound.play()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
on unpaid if body do not include #settings-mute-sound
|
on unpaid if body do not include #settings-mute-sound
|
||||||
js
|
js
|
||||||
|
volume = JSON.parse(document.getElementById('volume').textContent) / 10
|
||||||
unpaidSound.pause()
|
unpaidSound.pause()
|
||||||
unpaidSound.currentTime = 0
|
unpaidSound.currentTime = 0
|
||||||
|
unpaidSound.volume = volume
|
||||||
unpaidSound.play()
|
unpaidSound.play()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
{% load webpack_loader %}
|
{% load webpack_loader %}
|
||||||
|
|
||||||
{% stylesheet_pack 'style' %}
|
{% stylesheet_pack 'style' %}
|
||||||
{#{% stylesheet_pack 'select' %}#}
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{% load formats %}
|
{% load formats %}
|
||||||
<div class="tw-hidden tw-w-[60vw] lg:tw-w-[30vw] xl:tw-w-[20vw] position-fixed shadow rounded-3 bg-body tw-border-gray-700 tw-border tw-border-solid tw-text-center tw-align-middle tw-z-[2000] tw-touch-none user-select-none"
|
<div class="tw:hidden tw:w-[60vw] tw:lg:w-[30vw] tw:xl:w-[20vw] position-fixed shadow rounded-3 bg-body tw:border-gray-700 tw:border tw:border-solid tw:text-center tw:align-middle tw:z-[2000] tw:touch-none user-select-none"
|
||||||
id="calculator"
|
id="calculator"
|
||||||
hx-preserve
|
hx-preserve
|
||||||
_="
|
_="
|
||||||
@@ -13,8 +13,8 @@
|
|||||||
on focusin halt the event end -- this prevents bootstrap's static offcanvas from hijacking the focus from the input when open end
|
on focusin halt the event end -- this prevents bootstrap's static offcanvas from hijacking the focus from the input when open end
|
||||||
|
|
||||||
on show or keyup[code is 'KeyC' and altKey is true] from body
|
on show or keyup[code is 'KeyC' and altKey is true] from body
|
||||||
if my.classList.contains('tw-hidden')
|
if my.classList.contains('tw:hidden')
|
||||||
remove .tw-hidden from me
|
remove .{'tw:hidden'} from me
|
||||||
measure my width, height
|
measure my width, height
|
||||||
set xoff to (window.innerWidth/2) - (width/2)
|
set xoff to (window.innerWidth/2) - (width/2)
|
||||||
set yoff to (window.innerHeight/2) - (height)
|
set yoff to (window.innerHeight/2) - (height)
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
then call #calculator-input.focus()
|
then call #calculator-input.focus()
|
||||||
else
|
else
|
||||||
add .scale-out-center to me then wait for animationend then remove .scale-out-center from me
|
add .scale-out-center to me then wait for animationend then remove .scale-out-center from me
|
||||||
add .tw-hidden to me
|
add .{'tw:hidden'} to me
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
end">
|
end">
|
||||||
|
|
||||||
<div id="calculator-handle"
|
<div id="calculator-handle"
|
||||||
class="position-absolute bg-secondary rounded-top-2 tw-cursor-move d-flex align-items-center justify-content-center tw-top-[-20px] tw-left-[3px] tw-w-[2em] tw-h-[20px]">
|
class="position-absolute bg-secondary rounded-top-2 tw:cursor-move d-flex align-items-center justify-content-center tw:top-[-20px] tw:left-[3px] tw:w-[2em] tw:h-[20px]">
|
||||||
<i class="fa-solid fa-grip"></i>
|
<i class="fa-solid fa-grip"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -73,31 +73,31 @@
|
|||||||
end
|
end
|
||||||
then set localizedResult to it
|
then set localizedResult to it
|
||||||
set #calculator-result.innerText to localizedResult
|
set #calculator-result.innerText to localizedResult
|
||||||
then remove .tw-hidden from #calculator-result-container
|
then remove .{'tw:hidden'} from #calculator-result-container
|
||||||
then add .swing-in-top-fwd to #calculator-result-container
|
then add .swing-in-top-fwd to #calculator-result-container
|
||||||
then settle
|
then settle
|
||||||
then remove .swing-in-top-fwd from #calculator-result-container
|
then remove .swing-in-top-fwd from #calculator-result-container
|
||||||
else
|
else
|
||||||
add .swing-out-top-bck to #calculator-result-container
|
add .swing-out-top-bck to #calculator-result-container
|
||||||
then settle
|
then settle
|
||||||
then add .tw-hidden to #calculator-result-container
|
then add .{'tw:hidden'} to #calculator-result-container
|
||||||
then remove .swing-out-top-bck from #calculator-result-container
|
then remove .swing-out-top-bck from #calculator-result-container
|
||||||
end
|
end
|
||||||
catch e
|
catch e
|
||||||
add .swing-out-top-bck to #calculator-result-container
|
add .swing-out-top-bck to #calculator-result-container
|
||||||
then settle
|
then settle
|
||||||
then add .tw-hidden to #calculator-result-container
|
then add .{'tw:hidden'} to #calculator-result-container
|
||||||
then remove .swing-out-top-bck from #calculator-result-container
|
then remove .swing-out-top-bck from #calculator-result-container
|
||||||
end"
|
end"
|
||||||
placeholder="2 + 2">
|
placeholder="2 + 2">
|
||||||
<div class="tw-hidden" id="calculator-result-container">
|
<div class="tw:hidden" id="calculator-result-container">
|
||||||
<div class="d-flex flex-row p-2 justify-content-between">
|
<div class="d-flex flex-row p-2 justify-content-between">
|
||||||
<div class="tw-text-gray-400">=</div>
|
<div class="tw:text-gray-400">=</div>
|
||||||
<div id="calculator-result" class="user-select-all"></div>
|
<div id="calculator-result" class="user-select-all"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="position-absolute tw-cursor-pointer top-0 start-100 translate-middle tw-p-0 text-bg-primary border border-light rounded-circle tw-flex tw-items-center tw-justify-center tw-w-5 tw-h-5"
|
<div class="position-absolute tw:cursor-pointer top-0 start-100 translate-middle tw:p-0 text-bg-primary border border-light rounded-circle tw:flex tw:items-center tw:justify-center tw:w-5 tw:h-5"
|
||||||
_="on click trigger show on #calculator">
|
_="on click trigger show on #calculator">
|
||||||
<i class="fa-solid fa-xmark tw-flex tw-items-center tw-justify-center tw-w-full tw-h-full"></i>
|
<i class="fa-solid fa-xmark tw:flex tw:items-center tw:justify-center tw:w-full tw:h-full"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -12,17 +12,17 @@
|
|||||||
data-bs-target="#flush-collapse-{{ id }}" aria-expanded="false"
|
data-bs-target="#flush-collapse-{{ id }}" aria-expanded="false"
|
||||||
aria-controls="flush-collapse-{{ id }}">
|
aria-controls="flush-collapse-{{ id }}">
|
||||||
<span>
|
<span>
|
||||||
<span class="tw-text-gray-300">{% trans "You've spent an average of" %}</span>
|
<span class="tw:text-gray-300">{% trans "You've spent an average of" %}</span>
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="data.average"
|
:amount="data.average"
|
||||||
:prefix="data.currency.prefix"
|
:prefix="data.currency.prefix"
|
||||||
:suffix="data.currency.suffix"
|
:suffix="data.currency.suffix"
|
||||||
:decimal_places="data.currency.decimal_places"
|
:decimal_places="data.currency.decimal_places"
|
||||||
custom_class="tw-text-3xl"
|
custom_class="tw:text-3xl"
|
||||||
divless></c-amount.display>
|
divless></c-amount.display>
|
||||||
<span class="tw-text-gray-300">{% trans 'on the last 12 months, at this rate you could go by' %}</span>
|
<span class="tw:text-gray-300">{% trans 'on the last 12 months, at this rate you could go by' %}</span>
|
||||||
<span class="tw-text-3xl">{{ data.months }}</span>
|
<span class="tw:text-3xl">{{ data.months }}</span>
|
||||||
<span class="tw-text-gray-300">{% trans 'months without any income.' %}</span>
|
<span class="tw:text-gray-300">{% trans 'months without any income.' %}</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'average expenses' %}</div>
|
<div class="tw:text-gray-400">{% translate 'average expenses' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'liquid total' %}</div>
|
<div class="tw:text-gray-400">{% translate 'liquid total' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'months left' %}</div>
|
<div class="tw:text-gray-400">{% translate 'months left' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="show-loading" hx-get="{% url 'insights_sankey_by_currency' %}" hx-trigger="updated from:window"
|
<div class="show-loading" hx-get="{% url 'insights_sankey_by_currency' %}" hx-trigger="updated from:window"
|
||||||
hx-swap="outerHTML" hx-include="#picker-form, #picker-type">
|
hx-swap="outerHTML" hx-include="#picker-form, #picker-type">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="chart-container position-relative tw-min-h-[85vh] tw-max-h-[85vh] tw-h-full tw-w-full"
|
<div class="chart-container position-relative tw:min-h-[85vh] tw:max-h-[85vh] tw:h-full tw:w-full"
|
||||||
id="sankeyContainer"
|
id="sankeyContainer"
|
||||||
_="init call setupSankeyChart() end">
|
_="init call setupSankeyChart() end">
|
||||||
<canvas id="sankeyChart"></canvas>
|
<canvas id="sankeyChart"></canvas>
|
||||||
|
|||||||
@@ -8,27 +8,27 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row my-3 h-100">
|
<div class="row my-3 h-100">
|
||||||
<div class="col-lg-2 col-md-3 mb-3 mb-md-0">
|
<div class="col-lg-2 col-md-3 mb-3 mb-md-0">
|
||||||
<div class="position-sticky tw-top-3">
|
<div class="position-sticky tw:top-3">
|
||||||
<div class="">
|
<div class="">
|
||||||
<div class="mb-2 w-100 d-lg-inline-flex d-grid gap-2 flex-wrap justify-content-lg-center" role="group"
|
<div class="mb-2 w-100 d-lg-inline-flex d-grid gap-2 flex-wrap justify-content-lg-center" role="group"
|
||||||
_="on change
|
_="on change
|
||||||
set type to event.target.value
|
set type to event.target.value
|
||||||
add .tw-hidden to <#picker-form > div:not(.tw-hidden)/>
|
add .tw:hidden to <#picker-form > div:not(.tw:hidden)/>
|
||||||
|
|
||||||
if type == 'month'
|
if type == 'month'
|
||||||
remove .tw-hidden from #month-form
|
remove .tw:hidden from #month-form
|
||||||
end
|
end
|
||||||
if type == 'year'
|
if type == 'year'
|
||||||
remove .tw-hidden from #year-form
|
remove .tw:hidden from #year-form
|
||||||
end
|
end
|
||||||
if type == 'month-range'
|
if type == 'month-range'
|
||||||
remove .tw-hidden from #month-range-form
|
remove .tw:hidden from #month-range-form
|
||||||
end
|
end
|
||||||
if type == 'year-range'
|
if type == 'year-range'
|
||||||
remove .tw-hidden from #year-range-form
|
remove .tw:hidden from #year-range-form
|
||||||
end
|
end
|
||||||
if type == 'date-range'
|
if type == 'date-range'
|
||||||
remove .tw-hidden from #date-range-form
|
remove .tw:hidden from #date-range-form
|
||||||
end
|
end
|
||||||
then trigger updated"
|
then trigger updated"
|
||||||
id="picker-type">
|
id="picker-type">
|
||||||
@@ -60,16 +60,16 @@
|
|||||||
<div id="month-form" class="">
|
<div id="month-form" class="">
|
||||||
{% crispy month_form %}
|
{% crispy month_form %}
|
||||||
</div>
|
</div>
|
||||||
<div id="year-form" class="tw-hidden">
|
<div id="year-form" class="tw:hidden">
|
||||||
{% crispy year_form %}
|
{% crispy year_form %}
|
||||||
</div>
|
</div>
|
||||||
<div id="month-range-form" class="tw-hidden">
|
<div id="month-range-form" class="tw:hidden">
|
||||||
{% crispy month_range_form %}
|
{% crispy month_range_form %}
|
||||||
</div>
|
</div>
|
||||||
<div id="year-range-form" class="tw-hidden">
|
<div id="year-range-form" class="tw:hidden">
|
||||||
{% crispy year_range_form %}
|
{% crispy year_range_form %}
|
||||||
</div>
|
</div>
|
||||||
<div id="date-range-form" class="tw-hidden">
|
<div id="date-range-form" class="tw:hidden">
|
||||||
{% crispy date_range_form %}
|
{% crispy date_range_form %}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Installment Plans' %}<span>
|
<div>{% translate 'Installment Plans' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -64,10 +64,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="col">
|
<td class="col">
|
||||||
<div class="{% if installment_plan.type == 'EX' %}tw-text-red-400{% else %}tw-text-green-400{% endif %}">
|
<div class="{% if installment_plan.type == 'EX' %}tw:text-red-400{% else %}tw:text-green-400{% endif %}">
|
||||||
{{ installment_plan.description }}
|
{{ installment_plan.description }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm tw-text-gray-400">{{ installment_plan.notes|linebreaksbr }}</div>
|
<div class="tw:text-sm tw:text-gray-400">{{ installment_plan.notes|linebreaksbr }}</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<div class="container px-md-3 py-3 column-gap-5"
|
<div class="container px-md-3 py-3 column-gap-5"
|
||||||
_="install init_tom_select
|
_="install init_tom_select
|
||||||
install init_datepicker">
|
install init_datepicker">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
<div>{% translate 'Currency Converter' %}</div>
|
<div>{% translate 'Currency Converter' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>{{ form.from_currency|as_crispy_field }}</div>
|
<div>{{ form.from_currency|as_crispy_field }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col text-primary tw-flex tw-items-center tw-justify-center my-3 my-lg-0">
|
<div class="col text-primary tw:flex tw:items-center tw:justify-center my-3 my-lg-0">
|
||||||
<i class="fa-solid fa-equals"></i>
|
<i class="fa-solid fa-equals"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-5">
|
<div class="col-12 col-lg-5">
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="tw-cursor-pointer text-primary text-end"
|
<div class="tw:cursor-pointer text-primary text-end"
|
||||||
_="on click
|
_="on click
|
||||||
set from_value to #id_from_currency's value
|
set from_value to #id_from_currency's value
|
||||||
set to_value to #id_to_currency's value
|
set to_value to #id_to_currency's value
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
{% for rate in data.rates.values %}
|
{% for rate in data.rates.values %}
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">
|
<div class="tw:text-gray-400">
|
||||||
{# <c-amount.display#}
|
{# <c-amount.display#}
|
||||||
{# :amount="1"#}
|
{# :amount="1"#}
|
||||||
{# :prefix="data.prefix"#}
|
{# :prefix="data.prefix"#}
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
{% if currency.income_projected != 0 %}
|
{% if currency.income_projected != 0 %}
|
||||||
<div class="text-end font-monospace tw-text-green-400">
|
<div class="text-end font-monospace tw:text-green-400">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="rate.rate"
|
:amount="rate.rate"
|
||||||
:prefix="rate.prefix"
|
:prefix="rate.prefix"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
{% 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="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
<div>{% translate 'Unit Price Calculator' %}</div>
|
<div>{% translate 'Unit Price Calculator' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card mb-3 d-none" id="card-placeholder">
|
<div class="card mb-3 d-none" id="card-placeholder">
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg">
|
<div class="col-lg">
|
||||||
<label class="form-label">{% trans 'Unit price' %}</label>
|
<label class="form-label">{% trans 'Unit price' %}</label>
|
||||||
<div class="unit-price tw-text-xl" data-amount="0">0</div>
|
<div class="unit-price tw:text-xl" data-amount="0">0</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg">
|
<div class="col-lg">
|
||||||
<label class="form-label">{% trans 'Unit price' %}</label>
|
<label class="form-label">{% trans 'Unit price' %}</label>
|
||||||
<div class="unit-price tw-text-xl" data-amount="0">0</div>
|
<div class="unit-price tw:text-xl" data-amount="0">0</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg">
|
<div class="col-lg">
|
||||||
<label class="form-label">{% trans 'Unit price' %}</label>
|
<label class="form-label">{% trans 'Unit price' %}</label>
|
||||||
<div class="unit-price tw-text-xl" data-amount="0">0</div>
|
<div class="unit-price tw:text-xl" data-amount="0">0</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
{% for x in transactions_by_date %}
|
{% for x in transactions_by_date %}
|
||||||
<div id="{{ x.grouper|slugify }}" class="transactions-divider"
|
<div id="{{ x.grouper|slugify }}" class="transactions-divider"
|
||||||
_="on htmx:afterSwap from #transactions if sessionStorage.getItem(my id) is null then sessionStorage.setItem(my id, 'true')">
|
_="on htmx:afterSwap from #transactions if sessionStorage.getItem(my id) is null then sessionStorage.setItem(my id, 'true')">
|
||||||
<div class="mt-3 mb-1 w-100 tw-text-base border-bottom bg-body transactions-divider-title">
|
<div class="mt-3 mb-1 w-100 tw:text-base border-bottom bg-body transactions-divider-title">
|
||||||
<a class="text-decoration-none d-inline-block w-100"
|
<a class="text-decoration-none d-inline-block w-100"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="collapse"
|
data-bs-toggle="collapse"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<c-ui.info-card color="yellow" icon="fa-solid fa-calendar-day" title="{% trans 'Daily Spending Allowance' %}" help_text={% trans "This is the final total divided by the remaining days in the month" %}>
|
<c-ui.info-card color="yellow" icon="fa-solid fa-calendar-day" title="{% trans 'Daily Spending Allowance' %}" help_text={% trans "This is the final total divided by the remaining days in the month" %}>
|
||||||
<div class="d-flex justify-content-between mt-3">
|
<div class="d-flex justify-content-between mt-3">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'today' %}</div>
|
<div class="tw:text-gray-400">{% translate 'today' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in daily_spending_allowance.values %}
|
{% for currency in daily_spending_allowance.values %}
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<c-ui.info-card color="green" icon="fa-solid fa-arrow-right-to-bracket" title="{% trans 'Income' %}">
|
<c-ui.info-card color="green" icon="fa-solid fa-arrow-right-to-bracket" title="{% trans 'Income' %}">
|
||||||
<div class="d-flex justify-content-between mt-3">
|
<div class="d-flex justify-content-between mt-3">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in income_current.values %}
|
{% for currency in income_current.values %}
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
<hr class="my-1">
|
<hr class="my-1">
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in income_projected.values %}
|
{% for currency in income_projected.values %}
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<c-ui.info-card color="red" icon="fa-solid fa-arrow-right-from-bracket" title="{% trans 'Expenses' %}">
|
<c-ui.info-card color="red" icon="fa-solid fa-arrow-right-from-bracket" title="{% trans 'Expenses' %}">
|
||||||
<div class="d-flex justify-content-between mt-3">
|
<div class="d-flex justify-content-between mt-3">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in expense_current.values %}
|
{% for currency in expense_current.values %}
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
<hr class="my-1">
|
<hr class="my-1">
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in expense_projected.values %}
|
{% for currency in expense_projected.values %}
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
<c-ui.info-card color="blue" icon="fa-solid fa-scale-balanced" title="{% trans 'Total' %}">
|
<c-ui.info-card color="blue" icon="fa-solid fa-scale-balanced" title="{% trans 'Total' %}">
|
||||||
<div class="d-flex justify-content-between mt-3">
|
<div class="d-flex justify-content-between mt-3">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'current' %}</div>
|
<div class="tw:text-gray-400">{% translate 'current' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in total_current.values %}
|
{% for currency in total_current.values %}
|
||||||
@@ -196,7 +196,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="d-flex justify-content-between mt-3">
|
<div class="d-flex justify-content-between mt-3">
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
<div class="tw-text-gray-400">{% translate 'projected' %}</div>
|
<div class="tw:text-gray-400">{% translate 'projected' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="text-end font-monospace">
|
||||||
{% for currency in total_projected.values %}
|
{% for currency in total_projected.values %}
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<c-ui.info-card color="yellow" icon="fa-solid fa-percent" title="{% trans 'Distribution' %}">
|
<c-ui.info-card color="yellow" icon="fa-solid fa-percent" title="{% trans 'Distribution' %}">
|
||||||
{% for p in percentages.values %}
|
{% for p in percentages.values %}
|
||||||
<p class="tw-text-gray-400 mb-2 {% if not forloop.first %}mt-3{% endif %}">{{ p.currency.name }}</p>
|
<p class="tw:text-gray-400 mb-2 {% if not forloop.first %}mt-3{% endif %}">{{ p.currency.name }}</p>
|
||||||
<c-ui.percentage-distribution :percentage="p"></c-ui.percentage-distribution>
|
<c-ui.percentage-distribution :percentage="p"></c-ui.percentage-distribution>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</c-ui.info-card>
|
</c-ui.info-card>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
||||||
{# Date picker#}
|
{# Date picker#}
|
||||||
<div class="col-12 col-xl-4 flex-row align-items-center d-flex">
|
<div class="col-12 col-xl-4 flex-row align-items-center d-flex">
|
||||||
<div class="tw-text-base h-100 align-items-center d-flex">
|
<div class="tw:text-base h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="pe-4 py-2"
|
class="pe-4 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
href="{% url 'monthly_overview' month=previous_month year=previous_year %}"><i
|
href="{% url 'monthly_overview' month=previous_month year=previous_year %}"><i
|
||||||
class="fa-solid fa-chevron-left"></i></a>
|
class="fa-solid fa-chevron-left"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full text-center"
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full text-center"
|
||||||
hx-get="{% url 'month_year_picker' %}"
|
hx-get="{% url 'month_year_picker' %}"
|
||||||
hx-target="#generic-offcanvas-left"
|
hx-target="#generic-offcanvas-left"
|
||||||
hx-trigger="click, date_picker from:window"
|
hx-trigger="click, date_picker from:window"
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
role="button">
|
role="button">
|
||||||
{{ month|month_name }} {{ year }}
|
{{ month|month_name }} {{ year }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-base mx-2 h-100 align-items-center d-flex">
|
<div class="tw:text-base mx-2 h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="ps-3 py-2"
|
class="ps-3 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
@@ -143,11 +143,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{# Ordering button#}
|
{# Ordering button#}
|
||||||
<div class="col-sm-6 col-12 tw-content-center my-3 my-sm-0">
|
<div class="col-sm-6 col-12 tw:content-center my-3 my-sm-0">
|
||||||
<div class="text-sm-end" _="on change trigger updated on window">
|
<div class="text-sm-end" _="on change trigger updated on window">
|
||||||
<label for="order">{% translate "Order by" %}</label>
|
<label for="order">{% translate "Order by" %}</label>
|
||||||
<select
|
<select
|
||||||
class="tw-border-0 focus-visible:tw-outline-0 w-full pe-2 tw-leading-normal text-bg-tertiary tw-font-medium rounded"
|
class="tw:border-0 tw:focus-visible:outline-0 w-full pe-2 tw:leading-normal text-bg-tertiary tw:font-medium rounded bg-body text-body"
|
||||||
name="order" id="order">
|
name="order" id="order">
|
||||||
<option value="default"
|
<option value="default"
|
||||||
{% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
|
{% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
{% 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"
|
<div class="currency-name text-start font-monospace tw:text-gray-300"
|
||||||
_="on click showOnlyCurrencyDataset('{{ currency.currency.name }}')">
|
_="on click showOnlyCurrencyDataset('{{ currency.currency.name }}')">
|
||||||
{{ currency.currency.name }}
|
{{ currency.currency.name }}
|
||||||
</div>
|
</div>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if currency.consolidated and currency.consolidated.total_final != currency.total_final %}
|
{% if currency.consolidated and currency.consolidated.total_final != currency.total_final %}
|
||||||
<div class="d-flex align-items-baseline w-100">
|
<div class="d-flex align-items-baseline w-100">
|
||||||
<div class="account-name text-start font-monospace tw-text-gray-300">
|
<div class="account-name text-start font-monospace tw:text-gray-300">
|
||||||
<span class="hierarchy-line-icon"></span>{% trans 'Consolidated' %}</div>
|
<span class="hierarchy-line-icon"></span>{% trans 'Consolidated' %}</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="dotted-line flex-grow-1"></div>
|
||||||
<div class="">
|
<div class="">
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-xl-7">
|
<div class="col-12 col-xl-7">
|
||||||
<div class="chart-container position-relative tw-min-h-[40vh] tw-h-full">
|
<div class="chart-container position-relative tw:min-h-[40vh] tw:h-full">
|
||||||
<canvas id="currencyBalanceChart"></canvas>
|
<canvas id="currencyBalanceChart"></canvas>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -85,14 +85,14 @@
|
|||||||
{% if data.grouper %}
|
{% if data.grouper %}
|
||||||
<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"><span class="badge text-bg-primary">
|
<div class="text-start font-monospace tw:text-gray-300"><span class="badge text-bg-primary">
|
||||||
{{ data.grouper }}</span></div>
|
{{ data.grouper }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% 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="account-name text-start font-monospace tw-text-gray-300"
|
<div class="account-name text-start font-monospace tw:text-gray-300"
|
||||||
_="on click showOnlyAccountDataset('{{ account.account.name }}')">
|
_="on click showOnlyAccountDataset('{{ account.account.name }}')">
|
||||||
<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>
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
{% 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="account-name text-start font-monospace tw-text-gray-300"
|
<div class="account-name text-start font-monospace tw:text-gray-300"
|
||||||
_="on click showOnlyAccountDataset('{{ account.account.name }}')">
|
_="on click showOnlyAccountDataset('{{ account.account.name }}')">
|
||||||
{{ account.account.name }}
|
{{ account.account.name }}
|
||||||
</div>
|
</div>
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-xl-7">
|
<div class="col-12 col-xl-7">
|
||||||
<div class="chart-container position-relative tw-min-h-[40vh] tw-h-full">
|
<div class="chart-container position-relative tw:min-h-[40vh] tw:h-full">
|
||||||
<canvas id="accountBalanceChart"></canvas>
|
<canvas id="accountBalanceChart"></canvas>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
{% for qt in quick_transactions %}
|
{% for qt in quick_transactions %}
|
||||||
<a hx-get="{% url 'quick_transaction_add_as_transaction' quick_transaction_id=qt.id %}"
|
<a hx-get="{% url 'quick_transaction_add_as_transaction' quick_transaction_id=qt.id %}"
|
||||||
class="list-group-item list-group-item-action tw-cursor-pointer {% if qt.type == 'EX' %}!tw-text-red-400{% else %}!tw-text-green-400{% endif %}">{{ qt.name }}</a>
|
class="list-group-item list-group-item-action tw:cursor-pointer {% if qt.type == 'EX' %}tw:text-red-400!{% else %}tw:text-green-400!{% endif %}">{{ qt.name }}</a>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<c-msg.empty title="{% translate "Nothing to see here..." %}" remove-padding></c-msg.empty>
|
<c-msg.empty title="{% translate "Nothing to see here..." %}" remove-padding></c-msg.empty>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="col">
|
<td class="col">
|
||||||
<div
|
<div
|
||||||
class="{% if qt.type == 'EX' %}tw-text-red-400{% else %}tw-text-green-400{% endif %}">
|
class="{% if qt.type == 'EX' %}tw:text-red-400{% else %}tw:text-green-400{% endif %}">
|
||||||
{{ qt.name }}
|
{{ qt.name }}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
{% 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="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Quick Transactions' %}<span>
|
<div>{% translate 'Quick Transactions' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Recurring Transactions' %}<span>
|
<div>{% translate 'Recurring Transactions' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -100,10 +100,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="col">
|
<td class="col">
|
||||||
<div class="{% if recurring_transaction.type == 'EX' %}tw-text-red-400{% else %}tw-text-green-400{% endif %}">
|
<div class="{% if recurring_transaction.type == 'EX' %}tw:text-red-400{% else %}tw:text-green-400{% endif %}">
|
||||||
{{ recurring_transaction.description }}
|
{{ recurring_transaction.description }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-sm tw-text-gray-400">{{ recurring_transaction.notes|linebreaksbr }}</div>
|
<div class="tw:text-sm tw:text-gray-400">{{ recurring_transaction.notes|linebreaksbr }}</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Rules' %}<span>
|
<div>{% translate 'Rules' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
@@ -76,13 +76,13 @@
|
|||||||
data-bs-title="
|
data-bs-title="
|
||||||
{% if rule.active %}{% translate "Deactivate" %}{% else %}{% translate "Activate" %}{% endif %}"
|
{% if rule.active %}{% translate "Deactivate" %}{% else %}{% translate "Activate" %}{% endif %}"
|
||||||
hx-get="{% url 'transaction_rule_toggle_activity' transaction_rule_id=rule.id %}">
|
hx-get="{% url 'transaction_rule_toggle_activity' transaction_rule_id=rule.id %}">
|
||||||
{% if rule.active %}<i class="fa-solid fa-toggle-on tw-text-green-400"></i>{% else %}
|
{% if rule.active %}<i class="fa-solid fa-toggle-on tw:text-green-400"></i>{% else %}
|
||||||
<i class="fa-solid fa-toggle-off tw-text-red-400"></i>{% endif %}
|
<i class="fa-solid fa-toggle-off tw:text-red-400"></i>{% endif %}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="col">
|
<td class="col">
|
||||||
<div>{{ rule.name }}</div>
|
<div>{{ rule.name }}</div>
|
||||||
<div class="tw-text-gray-400">{{ rule.description }}</div>
|
<div class="tw:text-gray-400">{{ rule.description }}</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -7,17 +7,17 @@
|
|||||||
{% block body %}
|
{% block body %}
|
||||||
<div hx-get="{% url 'transaction_rule_view' transaction_rule_id=transaction_rule.id %}"
|
<div hx-get="{% url 'transaction_rule_view' transaction_rule_id=transaction_rule.id %}"
|
||||||
hx-trigger="updated from:window" hx-target="closest .offcanvas" class="show-loading">
|
hx-trigger="updated from:window" hx-target="closest .offcanvas" class="show-loading">
|
||||||
<div class="tw-text-2xl">{{ transaction_rule.name }}</div>
|
<div class="tw:text-2xl">{{ transaction_rule.name }}</div>
|
||||||
<div class="tw-text-base tw-text-gray-400">{{ transaction_rule.description }}</div>
|
<div class="tw:text-base tw:text-gray-400">{{ transaction_rule.description }}</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="my-3">
|
<div class="my-3">
|
||||||
<div class="tw-text-xl mb-2">{% translate 'If transaction...' %}</div>
|
<div class="tw:text-xl mb-2">{% translate 'If transaction...' %}</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{{ transaction_rule.trigger }}
|
{{ transaction_rule.trigger }}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-end">
|
<div class="card-footer text-end">
|
||||||
<a class="text-decoration-none tw-text-gray-400 p-1"
|
<a class="text-decoration-none tw:text-gray-400 p-1"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Edit" %}"
|
data-bs-title="{% translate "Edit" %}"
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="my-3">
|
<div class="my-3">
|
||||||
<div class="tw-text-xl mb-2">{% translate 'Then...' %}</div>
|
<div class="tw:text-xl mb-2">{% translate 'Then...' %}</div>
|
||||||
{% for action in transaction_rule.transaction_actions.all %}
|
{% for action in transaction_rule.transaction_actions.all %}
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<div class="text-bg-secondary rounded-3 mt-3 p-2">{{ action.value }}</div>
|
<div class="text-bg-secondary rounded-3 mt-3 p-2">{{ action.value }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-end">
|
<div class="card-footer text-end">
|
||||||
<a class="text-decoration-none tw-text-gray-400 p-1"
|
<a class="text-decoration-none tw:text-gray-400 p-1"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Edit" %}"
|
data-bs-title="{% translate "Edit" %}"
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
<div>{% trans 'Edit to view' %}</div>
|
<div>{% trans 'Edit to view' %}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-end">
|
<div class="card-footer text-end">
|
||||||
<a class="text-decoration-none tw-text-gray-400 p-1"
|
<a class="text-decoration-none tw:text-gray-400 p-1"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Edit" %}"
|
data-bs-title="{% translate "Edit" %}"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Tags' %}<span>
|
<div>{% translate 'Tags' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
{% for x in transactions_by_date %}
|
{% for x in transactions_by_date %}
|
||||||
<div id="{{ x.grouper|slugify }}"
|
<div id="{{ x.grouper|slugify }}"
|
||||||
_="on htmx:afterSettle from #transactions if sessionStorage.getItem(my id) is null then sessionStorage.setItem(my id, 'true')">
|
_="on htmx:afterSettle from #transactions if sessionStorage.getItem(my id) is null then sessionStorage.setItem(my id, 'true')">
|
||||||
<div class="mt-3 mb-1 w-100 tw-text-base border-bottom bg-body">
|
<div class="mt-3 mb-1 w-100 tw:text-base border-bottom bg-body">
|
||||||
<a class="text-decoration-none d-inline-block w-100"
|
<a class="text-decoration-none d-inline-block w-100"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="collapse"
|
data-bs-toggle="collapse"
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
<nav aria-label="{% translate 'Page navigation' %}">
|
<nav aria-label="{% translate 'Page navigation' %}">
|
||||||
<ul class="pagination justify-content-center mt-5">
|
<ul class="pagination justify-content-center mt-5">
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
|
<a class="page-link tw:cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
|
||||||
hx-get="{% if page_obj.has_previous %}{% url 'transactions_all_list' %}{% endif %}"
|
hx-get="{% if page_obj.has_previous %}{% url 'transactions_all_list' %}{% endif %}"
|
||||||
hx-vals='{"page": 1}'
|
hx-vals='{"page": 1}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -68,13 +68,13 @@
|
|||||||
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
||||||
{% if page_obj.number == page_number %}
|
{% if page_obj.number == page_number %}
|
||||||
<li class="page-item active">
|
<li class="page-item active">
|
||||||
<a class="page-link tw-cursor-pointer">
|
<a class="page-link tw:cursor-pointer">
|
||||||
{{ page_number }}
|
{{ page_number }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer"
|
<a class="page-link tw:cursor-pointer"
|
||||||
hx-get="{% url 'transactions_all_list' %}"
|
hx-get="{% url 'transactions_all_list' %}"
|
||||||
hx-vals='{"page": {{ page_number }}}'
|
hx-vals='{"page": {{ page_number }}}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link tw-cursor-pointer"
|
<a class="page-link tw:cursor-pointer"
|
||||||
hx-get="{% url 'transactions_all_list' %}" hx-target="#transactions-list"
|
hx-get="{% url 'transactions_all_list' %}" hx-target="#transactions-list"
|
||||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw-cursor-pointer"
|
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer"
|
||||||
hx-get="{% if page_obj.has_next %}{% url 'transactions_all_list' %}{% endif %}"
|
hx-get="{% if page_obj.has_next %}{% url 'transactions_all_list' %}{% endif %}"
|
||||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
||||||
hx-include="#filter, #order"
|
hx-include="#filter, #order"
|
||||||
|
|||||||
@@ -28,10 +28,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-xl-6 order-2 order-xl-1">
|
<div class="col-12 col-xl-6 order-2 order-xl-1">
|
||||||
<div class="text-end tw-justify-end tw-flex tw-text-sm mb-3">
|
<div class="text-end tw:justify-end tw:flex tw:text-sm mb-3">
|
||||||
<div class="tw-content-center" _="on change trigger updated on window">
|
<div class="tw:content-center" _="on change trigger updated on window">
|
||||||
<label for="order">{% translate "Order by" %}</label>
|
<label for="order">{% translate "Order by" %}</label>
|
||||||
<select class="tw-border-0 focus-visible:tw-outline-0 w-full pe-2 tw-leading-normal text-bg-tertiary tw-font-medium rounded" name="order" id="order">
|
<select class="tw:border-0 tw:focus-visible:outline-0 w-full pe-2 tw:leading-normal text-bg-tertiary tw:font-medium rounded bg-body text-body" name="order" id="order">
|
||||||
<option value="default" {% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
|
<option value="default" {% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
|
||||||
<option value="older" {% if order == 'older' %}selected{% endif %}>{% translate 'Oldest first' %}</option>
|
<option value="older" {% if order == 'older' %}selected{% endif %}>{% translate 'Oldest first' %}</option>
|
||||||
<option value="newer" {% if order == 'newer' %}selected{% endif %}>{% translate 'Newest first' %}</option>
|
<option value="newer" {% if order == 'newer' %}selected{% endif %}>{% translate 'Newest first' %}</option>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
{% 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="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
<div>{% translate 'Deleted transactions' %}</div>
|
<div>{% translate 'Deleted transactions' %}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{% load hijack %}
|
{% load hijack %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container px-md-3 py-3 column-gap-5">
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full mb-3">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Users' %}<span>
|
<div>{% translate 'Users' %}<span>
|
||||||
<a class="text-decoration-none tw-text-2xl p-1 category-action"
|
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{% translate "Add" %}"
|
data-bs-title="{% translate "Add" %}"
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<i class="fa-solid fa-volume-xmark me-2 fa-fw"></i>{% translate 'Mute sounds' %}
|
<i class="fa-solid fa-volume-xmark me-2 fa-fw"></i>{% translate 'Mute sounds' %}
|
||||||
|
{{ user.settings.volume|json_script:"volume" }}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<i class="fa-solid fa-volume-low me-2 fa-fw"></i>{% translate 'Play sounds' %}
|
<i class="fa-solid fa-volume-low me-2 fa-fw"></i>{% translate 'Play sounds' %}
|
||||||
<span id="settings-mute-sound" class="d-inline tw-invisible"></span>
|
<span id="settings-mute-sound" class="d-inline tw:invisible"></span>
|
||||||
|
{{ user.settings.volume|json_script:"volume" }}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<i class="fa-solid fa-eye me-2 fa-fw"></i>{% translate 'Show amounts' %}
|
<i class="fa-solid fa-eye me-2 fa-fw"></i>{% translate 'Show amounts' %}
|
||||||
<span id="settings-hide-amounts" class="d-inline tw-invisible"></span>
|
<span id="settings-hide-amounts" class="d-inline tw:invisible"></span>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
||||||
{# Date picker#}
|
{# Date picker#}
|
||||||
<div class="col-12 col-xl-2 flex-row align-items-center d-flex">
|
<div class="col-12 col-xl-2 flex-row align-items-center d-flex">
|
||||||
<div class="tw-text-base h-100 align-items-center d-flex">
|
<div class="tw:text-base h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="pe-4 py-2"
|
class="pe-4 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
@@ -24,10 +24,10 @@
|
|||||||
href="{% url 'yearly_overview_account' year=previous_year %}">
|
href="{% url 'yearly_overview_account' year=previous_year %}">
|
||||||
<i class="fa-solid fa-chevron-left"></i></a>
|
<i class="fa-solid fa-chevron-left"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full text-center">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full text-center">
|
||||||
{{ year }}
|
{{ year }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-base mx-2 h-100 align-items-center d-flex">
|
<div class="tw:text-base mx-2 h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="ps-3 py-2"
|
class="ps-3 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
||||||
{# Date picker#}
|
{# Date picker#}
|
||||||
<div class="col-12 col-xl-2 flex-row align-items-center d-flex">
|
<div class="col-12 col-xl-2 flex-row align-items-center d-flex">
|
||||||
<div class="tw-text-base h-100 align-items-center d-flex">
|
<div class="tw:text-base h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="pe-4 py-2"
|
class="pe-4 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
@@ -26,10 +26,10 @@
|
|||||||
href="{% url 'yearly_overview_currency' year=previous_year %}">
|
href="{% url 'yearly_overview_currency' year=previous_year %}">
|
||||||
<i class="fa-solid fa-chevron-left"></i></a>
|
<i class="fa-solid fa-chevron-left"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-3xl fw-bold font-monospace tw-w-full text-center">
|
<div class="tw:text-3xl fw-bold font-monospace tw:w-full text-center">
|
||||||
{{ year }}
|
{{ year }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-text-base mx-2 h-100 align-items-center d-flex">
|
<div class="tw:text-base mx-2 h-100 align-items-center d-flex">
|
||||||
<a role="button"
|
<a role="button"
|
||||||
class="ps-3 py-2"
|
class="ps-3 py-2"
|
||||||
hx-boost="true"
|
hx-boost="true"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM docker.io/node:18-bookworm-slim
|
FROM node:lts-alpine
|
||||||
|
|
||||||
WORKDIR /usr/src/frontend
|
WORKDIR /usr/src/frontend
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"eslint:recommended"
|
|
||||||
],
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 8,
|
|
||||||
"sourceType": "module",
|
|
||||||
"requireConfigFile": false
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"semi": 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,7 +10,7 @@ In the project directory, you can run:
|
|||||||
|
|
||||||
`npm run start` will launch a server process, which makes `live reloading` possible.
|
`npm run start` will launch a server process, which makes `live reloading` possible.
|
||||||
|
|
||||||
If you change JS or SCSS files, the web page would auto refresh after the change. Now the server is working on port 9091 by default, but you can change it in `webpack/webpack.config.dev.js`
|
If you change JS or SCSS files, the web page would auto refresh after the change. Now the server is working on port 9091 by default, but you can change it in `webpack/webpack.config.dev.cjs`
|
||||||
|
|
||||||
### `npm run watch`
|
### `npm run watch`
|
||||||
|
|
||||||
|
|||||||
39
frontend/eslint.config.mjs
Normal file
39
frontend/eslint.config.mjs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { defineConfig } from "eslint/config";
|
||||||
|
import globals from "globals";
|
||||||
|
import path from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
import js from "@eslint/js";
|
||||||
|
import { FlatCompat } from "@eslint/eslintrc";
|
||||||
|
import babelParser from "@babel/eslint-parser";
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
const compat = new FlatCompat({
|
||||||
|
baseDirectory: __dirname,
|
||||||
|
recommendedConfig: js.configs.recommended,
|
||||||
|
allConfig: js.configs.all
|
||||||
|
});
|
||||||
|
|
||||||
|
export default defineConfig([{
|
||||||
|
extends: compat.extends("eslint:recommended"),
|
||||||
|
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.browser,
|
||||||
|
...globals.node,
|
||||||
|
},
|
||||||
|
|
||||||
|
ecmaVersion: 8,
|
||||||
|
sourceType: "module",
|
||||||
|
parser: babelParser,
|
||||||
|
|
||||||
|
parserOptions: {
|
||||||
|
requireConfigFile: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
semi: 2,
|
||||||
|
"no-unused-vars": "warn",
|
||||||
|
},
|
||||||
|
}]);
|
||||||
9530
frontend/package-lock.json
generated
9530
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -3,9 +3,9 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"description": "Webpack boilerplate for Django & Flask",
|
"description": "Webpack boilerplate for Django & Flask",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "cross-env NODE_ENV=production webpack --config webpack/webpack.config.prod.js",
|
"build": "cross-env NODE_ENV=production webpack --config webpack/webpack.config.prod.cjs",
|
||||||
"start": "webpack serve --config webpack/webpack.config.dev.js",
|
"start": "webpack serve --config webpack/webpack.config.dev.cjs",
|
||||||
"watch": "webpack --watch --config webpack/webpack.config.watch.js"
|
"watch": "webpack --watch --config webpack/webpack.config.watch.cjs"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -22,53 +22,55 @@
|
|||||||
"url": "https://github.com/AccordBox/python-webpack-boilerplate/issues"
|
"url": "https://github.com/AccordBox/python-webpack-boilerplate/issues"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alpinejs/mask": "^3.14.1",
|
"@alpinejs/mask": "^3.14.9",
|
||||||
"@babel/core": "^7.16.7",
|
"@babel/core": "^7.27.7",
|
||||||
"@babel/eslint-parser": "^7.16.5",
|
"@babel/eslint-parser": "^7.27.5",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.16.7",
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
||||||
"@babel/preset-env": "^7.16.8",
|
"@babel/preset-env": "^7.27.2",
|
||||||
"@fortawesome/fontawesome-free": "^6.6.0",
|
"@fortawesome/fontawesome-free": "^6.7.2",
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"air-datepicker": "^3.5.3",
|
"@tailwindcss/postcss": "^4.1.11",
|
||||||
"alpinejs": "^3.14.1",
|
"air-datepicker": "^3.6.0",
|
||||||
"autoprefixer": "^10.4.14",
|
"alpinejs": "^3.14.9",
|
||||||
|
"autoprefixer": "^10.4.21",
|
||||||
"autosize": "^6.0.1",
|
"autosize": "^6.0.1",
|
||||||
"babel-loader": "^8.2.3",
|
"babel-loader": "^10.0.0",
|
||||||
"bootstrap": "^5.3.3",
|
"bootstrap": "^5.3.7",
|
||||||
"chart.js": "^4.4.6",
|
"chart.js": "^4.5.0",
|
||||||
"chartjs-chart-sankey": "^0.14.0",
|
"chartjs-chart-sankey": "^0.14.0",
|
||||||
"clean-webpack-plugin": "^4.0.0",
|
"clean-webpack-plugin": "^4.0.0",
|
||||||
"copy-webpack-plugin": "^11.0.0",
|
"copy-webpack-plugin": "^13.0.0",
|
||||||
"core-js": "^3.20.3",
|
"core-js": "^3.43.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"css-loader": "^6.8.1",
|
"css-loader": "^7.1.2",
|
||||||
"daisyui": "^4.12.13",
|
"eslint": "^9.30.0",
|
||||||
"eslint": "^8.57.1",
|
"eslint-webpack-plugin": "^5.0.2",
|
||||||
"eslint-webpack-plugin": "^3.1.1",
|
"globals": "^16.2.0",
|
||||||
"htmx.org": "^2.0.1",
|
"htmx.org": "^2.0.6",
|
||||||
"hyperscript.org": "^0.9.12",
|
"hyperscript.org": "^0.9.14",
|
||||||
"jquery": "^3.7.1",
|
"jquery": "^3.7.1",
|
||||||
"mathjs": "^14.0.1",
|
"mathjs": "^14.5.2",
|
||||||
"mini-css-extract-plugin": "^2.5.1",
|
"mini-css-extract-plugin": "^2.9.2",
|
||||||
"postcss-loader": "^6.2.1",
|
"postcss": "^8.5.6",
|
||||||
"postcss-preset-env": "^7.2.3",
|
"postcss-loader": "^8.1.1",
|
||||||
"sass": "~1.49.9",
|
"postcss-preset-env": "^10.2.4",
|
||||||
"sass-loader": "^13.3.2",
|
"sass": "~1.89.2",
|
||||||
|
"sass-loader": "^16.0.5",
|
||||||
"select2-bootstrap-5-theme": "^1.3.0",
|
"select2-bootstrap-5-theme": "^1.3.0",
|
||||||
"style-loader": "^3.3.3",
|
"style-loader": "^4.0.0",
|
||||||
"stylelint": "^14.2.0",
|
"stylelint": "^16.21.0",
|
||||||
"stylelint-config-standard-scss": "^6.1.0",
|
"stylelint-config-standard-scss": "^15.0.1",
|
||||||
"stylelint-webpack-plugin": "^3.1.1",
|
"stylelint-webpack-plugin": "^5.0.1",
|
||||||
"sweetalert2": "^11.14.1",
|
"sweetalert2": "^11.22.2",
|
||||||
"tailwindcss": "^3.4.1",
|
"tailwindcss": "^4.1.11",
|
||||||
"terser-webpack-plugin": "^5.3.10",
|
"terser-webpack-plugin": "^5.3.14",
|
||||||
"tom-select": "^2.3.1",
|
"tom-select": "^2.4.3",
|
||||||
"typer-dot-js": "^0.1.0",
|
"typer-dot-js": "^0.1.0",
|
||||||
"webpack": "^5.66.0",
|
"webpack": "^5.99.9",
|
||||||
"webpack-assets-manifest": "^5.1.0",
|
"webpack-assets-manifest": "^6.2.1",
|
||||||
"webpack-cli": "^4.9.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^4.7.3",
|
"webpack-dev-server": "^5.2.2",
|
||||||
"webpack-merge": "^5.8.0"
|
"webpack-merge": "^6.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,3 @@
|
|||||||
const postcssPresetEnv = require("postcss-preset-env");
|
|
||||||
const tailwindcss = require('tailwindcss');
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
plugins: [postcssPresetEnv({
|
plugins: {"@tailwindcss/postcss": {}},
|
||||||
/* use stage 2 features + disable logical properties and values rule */
|
|
||||||
stage: 2,
|
|
||||||
features: {
|
|
||||||
'logical-properties-and-values': false
|
|
||||||
}
|
|
||||||
}), tailwindcss],
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
import AirDatepicker from 'air-datepicker';
|
import AirDatepicker from 'air-datepicker';
|
||||||
import en from 'air-datepicker/locale/en';
|
|
||||||
import ptBr from 'air-datepicker/locale/pt-BR';
|
|
||||||
import nl from 'air-datepicker/locale/nl';
|
|
||||||
import de from 'air-datepicker/locale/de';
|
|
||||||
import {createPopper} from '@popperjs/core';
|
import {createPopper} from '@popperjs/core';
|
||||||
|
|
||||||
const locales = {
|
/**
|
||||||
'pt': ptBr,
|
* Dynamically imports a language file from the locale folder.
|
||||||
'en': en,
|
*
|
||||||
'nl': nl,
|
* @param {string} langCode - The two-letter language code (e.g., 'en', 'es').
|
||||||
'de': de
|
* @returns {Promise<object>} A promise that resolves with the default export of the language file.
|
||||||
|
*/
|
||||||
|
export const getLocale = async (langCode) => {
|
||||||
|
try {
|
||||||
|
const localeModule = await import(`air-datepicker/locale/${langCode}.js`);
|
||||||
|
return localeModule.default;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`Could not find locale for '${langCode}'. Defaulting to English.`);
|
||||||
|
const englishModule = await import('air-datepicker/locale/en.js');
|
||||||
|
return englishModule.default;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function isMobileDevice() {
|
function isMobileDevice() {
|
||||||
@@ -25,7 +31,7 @@ function isMobile() {
|
|||||||
return isMobileDevice() || isTouchDevice();
|
return isMobileDevice() || isTouchDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.DatePicker = function createDynamicDatePicker(element) {
|
window.DatePicker = async function createDynamicDatePicker(element) {
|
||||||
let todayButton = {
|
let todayButton = {
|
||||||
content: element.dataset.nowButtonTxt,
|
content: element.dataset.nowButtonTxt,
|
||||||
onClick: (dp) => {
|
onClick: (dp) => {
|
||||||
@@ -33,7 +39,7 @@ window.DatePicker = function createDynamicDatePicker(element) {
|
|||||||
dp.selectDate(date, {updateTime: true});
|
dp.selectDate(date, {updateTime: true});
|
||||||
dp.setViewDate(date);
|
dp.setViewDate(date);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
let isOnMobile = isMobile();
|
let isOnMobile = isMobile();
|
||||||
|
|
||||||
@@ -45,7 +51,7 @@ window.DatePicker = function createDynamicDatePicker(element) {
|
|||||||
toggleSelected: element.dataset.toggleSelected === 'true',
|
toggleSelected: element.dataset.toggleSelected === 'true',
|
||||||
autoClose: element.dataset.autoClose === 'true',
|
autoClose: element.dataset.autoClose === 'true',
|
||||||
buttons: element.dataset.clearButton === 'true' ? ['clear', todayButton] : [todayButton],
|
buttons: element.dataset.clearButton === 'true' ? ['clear', todayButton] : [todayButton],
|
||||||
locale: locales[element.dataset.language] || locales['en'],
|
locale: await getLocale(element.dataset.language),
|
||||||
onSelect: ({date, formattedDate, datepicker}) => {
|
onSelect: ({date, formattedDate, datepicker}) => {
|
||||||
const _event = new CustomEvent("change", {
|
const _event = new CustomEvent("change", {
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
@@ -99,7 +105,7 @@ window.DatePicker = function createDynamicDatePicker(element) {
|
|||||||
return new AirDatepicker(element, opts);
|
return new AirDatepicker(element, opts);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.MonthYearPicker = function createDynamicDatePicker(element) {
|
window.MonthYearPicker = async function createDynamicDatePicker(element) {
|
||||||
let todayButton = {
|
let todayButton = {
|
||||||
content: element.dataset.nowButtonTxt,
|
content: element.dataset.nowButtonTxt,
|
||||||
onClick: (dp) => {
|
onClick: (dp) => {
|
||||||
@@ -107,7 +113,7 @@ window.MonthYearPicker = function createDynamicDatePicker(element) {
|
|||||||
dp.selectDate(date, {updateTime: true});
|
dp.selectDate(date, {updateTime: true});
|
||||||
dp.setViewDate(date);
|
dp.setViewDate(date);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
let isOnMobile = isMobile();
|
let isOnMobile = isMobile();
|
||||||
|
|
||||||
@@ -119,7 +125,7 @@ window.MonthYearPicker = function createDynamicDatePicker(element) {
|
|||||||
toggleSelected: element.dataset.toggleSelected === 'true',
|
toggleSelected: element.dataset.toggleSelected === 'true',
|
||||||
autoClose: element.dataset.autoClose === 'true',
|
autoClose: element.dataset.autoClose === 'true',
|
||||||
buttons: element.dataset.clearButton === 'true' ? ['clear', todayButton] : [todayButton],
|
buttons: element.dataset.clearButton === 'true' ? ['clear', todayButton] : [todayButton],
|
||||||
locale: locales[element.dataset.language] || locales['en'],
|
locale: await getLocale(element.dataset.language),
|
||||||
onSelect: ({date, formattedDate, datepicker}) => {
|
onSelect: ({date, formattedDate, datepicker}) => {
|
||||||
const _event = new CustomEvent("change", {
|
const _event = new CustomEvent("change", {
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
@@ -172,7 +178,7 @@ window.MonthYearPicker = function createDynamicDatePicker(element) {
|
|||||||
return new AirDatepicker(element, opts);
|
return new AirDatepicker(element, opts);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.YearPicker = function createDynamicDatePicker(element) {
|
window.YearPicker = async function createDynamicDatePicker(element) {
|
||||||
let todayButton = {
|
let todayButton = {
|
||||||
content: element.dataset.nowButtonTxt,
|
content: element.dataset.nowButtonTxt,
|
||||||
onClick: (dp) => {
|
onClick: (dp) => {
|
||||||
@@ -180,7 +186,7 @@ window.YearPicker = function createDynamicDatePicker(element) {
|
|||||||
dp.selectDate(date, {updateTime: true});
|
dp.selectDate(date, {updateTime: true});
|
||||||
dp.setViewDate(date);
|
dp.setViewDate(date);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
let isOnMobile = isMobile();
|
let isOnMobile = isMobile();
|
||||||
|
|
||||||
@@ -192,7 +198,7 @@ window.YearPicker = function createDynamicDatePicker(element) {
|
|||||||
toggleSelected: element.dataset.toggleSelected === 'true',
|
toggleSelected: element.dataset.toggleSelected === 'true',
|
||||||
autoClose: element.dataset.autoClose === 'true',
|
autoClose: element.dataset.autoClose === 'true',
|
||||||
buttons: element.dataset.clearButton === 'true' ? ['clear', todayButton] : [todayButton],
|
buttons: element.dataset.clearButton === 'true' ? ['clear', todayButton] : [todayButton],
|
||||||
locale: locales[element.dataset.language] || locales['en'],
|
locale: await getLocale(element.dataset.language),
|
||||||
onSelect: ({date, formattedDate, datepicker}) => {
|
onSelect: ({date, formattedDate, datepicker}) => {
|
||||||
const _event = new CustomEvent("change", {
|
const _event = new CustomEvent("change", {
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
|
|||||||
@@ -6,16 +6,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
::-webkit-scrollbar-track {
|
||||||
background-color: transparent;
|
background-color: $gray-800;
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar-thumb {
|
||||||
background-color: $primary;
|
background-color: $gray-600;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
border: 4px solid transparent;
|
border: 4px solid transparent;
|
||||||
background-clip: content-box;
|
background-clip: content-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
::-webkit-scrollbar-thumb:hover {
|
||||||
background-color: #ae8000;
|
background-color: $primary;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
@tailwind base;
|
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
@import "tom-select/dist/css/tom-select.bootstrap5.min.css";
|
@import "tom-select/dist/css/tom-select.bootstrap5.min.css";
|
||||||
@import "variables.scss";
|
@import "variables";
|
||||||
|
|
||||||
/* FIX BOOTSTRAP STYLING FOR TOM SELECT */
|
/* FIX BOOTSTRAP STYLING FOR TOM SELECT */
|
||||||
.ts-dropdown,
|
.ts-dropdown,
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
@import "variables";
|
@import "variables";
|
||||||
@import "font-awesome.scss";
|
@import "font-awesome";
|
||||||
@import "tailwind.scss";
|
@import "bootstrap";
|
||||||
@import "bootstrap.scss";
|
@import "datepicker";
|
||||||
@import "datepicker.scss";
|
@import "tom-select";
|
||||||
@import "tom-select.scss";
|
@import "animations";
|
||||||
@import "animations.scss";
|
@import "scrollbar";
|
||||||
@import "scrollbar.scss";
|
@import "./tailwind.css";
|
||||||
|
|
||||||
.sticky-sidebar {
|
.sticky-sidebar {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
|
|||||||
2
frontend/src/styles/tailwind.css
Normal file
2
frontend/src/styles/tailwind.css
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
@import "tailwindcss" prefix(tw) source("../../../app/templates/");
|
||||||
|
@custom-variant dark (&:where([data-bs-theme=dark], [data-bs-theme=dark] *));
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
content: ['../app/templates/**/*.html'],
|
|
||||||
theme: {
|
|
||||||
extend: {},
|
|
||||||
},
|
|
||||||
variants: {
|
|
||||||
extend: {},
|
|
||||||
},
|
|
||||||
plugins: [],
|
|
||||||
prefix: 'tw-',
|
|
||||||
corePlugins: {
|
|
||||||
preflight: false,
|
|
||||||
},
|
|
||||||
daisyui: {
|
|
||||||
themes: false, // false: only light + dark | true: all themes | array: specific themes like this ["light", "dark", "cupcake"]
|
|
||||||
darkTheme: "dark", // name of one of the included themes for dark mode
|
|
||||||
base: false, // applies background color and foreground color for root element by default
|
|
||||||
styled: true, // include daisyUI colors and design decisions for all components
|
|
||||||
utils: true, // adds responsive and modifier utility classes
|
|
||||||
prefix: "ds-", // prefix for daisyUI classnames (components, modifiers and responsive class names. Not colors)
|
|
||||||
logs: true, // Shows info about daisyUI version and used config in the console when building your CSS
|
|
||||||
themeRoot: ":root", // The element that receives theme color CSS variables
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
const glob = require("glob");
|
const glob = require("glob");
|
||||||
const Path = require("path");
|
const Path = require("path");
|
||||||
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
|
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
||||||
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||||||
const WebpackAssetsManifest = require("webpack-assets-manifest");
|
const WebpackAssetsManifest = require("webpack-assets-manifest").WebpackAssetsManifest;
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
|
|
||||||
@@ -5,7 +5,7 @@ const StylelintPlugin = require("stylelint-webpack-plugin");
|
|||||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||||
const ESLintPlugin = require("eslint-webpack-plugin");
|
const ESLintPlugin = require("eslint-webpack-plugin");
|
||||||
|
|
||||||
const common = require("./webpack.common.js");
|
const common = require("./webpack.common.cjs");
|
||||||
|
|
||||||
module.exports = merge(common, {
|
module.exports = merge(common, {
|
||||||
target: "web",
|
target: "web",
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user