翻譯|使用教程|編輯:王香|2019-03-26 13:47:42.000|閱讀 414 次
概述:在本文中,我們將創建一個組織結構圖,該圖使用每個員工的自定義節點。該圖將使用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@fc6vip.cn