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
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-10 04:11 +0800
1from __future__ import annotations
3from typing import Any
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")
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
27def chart_skeleton() -> dict[str, Any]:
28 return {
29 "class": "animate-pulse space-y-2 p-4",
30 }