Coverage for src / lexigram / ui / charts / htmx.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-08-10 04:11 +0800

1from __future__ import annotations 

2 

3from typing import Any 

4 

5 

6def hx_chart_attrs( 

7 endpoint: str, 

8 *, 

9 refresh_interval: int | None = None, 

10 target: str | None = None, 

11 swap: str = "innerHTML", 

12) -> dict[str, Any]: 

13 triggers = ["load"] 

14 if refresh_interval and refresh_interval > 0: 

15 triggers.append(f"every {refresh_interval * 1000}ms") 

16 

17 attrs: dict[str, Any] = { 

18 "hx-get": endpoint, 

19 "hx-trigger": ", ".join(triggers), 

20 "hx-swap": swap, 

21 } 

22 if target: 

23 attrs["hx-target"] = target 

24 return attrs 

25 

26 

27def chart_skeleton() -> dict[str, Any]: 

28 return { 

29 "class": "animate-pulse space-y-2 p-4", 

30 }