本文整理匯總了TypeScript中@cycle/dom.svg.g方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript svg.g方法的具體用法?TypeScript svg.g怎麽用?TypeScript svg.g使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@cycle/dom.svg
的用法示例。
在下文中一共展示了svg.g方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: renderSourceOrSinkNode
function renderSourceOrSinkNode(node: StreamGraphNode, zaps: Array<Zap>) {
const index = zaps.map(zap => zap.id).indexOf(node.id);
const zap = index === -1 ? null : zaps[index];
const P = 5; // text padding
const hook = {
insert(vnode: VNode) {
const gElem = vnode.elm as Element;
const rectElem = gElem.childNodes[0] as Element;
const textElem = gElem.childNodes[1] as Element;
const tspanElem = textElem.childNodes[0] as Element;
tspanElem.setAttribute('x',
String(DIAGRAM_PADDING_H + node.x - textElem.clientWidth * 0.5 - P * 0.4),
);
tspanElem.setAttribute('y',
String(DIAGRAM_PADDING_V + node.y + textElem.clientHeight * 0.5 - P * 0.5),
);
rectElem.setAttribute('x',
String(DIAGRAM_PADDING_H + node.x - textElem.clientWidth * 0.5 - P),
);
rectElem.setAttribute('y',
String(DIAGRAM_PADDING_V + node.y - textElem.clientHeight * 0.5 - P),
);
rectElem.setAttribute('width', String(textElem.clientWidth + 2 * P));
rectElem.setAttribute('height', String(textElem.clientHeight + 2 * P));
},
};
return svg.g({ hook }, [
svg.rect({
class: {
[styles.sourceOrSinkNodeStyle]: !zap,
[styles.nodeZapNextStyle]: zap && zap.type === 'next',
[styles.nodeZapErrorStyle]: zap && zap.type === 'error',
[styles.nodeZapCompleteStyle]: zap && zap.type === 'complete',
},
attrs: {
x: node.x - node.width * 0.5 + DIAGRAM_PADDING_H,
y: node.y - node.height * 0.5 + DIAGRAM_PADDING_V,
rx: 9,
ry: 9,
width: node.width,
height: node.height,
},
}),
svg.text({ class: { [styles.sourceOrSinkNodeNameStyle]: true } }, [
svg.tspan(String(node.label)),
]),
renderNodeLabel(node, zap, styles.sourceOrSinkNodeLabelStyle),
]);
}
示例2: renderCommonNode
function renderCommonNode(node: StreamGraphNode, zaps: Array<Zap>): VNode {
const index = zaps.map(zap => zap.id).indexOf(node.id);
const zap = index === -1 ? null : zaps[index];
return svg.g([
svg.rect({
class: {
[styles.activeNodeStyle]: !zap,
[styles.nodeZapNextStyle]: zap && zap.type === 'next',
[styles.nodeZapErrorStyle]: zap && zap.type === 'error',
[styles.nodeZapCompleteStyle]: zap && zap.type === 'complete',
},
attrs: {
x: node.x - node.width * 0.5 + DIAGRAM_PADDING_H,
y: node.y - node.height * 0.5 + DIAGRAM_PADDING_V,
rx: 9,
ry: 9,
width: node.width,
height: node.height,
},
hook: {
update(oldVNode: VNode, newVNode: VNode) {
const rectElem = newVNode.elm as Element;
const inactiveAttr = 'data-inactive-state';
const inactiveAttrValue = rectElem.getAttribute(inactiveAttr);
if (zap && zap.type === 'complete') {
rectElem.setAttribute(inactiveAttr, 'complete');
} else if (zap && zap.type === 'error') {
rectElem.setAttribute(inactiveAttr, 'error');
} else if (zap && zap.type === 'next' && inactiveAttrValue) {
rectElem.removeAttribute(inactiveAttr);
rectElem.setAttribute('class', styles.nodeZapNextStyle);
} else if (inactiveAttrValue === 'complete') {
rectElem.setAttribute('class', styles.nodeInactiveCompleteStyle);
} else if (inactiveAttrValue === 'error') {
rectElem.setAttribute('class', styles.nodeInactiveErrorStyle);
}
},
},
}),
renderNodeLabel(node, zap, styles.commonNodeLabelStyle),
]);
}
示例3: renderEdgeType2
function renderEdgeType2(vw: Dagre.Edge, graph: Dagre.Graph): VNode | null {
const edgeData: StreamGraphEdge = (graph as any).edge(vw.v, vw.w);
if (!edgeData.points) {
return null;
}
const points = edgeData.points
.map(({x, y}) => ({ x: x + DIAGRAM_PADDING_H, y: y + DIAGRAM_PADDING_V }));
return svg.g([
svg.path({
class: {
[styles.edgeType2Style]: true,
},
attrs: {
d: `M ${points.map(({ x, y }) => `${x} ${y}`).join(' ')}`,
'marker-end': `url("#arrowhead${vw.v}-${vw.w}")`,
},
}),
renderArrowHead(vw),
]);
}