Prioritize active work and paginate completed engagements
This commit is contained in:
@@ -3112,6 +3112,8 @@ def list_employee_work_kanban(
|
||||
q: str = "",
|
||||
status: str = "open",
|
||||
financial_year: str | None = None,
|
||||
completed_page: int = 1,
|
||||
completed_page_size: int = 25,
|
||||
) -> dict[str, Any]:
|
||||
"""Return exactly one employee-board card per assigned engagement.
|
||||
|
||||
@@ -3176,8 +3178,8 @@ def list_employee_work_kanban(
|
||||
)
|
||||
|
||||
columns = [
|
||||
{"code": "pending", "label": "Pending", "cards": []},
|
||||
{"code": "in_progress", "label": "In Progress", "cards": []},
|
||||
{"code": "pending", "label": "Pending", "cards": []},
|
||||
{"code": "blocked", "label": "Blocked", "cards": []},
|
||||
{"code": "completed", "label": "Completed", "cards": []},
|
||||
]
|
||||
@@ -3354,6 +3356,38 @@ def list_employee_work_kanban(
|
||||
card["service_name"].lower(),
|
||||
)
|
||||
)
|
||||
column["total_cards"] = len(column["cards"])
|
||||
|
||||
try:
|
||||
completed_page = max(int(completed_page or 1), 1)
|
||||
except (TypeError, ValueError):
|
||||
completed_page = 1
|
||||
try:
|
||||
completed_page_size = max(1, min(int(completed_page_size or 25), 100))
|
||||
except (TypeError, ValueError):
|
||||
completed_page_size = 25
|
||||
|
||||
completed_column = column_lookup["completed"]
|
||||
completed_total = int(completed_column["total_cards"])
|
||||
completed_pages = max(1, (completed_total + completed_page_size - 1) // completed_page_size)
|
||||
if completed_page > completed_pages:
|
||||
completed_page = completed_pages
|
||||
completed_start = (completed_page - 1) * completed_page_size
|
||||
completed_end = completed_start + completed_page_size
|
||||
completed_column["cards"] = completed_column["cards"][completed_start:completed_end]
|
||||
|
||||
completed_pagination = {
|
||||
"page": completed_page,
|
||||
"page_size": completed_page_size,
|
||||
"total": completed_total,
|
||||
"pages": completed_pages,
|
||||
"has_previous": completed_page > 1,
|
||||
"has_next": completed_page < completed_pages,
|
||||
"previous_page": completed_page - 1 if completed_page > 1 else None,
|
||||
"next_page": completed_page + 1 if completed_page < completed_pages else None,
|
||||
"start": completed_start + 1 if completed_total else 0,
|
||||
"end": min(completed_end, completed_total),
|
||||
}
|
||||
|
||||
return {
|
||||
"summary": summary,
|
||||
@@ -3361,6 +3395,7 @@ def list_employee_work_kanban(
|
||||
"q": q,
|
||||
"status": status_filter,
|
||||
"today": today,
|
||||
"completed_pagination": completed_pagination,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user