国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JointJS中文文檔

sihai / 5175人閱讀

摘要:中文文檔是一款功能強大的圖形可視化交互工具,可用來開發流程圖,思維導圖等復雜圖形交互應用核心概念和即畫布,圖形將在上繪制即圖形數據,可與進行綁定,對的修改會即時反映到上一個可與多個綁定和視圖元素,是的基本元素,用來處理交互圖形元素,是的基本

JointJS中文文檔

JointJS是一款功能強大的圖形可視化交互工具,可用來開發流程圖,思維導圖等復雜圖形交互應用

核心概念

paper和graph

paper即畫布,圖形將在paper上繪制
graph即圖形數據,可與paper進行綁定,對graph的修改會即時反映到paper上
一個graph可與多個paper綁定

cellView和cell

cellView: 視圖元素,是paper的基本元素,用來處理UI交互
cell: 圖形元素,是graph的基本元素,用來存儲圖形元素數據
cellView可以通過.model屬性獲取它的cell
graph其實就是cell的集合

link和element

cell有兩種類型,link是連線,element是節點
他們的視圖元素對應為linkView和elementView

source和target

即連線的起點和終點

port

端口,依附于圖形節點,可以被連線連接

坐標系統

client - 相對于瀏覽器窗口
page - 相對于body
local - 圖形絕對坐標
paper - 圖形畫布坐標 (畫布是可以移動的,當畫布移動時paper坐標會改變,而local坐標不會改變)

The joint namespace

joint.dia
模型(類)庫,包含: Paper Graph Cell CellView Element Link 等等

joint.shapes
圖形元素樣式庫,包含多個分組(basic standard custom ...)
以basic為例,其下有Circle Ellipse Rect Text等多個圖形元素

API Paper option
實例化參數 new joint.dia.Paper(option)
el: 圖形容器
model: 圖形數據,此處可綁定graph
width: 圖形寬度
height: 圖形高度
drawGrid: 柵格參考線
gridSize: 參考線密度
background: 背景
defaultLink: 默認連線樣式
interactive: 控制元素的交互屬性(例如是否可以移動)
Paper prototype method
paper實例方法

findViewByModel(model)

通過model(即cell)尋找到對應的cellView

getContentBBox()

獲取paper內圖形實體(不包含空白)的邊界(client坐標)

getContentArea()

獲取paper內圖形實體(不包含空白)的邊界(local坐標)

paperToLocalPoint(point) or (x, y)

將paper坐標的point轉換成local坐標
類似的轉換: `localToPaperPoint` `pageToLocalPoint` 等等

paperToLocalRect(rect)

將paper坐標的rect轉換成local坐標
類似的: `localToPaperRect` `pageToLocalRect` 等等

scale(scale) or (sx, sy)

將paper縮放至指定倍數
如果參數為空,將返回paper當前的縮放倍數

translate(x, y)

將paper原點移動到指定坐標(原點在左上角)
如果參數為空,將返回paper當前的位移


Graph prototype method
graph實例方法

addCell(cell)

添加一個元素

addCells(cells)

添加一組元素

getCell(modelId)

獲取指定id的元素

getCells()

獲取所有元素

getElements()

獲取所有節點

getLinks()

獲取所有連線

clear()

清空所有元素

getNeighbors(element [, opt])

獲取與某節點相連的所有連線

toJSON()

導出JSON

fromJSON(json)

導入JSON

Cell模型

Cell.prototype.define(type [, properties])

定義一個新的圖形元素,或繼承一個已有的元素
// Define a new Ellipse class in `joint.shapes.examples` namespace
// Inherits from generic Element class
var Ellipse = joint.dia.Element.define("examples.Ellipse", {
    // default attributes
    markup: [{
        tagName: "ellipse",
        selector: "ellipse" // not necessary but faster
    ],
    attrs: {
        ellipse: {
            fill: "white",
            stroke: "black",
            strokeWidth: 4,
            refRx: .5,
            refRy: .5,
            refCx: .5,
            refCy: .5
        }
    }
});

// Instantiate an element
var ellipse = (new Ellipse()).position(100, 100).size(120, 50).addTo(graph);

// Define a new ColoredEllipse class
// Inherits from Ellipse
var ColoredEllipse = Ellipse.define("examples.ColoredEllipse", {
    // overridden Ellipse default attributes
    // other Ellipse attributes preserved
    attrs: {
        ellipse: {
            fill: "lightgray"
        }
    }
}, {
    // prototype properties
    // accessible on `this.(...)` - as well as, more precisely, `this.prototype.(...)`
    // useful for custom methods that need access to this instance
    // shared by all instances of the class
    randomizeStrokeColor: function() {
        var randomColor = "#" + ("000000" + Math.floor(Math.random() * 16777215).toString(16)).slice(-6);
        return this.attr("ellipse/stroke", randomColor);
    }
}, {
    // static properties
    // accessible on `this.constructor.(...)`
    // useful for custom methods and constants that do not need an instance to operate
    // however, a new set of static properties is generated every time the constructor is called
    // (try to only use static properties if absolutely necessary)
    createRandom: function() {
        return (new ColoredEllipse()).randomizeStrokeColor();
    }
});

// Instantiate an element
var coloredEllipse = ColoredEllipse.createRandom().position(300, 100).size(120, 50).addTo(graph);

markup

markup(標簽)是用來生成svg元素的模板,可以接收XML標簽或JSON對象
markup: ""
markup: [{
  tagName: "rect",
  selector: "body"
}]

attrs

attrs(屬性)用來定義svg元素的樣式,通過selector或標簽名查找對應的元素
attrs: {
  ellipse: {
    fill: "lightgray"
  },
  body: {
    fill: "white"
  }
}

Cell.prototype.attr()

設置cell的attrs屬性

Cell.prototype.prop()

設置cell的屬性,包括自定義屬性
cell.attr("body/fill", "black")
cell.prop("attrs/body/fill", "black")
cell.prop("attrs", {body: {fill: "black"}})
cell.prop("custom", "data")

Cell.prototype.isElement()

判斷元素是否是節點

Cell.prototype.isLink()

判斷元素是否是連線

Cell.prototype.addTo(graph)

添加到graph

Cell.prototype.remove()

移除元素

Element
圖形節點模型,繼承自Cell

Element模型示例

{
  id: "3d90f661-fe5f-45dc-a938-bca137691eeb",// Some randomly generated UUID.
  type: "basic.Rect",
  attrs: {
        "stroke": "#000"
  },
  position: {
        x: 0,
        y: 50
  },
  angle: 90,
  size: {
        width: 100,
        height: 50
  },
  z: 2,
  embeds: [
        "0c6bf4f1-d5db-4058-9e85-f2d6c74a7a30",
        "cdbfe073-b160-4e8f-a9a0-22853f29cc06"
  ],
  parent: "31f348fe-f5c6-4438-964e-9fc9273c02cb"
  // ... and some other, maybe custom, data properties
}

Geometry 幾何屬性

position 坐標,可通過.position()方法設置

angle 旋轉,可通過.rotate()方法設置

size 尺寸,可通過.resize()方法設置

Presentation 外觀

attrs 同Cell,通過.attr()方法設置

z 層級

Nesting 嵌套

embeds 子節點ids

parent 父節點id

Element prototype method

getBBox() 獲取節點的bounding box(邊界,rect)

portProp(portId, path, [value]) 設置端口屬性

element.portProp("port-id", "attrs/circle/fill", "red");
element.portProp("port-id", "attrs/circle/fill");  // "red"

element.portProp("port-id", "attrs/circle", { r: 10, stroke: "green" });
element.portProp("port-id", "attrs/circle"); // { r: 10, stroke: "green", fill: "red" }

Ports
端口,依附于圖形節點,可以被連線連接

Port API on joint.dia.Element

以下是與port相關的Element的實例方法

hasPort / hasPorts

addPort / addPorts

removePort / removePorts

getPort / getPorts

portProp

getPortPositions

Port示例

// Single port definition
var port = {
    // id: "abc", // generated if `id` value is not present
    group: "a",
    args: {}, // extra arguments for the port layout function, see `layout.Port` section
    label: {
        position: {
            name: "right",
            args: { y: 6 } // extra arguments for the label layout function, see `layout.PortLabel` section
        },
        markup: ""
    },
    attrs: { text: { text: "port1" } },
    markup: ""
};

// a.) add a port in constructor.
var rect = new joint.shapes.standard.Rectangle({
    position: { x: 50, y: 50 },
    size: { width: 90, height: 90 },
    ports: {
        groups: {
            "a": {}
        },
        items: [port]
    }
});

// b.) or add a single port using API
rect.addPort(port);

Port屬性

group 類似于css的class,定義一組port的屬性

args 布局參數

label 文字

Link
圖形連線模型,繼承自Cell

Link示例

var link = new joint.dia.Link();
link.source({ id: sourceId }, { anchor: defaultAnchor });
link.target({ id: targetId, port: portId });
link.addTo(graph)

Link屬性

anchor 錨點,link與element的連接點

connectionPoint 視圖鄰接點
例如,當anchor在節點元素中心時,我們并不需要把連線真的畫到中心,而只要連到節點的邊界上即可

vertices 連線上的折點

connector 線型

"normal" - 普通
"jumpover" - 連線交叉時顯示一個bridge
"rounded" - 轉折處顯示為圓角
"smooth" - 貝塞爾曲線

router 路徑,設置router之后連線不再呈直線連接,而是通過一條設定的路線

"normal" - 普通線
"orthogonal" - 基礎版的正交折線
"manhattan" - 優化版的正交折線
"metro" - 另一種正交折線
"oneSide" - 單側正交折線

Link實例方法

source(source [, opt]) 設置起點

target(target [, opt]) 設置終點

// opt示例
link.source({ id: sourceId }, {anchor})

connector() 設置線型

router() 設置路徑

vertices() 設置折點

事件 Paper

pointerclick

點擊事件
可以添加前綴,以區分不同的點擊區域(blank是空白區域):
cell:pointerdblclick link:pointerdblclick element:pointerdblclick blank:pointerdblclick

pointerdown

鼠標按下

pointermove

鼠標拖拽

pointerup

鼠標松開

link:connect

連線連接時觸發

Graph

add

新建圖形

remove

移除圖形

change

圖形屬性改變
change可以添加后綴,以區分不同的屬性改變:
change:position 節點位置改變
change:vertices 連線折點改變
change:custom 節點自定義屬性改變

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101494.html

相關文章

  • 1.JointJs Paper

    摘要:在該模式下,所有的和會多一個屬性,就行中的陰影有一個屬性表示層級。為了控制哪些元素可以,需要配置。如果允許被潛入到,返回默認所有元素都可以到其他元素中當設置為的時候,用戶將不能將移動到邊界之外。 關于JointJs的介紹,有一篇比較好JointJS介紹 第一個類Paperjoint.dia.Paper 屬性 el css選擇器,Paper將在該Css選擇的Container下畫SV...

    rose 評論0 收藏0
  • 1.JointJs Paper

    摘要:在該模式下,所有的和會多一個屬性,就行中的陰影有一個屬性表示層級。為了控制哪些元素可以,需要配置。如果允許被潛入到,返回默認所有元素都可以到其他元素中當設置為的時候,用戶將不能將移動到邊界之外。 關于JointJs的介紹,有一篇比較好JointJS介紹 第一個類Paperjoint.dia.Paper 屬性 el css選擇器,Paper將在該Css選擇的Container下畫SV...

    shleyZ 評論0 收藏0
  • jointJS(一)--關于jointJS的初認識

    摘要:最近由于項目需要,開始接觸,妥妥不停刷文檔模式,先寫一下對于的粗淺認識吧。我們可以使用已提供的圖元素繪圖,也可根據需求自定義一些圖元素。另外,它極易上手且操作簡單,并且支持所有的現代瀏覽器。 最近由于項目需要,開始接觸jointJS,妥妥不停刷文檔模式,先寫一下對于jointjs的粗淺認識吧。 我們可以使用JointJS已提供的圖元素繪圖,也可根據需求自定義一些圖元素。除此之外,Joi...

    jas0n 評論0 收藏0
  • jointJS系列之一:jointJS的的初步使用

    摘要:由于是基于的,因此對有一定的了解會對的理解和使用有較大幫助。由于是基于的,因此有視圖和模型的概念。掛載的元素關聯聲明的元素的概念,就是圖形顯示的主體,可以有各種不同的形狀,預設有常用的矩形橢圓平行四邊形等。 一、jointJS簡介 jointJS是一個基于svg的圖形化工具庫,在畫布上畫出支持拖動的svg圖形,而且可以導出JSON,也能通過JSON配置導入直接生成圖形。 可以基于joi...

    amuqiao 評論0 收藏0
  • 在vue中使用jointjs

    摘要:在中引入的問題,之前在網上搜了很多,都沒有給出一個確切的答案,搗鼓了兩天終于弄明白了,做個記錄。通過這樣引入還不夠,可能會遇到圖可以正常加載,但無法拖拽的問題,遇到這些問題一般是和自己項目中的環境沖突了,導致無法讀取或者讀取錯誤。 在vue中引入joint.js的問題,之前在網上搜了很多,都沒有給出一個確切的答案,搗鼓了兩天終于弄明白了,做個記錄。首先,我參考了一篇來自stackove...

    李昌杰 評論0 收藏0

發表評論

0條評論

sihai

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<