Skip to content

Added timeline header components#458

Merged
kyasbal merged 4 commits intoGoogleCloudPlatform:epic/timeline-v2from
kyasbal:epic/v2-timeline-add-timeline-ruler-component
Jan 18, 2026
Merged

Added timeline header components#458
kyasbal merged 4 commits intoGoogleCloudPlatform:epic/timeline-v2from
kyasbal:epic/v2-timeline-add-timeline-ruler-component

Conversation

@kyasbal
Copy link
Member

@kyasbal kyasbal commented Jan 15, 2026

This PR adds a new TimelineRulerComponent placed on the top of the timeline graph.

TimelineRulerComponent without log filter applied
image

TimelineRulerComponent with log filter applied
image

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @kyasbal, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the v2 timeline by introducing a dedicated and highly performant timeline ruler component. This component provides users with a clear visual representation of time intervals, important date markers, and a severity-based histogram of logs, all rendered efficiently using the Canvas 2D API. The changes also include a comprehensive styling model and a refactoring of rendering-related utilities, laying a robust foundation for future timeline features.

Highlights

  • New Timeline Ruler Component: Introduced a new TimelineRulerComponent responsible for displaying time ticks, date labels, and severity histograms, enhancing the visual representation of the timeline.
  • Canvas 2D API Rendering: Implemented TimelineRulerRenderer which leverages the Canvas 2D API for efficient and high-performance rendering of the ruler's visual elements, including histograms and tick marks.
  • Centralized Styling Model: Added a new style-model.ts file to centralize and define various style configurations for timeline components, including the ruler, revisions, and events, promoting consistency and maintainability.
  • Rendering Utility Refactoring: Refactored and renamed rendering utility files from a gl (WebGL) directory to a canvas directory, indicating a shift or clarification in the rendering technology focus towards Canvas 2D for these components.
  • Ruler View Model Builder: Developed a RulerViewModelBuilder class to dynamically generate the data model for the timeline ruler, including histogram buckets and time labels, based on log data, zoom levels, and viewport dimensions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@kyasbal kyasbal force-pushed the epic/v2-timeline-add-timeline-ruler-component branch from 30b587d to f3e1d64 Compare January 15, 2026 01:43
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new timeline ruler component, which includes a canvas-based renderer, a view model, and associated styles. It also involves some refactoring of file paths. My review focuses on improving the clarity, maintainability, and user experience of the new component. I've identified opportunities to address misleading parameter names, code duplication, magic numbers, leftover debug styles, and suboptimal error handling.

@kyasbal kyasbal force-pushed the epic/v2-timeline-add-timeline-ruler-component branch from f3e1d64 to a86667e Compare January 15, 2026 01:54
@kyasbal kyasbal changed the title Epic/v2 timeline add timeline ruler component Added timeline header componetn Jan 15, 2026
@kyasbal kyasbal changed the title Added timeline header componetn Added timeline header components Jan 15, 2026
@kyasbal
Copy link
Member Author

kyasbal commented Jan 15, 2026

Blocker #457

@kyasbal kyasbal force-pushed the epic/v2-timeline-add-timeline-ruler-component branch from aeebbdf to 69d4f04 Compare January 15, 2026 11:12
@kyasbal kyasbal marked this pull request as ready for review January 15, 2026 11:13
@kyasbal kyasbal requested review from jyane and renamoo as code owners January 15, 2026 11:13
@kyasbal kyasbal removed the request for review from jyane January 16, 2026 23:28
@kyasbal kyasbal marked this pull request as draft January 16, 2026 23:29
Copy link
Collaborator

@renamoo renamoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only nits, LGTM

@renamoo
Copy link
Collaborator

renamoo commented Jan 17, 2026

Oops, I didn't notice it is now back to draft as I did not reload 😂 Sorry!

@kyasbal
Copy link
Member Author

kyasbal commented Jan 18, 2026

Oops, I didn't notice it is now back to draft as I did not reload 😂 Sorry!

It's totally not a problem. I was thinking about separating this PR granular if this was too big for review. But it's passed, then fine.

@kyasbal kyasbal marked this pull request as ready for review January 18, 2026 07:47
@kyasbal kyasbal merged commit 6cebca4 into GoogleCloudPlatform:epic/timeline-v2 Jan 18, 2026
8 of 9 checks passed
@kyasbal kyasbal deleted the epic/v2-timeline-add-timeline-ruler-component branch January 18, 2026 07:47
kyasbal added a commit that referenced this pull request Jan 22, 2026
* Add MSDF texture generation scripts (#445)

* Add MSDF texture generation scripts

To enable extensible and high quality font/icon rendering on WebGL2, this script precalculate MSDFs and bake it on textures.
These files are going to be used in the updated timeline v2 renderer.

* Removed font generation step from CI

The font atlas textures and its output JSON files are included in repository.
This design is because it won't be conflict a lot ,its easy to regenerate to merge. I'll integrate this step with CI later.
We don't need to run it on CI again.

* Applied fixes suggested by gemini

* Apply suggestions from code review

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: kyasbal <kyasbal1994@gmail.com>

* formatted icons.json

* fixed lint issue

* Removed icons.json because it's intermediate generated file

* Fix the lint issue and align the folder location with other generate task

* Move web/msdf to scripts/msdf-generator to align with the other generate scripts
* Ignored the json file from the root gitignore file for prettier to know the ignored files correctly

---------

Signed-off-by: kyasbal <kyasbal1994@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Make msdf generator not to produce diffs (#448)

Ignored generated json files from the lint target and sort the icon list to keep it consistent.

* Add TimelineCornerIndicatorComponent and TimelineLegendComponent (#449)

* Add TimelineCornerIndicatorComponent and TimelineLegendComponent

* fix issues pointed by gemini-code-assist

* fix the issue pointed by gemini-code-assist

* Fixed the event legend message

And added the missing change to pass the storybook build

* Added angular-split used in the later commit (#451)

* Add TimelineIndexComponent (#450)

* Add TimelineIndexComponent

* fix compilation error

* Adding missing code from the commit

* fix stylesheet issues pointed by gemini-code-assist

* Fix typos in the comment

* Added base utilities for canvas (#453)

* Added base utilities for canvas

* Update web/src/app/timeline/components/gl/glcontextmanager.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: kyasbal <kyasbal1994@gmail.com>

---------

Signed-off-by: kyasbal <kyasbal1994@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Adds algorithmic utility to implement timeline view (#452)

* Adds algorithmic utility to implement timeline view

* fixed issues pointed by gemini-code-assist

* Removed sRGB hex notation in the generated SCSS (#454)

* Removed sRGB hex notation in the generated SCSS

To show the same color with CSS and canvas(canvas2d or WebGL), removed the color setting directly specified with sRGB hex and hold them in floating point values instead.
KHI will use display-p3 color space rather than sRGB to use the wider color space.

* fix issues pointed by gemini-code-assist

* Add mising change expected to add in the commit

* Move folder from gl to canvas (#456)

the folder contained utility used for canvas 2d not WebGL. Renamed it not to confuse readers

* Add utility functions and types used for implementing the timeline header component (#457)

* Move folder from gl to canvas

the folder contained utility used for canvas 2d not WebGL. Renamed it not to confuse readers

* Added utility for drawing timeline header histogram

* fixed issues pointed by gemini-code-assist

* Added timeline header components (#458)

* Add timeline header component

* fix issue pointed by gemini-code-assist

* Fixed issues pointed by gemini-code-assist and fixed some styles

* fix typos

* Add WebGL related types used in revision renderer and event renderer (#463)

* Add WebGL related types used in revision renderer and event renderer

* fixed issues pointed by gemini-code-assist

* Add renderer for drawing event points (#464)

* Add WebGL related types used in revision renderer and event renderer

* fixed issues pointed by gemini-code-assist

* Add renderer for drawing event points

* fix suggested by gemini-code-assist

* Add renderer drawing revision rectangles (#465)

* Add WebGL related types used in revision renderer and event renderer

* fixed issues pointed by gemini-code-assist

* Add renderer drawing revision rectangles

* fix issue pointed by gemini-code-assist

* Add log filter status visualization feature (#466)

* Add TimelineChart component (#467)

* Adds timeline-chart Component

* Removed the obsoleted comment

* Add the hover component on timeline chart shown when user mouse is over (#468)

* Add the hover component on timeline chart shown when user mouse is over

* fix suggested by gemini-code-assist

* Added scroll interaction on the ruler & minor style improvement (#469)

* Added scroll interaction on the ruler & minor style improvement

* fix issue pointed by gemini-code-assist

* Add TimelineFrameComponent (#470)

* Add TimelineFrameComponent

This component is a virtually scrollable components embeds its children timeline related components.

* added missing change on the PR

* Fixed scroll caluclation bug

* Replace current timeline with the timeline component (#471)

* Add TimelineFrameComponent

This component is a virtually scrollable components embeds its children timeline related components.

* added missing change on the PR

* Fixed scroll caluclation bug

* Implemented TimelineSmartComponent and replace the current timeline component

This is the component only for injecting props from Services.

* Removed unused shaders

* Add a missing file

* Fix minor style problems (#472)

* Add TimelineFrameComponent

This component is a virtually scrollable components embeds its children timeline related components.

* Fixed scroll caluclation bug

* Fixed several minor style issues to prepare release

* fix z-index style issue and emphasized the time cursor

---------

Signed-off-by: kyasbal <kyasbal1994@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants