hbmartin / graphviz2drawio

Convert graphviz (dot) files into draw.io / lucid (mxGraph) format
http://graphviz2drawio.rtfd.io
GNU General Public License v3.0
163 stars 33 forks source link

Keep text on edges in resulting draw.io output #59

Closed jdputsch closed 11 hours ago

jdputsch commented 1 year ago

With this simple graph:

digraph "" { g [label=Group]; g -> u [label=HAS_USER]; u [label=User]; }

graphviz2drawio 0.2.0 does not include the text "HAS_USER" as a label on the edge between Group and User.

This PR keeps texts associated with edges in the resulting draw.io diagram.

Summary by CodeRabbit

sourcery-ai[bot] commented 1 year ago

Sourcery Code Quality Report

❌  Merging this PR will decrease code quality in the affected files by 3.93%.

Quality metrics Before After Change
Complexity 3.10 ⭐ 4.68 ⭐ 1.58 👎
Method Length 58.88 ⭐ 63.17 🙂 4.29 👎
Working memory 8.18 🙂 8.78 🙂 0.60 👎
Quality 72.11% 🙂 68.18% 🙂 -3.93% 👎
Other metrics Before After Change
Lines 148 174 26
Changed files Quality Before Quality After Quality Change
graphviz2drawio/version.py 98.67% ⭐ 98.67% ⭐ 0.00%
graphviz2drawio/mx/Edge.py 82.40% ⭐ 77.73% ⭐ -4.67% 👎
graphviz2drawio/mx/EdgeFactory.py 72.99% 🙂 53.85% 🙂 -19.14% 👎
graphviz2drawio/mx/MxGraph.py 68.71% 🙂 68.62% 🙂 -0.09% 👎

Here are some functions in these files that still need a tune-up:

File Function Complexity Length Working Memory Quality Recommendation
graphviz2drawio/mx/EdgeFactory.py EdgeFactory.from_svg 12 🙂 151 😞 12 😞 47.68% 😞 Try splitting into smaller methods. Extract out complex expressions
graphviz2drawio/mx/MxGraph.py MxGraph.get_edge_style 8 ⭐ 164 😞 13 😞 48.45% 😞 Try splitting into smaller methods. Extract out complex expressions

Legend and Explanation

The emojis denote the absolute quality of the code:

The 👍 and 👎 indicate whether the quality has improved or gotten worse with this pull request.


Please see our documentation here for details on how these metrics are calculated.

We are actively working on this report - lots more documentation and extra metrics to come!

Help us improve this quality report!

hbmartin commented 5 days ago

Thanks very much @jdputsch ! I can resolve conflicts for this after getting 0.3 release out or you can take a go at it. Also would be great to add a test case :)

coderabbitai[bot] commented 11 hours ago

Walkthrough

This update mainly involves the enhancement and correction of label handling in the graphviz2drawio project. Changes include the renaming of a parameter, the addition of new methods for label processing, and corrections to the .gitignore file. Specifically, the Edge, EdgeFactory, and MxGraph modules have been adjusted to consistently handle multiple labels, while .gitignore saw minor corrections and additions.

Changes

File(s) Change Summary
.gitignore Removed extra space before .vscode, added Pipfile.lock, and corrected Icon entry by removing \r.
graphviz2drawio/mx/Edge.py Renamed label parameter to labels in __init__, added text_to_mx_value method.
graphviz2drawio/mx/EdgeFactory.py Added _get_labels method to extract text labels and assigned them using this method.
graphviz2drawio/mx/MxGraph.py Modified add_edge method to include "value" key with output of edge.text_to_mx_value().

Poem

In the code where data flows,
New labels dance and show,
Edge now speaks in plurals sweet,
Bound in logic, text, and neat.
With Git ignored, the clean code grows,
The rabbit smiles, the software glows.
🌟✨🐇


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 .` - `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 generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@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 as 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. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration 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://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.