Skip to content
This repository has been archived by the owner on Jan 10, 2024. It is now read-only.

Only add the model elements tags to the elements in the generated C4Plantuml files #44

Closed
MTomBosch opened this issue Feb 9, 2023 · 1 comment

Comments

@MTomBosch
Copy link

I was using the cli 1.20.1 for exporting to C4plantuml files quite successfully. In my dsl file I only changed the default styling for two elements based on a tag (have selected a different shape) and I configured that a "styles.puml" shall be included.
I used the feature to include a styles.puml that allowed me to change the default C4 styling for elements based on the tags given in the C4 dsl model file. I used this primarily to add nice icons to certain elements because the default styling is covering all my needs.

Since I wanted to use the feature to include the standard C4 puml files from the plantuml stdlib (meaning instead of getting http... references to the C4 puml files I wanted to have <c4/...> I moved to version 1.25.0 of the cli.

Now to simply get the tags back again (as I thought) I had to enable the property c4plantuml.tags. With this I now have the problem that all the default styles that are defined in the C4.puml files are all overriden (due to the default add...Tag functions in the generated puml files) and I would be forced to redefine the complete styling (acc to C4.puml implemented default styling) for default and customized elements in the dsl file since also then only the related tags are added at all to the elements in generated plantuml files. If I really wanted to redefine the whole styling I would be using the structurizr exporter and not the c4plantuml exporter.

I know that this "feature" is described in the official docs of the exporter but honestly from my perspective this makes this exporter now really worse than before and no more usable (at least for me). The only thing I need to allow for perfect customizing is to get the tags from the model elements to the elements in the generated puml file. All the customizations (adding sprite definition files and adding addElementTag, updateELementStyle calls can be done by just adding it to the includes puml file that can be configured in the dsl).
This also makes the dsl file much less cluttered with c4plantuml specific information.

Because of that I would be really happy if you could add an option/property or change the behaviour of the C4PlantumlExporter in such a way that "only" the model element tags are added to the c4plantuml file elements and nothing else is changed in the plantuml file related to styling.

@simonbrowndotje
Copy link
Contributor

simonbrowndotje commented Feb 9, 2023

The big problem here is that C4-PlantUML has its own way of using tags and styling elements, and that doesn't match what Structurizr does. Also the old C4PlantUMLExporter didn't work in a number of situations, specifically with regard to the automatically generated legend. So I took the decision to make it match the Structurizr approach to tags/styling as far as possible in this commit -> 70fa947

If you preferred the old (and somewhat unpredictable approach), my recommendation would be to fork the repo before the above commit, and build your own version of the C4PlantUMLExporter (the CLI provides a way to specify the export format via a fully qualified classname).

@simonbrowndotje simonbrowndotje closed this as not planned Won't fix, can't repro, duplicate, stale Feb 9, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants