Add progress bar for govplans

This commit is contained in:
Stefan Wehrmeyer 2022-02-28 13:43:58 +01:00
parent b0c8aa157f
commit 934ed192ed
4 changed files with 47 additions and 0 deletions

View file

@ -229,6 +229,7 @@ if CMSPlugin:
PLUGIN_TEMPLATES = [ PLUGIN_TEMPLATES = [
("froide_govplan/plugins/default.html", _("Normal")), ("froide_govplan/plugins/default.html", _("Normal")),
("froide_govplan/plugins/progress.html", _("Progress")),
] ]
class GovernmentPlansCMSPlugin(CMSPlugin): class GovernmentPlansCMSPlugin(CMSPlugin):

View file

@ -0,0 +1,13 @@
{% load govplan %}
{% get_plan_progress object_list as progress %}
<div>
<div class="progress" style="height: 25px;">
{% for section in progress.sections %}
<div class="progress-bar bg-{{ section.css_class }}" role="progressbar" style="width: {{ section.css_percentage }}%;" aria-valuenow="{{ section.css_percentage }}" aria-valuemin="0" aria-valuemax="100" title="{{ section.label }}: {{ section.percentage }}%" data-toggle="tooltip" data-placement="top">
</div>
{% endfor %}
</div>
</div>

View file

View file

@ -0,0 +1,33 @@
from django import template
from froide_govplan.models import PlanStatus
register = template.Library()
STATUS_CSS = {
PlanStatus.NOT_STARTED: "secondary",
PlanStatus.STARTED: "primary",
PlanStatus.PARTIALLY_IMPLEMENTED: "warning",
PlanStatus.IMPLEMENTED: "success",
PlanStatus.DEFERRED: "danger",
}
@register.simple_tag
def get_plan_progress(object_list):
sections = []
for value, label in PlanStatus.choices:
status_count = len([x for x in object_list if x.status == value])
percentage = status_count / len(object_list) * 100
sections.append(
{
"count": status_count,
"label": label,
"css_class": STATUS_CSS[value],
"percentage": round(percentage),
"css_percentage": str(percentage),
}
)
value, label
return {"count": len(object_list), "sections": sections}