Skip to content

Commit 8e0a75e

Browse files
committed
Show message when no ER entities found. Fixes #36
1 parent b05937a commit 8e0a75e

File tree

4 files changed

+73
-5
lines changed

4 files changed

+73
-5
lines changed

webview-ui/package-lock.json

Lines changed: 16 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"d3": "^7.8.0",
2020
"mermaid": "^9.3.0",
2121
"react": "^18.2.0",
22-
"react-dom": "^18.2.0"
22+
"react-dom": "^18.2.0",
23+
"react-icons": "^4.7.1"
2324
},
2425
"devDependencies": {
2526
"@types/d3": "^7.4.0",

webview-ui/src/components/Mermaid/Mermaid.css

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,33 @@
99
width: 100%;
1010
max-width: 100% !important;
1111
}
12+
13+
.no-entities {
14+
flex: 1;
15+
align-items: center;
16+
justify-content: center;
17+
display: flex;
18+
}
19+
20+
.no-entities-header {
21+
display: flex;
22+
flex-direction: row;
23+
align-items: center;
24+
gap: 10px;
25+
}
26+
27+
body.mermaid-has-entities .mermaid {
28+
display: block;
29+
}
30+
31+
body.mermaid-has-entities .no-entities {
32+
display: none;
33+
}
34+
35+
body.mermaid-has-no-entities .mermaid {
36+
display: none;
37+
}
38+
39+
body.mermaid-has-no-entities .no-entities {
40+
display: flex;
41+
}

webview-ui/src/components/Mermaid/Mermaid.tsx

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
22
import mermaid from 'mermaid';
33
import * as d3 from 'd3';
4+
import { VscWarning } from 'react-icons/vsc';
45
import './Mermaid.css';
56

67
export type MermaidAPI = {
@@ -32,6 +33,20 @@ export function Mermaid({
3233
mermaid.contentLoaded();
3334

3435
const svg = d3.select('.mermaid svg');
36+
if (!svg.node()) {
37+
return;
38+
}
39+
40+
const hasEntities = !!document.querySelector(
41+
'.mermaid svg g[id^="entity"]',
42+
);
43+
44+
if (hasEntities) {
45+
document.body.classList.add('mermaid-has-entities');
46+
} else {
47+
document.body.classList.add('mermaid-has-no-entities');
48+
}
49+
3550
svg.html('<g>' + svg.html() + '</g>');
3651

3752
const inner = svg.select('g');
@@ -70,8 +85,15 @@ export function Mermaid({
7085
}));
7186

7287
return (
73-
<pre className="mermaid" id="mermaid">
74-
{chart}
75-
</pre>
88+
<>
89+
<div className="no-entities">
90+
<h2 className="no-entities-header">
91+
<VscWarning /> No Entities Were Generated
92+
</h2>
93+
</div>
94+
<pre className="mermaid" id="mermaid">
95+
{chart}
96+
</pre>
97+
</>
7698
);
7799
}

0 commit comments

Comments
 (0)