y-scope / yscope-log-viewer

A tool that can be used to view logs compressed in CLP's IR Stream format.
Apache License 2.0
11 stars 12 forks source link

feat(formatter): Display entire log event as JSON by default and remind users to set format string. #129

Closed davemarco closed 5 days ago

davemarco commented 1 week ago

Description

PR does three things

Adds special case to formatter for empty for string

PR modifies YScopeFormatter so that is will print all the log event fields as JSON when the format string is empty. This allows users to see their logs, so they know what fields to format. PR also sets the default format string to empty.

Popup to remind users to set format string

PR adds a popup to notify users to set format string. The popup only appears when the format string is empty, i.e. the default. It will not appear if they change the format string. The popup opens when users open the file, not when the log viewer starts. I thought this was more appropriate because again they can only set the format string once they see their logs (i.e. after the file is open).

Support button on popup

I modified the popup and settings modal, so the popup can have a button to actually open the settings.

Screenshot 2024-11-22 at 2 45 29 PM

Validation performed

Tested empty format string, popup and button

Summary by CodeRabbit

Release Notes

coderabbitai[bot] commented 1 week ago

Walkthrough

The pull request introduces several modifications across various components and files. Key changes include the transition of state management for the settings modal to a context-based approach in the SidebarTabs component, the addition of a primaryAction property in the PopUpMessageBox, and updates to the CSS for pop-up messages. Additionally, the SettingsDialog component's helper text was clarified, and new functions related to format handling were added in the MainWorker and decoder classes. Overall, the changes enhance state management, interactivity, and configuration handling within the application.

Changes

File Path Change Summary
src/components/CentralContainer/Sidebar/SidebarTabs/index.tsx Removed local state for isSettingsModalOpen, now using context for state management.
src/components/PopUps/PopUpMessageBox.tsx Added primaryAction property to message object; updated rendering logic for button display.
src/components/PopUps/index.css Updated pop-up message CSS for improved layout; added new class .pop-up-message-box-alert-layout.
src/components/modals/SettingsModal/SettingsDialog.tsx Updated helperText for configuration field in SettingsDialog.
src/contexts/StateContextProvider.tsx Introduced isSettingsModalOpen state and updated context provider to manage this state.
src/services/formatters/YscopeFormatter/index.ts Added jsonValueToString function; modified formatLogEvent to handle empty format strings.
src/typings/notifications.ts Updated PopUpMessage interface to include primaryAction; added LONG_AUTO_DISMISS_TIMEOUT_MILLIS.
src/utils/config.ts Modified CONFIG_DEFAULT for formatString and refined validation logic in testConfig.
src/services/MainWorker.ts Introduced postFormatPopup function to prompt user for format string replacement.
src/services/decoders/ClpIrDecoder.ts Updated #formatter initialization; called postFormatPopup for empty formatString.
src/services/decoders/JsonlDecoder/index.ts Added logic to call postFormatPopup if formatString is empty during initialization.
src/typings/formatters.ts Updated capitalization of "Yscope" to "YScope" in comments and type definitions.
src/typings/worker.ts Added FORMAT_POPUP to WORKER_RESP_CODE enum; updated WorkerRespMap type.

Possibly related PRs


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
diy1 commented 6 days ago

This PR has been up 4 days without a review. What's the status?

junhaoliao commented 6 days ago

This PR has been up 4 days without a review. What's the status?

I've been dealing with customer issues in the past two business days and there was no one else triaging the review. I'll take a look once I wrap a customer meeting, if there's no new priorities identified, in an hour.

davemarco commented 6 days ago

I made requested changes. I also modified logic that triggers popup. Previously, the popup was triggered by front-end when file was opened. As you mentioned, not ideal since not all files are structured. It is not trivial to just check extension since the same extension for IRV1 and IRV2... Instead, I added functionality for the backend worker to trigger popup in front end. Now can trigger popup specifically when formatter in constructed in decoder constructor (i.e. triggered only for structured decoders). I also added a feature that closes the popup when you click the button.