From 6a5b4e773eade3730bec1897ba58e46b255533c1 Mon Sep 17 00:00:00 2001 From: "Barry vd. Heuvel" Date: Sat, 1 Feb 2025 16:16:50 +0100 Subject: [PATCH] Group timeline --- src/DebugBar/DataCollector/TimeDataCollector.php | 15 ++++++++++----- src/DebugBar/Resources/widgets.js | 12 +++++++----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/DebugBar/DataCollector/TimeDataCollector.php b/src/DebugBar/DataCollector/TimeDataCollector.php index 7ccae16..ce82271 100644 --- a/src/DebugBar/DataCollector/TimeDataCollector.php +++ b/src/DebugBar/DataCollector/TimeDataCollector.php @@ -73,15 +73,17 @@ class TimeDataCollector extends DataCollector implements Renderable * @param string $name Internal name, used to stop the measure * @param string|null $label Public name * @param string|null $collector The source of the collector + * @param string|null $group The group for aggregates */ - public function startMeasure($name, $label = null, $collector = null) + public function startMeasure($name, $label = null, $collector = null, $group = null) { $start = microtime(true); $this->startedMeasures[$name] = array( 'label' => $label ?: $name, 'start' => $start, 'memory' => $this->memoryMeasure ? memory_get_usage(false) : null, - 'collector' => $collector + 'collector' => $collector, + 'group' => $group, ); } @@ -117,7 +119,8 @@ class TimeDataCollector extends DataCollector implements Renderable $this->startedMeasures[$name]['start'], $end, $params, - $this->startedMeasures[$name]['collector'] + $this->startedMeasures[$name]['collector'], + $this->startedMeasures[$name]['group'] ); unset($this->startedMeasures[$name]); } @@ -130,8 +133,9 @@ class TimeDataCollector extends DataCollector implements Renderable * @param float $end * @param array $params * @param string|null $collector + * @param string|null $group */ - public function addMeasure($label, $start, $end, $params = array(), $collector = null) + public function addMeasure($label, $start, $end, $params = array(), $collector = null, $group = null) { if (isset($params['memoryUsage'])) { $memory = $this->memoryMeasure ? $params['memoryUsage'] : 0; @@ -149,7 +153,8 @@ class TimeDataCollector extends DataCollector implements Renderable 'memory' => $memory ?? 0, 'memory_str' => $this->getDataFormatter()->formatBytes($memory ?? 0), 'params' => $params, - 'collector' => $collector + 'collector' => $collector, + 'group' => $group, ); } diff --git a/src/DebugBar/Resources/widgets.js b/src/DebugBar/Resources/widgets.js index ab6f4b1..01bf85d 100644 --- a/src/DebugBar/Resources/widgets.js +++ b/src/DebugBar/Resources/widgets.js @@ -506,13 +506,15 @@ if (typeof(PhpDebugBar) == 'undefined') { for (var i = 0; i < data.measures.length; i++) { var measure = data.measures[i]; + var group = measure.group || measure.label; - if(!aggregate[measure.label]) - aggregate[measure.label] = { count: 0, duration: 0, memory : 0 }; + if(!aggregate[group]) { + aggregate[group] = { count: 0, duration: 0, memory : 0 }; + } - aggregate[measure.label]['count'] += 1; - aggregate[measure.label]['duration'] += measure.duration; - aggregate[measure.label]['memory'] += (measure.memory || 0); + aggregate[group]['count'] += 1; + aggregate[group]['duration'] += measure.duration; + aggregate[group]['memory'] += (measure.memory || 0); var m = $('
').addClass(csscls('measure')), li = $('
  • '),