render node property `borders` of `rect` node
This commit is contained in:
parent
853d62c8d1
commit
984a5084b0
|
@ -313,6 +313,8 @@ const rect = (parent, node) => {
|
|||
// add the rect
|
||||
const rect = shapeSvg.insert('rect', ':first-child');
|
||||
|
||||
const totalWidth = bbox.width + node.padding;
|
||||
const totalHeight = bbox.height + node.padding;
|
||||
rect
|
||||
.attr('class', 'basic label-container')
|
||||
.attr('style', node.style)
|
||||
|
@ -320,8 +322,12 @@ const rect = (parent, node) => {
|
|||
.attr('ry', node.ry)
|
||||
.attr('x', -bbox.width / 2 - halfPadding)
|
||||
.attr('y', -bbox.height / 2 - halfPadding)
|
||||
.attr('width', bbox.width + node.padding)
|
||||
.attr('height', bbox.height + node.padding);
|
||||
.attr('width', totalWidth)
|
||||
.attr('height', totalHeight);
|
||||
// TODO warn if unknown property is given
|
||||
if (node.props?.borders) {
|
||||
applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);
|
||||
}
|
||||
|
||||
updateNodeBounds(node, rect);
|
||||
|
||||
|
@ -332,6 +338,43 @@ const rect = (parent, node) => {
|
|||
return shapeSvg;
|
||||
};
|
||||
|
||||
function applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {
|
||||
const strokeDashArray = [];
|
||||
const addBorder = (length) => {
|
||||
strokeDashArray.push(length);
|
||||
strokeDashArray.push(0);
|
||||
};
|
||||
const skipBorder = (length) => {
|
||||
strokeDashArray.push(0);
|
||||
strokeDashArray.push(length);
|
||||
};
|
||||
if (borders.includes('t')) {
|
||||
log.debug('add top border');
|
||||
addBorder(totalWidth);
|
||||
} else {
|
||||
skipBorder(totalWidth);
|
||||
}
|
||||
if (borders.includes('r')) {
|
||||
log.debug('add right border');
|
||||
addBorder(totalHeight);
|
||||
} else {
|
||||
skipBorder(totalHeight);
|
||||
}
|
||||
if (borders.includes('b')) {
|
||||
log.debug('add bottom border');
|
||||
addBorder(totalWidth);
|
||||
} else {
|
||||
skipBorder(totalWidth);
|
||||
}
|
||||
if (borders.includes('l')) {
|
||||
log.debug('add left border');
|
||||
addBorder(totalHeight);
|
||||
} else {
|
||||
skipBorder(totalHeight);
|
||||
}
|
||||
rect.attr('stroke-dasharray', strokeDashArray.join(' '));
|
||||
}
|
||||
|
||||
const rectWithTitle = (parent, node) => {
|
||||
// const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);
|
||||
|
||||
|
|
Loading…
Reference in New Issue