in karavan-web/karavan-app/src/main/webui/src/designer/route/DslConnections.tsx [404:445]
getArrow(pos: DslPosition) {
const endX = pos.headerRect.x + pos.headerRect.width / 2 - this.props.left;
const endY = pos.headerRect.y - 9 - this.props.top;
if (pos.parent) {
const parent = this.state.steps.get(pos.parent.uuid);
if (parent) {
const startX = parent.headerRect.x + parent.headerRect.width / 2 - this.props.left;
const startY = parent.headerRect.y + parent.headerRect.height - this.props.top;
if ((!pos.inSteps || (pos.inSteps && pos.position === 0)) && parent.step.dslName !== 'MulticastDefinition') {
return (
<path name={pos.step.dslName} d={`M ${startX},${startY} C ${startX},${endY} ${endX},${startY} ${endX},${endY}`}
className="path" key={pos.step.uuid} markerEnd="url(#arrowhead)"/>
)
} else if (parent.step.dslName === 'MulticastDefinition' && pos.inSteps) {
return (
<path d={`M ${startX},${startY} C ${startX},${endY} ${endX},${startY} ${endX},${endY}`}
className="path" key={pos.step.uuid} markerEnd="url(#arrowhead)"/>
)
} else if (pos.inSteps && pos.position > 0 && !this.hasSteps(pos.step)) {
const prev = this.getPreviousStep(pos);
if (prev) {
const r = this.hasSteps(prev.step) ? prev.rect : prev.headerRect;
const prevX = r.x + r.width / 2 - this.props.left;
const prevY = r.y + r.height - this.props.top;
return (
<line x1={prevX} y1={prevY} x2={endX} y2={endY} className="path" key={pos.step.uuid} markerEnd="url(#arrowhead)"/>
)
}
} else if (pos.inSteps && pos.position > 0 && this.hasSteps(pos.step)) {
const prev = this.getPreviousStep(pos);
if (prev) {
const r = this.hasSteps(prev.step) ? prev.rect : prev.headerRect;
const prevX = r.x + r.width / 2 - this.props.left;
const prevY = r.y + r.height - this.props.top;
return (
<line x1={prevX} y1={prevY} x2={endX} y2={endY} className="path" key={pos.step.uuid} markerEnd="url(#arrowhead)"/>
)
}
}
}
}
}