eventstorming
Version:
A Graphics Library for Event Storming
53 lines • 4.64 kB
JavaScript
export class SVGGenerator {
buildBody(node) {
return `<svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg"> ${node} </svg>`;
}
buildNode(stickyEntities, extend, options) {
let extendField = '';
let sameLevelField = '';
let color = '#FFCC33';
if (extend && extend['level'] === 'same') {
sameLevelField = extend['content'];
}
if (extend && extend['level'] === 'child') {
extendField = extend['content'];
}
if (options && options['color']) {
color = options['color'];
}
let entity = stickyEntities.entity;
let pos = stickyEntities.pos;
return `<g>
<rect x="${pos.x}" y="${pos.y}" width="100" height="100" rx="2" ry="2" fill="${color}"/>
<text x="${pos.x}" y="${pos.y + 30}" fill="#000">
<tspan x="${pos.x + 5}" dy="0">${entity.name}</tspan>
</text>${extendField}
</g>${sameLevelField}`;
}
buildWithChild(stickyEntity) {
let result = '';
let childNodes = stickyEntity.subEntity;
for (let childIndex in childNodes) {
result = result + this.buildNode(childNodes[childIndex], {}, { color: '#0095DD' });
}
return this.buildNode(stickyEntity, { level: 'child', content: result });
}
buildNodes(stickyEntities) {
let result = '';
for (let index in stickyEntities) {
let stickyEntity = stickyEntities[index];
if (stickyEntity.hasRelatedChild()) {
result = result + this.buildWithChild(stickyEntity);
}
else {
result = result + this.buildNode(stickyEntity);
}
}
return result;
}
build(stickyEntities) {
let baseNodeString = this.buildNodes(stickyEntities);
return this.buildBody(baseNodeString);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1ZHR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbmRlci9TVkdHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTTtJQUNKLFNBQVMsQ0FBQyxJQUFJO1FBQ1osTUFBTSxDQUFDLCtGQUErRixJQUFJLFNBQVMsQ0FBQTtJQUNySCxDQUFDO0lBRUQsU0FBUyxDQUFDLGNBQW1DLEVBQUUsTUFBZSxFQUFFLE9BQWdCO1FBQzlFLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRXRCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN6QyxjQUFjLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBRTdCLE1BQU0sQ0FBQzt5QkFDYyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLGtEQUFrRCxLQUFLO3lCQUN6RSxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRTs0QkFDcEIsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLElBQUk7dUJBQ3JDLFdBQVc7a0JBQ2hCLGNBQWMsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUMsWUFBaUM7UUFDOUMsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDeEMsR0FBRyxDQUFBLENBQUMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFFRCxVQUFVLENBQUMsY0FBcUM7UUFDOUMsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLEVBQUUsQ0FBQSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQXFDO1FBQ3pDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGIn0=