import { HTMLappendIt, svgNamespace } from "../types"; import { Tragable } from "./tragable"; export class SVGTRansition extends Tragable implements HTMLappendIt { group: SVGElement; rect: SVGElement; rectText: SVGElement; constructor(trans) { super(); // Create the group element this.group = document.createElementNS(svgNamespace, 'g'); this.group.classList.add("PTransition"); this.group.setAttribute('transform', `translate(${trans.x}, ${trans.y})`); // Create the circle this.rect = document.createElementNS(svgNamespace, 'rect'); this.rect.setAttribute('x', '-12.5'); this.rect.setAttribute('y', '-25'); this.rect.setAttribute('height', '50'); this.rect.setAttribute('width', '25'); // Create the text inside the circle this.rectText = document.createElementNS(svgNamespace, 'text'); this.rectText.classList.add("rectText"); this.rectText.setAttribute('x', '-5'); this.rectText.setAttribute('y', '-35'); this.rectText.textContent = trans.name; // Append the circle and texts to the group this.group.appendChild(this.rect); this.group.appendChild(this.rectText); } appendIt(svg: SVGElement) { svg.appendChild(this.group); this.initTrag(this.group); } translate(x: number, y: number) { this.group.setAttribute('transform', `translate(${x}, ${y})`); } setName(name: string) { this.rectText.textContent = name; } setCanFire(can: boolean) { if (can) this.group.classList.add("canFire"); else this.group.classList.remove("canFire"); } }