提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2021-06-17 11:11:29.140|阅读 350 次
概述:本教程演示了如何使用 flexbox 布局来排列 React 图表库附带的各种图表控件。我们将安排的控件是 DiagramView 、NodeListView、Ruler、Overview、Zoomer和Ruler。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
MindFusion.Diagramming for WinForms是一个能帮助你创建工作流和进程图表的.NET控件;数据库实体关系图表;组织图表;对象层次和关系图表;图表和树。它是基于对象-图表框,表格和箭头类型,将其归类分派给其他并结合成复杂的结构。该控件提供超过预先定义的50多种图表框,如自定义设计样式和对图表框着色等。MindFusion.Diagramming for WinForms现已加入在线订购,Standard Single Developer版本原价2848现在抢购立享优惠只需2345,立即查看详情>>
点击下载MindFusion.Diagramming for WinForms最新试用版
本教程演示了如何使用 flexbox 布局来排列 React 图表库附带的各种图表控件。我们将安排的控件是 DiagramView 、NodeListView、Ruler、Overview、Zoomer和Ruler。这是最终应用程序的屏幕截图:
我们使用可从//www.npmjs.com/package/diagram-library-react获得的 React 框架和 MindFusion 图库构建我们的项目。
一、初始项目设置
我们打开一个终端并导航到我们要创建应用程序的文件夹。我们使用 create-react-app 来初始化一个空的 React 应用程序:
npx create-react-app flex-diagram正如您一样,我们将应用程序命名为 flex-diagram。初始 React 设置完成后,我们安装图表:
npm install diagram-library-react一旦我们完成了,我们就可以开始编写我们的应用程序了。我们添加一个新的 JavaScript 文件,我们将其命名为 DiagramApp.js。在其中我们首先导入默认的 React 命名空间并声明 Component 类的成员导入。然后我们在名称“mf”下声明 MindFuson 图表库的默认导入。最后,我们声明我们打算使用的控件类的成员导入:DiagramView、Overview、NodeListView、ZoomControl 和 Ruler:
import React, { Component } from 'react'; import mf from 'diagram-library'; import { DiagramView, Overview, NodeListView, ZoomControl, Ruler } from 'diagram-library-react';然后我们可以创建我们的类 DagramApp,它扩展了组件。我们需要一个构造函数,所以我们声明一个。在其中我们创建了一个Diagram类的实例,它代表了图表。请注意,这不是用于呈现图表的 React 类的 DiagramView。这是交互式图表,实际上是由DiagramView 渲染的。
class DiagramApp extends Component { constructor(props) { super(props); // create the diagram var diagram = new mf.Diagramming.Diagram(); ...........................然后我们创建一个ShapeNode实例数组,它将被NodeListView控件使用。同样,NodeListView是一个呈现节点的 UI 组件,但它不会创建它们。它们作为参数提供给它。
var nodes = []; var shapes = ["Actor", "RoundRect", "Triangle", "Decision"]; for (var i = 0; i < shapes.length; ++i) { var node = new mf.Diagramming.ShapeNode(diagram); node.setText(shapes[i]); node.setShape(shapes[i]); nodes.push(node); }我们仅使用ShapeNode -s的 id-s 创建一个数组,我们也将其用作它们的标签。您可以在//www.mindfusion.eu/onlinehelp/jsdiagram/index.htm?CC_refTable_of_Predefined_Shapes_4.htm检查可用的预定义ShapeNode -s的 id-s 。
最后,我们需要在 React 状态中存储图表,以及节点和形状 id-s。当我们为我们的应用程序创建 HTML 时,我们将需要它们。在 React 中,访问类变量的方式是将它们存储在状态中。
this.state = { diagram: diagram, nodes: nodes, captions: shapes };二、使用 CSS 和 Flexbox 布局排列 UI
我们的 flexbox 布局具有以下结构:
.container{ display: flex; flex: 1 1 100%; min-height: 500px; flex-flow: row nowrap; background-color: azure; }容器中的第一项是我们要将概览和NodeListView控件放在一起的垂直列。此列需要保持固定大小。当用户调整页面大小时,我们不希望它调整大小。当可用空间发生变化时,必须调整中间的图表。我们称该列为“left-sidebar”并将其“flex-flow”设置为 column。如果可用空间太短,我们再次使用 no wrap 来停止将两个控件并排放置的布局。我们还将此元素的宽度固定为 200 像素,这很适合我们的控件。
.left-sidebar{ flex: 0 0 200px; display: flex; flex-flow: column nowrap; background-color: beige; }我们希望概览和NodeListView控件占用空间的方式有所不同。概览需要固定的空间。我们希望为 NodeListView 提供额外的空间。这就是为什么我们再添加一种样式来应用它:
.item { align-self: stretch; background-color:lightpink; flex: 1 1 300px; }我们将 1 作为 flex-grow 和 flex-shrink 的值,表示我们希望调整此元素的大小,而不是右列中的其他项目。
我们现在准备处理中间的图表。在这里,重要的是要指出该元素将伸展以占据所有可用位置。而且,当空间变小时,必须收缩的就是这个项目:
.center-area { align-self: stretch; background-color:chartreuse; flex: 10 10 500px; max-height: 800px; overflow: hidden; }我们为 flex-grow 和 'flex-shrink' 属性设置大值,并将 flex-basis 设置为 500 像素。我们必须将图表的高度限制为 800 像素,因为它可能会变得很长。'align-self' 的重要属性,它应用于由 flexbox 容器排列的项目,而不是容器本身。在这里,我们使用此属性告诉图表在空间可用时自行拉伸。隐藏溢出属性以避免在大图中呈现不必要的滚动条。
最后,右侧边栏将托管缩放控件。它类似于左侧边栏,但它没有像 NodeListView 这样的“特殊”项。Zoom 控件是一个固定大小的 UI 控件,不需要特殊处理。如果窗口太大,我们只需要确保没有额外的空间被转移到它上面:
.right-sidebar{ flex: 0 0 50px; background-color: lavender; }这是我们需要定义的最后一个元素的最后一个样式。现在我们准备将这些样式应用到真正的 React 组件并安排它们。
三、“渲染”方法
我们在新的 DiagramApp React 组件的 'render' 方法中声明的第一件事是一些属性:
var props = { "id": "diagram1", "linkHeadShapeSize": 2, "routeLinks": true, "roundedLinks": true, "backBrush": "#e0e9e9" };这些是Diagram实例的属性,我们将通过 JavaScrpt 展开运算符提供它们。然后在 return 语句中我们首先声明容器 div 元素。它的风格是“容器”。在其中我们声明了左侧边栏,它将包含概览和 NodeListView。我们也声明它们:
return ( <div className="container"> <div className="left-sidebar"> <Overview diagram={this.state.diagram}></Overview> <NodeListView className="item" nodes={this.state.nodes} captions={this.state.captions} ></NodeListView> </div> </div> );该概述被绑定到图中,我们坚持国家目标。该NodeListView需要与节点和标题列表,如果我们要加强对节点字幕。我们想要并且我们已经将节点和标题存储在状态中。
之后轮到图表。它将占据中心区域,它的类是“中心区域”。除了图表之外,我们还将使用标尺控件。我们首先放置它并将图表嵌套在其中。我们使用扩展运算符将属性分配给图表,我们在方法开始时初始化了这些属性。
<div className="center-area"> <Ruler style={{ width: "100%", height:"800px" }}> <DiagramView diagram={this.state.diagram} {...props} /> </Ruler> </div>最后,我们声明右侧边栏,其中包含缩放控件。Zoom 控件还需要绑定到一个图表实例,我们使用 state 来获取对我们图表的引用:
<div className="right-sidebar"> <ZoomControl diagram={this.state.diagram}></ZoomControl> </div>这样我们的组件就准备好了。我们只需要将它放在 index.js 而不是默认的 App 组件中:
import DiagramApp from './DiagramApp'; ReactDOM.render( , document.getElementById('root') );我们可以用
npm start然后您可以在本地主机的端口 3000 上看到您的应用程序。
对于技术问题,请使用 JS Diagram 论坛:https : //mindfusion.eu/Forum/YaBB.pl?board=jsdiag_disc
关于 JavaScript 图表:这个原生 JavaScript 库使开发人员能够创建和自定义任何类型的图表、决策树、流程图、类层次结构、图形、谱系树、BPMN 图等等。该控件提供丰富的事件集、众多自定义选项、动画、图形操作、样式和主题。您有 100 多个预定义节点、表节点和 15 多种自动布局算法。在//mindfusion.eu/javascript-diagram.html 上了解有关 JavaScript 图表的更多信息。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
FlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。
MindFusion.Reporting for WinForms原生的Windows Forms编程组件,可为任何.NET应用程序提供专业的报表功能
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢