viewer = Services::renderer(); } //-------------------------------------------------------------------- /** * Child classes should implement this to return the timeline data * formatted for correct usage. * * @return array */ protected function formatTimelineData(): array { $data = []; $rows = $this->viewer->getPerformanceData(); foreach ($rows as $name => $info) { $data[] = [ 'name' => 'View: ' . $info['view'], 'component' => 'Views', 'start' => $info['start'], 'duration' => $info['end'] - $info['start'], ]; } return $data; } //-------------------------------------------------------------------- /** * Gets a collection of data that should be shown in the 'Vars' tab. * The format is an array of sections, each with their own array * of key/value pairs: * * $data = [ * 'section 1' => [ * 'foo' => 'bar, * 'bar' => 'baz' * ], * 'section 2' => [ * 'foo' => 'bar, * 'bar' => 'baz' * ], * ]; * * @return array */ public function getVarData(): array { return [ 'View Data' => $this->viewer->getData(), ]; } //-------------------------------------------------------------------- /** * Returns a count of all views. * * @return integer */ public function getBadgeValue(): int { return count($this->viewer->getPerformanceData()); } /** * Display the icon. * * Icon from https://icons8.com - 1em package * * @return string */ public function icon(): string { return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB/eUFlU8uKJ0eDBFOu/9EvoeKnlJS2/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII='; } }