Add method to merge pie data

This commit is contained in:
Alfredo Cardigliano 2025-01-16 11:15:22 +01:00
parent af009d95e4
commit 1fbec514e6

View file

@ -699,4 +699,38 @@ end
-- #################################################
-- Merge pie data from 2 data sources (compute top of tops)
function graph_utils.merge_pie_data(aggregated_data, data, max_values)
-- Merge in temporary table
local items = {}
for _, l in ipairs(aggregated_data.labels) do
items[l] = aggregated_data.series[_]
end
for _, l in ipairs(data.labels) do
if items[l] then
items[l] = items[l] + data.series[_]
else
items[l] = data.series[_]
end
end
-- Compute tops
aggregated_data.labels = {}
aggregated_data.series = {}
aggregated_data.colors = {}
for l, v in pairsByValues(items or {}, rev) do
aggregated_data.labels[#aggregated_data.labels+1] = l
aggregated_data.series[#aggregated_data.series+1] = v
aggregated_data.colors[#aggregated_data.colors+1] = graph_utils.get_html_color(#aggregated_data.colors)
if #aggregated_data.labels >= max_values then
goto done
end
end
::done::
return aggregated_data
end
-- #################################################
return graph_utils