Add serial port observe view#2504
Closed
itsmesamster wants to merge 125 commits intoesrlabs:masterfrom
Closed
Conversation
* Create the app crate to be run point for Chipmunk native desktop application. * Set unified version and rust edition in workspace and make all other crates follow it. * Add dependencies for native app. * Add support for parsing CLI arguments * Support for basic logging. * Hello world from native UI
* Specify the paths for internal crates in indexer workspace instead of having to specify their paths in each project. * Apply those changes on all internal crates withing indexer directory
* Rename crate to application * Define UI & Core & Service and State modules. * Define communication types (commands and events) for both general app and sessions. * Define communication channels for general app * Render Menu with one command to close the app.
+ Ignore errors in repaint watcher since we will get and error once the states sender channel is dropped.
* Use two main modules for the app (host and session) and have each modules containing its UI, services, data and core modules as sub-modules. * This change will make it easier in the future to split the two main modules into separated crates.
* Create the UI for rendering the content of the sessions using the communication channels. * Spawn a task for each session to make the communication for each session locally. * UI will just read the file and render it's content as lines. * Channels communication still need some thinking because we are tight to the render loop to receive the events.
Change the mechanism for waking up the UI on events to include egui context in all senders and call it explicitly on each send.
* Wire up close session command adding and ID for each session. * Improve notifications adding additional items and cleaning up the implementation in UI.
* Log send errors in one function and embedded it in all senders
* Create a struct to be passed through UI components to be able to send notifications and check for shared UI state across all UI components. * Use this struct to send command encapsulating the error handling. * New error type for UI.
* Rename to UiComponents to HostUI * Move receivers and notification handling to host UI completely.
* Use the table provided by the crate egui_table to show the logs. * Current implementation still primitive without using functionality in chipmunk core.
We need the UI for each session to have it's own unique ID to avoid its owned controls from having ID clashes. We had this problem with tables from different sessions sharing their scroll state.
* Bind session from rust core libraries in the native UI. * Currently we can establish a session and deliver the number of lines that has been read. * UI needs to request for lines so it can display them in the table.
Building system to display logs in table (WIP): We load all logs without cleaning up the logs aren't needed.
* Better way to check for data need to be fetched. * Encapsulate logic for getting log entries inside MainTable struct
* This approach avoids having to load existing logs but is complex and is based on assumptions that the logs are sequenced and sorted.
* Implement showing a window of logs simply using a map with indexes avoiding the complexity of keeping track on the existing logs. * Request discard rendering frame when new logs needed to be fetched to avoid rendering the rows where we don't have data.
Tables use the ID of their direct parent, therefor we need to assign an ID for that part and it's not enough to assign an ID for the session root UI as it solved in previous commit
* Create the bottom panel with the tab control + Add tabs types * Create components for each tab and render the initial content for each one of them.
* Input controls follow the functionality and look if the current one. * It provides extra functionality for handling Ctrl+Backspace.
* Wire filter callback to keeping filter info in session data state. * Implement search status in search bar * Introduce entity to keep track for long running process. * Cancel search operation safely. * Cancel running operations on session closing. * TODOs and notes
* Implement table for search results adding the needed structs and commands to UI, data state and the services.
* Keep offset for search results because we need for mouse scrolling. * Fix layouts making sure panels don't shrink to fit their content. * Add ID for search table to avoid ID clashing between scroll states.
* Show colors of source in the logs table when multiple sources are used. * draw a separator between logs that have different sources.
* Group duplicated code for tables in one module and use them for both logs and search tables. * Other refactoring are postponed for now until filters are implemented.
* Add stick to end for logs table with stream sources and file source once it get into tailing state after finishing the initial file reading. * Reference egui_table to special patch until the next crate release with the accepted changes.
* Provide HostRegistry struct for shared info among running session. * Add FilterRegistry for session to act as centralized place to manage filters among running sessions. * Filter management in each session communicating with filter registry + Needed changes on search bar * Basic implementation for filters side panel and presets bottom panel * Extend highlighting in tables for search matches. * Move calling on_session_close to close_session function
* Use different color pallets for sources and filters adding foreground color for filters only. * Also define selection and temp filter colors as color pairs * Use one function to handle colors in both search and log tables
* Extend charts implementation to support managed filters with their names and colors. * Improve handling temp search in charts. * Use stacked charts for better overview of search results
* Send drop search commands before applying new search in all scenarios in the native UI. * Ensure previous search is dropped before applying a new one in sessions backend. * Reset UI search state on any search request.
* Implement filter & search-value move flows with consistent state updates. * Introduce unified sync_search_pipelines target-based API and use it across UI call sites. * Wire search-value apply/drop commands in backend service. * Add shared search-value validation with eligibility reasons and cache it in filter metadata. * Add unit tests to sensitive logic code. * Implement line charts including: - Send values from backend. - Data management in UI state. - Charts visualizations. * Fixes for handling charts reset to auto bounds
Chart bounds now covers all edge-cases in discovering that users has custom viewport of the table. The changes are keeping track on the current and sent ranges and have more infos instead of keeping track on the last requested range as source of truth. Unified charts function on changes for both filters and search values.
* Use sources default color palette for charts to avoid allocate another color palette. * Add offset to avoid filters and charts having similar colors (red, light red)
Implement enabling and disabling charts without removing them from the session and link in side bar filters UI to a checkbox
It was possible to get the same color if a search were assign as filter then moved to charts. This commit fixes this edge-case by ensuring there is no duplication in colors
It's possible for users now to select the colors of their charts using any color they want via the color picker. Filters and charts will still get a color assign from panel by default
* Fix issues regarding flickering when items are disabled/enabled * Improve performance by avoiding multiple checks in render loop. * Use frames for each group and extend their width * Use Sides for items for proper shrinking and truncating * Extend titles & Improve details view
* Create one main module in shared for all search, filters and charts related module grouping them in one place. * Resolve unused and TODOs in code before merging * Cleanup + Refactoring
FxHashMap dependency already exists in the codebase so this commit extends using it in places where keys are managed locally only.
Move color assignment from global registry to each session since it's a visual setting that shouldn't be a part of the logical parameters for each session
Previous implementation had multiple boolean in constructor leading to
code like new("search", true, false, true)
This is replaced with the builder pattern
* Filter flags can be edited after being applied UI. * Remove and move to charts are removed since they are available in the context menu anyway * Registry supported editing filter with duplicating them if a filter is referenced in multiple places. * Filter and charts text values can be edited with text edit mode. * Add regex validation for filters when regex flag is enabled. * Registry checks for duplicate when adding new filters and search values.
* Implement bookmarks log items adding them to indexed table with manual clicks. * Fixes for keeping track on search counts distinguishing it from the total indexed count.
* Support for growing data. * Support for zoom out of boundary use-case.
* Add development menu entry in debug builds only. * Add command to reset egui memory in development menu.
Add inline highlighting for matches inside logs in both tables.
* Introduce two tabs to manage filters and charts. * First tab is Library tab as global registry for filters and charts from all session where users can apply any of them directly without having to define a preset. * Second tab is Presets which allow users to define their presets giving them names and enabling them for edit the presets. * Sessions will reference library items while presets will be applied as copied to the sessions. * Multiple refactoring and UI improvements
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.