@@ -5,13 +5,26 @@ import { Typography } from "@mui/material";
55import mermaid from "mermaid" ;
66import AntSwitch from "@/ui/shared-components/AntSwitch" ;
77import RegularButton from "@/ui/shared-components/buttons/RegularButton" ;
8+ import { graphToMermaid } from "@foerderfunke/matching-engine/src/rule-graph/EvalGraph" ;
9+ import matchingEngineManager from "@/core/managers/matchingEngineManager" ;
810
911export default function MermaidRulesGraph ( { evalGraph, t } ) {
12+ // make SVG zoomable TODO
1013 const [ svgContent , setSvgContent ] = useState ( "" ) ;
14+ const [ graphTypeEval , setGraphTypeEval ] = useState ( false ) ;
15+ const [ printLabels , setPrintLabels ] = useState ( false ) ;
16+ const [ orientationVertical , setOrientationVertical ] = useState ( true ) ;
1117
1218 useEffect ( ( ) => {
1319 if ( ! evalGraph ) return ;
14- const mermaidDef = evalGraph . toMermaid ( ) ;
20+ renderMermaid ( ) ;
21+ } , [ evalGraph , graphTypeEval , printLabels , orientationVertical ] ) ;
22+
23+ const renderMermaid = ( ) => {
24+ const me = matchingEngineManager . matchingEngineInstance ;
25+ const mermaidDef = graphToMermaid (
26+ graphTypeEval ? evalGraph . ruleGraph : evalGraph ,
27+ me , printLabels , orientationVertical ) ;
1528 mermaid . initialize ( ) ;
1629 try {
1730 mermaid . parse ( mermaidDef ) ;
@@ -21,7 +34,7 @@ export default function MermaidRulesGraph({ evalGraph, t }) {
2134 mermaid . render ( `rulesGraph${ Date . now ( ) } ` , mermaidDef )
2235 . then ( ( { svg } ) => setSvgContent ( svg ) )
2336 . catch ( ( error ) => console . error ( "Mermaid render error:" , error ) ) ;
24- } , [ evalGraph ] ) ;
37+ } ;
2538
2639 return (
2740 < VBox
@@ -39,26 +52,26 @@ export default function MermaidRulesGraph({ evalGraph, t }) {
3952 < HBox gap = { 4 } alignItems = "center" >
4053 < HBox gap = { 1 } alignItems = "center" >
4154 < strong > Type:</ strong >
42- < span > Rule</ span >
43- < AntSwitch checked = { true } onChange = { ( ) => { } } color = "white" />
4455 < span > Evaluation</ span >
56+ < AntSwitch checked = { graphTypeEval } onChange = { ( e ) => setGraphTypeEval ( e . target . checked ) } color = "white" />
57+ < span > Rule</ span >
4558 </ HBox >
4659 < HBox gap = { 1 } alignItems = "center" >
4760 < strong > Orientation:</ strong >
4861 < span > Horizontal</ span >
49- < AntSwitch checked = { true } onChange = { ( ) => { } } color = "white" />
62+ < AntSwitch checked = { orientationVertical } onChange = { ( e ) => setOrientationVertical ( e . target . checked ) } color = "white" />
5063 < span > Vertical</ span >
5164 </ HBox >
5265 < HBox gap = { 1 } alignItems = "center" >
5366 < strong > Datafields:</ strong >
5467 < span > URIs</ span >
55- < AntSwitch checked = { true } onChange = { ( ) => { } } color = "white" />
68+ < AntSwitch checked = { printLabels } onChange = { ( e ) => setPrintLabels ( e . target . checked ) } color = "white" />
5669 < span > Labels</ span >
5770 </ HBox >
5871 < RegularButton
5972 variant = { 'blackOutlined' }
6073 text = { "Export" }
61- onClick = { ( ) => { } }
74+ onClick = { ( ) => alert ( "TODO" ) }
6275 size = 'small'
6376 />
6477 </ HBox >
0 commit comments