From 6573a54c50738e455b2b0d4863498b916046a466 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Mon, 6 Oct 2025 09:28:43 +0200 Subject: Simpler perf charts --- layouts/shortcodes/chart.html | 17 ++++++++ layouts/shortcodes/perf-chart.html | 89 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 layouts/shortcodes/perf-chart.html (limited to 'layouts') diff --git a/layouts/shortcodes/chart.html b/layouts/shortcodes/chart.html index 69689cd..2198b63 100644 --- a/layouts/shortcodes/chart.html +++ b/layouts/shortcodes/chart.html @@ -1,8 +1,25 @@ {{- $id := printf "chart-%d" (now.UnixNano) -}} {{- $type := .Get "type" | default "bar" -}} +{{- $preset := .Get "preset" -}} +{{- $title := .Get "title" -}} {{- $data := .Get "data" -}} {{- $options := .Get "options" | default "{}" -}} +{{/* Load chart presets */}} +{{- $presets := site.Data.chart_presets -}} + +{{/* Handle preset-based charts */}} +{{- if $preset -}} + {{- $presetData := index $presets.charts $preset -}} + {{- if $presetData -}} + {{- $data = $presetData.data | jsonify -}} + {{- if and $title (not (index $presetData.options.plugins.title "text")) -}} + {{- $presetData = merge $presetData (dict "options" (merge $presetData.options (dict "plugins" (merge $presetData.options.plugins (dict "title" (dict "text" $title)))))) -}} + {{- end -}} + {{- $options = $presetData.options | jsonify -}} + {{- end -}} +{{- end -}} +
diff --git a/layouts/shortcodes/perf-chart.html b/layouts/shortcodes/perf-chart.html new file mode 100644 index 0000000..8c1734a --- /dev/null +++ b/layouts/shortcodes/perf-chart.html @@ -0,0 +1,89 @@ +{{/* Performance chart shortcode for consistent chart styling */}} +{{- $title := .Get "title" -}} +{{- $labelsRaw := .Get "labels" -}} +{{- $datasetsRaw := .Get "datasets" -}} +{{- $xAxisLabel := .Get "xAxisLabel" | default "Time (ms)" -}} + +{{/* Load chart configuration */}} +{{- $config := site.Data.chart_presets -}} +{{- $defaults := $config.defaults -}} +{{- $colors := $config.colors -}} + +{{/* Parse labels - split by comma */}} +{{- $labels := split $labelsRaw "," -}} + +{{/* Parse datasets parameter: "Label:color:values" */}} +{{- $parsedDatasets := slice -}} +{{- if $datasetsRaw -}} + {{- $datasetList := split $datasetsRaw "|" -}} + {{- range $datasetList -}} + {{- $parts := split . ":" -}} + {{- if ge (len $parts) 3 -}} + {{- $label := index $parts 0 -}} + {{- $preset := index $parts 1 -}} + {{- $valuesStr := index $parts 2 -}} + {{- $values := split $valuesStr "," -}} + {{- $colorRgb := index $colors $colorName -}} + {{- if $colorRgb -}} + {{- $backgroundColor := printf "rgba(%s, %.1f)" $colorRgb $defaults.backgroundOpacity -}} + {{- $borderColor := printf "rgba(%s, %.1f)" $colorRgb $defaults.borderOpacity -}} + {{- $dataset := dict + "label" $label + "data" $values + "backgroundColor" $backgroundColor + "borderColor" $borderColor + "borderWidth" $defaults.borderWidth + "barThickness" $defaults.barThickness -}} + {{- $parsedDatasets = $parsedDatasets | append $dataset -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* Generate unique ID */}} +{{- $id := printf "chart-%d" (now.UnixNano) -}} + +
+ +
+ + + + + -- cgit v1.3