@@ -569,8 +569,9 @@ export const addEdges = function (edges, diagObj, graph, svg) {
569
569
* @param edgeData
570
570
* @param diagramType
571
571
* @param arrowMarkerAbsolute
572
+ * @param id
572
573
*/
573
- const addMarkersToEdge = function ( svgPath , edgeData , diagramType , arrowMarkerAbsolute ) {
574
+ const addMarkersToEdge = function ( svgPath , edgeData , diagramType , arrowMarkerAbsolute , id ) {
574
575
let url = '' ;
575
576
// Check configuration for absolute path
576
577
if ( arrowMarkerAbsolute ) {
@@ -587,61 +588,103 @@ const addMarkersToEdge = function (svgPath, edgeData, diagramType, arrowMarkerAb
587
588
// look in edge data and decide which marker to use
588
589
switch ( edgeData . arrowTypeStart ) {
589
590
case 'arrow_cross' :
590
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-crossStart' + ')' ) ;
591
+ svgPath . attr (
592
+ 'marker-start' ,
593
+ 'url(' + url + '#' + id + '_' + diagramType + '-crossStart' + ')'
594
+ ) ;
591
595
break ;
592
596
case 'arrow_point' :
593
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-pointStart' + ')' ) ;
597
+ svgPath . attr (
598
+ 'marker-start' ,
599
+ 'url(' + url + '#' + id + '_' + diagramType + '-pointStart' + ')'
600
+ ) ;
594
601
break ;
595
602
case 'arrow_barb' :
596
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-barbStart' + ')' ) ;
603
+ svgPath . attr (
604
+ 'marker-start' ,
605
+ 'url(' + url + '#' + id + '_' + diagramType + '-barbStart' + ')'
606
+ ) ;
597
607
break ;
598
608
case 'arrow_circle' :
599
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-circleStart' + ')' ) ;
609
+ svgPath . attr (
610
+ 'marker-start' ,
611
+ 'url(' + url + '#' + id + '_' + diagramType + '-circleStart' + ')'
612
+ ) ;
600
613
break ;
601
614
case 'aggregation' :
602
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-aggregationStart' + ')' ) ;
615
+ svgPath . attr (
616
+ 'marker-start' ,
617
+ 'url(' + url + '#' + id + '_' + diagramType + '-aggregationStart' + ')'
618
+ ) ;
603
619
break ;
604
620
case 'extension' :
605
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-extensionStart' + ')' ) ;
621
+ svgPath . attr (
622
+ 'marker-start' ,
623
+ 'url(' + url + '#' + id + '_' + diagramType + '-extensionStart' + ')'
624
+ ) ;
606
625
break ;
607
626
case 'composition' :
608
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-compositionStart' + ')' ) ;
627
+ svgPath . attr (
628
+ 'marker-start' ,
629
+ 'url(' + url + '#' + id + '_' + diagramType + '-compositionStart' + ')'
630
+ ) ;
609
631
break ;
610
632
case 'dependency' :
611
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-dependencyStart' + ')' ) ;
633
+ svgPath . attr (
634
+ 'marker-start' ,
635
+ 'url(' + url + '#' + id + '_' + diagramType + '-dependencyStart' + ')'
636
+ ) ;
612
637
break ;
613
638
case 'lollipop' :
614
- svgPath . attr ( 'marker-start' , 'url(' + url + '#' + diagramType + '-lollipopStart' + ')' ) ;
639
+ svgPath . attr (
640
+ 'marker-start' ,
641
+ 'url(' + url + '#' + id + '_' + diagramType + '-lollipopStart' + ')'
642
+ ) ;
615
643
break ;
616
644
default :
617
645
}
618
646
switch ( edgeData . arrowTypeEnd ) {
619
647
case 'arrow_cross' :
620
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-crossEnd' + ')' ) ;
648
+ svgPath . attr ( 'marker-end' , 'url(' + url + '#' + id + '_' + diagramType + '-crossEnd' + ')' ) ;
621
649
break ;
622
650
case 'arrow_point' :
623
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-pointEnd' + ')' ) ;
651
+ svgPath . attr ( 'marker-end' , 'url(' + url + '#' + id + '_' + diagramType + '-pointEnd' + ')' ) ;
624
652
break ;
625
653
case 'arrow_barb' :
626
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-barbEnd' + ')' ) ;
654
+ svgPath . attr ( 'marker-end' , 'url(' + url + '#' + id + '_' + diagramType + '-barbEnd' + ')' ) ;
627
655
break ;
628
656
case 'arrow_circle' :
629
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-circleEnd' + ')' ) ;
657
+ svgPath . attr ( 'marker-end' , 'url(' + url + '#' + id + '_' + diagramType + '-circleEnd' + ')' ) ;
630
658
break ;
631
659
case 'aggregation' :
632
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')' ) ;
660
+ svgPath . attr (
661
+ 'marker-end' ,
662
+ 'url(' + url + '#' + id + '_' + diagramType + '-aggregationEnd' + ')'
663
+ ) ;
633
664
break ;
634
665
case 'extension' :
635
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-extensionEnd' + ')' ) ;
666
+ svgPath . attr (
667
+ 'marker-end' ,
668
+ 'url(' + url + '#' + id + '_' + diagramType + '-extensionEnd' + ')'
669
+ ) ;
636
670
break ;
637
671
case 'composition' :
638
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-compositionEnd' + ')' ) ;
672
+ svgPath . attr (
673
+ 'marker-end' ,
674
+ 'url(' + url + '#' + id + '_' + diagramType + '-compositionEnd' + ')'
675
+ ) ;
639
676
break ;
640
677
case 'dependency' :
641
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')' ) ;
678
+ svgPath . attr (
679
+ 'marker-end' ,
680
+ 'url(' + url + '#' + id + '_' + diagramType + '-dependencyEnd' + ')'
681
+ ) ;
642
682
break ;
643
683
case 'lollipop' :
644
- svgPath . attr ( 'marker-end' , 'url(' + url + '#' + diagramType + '-lollipopEnd' + ')' ) ;
684
+ svgPath . attr (
685
+ 'marker-end' ,
686
+ 'url(' + url + '#' + id + '_' + diagramType + '-lollipopEnd' + ')'
687
+ ) ;
645
688
break ;
646
689
default :
647
690
}
@@ -692,7 +735,7 @@ const calcOffset = function (src, dest, parentLookupDb) {
692
735
return { x : ancestorOffset . posX , y : ancestorOffset . posY } ;
693
736
} ;
694
737
695
- const insertEdge = function ( edgesEl , edge , edgeData , diagObj , parentLookupDb ) {
738
+ const insertEdge = function ( edgesEl , edge , edgeData , diagObj , parentLookupDb , id ) {
696
739
const offset = calcOffset ( edge . sourceId , edge . targetId , parentLookupDb ) ;
697
740
698
741
const src = edge . sections [ 0 ] . startPoint ;
@@ -723,7 +766,7 @@ const insertEdge = function (edgesEl, edge, edgeData, diagObj, parentLookupDb) {
723
766
'transform' ,
724
767
`translate(${ edge . labels [ 0 ] . x + offset . x } , ${ edge . labels [ 0 ] . y + offset . y } )`
725
768
) ;
726
- addMarkersToEdge ( edgePath , edgeData , diagObj . type , diagObj . arrowMarkerAbsolute ) ;
769
+ addMarkersToEdge ( edgePath , edgeData , diagObj . type , diagObj . arrowMarkerAbsolute , id ) ;
727
770
} ;
728
771
729
772
/**
@@ -816,7 +859,7 @@ export const draw = async function (text, id, _version, diagObj) {
816
859
const markers = [ 'point' , 'circle' , 'cross' ] ;
817
860
818
861
// Add the marker definitions to the svg as marker tags
819
- insertMarkers ( svg , markers , diagObj . type , diagObj . arrowMarkerAbsolute ) ;
862
+ insertMarkers ( svg , markers , diagObj . type , id ) ;
820
863
821
864
// Fetch the vertices/nodes and edges/links from the parsed graph definition
822
865
const vert = diagObj . db . getVertices ( ) ;
@@ -895,7 +938,7 @@ export const draw = async function (text, id, _version, diagObj) {
895
938
drawNodes ( 0 , 0 , g . children , svg , subGraphsEl , diagObj , 0 ) ;
896
939
log . info ( 'after layout' , g ) ;
897
940
g . edges ?. map ( ( edge ) => {
898
- insertEdge ( edgesEl , edge , edge . edgeData , diagObj , parentLookupDb ) ;
941
+ insertEdge ( edgesEl , edge , edge . edgeData , diagObj , parentLookupDb , id ) ;
899
942
} ) ;
900
943
setupGraphViewbox ( { } , svg , conf . diagramPadding , conf . useMaxWidth ) ;
901
944
// Remove element after layout
0 commit comments