没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:杨鹏连|2020-11-26 14:04:23.370|阅读 384 次
概述:在此博客文章中,我们将研究如何使用Mindusion Diagramming库为JavaScript构建ControlNode -s。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
MindFusion.Diagramming for WinForms是一个能帮助你创建工作流和进程图表的.NET控件;数据库实体关系图表;组织图表;对象层次和关系图表;图表和树。它是基于对象-图表框,表格和箭头类型,将其归类分派给其他并结合成复杂的结构。该控件提供超过预先定义的50多种图表框,如自定义设计样式和对图表框着色等。MindFusion.Diagramming for WinForms现已加入在线订购,Standard Single Developer版本原价2848现在年终钜惠抢购立享优惠只需2345,立即查看详情>>
点击下载MindFusion.Diagramming for WinForms最新试用版
在此博客文章中,我们将研究如何使用Mindusion Diagramming库为JavaScript构建ControlNode -s。我们将创建一个网页,该网页创建用于烹饪食谱的模板。每个配方都是一个DiagramNode。可以使用按钮动态添加或删除表格中包含成分的行。单击配方图像时,将显示一个浏览对话框,您可以指向另一个对话框。
您可以自己测试页面:
我们需要一个空白的HTML页面和一个空白的JavaScript文件,其中将包含应用程序的代码。
我们将链接添加到三个JavaScript文件。我们将它们添加到网页的末尾,紧接关闭的BODY标记之前:
<script src =“ MindFusion.Common.js” type =“ text / javascript”> </ script> <script src =“ MindFusion.Diagramming.js” type =“ text / javascript”> </ script> <script src =“ RecipeNodes.js” type =“ text / javascript”> </ script>在网页中,我们需要两个Canvas元素:一个用于图表,一个用于概述控件。该概述控制出了示意图的迷你版。绘制流程图很方便,但不是必需的。
<div id="content" style="top: 60px; bottom: 24px;">
<div style="position: absolute; left: 0px; top: 0px; bottom: 0px; width: 200px; border-right: 1px solid #e2e4e7;
overflow: hidden; vertical-align: top;">
<!-- The Overview component is bound to the canvas element below -->
<div style="position: absolute; top: 0px; bottom: 0px; right: 0px; width: 200px;
height: 200px; border-bottom: 1px solid #e2e4e7; background-color: #c0c0c0;">
<canvas id="overview" width="200" height="200">
</canvas>
</div>
</div>
<!-- The Diagram component is bound to the canvas element below -->
<div style="position: absolute; left: 200px; top: 0px; right: 0px; bottom: 0px; overflow: auto;">
<canvas id="diagram" width="2100" height="2100">
This page requires a browser that supports HTML 5 Canvas element.
</canvas>
</div>
<!-- The ZoomControl component is bound to the canvas element below -->
<div style="width: 50px; height: 300px; position: absolute; top: 20px; right: 35px;
width: 50px; height: 300px;z-index:3;">
<canvas id="zoomer" width="50" height="300">
</canvas>
</div>
</div>
我们还添加了ZoomControl控件,并为所有HTML控件提供了ID。这很重要,因为我们需要此id来引用JavaScript代码中的Canvas元素。
我们还向网页添加了一些CSS样式选项。它们旨在使我们将更
漂亮的HTML控件嵌入到控件节点中。
二.控件
现在我们已经在网页中设置了所有代码,我们开始对JavaScript代码隐藏文件进行编码。我们添加了一些名称空间映射,以使代码更短。如果使用的是Visual Studio Code,则可以添加图库的TypeScript定义。这将在您编码时启用IntelliSense支持。
setTarget(diagram); }});我们获得与在网页中创建的三个Canvas元素相对应的HTML元素。我们使用Web API的document.getElementById。现在您将看到我们使用先前指定的Canvas元素的ID查询文档。
该概述和zoomControl可实例使用setDiagram和setTarget方法prespectively,指定图情况下,它们应该被约束。
三.节点模板
该ControlNode类允许我们以初始化的外观使用纯HTML ControlNode这与setTemplate方法来完成。您可以为创建的每个ControlNode实例指定不同的模板。
var node1 = new MindFusion.Diagramming.ControlNode(diagram);
node1.setTemplate(`<input value="Cupcakes" data-interactive="true"></input>
<div style="padding:10px"><img width="70" height="70" title="Click to choose picture" style="float:left" src="data:image/png;base64,${placeholderBase64}" data-interactive="true" data-event-click="placeholderClick" /><table width="50%"><tr><td contenteditable='true' data-interactive="true">softened butter</td><td contenteditable='true' data-interactive="true">110g</td></tr><tr><td contenteditable='true' data-interactive="true">golden caster sugar</td><td contenteditable='true' data-interactive="true">110g</td></tr><tr><td contenteditable='true' data-interactive="true">large eggs</td><td contenteditable='true' data-interactive="true">2</td></tr><tr><td contenteditable='true' data-interactive="true">vanilla extract</td><td contenteditable='true' data-interactive="true">½ tsp</td></tr>
<tr><td contenteditable='true' data-interactive="true">self-raising flour</td><td contenteditable='true' data-interactive="true">110g</td></tr></table></div>
<button data-interactive="true" data-event-click="addRow">Add Ingredient</button>
<button data-interactive="true" data-event-click="removeRow">Remove Ingredient</button>
<div style="width: 100%;"><textarea id="w3review" name="w3review" rows="4" columns="50" data-interactive="true">
Using an electric whisk beat 110g softened butter and 110g golden caster sugar together until pale and fluffy then whisk in 2 large eggs, one at a time, scraping down the sides of the bowl after each addition.
Add ½ tsp vanilla extract, 110g self-raising flour and a pinch of salt, whisk until just combined then spoon the mixture into the cupcake cases.
</textarea></div>`);
node1.setBounds(new Rect(40, 20, 100, 100))
diagram.addItem(node1);
我们还使用setBounds指定新的DiagramNode在图的工作区上的位置。如果在浏览器中打开网页,则将新节点添加到具有addItem的DiagramItem -s集合中也很重要,我们将看到纸杯蛋糕的食谱节点。但是,如果创建新节点,我们将看到它们呈现为默认的白色矩形:
var defaultTemplate = `
<input placeholder="Recipe Title" data-interactive="true"></input>
<div style="padding:10px"><img width="70" height="70" title="Click to choose picture" style="float:left" src="data:image/png;base64,${placeholderBase64}" /><table width="50%"><tr><td contenteditable='true' data-interactive="true">Milk</td><td contenteditable='true' data-interactive="true">1 cup</td></tr></table></div>
<div><button>Add Ingredient</button>
<button>Remove Ingredient</button>
<div><textarea id="w3review" name="w3review" rows="4" columns="50" data-interactive="true">
Preparation
</textarea></div>`;
现在我们可以调用setDefaultControlTemplate方法来告诉图,从现在开始,当创建新的DiagramNode -s时,它们将具有以下模板:diagram.setDefaultControlTemplate(defaultTemplate);IV.互动性
当我们创建一个新节点时,该表将呈现一个示例行,您无法编辑该行。标题也一样。如果要使控件可编辑,则需要设置数据交互属性:
<div><button data-interactive="true" data-event-click="addRow">Add Ingredient</button>通常,每个ControlNode都公开各种属性,这些属性可通过以下语法访问:
data-attributeName =“ value”从上面的代码中可以看到,有data-event-click属性。此属性指定节点中呈现的按钮的click事件的事件处理程序。这里是:
function addRow(e, sender)
{
var table = sender.getContent().getElementsByTagName("table")[0];
var rows = table.getElementsByTagName('tr');
if(rows.length > 0)
{
var clone = rows[rows.length - 1].cloneNode(true);
table.appendChild(clone);
}
else
{
var tr = document.createElement('tr');
var td = document.createElement('td');
td.appendChild(document.createTextNode('Milk'))
td.setAttribute('contenteditable', 'true');
td.setAttribute('data-interactive', 'true');
tr.appendChild(td);
td = document.createElement('td');
td.appendChild(document.createTextNode('1 cup'))
td.setAttribute('contenteditable', 'true');
td.setAttribute('data-interactive', 'true');
tr.appendChild(td);
table.appendChild(tr);
}
}
在事件处理程序中,我们检查表中是否有行,如果是,则复制第一行。如果没有行,我们将添加一个包含默认数据的新行。data-event-eventName是用于处理ControlNode中包含的HTML控件上可用事件的语法,这是我们指定杯形蛋糕图像可点击的方式:<img width="70" height="70" title="Click to choose picture" style="float:left" src="data:image/png;base64,${placeholderBase64}" data-interactive="true" data-event-click="placeholderClick" />
如您所见,它是交互式的,我们可以处理它的click事件。单击图像后,将出现一个对话框,我们可以选择一个新图像:function placeholderClick(e, sender)
{
var input = document.createElement("input");
input.type = "file";
var img = e.target;
input.addEventListener('change', e =>
{
Utils.toDataUrl(URL.createObjectURL(e.target.files[0]), function (base64str)
{
img.src = base64str;
sender.setTag(base64str);
sender.createImage();
});
})
input.click();
}
选择新图像后,我们将其Base64表示形式作为源分配给ControlNode模板中的图像元素,该图像元素代表烹饪食谱。
这些都是您需要执行的所有步骤,以便获得具有可自定义配料,标题和图像数量的交互式配方节点。
可通过此处的MindFusion论坛获得技术支持。
关于JavaScript绘图:此本地JavaScript库为开发人员提供了创建和自定义任何类型的图,决策树,流程图,类层次结构,图,家谱树,BPMN图等的能力。该控件提供了丰富的事件集,众多的自定义选项,动画,图形操作,样式和主题。您有100多个预定义节点,表节点和15多种自动布局算法。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:MindFusion



近日,Stimulsoft 正式发布了2025.3 版本的报表工具,为 .NET 和 .NET Framework 平台带来了重要更新 —— 支持在报表计算过程中以解释模式运行 C# 脚本。这一功能将进一步提升报表的灵活性和扩展性,方便开发者在报表设计与运行中实现更多自定义逻辑。
在 Python 开发中处理 Microsoft Excel 文件,选择一个功能完善、易于使用的 Excel 库都能显著提升效率。Aspose.Cells for Python 兼顾了性能、灵活性与功能丰富度,能够满足不同业务场景下的表格处理需求。它不仅仅是一个读取 Excel 文件的工具,更是一套完整的电子表格处理引擎,已在金融、数据分析、自动化、报表生成等领域广泛应用。
传统的建模工具通常依赖于基于文件的存储方式,这种方式在处理小型项目时可能足够,但在面对大型团队和复杂模型时,往往会暴露出诸多问题,如文件版本冲突、数据一致性难以保证、扩展性受限等。企业级建模工具Sparx EA的DBMS存储库为企业提供了一种基于服务器的存储解决方案,通过将模型数据存储在企业级数据库管理系统(如Oracle和SQL Server)中,有效解决了这些问题。
TestComplete与BitBar的整合方案,成功破解了跨平台自动化测试的核心痛点。通过高效覆盖多技术栈、利用云端真机实现大规模并行测试、无缝融入CI/CD流程,团队得以将测试效率提升,显著加快反馈闭环,最终确保应用在多样化终端上的一致性与可靠性,驱动业务高效发展。
相关产品
FlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。
最新文章 MORE
相关文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 
渝公网安备
50010702500608号
首页 