翻譯|使用教程|編輯:王香|2019-03-26 13:47:42.000|閱讀 431 次
概述:在本文中,我們將創建一個組織結構圖,該圖使用每個員工的自定義節點。該圖將使用Diagramming for JavaScript庫創建。對于節點,我們使用CompositeNode類,這使我們能夠創建圖表節點,其外觀可以通過組件和布局容器的組合來定義。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在本文中,我們將創建一個組織結構圖,該圖使用每個員工的自定義節點。該圖將使用Diagramming for JavaScript庫創建。對于節點,我們使用CompositeNode類,這使我們能夠創建圖表節點,其外觀可以通過組件和布局容器的組合來定義。

我們要做的第一件事是為示例創建一個網頁,并添加對必要的JavaScript文件的引用。在頁面的部分中,我們提供了對以下jQuery文件的引用:
<a href="//common/jquery.min.js">//common/jquery.min.js</a> <a href="//common/jquery-ui.min.js">//common/jquery-ui.min.js</a>
在HTML頁面的末尾,就在結束標記之前,我們放置了對Diagramming庫使用的兩個JavaScript文件的引用:
<a href="//MindFusion.Common.js">//MindFusion.Common.js</a> <a href="//MindFusion.Diagramming.js">//MindFusion.Diagramming.js</a>
我們的示例將其JS代碼放在一個名為Script.js的單獨文件中。我們也提到了它的引用:
<a href="//Script.js">//Script.js</a>
圖庫需要HTML Canvas來繪制自己。我們在網頁中間添加一個:
<div style="width: 100%; height: 100%; overflow: auto;"> <canvas id="diagram" width="2100" height="2100"> This page requires a browser that supports HTML 5 Canvas element. </canvas> </div>
在Script.js文件中,我們首先將映射添加到我們將從圖庫中使用的一些枚舉和類中:
var Diagram = MindFusion.Diagramming.Diagram; var CompositeNode = MindFusion.Diagramming.CompositeNode; var Behavior = MindFusion.Diagramming.Behavior; var Alignment = MindFusion.Drawing.Alignment; var Rect = MindFusion.Drawing.Rect;
現在我們調用CompositeNode 的classFromTemplate方法,該方法使用我們將提供的JSON模板生成節點類:
var OrgChartNode = CompositeNode.classFromTemplate("OrgChartNode",
{
component: "GridPanel",
rowDefinitions: ["*"],
columnDefinitions: ["22", "*"],
...............
在此代碼中,我們指出CompositeNode將使用的面板是GridPanel。然后我們聲明兩個列表,用于設置網格行和列的寬度和高度。每個數組中的成員數表示網格有多少行/列。在我們的例子中,我們有一行占據所有位置和兩列:一列是固定的22像素,另一列占用剩余的可用空間。
CompositeNode的JSON定義繼續使用包含子項的數組:
children:
[
{
component: "Rect",
name: "Background",
pen: "black",
brush: "white",
columnSpan: 2
},
{
component: "Image",
name: "Image",
autoProperty: true,
location: "ceo.png",
margin: "1",
imageAlign: "Fit"
},
第一個子節點使用我們稱之為“背景” 的Rect組件。它使用白色筆刷進行渲染,具有黑色輪廓并跨越兩列,例如,它填充所有可用空間或每個節點。
第二個子類是一個對象。請注意行:
autoProperty: true
這意味著我們希望能夠將此組件作為屬性進行訪問。在這種情況下,庫使用組件的名稱生成自動set / get方法。在我們的示例中,它們將是setImage / getImage。
第三個子節點是StackPanel組件。這是節點旁邊的文本標簽的容器。這個孩子有自己的子節點集合:
component: "StackPanel",
orientation: "Vertical",
gridColumn: 1,
margin: "1",
verticalAlignment: "Near",
children:
[
{
component: "Text",
name: "Title",
autoProperty: true,
text: "title",
font: "Arial bold"
},
{
component: "Text",
name: "FullName",
autoProperty: true,
text: "full name",
pen: "blue",
padding: "1,0,1,0"
},
{
component: "Text",
name: "Details",
autoProperty: true,
text: "details",
font: "Arial 3"
}
這個新StackPanel的子代是文本組件,稱為Title,FullName和Details。他們將autoProperty設置為true,這意味著我們可以通過自動setter和getter方法訪問它們的值。
購買Mindfusion正版授權,請點擊“”喲!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn