Move templatetags to history templatetags
This commit is contained in:
parent
003902b43f
commit
45b47dd1ba
3 changed files with 80 additions and 75 deletions
|
@ -1,4 +1,5 @@
|
|||
{% load main_extras %}
|
||||
{% load history_extras %}
|
||||
{% load i18n %}
|
||||
<div class="plot">
|
||||
<table class="full-width">
|
||||
|
@ -58,7 +59,7 @@
|
|||
{% endif %}
|
||||
{% if m %}
|
||||
<td class="{% if m.sum > 0 %}p{% else %}m{% endif %}"
|
||||
style="opacity: {% opacity m.sum history.max.sum %}"></td>
|
||||
style="opacity: {% calendar_opacity m.sum history.max.sum %}"></td>
|
||||
{% else %}
|
||||
<td></td>
|
||||
{% endif %}
|
||||
|
|
78
nummi/history/templatetags/history_extras.py
Normal file
78
nummi/history/templatetags/history_extras.py
Normal file
|
@ -0,0 +1,78 @@
|
|||
import math
|
||||
|
||||
from django import template
|
||||
from django.template.defaultfilters import date
|
||||
from django.urls import reverse
|
||||
from django.utils.safestring import mark_safe
|
||||
from main.templatetags.main_extras import pmrvalue, remix
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def calendar_opacity(v, vmax):
|
||||
return f"{math.sin(math.fabs(v/vmax)*math.pi/2):.3f}"
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def empty_calendar_cells(n):
|
||||
return mark_safe(n * "<td></td>")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def empty_calendar_cells_start(n):
|
||||
return empty_calendar_cells(n - 1)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def empty_calendar_cells_end(n):
|
||||
return empty_calendar_cells(12 - n)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def up_down_icon(val):
|
||||
if val > 0:
|
||||
return remix("arrow-up-s", "green")
|
||||
elif val < 0:
|
||||
return remix("arrow-down-s", "red")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def month_url(month, account=None, category=None):
|
||||
url_name = "transaction_month"
|
||||
url_params = {"year": month.year, "month": month.month}
|
||||
|
||||
if account:
|
||||
url_name = "account_" + url_name
|
||||
url_params |= {"account": account.pk}
|
||||
elif category:
|
||||
url_name = "category_" + url_name
|
||||
url_params |= {"category": category.pk}
|
||||
|
||||
url = reverse(url_name, kwargs=url_params)
|
||||
return mark_safe(f"""<a href="{url}">{ date(month, "Y-m") }</a>""")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def plot_bar(s, sum_pm, s_max):
|
||||
_res = ""
|
||||
|
||||
if sum_pm:
|
||||
_w = abs(sum_pm / s_max)
|
||||
_res += f"""<div style="width: {_w:.1%}"></div>"""
|
||||
if sum_pm is not None and s * sum_pm > 0:
|
||||
_w = abs(s / s_max)
|
||||
_res += (
|
||||
f"""<div class="tot" style="width: {_w:.1%}">"""
|
||||
f"""<span>{pmrvalue(s)}</span></div>"""
|
||||
)
|
||||
|
||||
return mark_safe(_res)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def calendar_head():
|
||||
months = range(1, 13)
|
||||
th = (f"""<th>{month:02d}</th>""" for month in months)
|
||||
|
||||
return mark_safe("".join(th))
|
|
@ -1,10 +1,5 @@
|
|||
import datetime
|
||||
import math
|
||||
|
||||
from django import template
|
||||
from django.template.defaultfilters import date
|
||||
from django.templatetags.static import static
|
||||
from django.urls import reverse
|
||||
from django.utils import formats
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
|
@ -72,72 +67,3 @@ def css(href):
|
|||
return mark_safe(
|
||||
f"""<link rel="stylesheet" href="{static(href)}" type="text/css">"""
|
||||
)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def opacity(v, vmax):
|
||||
return f"{math.sin(math.fabs(v/vmax)*math.pi/2):.3f}"
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def empty_calendar_cells(n):
|
||||
return mark_safe(n * "<td></td>")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def empty_calendar_cells_start(n):
|
||||
return empty_calendar_cells(n - 1)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def empty_calendar_cells_end(n):
|
||||
return empty_calendar_cells(12 - n)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def up_down_icon(val):
|
||||
if val > 0:
|
||||
return mark_safe("""<span class="ri-arrow-up-s-line green"></span>""")
|
||||
elif val < 0:
|
||||
return mark_safe("""<span class="ri-arrow-down-s-line red"></span>""")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def month_url(month, account=None, category=None):
|
||||
url_name = "transaction_month"
|
||||
url_params = {"year": month.year, "month": month.month}
|
||||
|
||||
if account:
|
||||
url_name = "account_" + url_name
|
||||
url_params |= {"account": account.pk}
|
||||
elif category:
|
||||
url_name = "category_" + url_name
|
||||
url_params |= {"category": category.pk}
|
||||
|
||||
url = reverse(url_name, kwargs=url_params)
|
||||
return mark_safe(f"""<a href="{url}">{ date(month, "Y-m") }</a>""")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def plot_bar(s, sum_pm, s_max):
|
||||
_res = ""
|
||||
|
||||
if sum_pm:
|
||||
_w = abs(sum_pm / s_max)
|
||||
_res += f"""<div style="width: {_w:.1%}"></div>"""
|
||||
if sum_pm is not None and s * sum_pm > 0:
|
||||
_w = abs(s / s_max)
|
||||
_res += (
|
||||
f"""<div class="tot" style="width: {_w:.1%}">"""
|
||||
f"""<span>{pmrvalue(s)}</span></div>"""
|
||||
)
|
||||
|
||||
return mark_safe(_res)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def calendar_head():
|
||||
months = (datetime.date(1, m + 1, 1) for m in range(12))
|
||||
th = (f"""<th>{date(month, "m")}</th>""" for month in months)
|
||||
|
||||
return mark_safe("".join(th))
|
||||
|
|
Loading…
Reference in a new issue