Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

standardize info diagram definitions #4486

Merged

Conversation

Yokozuna59
Copy link
Member

@Yokozuna59 Yokozuna59 commented Jun 12, 2023

📑 Summary

Currently, most diagrams aren't fully typed, which causes some expected behaviors.

Originally, I was planning to do that here in #4450 while migrating to the new parser, but it appears it's going to take some time since I'm not familiar with the repo structure and the current DBs and still can't figure out a way to run the parser without the language server. I guess by adding and documenting the types and functions, I would be knowledgeable about the mermaid structure and each diagram style, definition, and DB, and then I would be able to use those DBs in the new parser.

Standardize diagrams definitions by:

  • Converting JS code into TS.

  • Remove @ts-* comments

  • Add and use defined types and interfaces.

  • Add more JSDoc comments.

  • Standardize Diagrams Definition:

    ---
    title: Diagram Definition
    ---
    flowchart LR
    diagram --> diagramDb.ts
    diagram --> diagramDetector.ts
    diagram --> diagramRenderer.ts
    diagram --> diagramDiagram.ts
    diagram --> diagramTypes.ts
    diagram --> diagramStyles.ts
    

📏 Design Decisions

Describe the way your implementation works or what design decisions you made if applicable.

Diagram Definition:

  • DB: similar to the existing one but with types and standardizing definitions.
  • Detector: similar to the existing one but with types if missing.
  • Renderer: similar to the existing one but with svgDraw.js if exists.
  • Diagram: contains the diagram definition with db, parser, styles, etc.
  • Types: contains diagram types and interfaces for DB, styles options, etc. i.g., classTypes.ts.
  • Styles (NOT SURE): Either combining it with Renderer like quadrant chart or converting it to TS like flowchart.

📋 Tasks

Make sure you

  • 📖 have read the contribution guidelines
  • 💻 have added unit/e2e tests (if appropriate)
  • 📓 have added documentation (if appropriate)
  • 🔖 targeted develop branch

Copy link
Member

@sidharthv96 sidharthv96 left a comment

Choose a reason for hiding this comment

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

This is excellent work, long overdue!
Keep going 🚀

packages/mermaid/src/diagrams/info/infoDiagram.ts Outdated Show resolved Hide resolved
packages/mermaid/src/diagrams/er/erDiagram.ts Outdated Show resolved Hide resolved
.vite/jisonTransformer.ts Show resolved Hide resolved
@Yokozuna59
Copy link
Member Author

This is excellent work, long overdue! Keep going 🚀

Thanks! Well do! If you could give some feedback on JSDoc side that would be great, most of the time I just type what comes to my head so not sure if it's clear enough or not.

@Yokozuna59
Copy link
Member Author

Yokozuna59 commented Jun 13, 2023

For d3 type issues, it appears that @types/d3 package isn't enough or might even have no use; we need to import the types for the specific used package, so I'll add more of those types when needed. I'm currently working on converting pie chart files, and the renderer needs @types/d3-shape and @types/d3-selection, so I'll add them and try to resolve those type errors and remove @ts-* comments.

Copy link
Member Author

@Yokozuna59 Yokozuna59 left a comment

Choose a reason for hiding this comment

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

I'm not sure how to assign Document d3 type to the new HTML one, there are some differences, so I can't make it a union type, it will affect the regular select('body').

If you've got a better design for this mess, let me know so I can follow it with other renders.

@Yokozuna59 Yokozuna59 force-pushed the standardized-diagrams-definitions branch 3 times, most recently from 4f380fa to 7e639be Compare June 14, 2023 23:53
@Yokozuna59
Copy link
Member Author

@sidharthv96 please re-review latest changes so I can uses the new types in pie chart files.

cypress/platform/info.html Outdated Show resolved Hide resolved
packages/mermaid/src/diagrams/info/infoDetector.ts Outdated Show resolved Hide resolved
@Yokozuna59
Copy link
Member Author

Yokozuna59 commented Jun 15, 2023

Should we mock infoRenderer inside __mocks__ dir? And add cy.get('svg'); to cypress/integration/rendering/info.spec.ts after each test case?

I know it has no use but just to standardize definitions.

And I'm currently working on pie chart files, should try supporting @vanilla-extract/css with it? Or just focus on converting files?

@sidharthv96
Copy link
Member

sidharthv96 commented Jun 16, 2023

Should we mock infoRenderer inside __mocks__ dir?

You can add it if it's required to run any tests. No need to add and maintain files just for standardizing.


And add cy.get('svg'); to cypress/integration/rendering/info.spec.ts after each test case?

You can actually remove all the cy.get('svg') inside tests that call imgSnapshotTest.
cy.get('svg') is already called inside imgSnapshotTest, so the direct call inside the tests are redundant.


And I'm currently working on pie chart files, should try supporting @vanilla-extract/css with it? Or just focus on converting files?

It's better not to mix things. I actually had that habit a while back (still do for small things 😅), but it's best to keep things separate.

@Yokozuna59
Copy link
Member Author

Yokozuna59 commented Jun 16, 2023

You can add it if it's required to run any tests. No need to add and maintain files just for standardizing.

Ok.

You can actually remove all the cy.get('svg') inside tests that call imgSnapshotTest. cy.get('svg') is already called inside imgSnapshotTest, so the direct call inside the tests are redundant.

It would affect many files and be hard to review. I'll remove them when converting the test file of the diagram.

It's better not to mix things. I actually had that habit a while back (still do for small things 😅), but it's best to keep things separate.

It will be the same thing at the end; when trying to add styles, it will affect and change many files, and then it would be better to make each PR a separate diagram. But ok, I'll leave it to separate PR.


So is the pr ready to merged?

@sidharthv96 sidharthv96 merged commit 15dbf22 into mermaid-js:develop Jun 16, 2023
13 checks passed
@mermaid-bot
Copy link

mermaid-bot bot commented Jun 16, 2023

@Yokozuna59, Thank you for the contribution!
You are now eligible for a year of Premium account on MermaidChart.
Sign up with your GitHub account to activate.

@Yokozuna59 Yokozuna59 deleted the standardized-diagrams-definitions branch June 16, 2023 12:17
This was referenced Jun 16, 2023
github-merge-queue bot pushed a commit to fuxingloh/contented that referenced this pull request Jul 2, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [mermaid](https://togithub.com/mermaid-js/mermaid) | [`10.2.3` ->
`10.2.4`](https://renovatebot.com/diffs/npm/mermaid/10.2.3/10.2.4) |
[![age](https://badges.renovateapi.com/packages/npm/mermaid/10.2.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/mermaid/10.2.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/mermaid/10.2.4/compatibility-slim/10.2.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/mermaid/10.2.4/confidence-slim/10.2.3)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>mermaid-js/mermaid (mermaid)</summary>

###
[`v10.2.4`](https://togithub.com/mermaid-js/mermaid/releases/tag/v10.2.4):
10.2.4

[Compare
Source](https://togithub.com/mermaid-js/mermaid/compare/v10.2.3...v10.2.4)

#### Features

- Add Plausible analytics to mermaid.js.org by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#4473
- Support for development in Docker by
[@&#8203;nirname](https://togithub.com/nirname) in
[mermaid-js/mermaid#4478
- standardize info diagram definitions by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4486
- Change C4 stereotype braces from ASCII <\</>> to Unicode «/» by
[@&#8203;jonathan-r-young](https://togithub.com/jonathan-r-young) in
[mermaid-js/mermaid#4460
- Add coverage for E2E tests by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#4498
- set normal mode for vitest coverage by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4505
- Use v8 coverage in vitest by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#4560
- feat(flowchart): add classDef style group definition by
[@&#8203;tomperr](https://togithub.com/tomperr) in
[mermaid-js/mermaid#3923
- add cypress coverage clean by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4556
- fix(class): keep members in namespace classes by
[@&#8203;tomperr](https://togithub.com/tomperr) in
[mermaid-js/mermaid#4532

#### Bugfixes

- Add hint on "flowchart" and "graph" by
[@&#8203;koppor](https://togithub.com/koppor) in
[mermaid-js/mermaid#4096
- fix(flowchart): apply style on doublecircle by
[@&#8203;tomperr](https://togithub.com/tomperr) in
[mermaid-js/mermaid#4540
- fix not rendered style when style is optional by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4528
- fix(flowchart): allow multiple vertices with style by
[@&#8203;tomperr](https://togithub.com/tomperr) in
[mermaid-js/mermaid#4553

#### Documentation

- change REAMDME.md coverage from coveralls into codecov by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4507
- Update latest news section by
[@&#8203;huynhicode](https://togithub.com/huynhicode) in
[mermaid-js/mermaid#4468
- Fix link to Tutorials from n00b-overview page by
[@&#8203;Spiderpig86](https://togithub.com/Spiderpig86) in
[mermaid-js/mermaid#4472
- Fix Directives Documentation by
[@&#8203;adamazing](https://togithub.com/adamazing) in
[mermaid-js/mermaid#4475
- Correct "Bronze" spelling in timeline docs by
[@&#8203;adamazing](https://togithub.com/adamazing) in
[mermaid-js/mermaid#4467
- Document recommended file extension and MIME type docs by
[@&#8203;bollwyvl](https://togithub.com/bollwyvl) in
[mermaid-js/mermaid#4485
- Fix typo in quadrant chart documentation by
[@&#8203;tobie](https://togithub.com/tobie) in
[mermaid-js/mermaid#4512
- fix cspell issues in \*.md files by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4531
- docs: Howto on foreground color on timelines by
[@&#8203;mcbeelen](https://togithub.com/mcbeelen) in
[mermaid-js/mermaid#4524
- Add citation.cff file by
[@&#8203;schackartk](https://togithub.com/schackartk) in
[mermaid-js/mermaid#4521
- Update Tutorials.md by
[@&#8203;ellenealds](https://togithub.com/ellenealds) in
[mermaid-js/mermaid#4539
- Add Standard Notes extension in integrations page by
[@&#8203;nienow](https://togithub.com/nienow) in
[mermaid-js/mermaid#4557
- Fix up Gantt Chart demo by
[@&#8203;AlexMooney](https://togithub.com/AlexMooney) in
[mermaid-js/mermaid#4561

#### Chore

- Update all patch dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4482
- chore: revise Contributing documentation by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3814
- chore(deps): update all minor dependencies (minor) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4435
- fix(deps): update all patch dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4510
- fix(deps): update all patch dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4535
- chore(deps): update dependency eslint-plugin-jsdoc to v46 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4544
- chore(deps): update dependency jsdom to v22 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4546
- chore(deps): update dependency eslint-plugin-unicorn to v47 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4545
- chore(deps): update dependency workbox-window to v7 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4547
- chore(deps): update node.js to v20 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4548
- fix(deps): update all patch dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#4543
- add `Suggested Solutions` field in `bug_report.yml` by
[@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) in
[mermaid-js/mermaid#4541

#### New Contributors

- [@&#8203;Spiderpig86](https://togithub.com/Spiderpig86) made their
first contribution in
[mermaid-js/mermaid#4472
- [@&#8203;adamazing](https://togithub.com/adamazing) made their first
contribution in
[mermaid-js/mermaid#4475
- [@&#8203;koppor](https://togithub.com/koppor) made their first
contribution in
[mermaid-js/mermaid#4096
- [@&#8203;nirname](https://togithub.com/nirname) made their first
contribution in
[mermaid-js/mermaid#4478
- [@&#8203;Yokozuna59](https://togithub.com/Yokozuna59) made their first
contribution in
[mermaid-js/mermaid#4486
- [@&#8203;jonathan-r-young](https://togithub.com/jonathan-r-young) made
their first contribution in
[mermaid-js/mermaid#4460
- [@&#8203;tobie](https://togithub.com/tobie) made their first
contribution in
[mermaid-js/mermaid#4512
- [@&#8203;schackartk](https://togithub.com/schackartk) made their first
contribution in
[mermaid-js/mermaid#4521
- [@&#8203;mcbeelen](https://togithub.com/mcbeelen) made their first
contribution in
[mermaid-js/mermaid#4524
- [@&#8203;ellenealds](https://togithub.com/ellenealds) made their first
contribution in
[mermaid-js/mermaid#4539
- [@&#8203;nienow](https://togithub.com/nienow) made their first
contribution in
[mermaid-js/mermaid#4557
- [@&#8203;AlexMooney](https://togithub.com/AlexMooney) made their first
contribution in
[mermaid-js/mermaid#4561

**Full Changelog**:
mermaid-js/mermaid@v10.2.3...v10.2.4

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/levaintech/contented).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNDQuMiIsInVwZGF0ZWRJblZlciI6IjM1LjE0NC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@Yokozuna59 Yokozuna59 mentioned this pull request Jul 7, 2023
22 tasks
@Yokozuna59 Yokozuna59 mentioned this pull request Aug 3, 2023
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants