addShape()
Beschreibung
Erstellt eine benutzerdefinierte Form
Die Methode addShape() kann sowohl im Diagramm als auch im Editor verwendet werden. Sehen Sie sich die Beispiele unten an
Verwendung
addShape(
type: string,
parameters: object
): void;
Parameter
type- (erforderlich) der eindeutige Name für den Typ einer benutzerdefinierten Form. Der Name muss sich von den Namen der Standardformen unterscheidenparameters- (erforderlich) ein Objekt mit den zusätzlichen Parametern der MethodeaddShape(). Hier können Sie die folgenden Attribute angeben:-
template: function- (erforderlich) die Funktion, die das Konfigurationsobjekt der Form als Parameter erhält und entweder eine HTML- oder SVG-Vorlage zurückgibt -
defaults: object- (optional) die Standardkonfiguration für eine erstellte Form. Siehe die vollständige Liste der Konfigurationseigenschaften einer Form -
eventHandlers: object- (optional) fügt HTML-Elementen der Vorlage einer Form benutzerdefinierte Event-Handler hinzu. Das ObjekteventHandlersenthält eine Reihe vonkey:value-Paaren, wobei:key: string- der Name des Events. Beachten Sie, dass das Präfix „on“ am Anfang des Event-Namens verwendet wird (onclick, onmouseover)value: object- ein Objekt, das einkey:value-Paar enthält, wobeikeyder Name der CSS-Klasse ist, auf die der Handler angewendet wirdvalueeine Funktion ist, die zwei Parameter erhält:event: object- (erforderlich) ein Event-Objektshape: object- (erforderlich) das Objekt der Form
TippWir empfehlen, beim Initialisieren benutzerdefinierter Event-Handler für unterschiedliche benutzerdefinierte Formen jeweils unterschiedliche CSS-Klassen zu verwenden.
-
Beispiel
const diagram = new dhx.Diagram("diagram_container", {
type: "org", // or type: "default", or type: "mindmap"
defaultShapeType: "personal",
});
diagram.data.parse(data);
diagram.addShape("personal", {
template: ({ name, photo, post }) => (`
<div className="dhx_diagram_template_a_box dhx_diagram_template_a">
<div className="dhx_diagram_template_a__inside">
<div className="dhx_diagram_template_a__picture" style={{backgroundImage: 'url(${photo})'}}></div>
<div className="dhx_diagram_template_a__body">
<div className="dhx_diagram_template_a__title">${name}</div>
<div className="dhx_diagram_template_a__row">
<span className="dhx_diagram_template_a__text">${post}</span>
</div>
</div>
<div className="toggle--open-menu">
<span className="dhx_diagram_template_a__icon mdi mdi-dots-vertical"></span>
</div>
</div>
</div>
`),
defaults: {
height: 115, width: 330,
name: "Name and First name",
post: "Resident",
photo: "",
},
eventHandlers: {
onclick: {
"toggle--open-menu": () => console.log("open menu")
}
}
});
Verwandtes Beispiel: Diagram mit Editor. Org-Chart-Modus. Anpassung von Karten, Editbar und Toolbar
Das folgende Beispiel zeigt, wie Sie eine benutzerdefinierte Form in den Diagram Editor einfügen und die Panels Shapebar und Editbar des Editors konfigurieren können. Die Konfiguration einer benutzerdefinierten Form in der Editbar des Editors erfolgt über die Eigenschaft properties des Editbar-Panels.
const editor = new dhx.DiagramEditor("editor_container", {
type: "default",
view: {
shapebar: {
sections: {
"Network shapes": [
{ type: "network", text: "Core", img: src + "core.svg" },
{ type: "network", text: "Server", img: src + "server.svg" }
],
"Flow shapes": [{ flowShapes: true }]
}
},
editbar: {
properties: {
network: [
{ type: "arrange" },
{
type: "fieldset",
label: "Network information",
rows: [
{ type: "avatar", key: "img", circle: true, readOnly: true },
{ type: "textarea", key: "text", label: "Description" },
{ type: "input", key: "ip", label: "IP" }
]
}
]
}
}
}
});
editor.parse(data);
editor.diagram.addShape("network", {
template: ({ img, text, ip }) => {
return `
<section className="dhx_diagram_template_d">
<img className="dhx_diagram_template_d__image" src="${img}" alt="${text}"/></img>
<span className="dhx_diagram_template_d__title">${text}</span>
<span className="dhx_diagram_template_d__text">${ip}</span>
</section>
`;
},
defaults: {
width: 160, height: 160,
preview: { scale: 0.7 },
ip: "127.0.0.1"
}
});
Changelog: Das Attribut properties wurde in v6.0 entfernt.
Verwandter Artikel: Benutzerdefinierte Form
Verwandte Beispiele: