Phase 1 UX + JS transforms: tabs, windowing, percent/grouping, smoothing, stacked series, metadata pass-through, top_n
- Replace tabs with Recent/Trends/Distribution/Tables/Analysis and add sticky controls (interval, domain, window [default 7d], percent, group small, exclude '-' -> Uncached, smoothing toggle). - Client-side transforms: time-window slicing, percent mode, group others (3%), per-report exclusions; stackedBar multi-series; moving average for error_rate. - Generator: pass through optional UX metadata (windows_supported, window_default, group_others_threshold, exclude_values, top_n, stacked, palette) and enforce top_n LIMIT for table reports. - Reports: add status_classes_timeseries and cache_status_timeseries; apply top_n=50 to heavy tables. - Chart manager: add helpers (sliceWindow, excludeValues, toPercent, groupOthers, movingAverage). - URL state + localStorage for context; per-tab filtering for Trends/Distribution/Tables.
This commit is contained in:
parent
9c26ae3e90
commit
fab91d2e04
4 changed files with 442 additions and 59 deletions
41
reports.yml
41
reports.yml
|
@ -48,6 +48,7 @@
|
|||
label: Top Domains
|
||||
icon: globe
|
||||
chart: table
|
||||
top_n: 50
|
||||
per_domain: false
|
||||
bucket: domain
|
||||
bucket_label: Domain
|
||||
|
@ -75,6 +76,7 @@
|
|||
label: Top Paths
|
||||
icon: map
|
||||
chart: table
|
||||
top_n: 50
|
||||
buckets:
|
||||
- domain
|
||||
- path
|
||||
|
@ -102,6 +104,7 @@
|
|||
label: User Agents
|
||||
icon: user
|
||||
chart: table
|
||||
top_n: 50
|
||||
buckets:
|
||||
- domain
|
||||
- user_agent
|
||||
|
@ -127,6 +130,7 @@
|
|||
label: Referrers
|
||||
icon: link
|
||||
chart: table
|
||||
top_n: 50
|
||||
buckets:
|
||||
- domain
|
||||
- referrer
|
||||
|
@ -170,3 +174,40 @@
|
|||
- "#209cee"
|
||||
- "#ffdd57"
|
||||
- "#f14668"
|
||||
|
||||
# New time-series: status classes over time (stacked)
|
||||
- name: status_classes_timeseries
|
||||
label: Status Classes Over Time
|
||||
icon: server
|
||||
chart: stackedBar
|
||||
bucket: time_bucket
|
||||
bucket_label: Time
|
||||
stacked: true
|
||||
query: |
|
||||
SELECT {bucket} AS time_bucket,
|
||||
SUM(CASE WHEN status BETWEEN 200 AND 299 THEN 1 ELSE 0 END) AS "2xx",
|
||||
SUM(CASE WHEN status BETWEEN 300 AND 399 THEN 1 ELSE 0 END) AS "3xx",
|
||||
SUM(CASE WHEN status BETWEEN 400 AND 499 THEN 1 ELSE 0 END) AS "4xx",
|
||||
SUM(CASE WHEN status BETWEEN 500 AND 599 THEN 1 ELSE 0 END) AS "5xx",
|
||||
COUNT(*) AS total
|
||||
FROM logs
|
||||
GROUP BY time_bucket
|
||||
ORDER BY time_bucket
|
||||
|
||||
# New time-series: cache status over time (compact Hit/Miss; exclude '-' by default)
|
||||
- name: cache_status_timeseries
|
||||
label: Cache Status Over Time
|
||||
icon: archive
|
||||
chart: stackedBar
|
||||
bucket: time_bucket
|
||||
bucket_label: Time
|
||||
stacked: true
|
||||
exclude_values: ["-"]
|
||||
query: |
|
||||
SELECT {bucket} AS time_bucket,
|
||||
SUM(CASE WHEN cache_status = 'HIT' THEN 1 ELSE 0 END) AS hit,
|
||||
SUM(CASE WHEN cache_status = 'MISS' THEN 1 ELSE 0 END) AS miss,
|
||||
COUNT(*) AS total
|
||||
FROM logs
|
||||
GROUP BY time_bucket
|
||||
ORDER BY time_bucket
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue