lib/log_stats/stats.rb in log_stats-0.4.4 vs lib/log_stats/stats.rb in log_stats-0.4.5

- old
+ new

@@ -44,19 +44,25 @@ end def self.group_by_stats(events, group_by, event_config) total_count = events.size events_by_group = events.group_by { |event| group_by[:id].call(event) }.select { |key, _| !key.nil? } - events_by_group.reduce({}) do |acc, (key, group_events)| + grouped = events_by_group.reduce({}) do |acc, (key, group_events)| group_count = group_events.size percent = (group_count.to_f*100/total_count).round(4) acc[key] = { count: group_count, percent: percent, fields: fields(group_events, event_config) } acc end + keys = if sort_by = group_by[:sort_by] + grouped.keys.sort_by { |key| sort_by.call(grouped[key]) } + else + grouped.keys + end + keys.map { |key| {key: key, data: grouped[key]} } end def self.avg(events, field_name) sum = events.lazy.map { |event| event[field_name] }.reduce(&:+) sum/events.size.to_f