добавляет произвольную SVG фигуру
id | string | ID фигуры |
obj | object | настройки фигуры |
$$("diagram1").addShape("internet", {
template:'<svg width="60" height="60" viewBox="0 0 60 60">...</svg>',
// другие настройки
});
Имя фигуры должно быть уникально. Возможные поля для объекта настроек фигуры:
true
, блок сохраняет свои пропорции при изменении размера через форму или drag-n-droptemplate
Поле template
может быть HTML строкой, функцией, или строкой с названием встроенного темплейта.
Вы можете передать любую HTML строку в поле template
(напр. тэг для изображения):
$$("diagram1").addShape("laptop", {
template: `<img class="custom-image" src="svg/laptop.svg"></img>`,
// другие настройки
});
Related sample: Diagram Editor: Extra Shapes
Темплейт в виде функции может быть полезным в ситуациях, когда необходимо вычислить размер фигуры в зависимости от размеров внешнего элемента. Функция принимает 1 параметр:
$$("diagram1").addShape("myshape", {
template: function(obj) {
const rx = obj.width / 2;
const ry = obj.height / 2;
const d = (obj.lineWidth || 1) / 2;
return `
<svg
width='100%'
height='100%'>
<ellipse cx='${rx}' cy='${ry}' rx='${rx -d}' ry='${ry - d}' ></ellipse>
</svg>`;
},
//...
});
Related sample: Diagram Editor: Template as a Function
Эта опция полезна в том случае, когда вам необходим один и тот же темплейт с разными цветами/размерами в нескольких местах. Например, темплейт "rrect" (rounded rectangle) можно использовать вместо "join" или "action", предварительно указав фигуре соответствующие размеры.
shapes:[
{
id: "action",
template: "rrect",
backgroundColor: "#b5d461",
lineColor: "#b5d461",
},
{
id: "join",
template: "rrect",
height: 80,
width: 10,
backgroundColor: "#ffb955",
lineColor: "#ffb955",
},
// ...
]
Related sample: Diagram Editor: Styled Shapes