代码拉取完成,页面将自动刷新
说明:此项目是JS项目,目前还不支持TS
可以直接从官网上拿下来,或者从其他地方获取
如果只是展示图形的话只引入 mxClient.js就可以了
自己用它做了一个在线编辑器,可以参考一下
const graph = new mxGraph(document.getElementById('graph'))
graph.model.clear()
let xmlDoc = mxUtils.parseXml(xml);
let codec = new mxCodec(xmlDoc);
codec.decode(xmlDoc.documentElement, graph.getModel());
graph.setEnabled(false);
// graph.fit(); // 自适应缩放
// 编辑器
(function () {
// 语言资源
let bundle = 'https://jgraph.github.io/mxgraph/javascript/examples/grapheditor/www/resources/grapheditor.txt';
// 默认样式
let defaultThemes='https://jgraph.github.io/mxgraph/javascript/examples/grapheditor/www/styles/default.xml'
mxUtils.getAll([bundle,defaultThemes ], function (xhr) {
// 添加语言配置
mxResources.parse(xhr[0].getText());
// 配置默认样式
let themes = {};
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
const editor = new EditorUi(new Editor(false, themes), document.getElementById('editor'))
//初始化完成后可以再进一步配置编辑器,比如添加右键菜单,或者添加工具栏按钮等等
}, function () {
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
});
})()
// 添加爪子箭头, style=endArrow=claw;startArrow=claw;
function createClaw(widthFactor) {
widthFactor = (widthFactor != null) ? widthFactor : 2;
return function (canvas, shape, type, pe, unitX, unitY, size, source, sw, filled) {
let endOffsetX = unitX * sw * 1.118;
let endOffsetY = unitY * sw * 1.118;
unitX = unitX * (size + sw);
unitY = unitY * (size + sw);
let pt = pe.clone();
pt.x -= endOffsetX;
pt.y -= endOffsetY;
let f = (type != mxConstants.ARROW_CLASSIC && type != mxConstants.ARROW_CLASSIC_THIN) ? 1 : 3 / 4;
pe.x += -unitX * f - endOffsetX;
pe.y += -unitY * f - endOffsetY;
const y = (pt.y === pe.y ? pt.x > pe.x ? -unitX : unitX : 0) / widthFactor;
const x = (pt.x === pe.x ? pt.y < pe.y ? unitY : -unitY : 0) / widthFactor;
return function () {
canvas.begin();
canvas.moveTo(pe.x, pe.y);
canvas.lineTo(pt.x, pt.y);
canvas.moveTo(pe.x, pe.y);
canvas.lineTo(pt.x + x, pt.y + y);
canvas.moveTo(pe.x, pe.y);
canvas.lineTo(pt.x - x, pt.y - y);
canvas.close();
canvas.stroke();
};
}
}
mxMarker.addMarker('claw', createClaw(1.5));
const toolbarInit = Toolbar.prototype.init;
Toolbar.prototype.init = function () {
toolbarInit.apply(this, arguments);
this.editorUi.menus.put('save', new Menu(() => this.editorUi.actions.get('save').funct(), true))
// geSprite-save 这是一个样式,官网中没有save图标,可以自定义
this.addMenu('geSprite-save', mxResources.get('save'), false, 'save', null, true);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。