标签: jointjs

Javascript图库

我正在为一个项目寻找一个好的JavaScript Diagram库,可以是商业的.

强制性要求:

  • 单击组件(或悬停)时突出显示连接的线和组件
  • 能够切换组件的图像(表示一组组件)
  • 放大/缩小功能
  • 能够定义支持左侧右侧拖动的自定义行为
  • 能够生成图表的可链接最小化地图

到目前为止,我检查了GoJs,JointJS和Draw2D,JointJS看起来最合适,但我不确定.文档和社区也很重要.因此,如果有人有这些图书馆或其他图书馆的经验,请告诉我您的经历.

帮助我使用我提到的功能为项目选择合适的库.

javascript diagram draw2d jointjs gojs

19
推荐指数
1
解决办法
4688
查看次数

JointJS:使链接标签在链接本身上移动

对于链接 - 在JointJS图中 - 我试图实现本教程(http://jointjs.com/tutorial/constraint-move-to-circle)来移动链接上的标签,但我不明白在哪里放了ConstraintElementView.

  1. 我想在链接上移动链接的标签.那么如何将链接定义为可移动标签的"路径"?

ConstraintElementView

var constraint = label; // ???

var ConstraintElementView = joint.dia.ElementView.extend({

    pointerdown: function(evt, x, y) {
        var position = this.model.get('position');
        var size = this.model.get('size');
        var center = g.rect(position.x, position.y, size.width, size.height).center();
        var intersection = constraint.intersectionWithLineFromCenterToPoint(center);
        joint.dia.ElementView.prototype.pointerdown.apply(this, [evt, intersection.x, intersection.y]);
    },
    pointermove: function(evt, x, y) {
        var intersection = constraint.intersectionWithLineFromCenterToPoint(g.point(x, y));
        joint.dia.ElementView.prototype.pointermove.apply(this, [evt, intersection.x, intersection.y]);
    }
});
Run Code Online (Sandbox Code Playgroud)

链接标签

paper.on({
    /**
    *   Doubleclick on link: Add label for link
    */
    'cell:pointerdblclick': function(cellView, …
Run Code Online (Sandbox Code Playgroud)

javascript jointjs

15
推荐指数
1
解决办法
1998
查看次数

如何将onclick事件添加到joint.js元素?

我在DAG中有一个joint.js元素,并希望能够通过单击它来触发事件.

我可以使用$(selector).click(...)它,但我想知道是否有一个joint.js特定的处理方式,因为这可能会更好.我决定的一个事件是onclick的候选人是'批处理:停止'

我的代码:

 var variable =  new joint.shapes.basic.Rect({
     name : label,
     id: label,
     onclick : function () {alert("hello");},
     size: { width: width, height: height },
     attrs: {
         text: { text: label, 'font-size': letterSize, 'font-family': 'monospace' },
         rect: {
             fill : fillColor, 
             width: width, height: height,
             rx: 5, ry: 5,
             stroke: '#555'
         }   
     }   
 }); 
 variable.on('batch:stop', function (element) {alert(""); toggleEvidence(element.name);});
 return variable;
Run Code Online (Sandbox Code Playgroud)

我应该如何添加onclick事件?

javascript jointjs

12
推荐指数
1
解决办法
1万
查看次数

如何让jointjs细胞不会溢出纸张?

我正在使用jointjs制作用户可编辑的图表.用户可以拖动它们并重新定位每个单元格.但是,当一个单元格被拖到边缘时,它会溢出并被切断.我希望防止这种情况发生,相反,单元格在到达纸张边缘之前停止并且不允许越过边缘,因此总是完全保留在纸张内.这个行为可以在jointjs自己的演示中看到:

http://www.jointjs.com/tutorial/ports

尝试将单元格拖动到边缘,您将看到它最终在穿过纸张元素的边缘时变得隐藏.

其次,我使用插件进行有向图布局,在这里找到:

http://jointjs.com/rappid/docs/layout/directedGraph

如您所见,只要您的点击布局,树位置就会自动移动到纸张元素的左上角.如何修改这些默认位置?我看到的所提供函数的唯一选项是行之间的空间和节点之间的空间,没有初始位置.假设我想在点击"布局"时将树显示在纸张中间,我将在哪里进行更改?在此先感谢您的帮助.

javascript jquery javascript-framework jointjs

12
推荐指数
3
解决办法
3804
查看次数

我可以在jointjs元素中添加新属性吗?

我想创建一个具有新属性的自定义元素,我创建了我的自定义元素,但我需要一个新属性来存储有关该元素的信息.

joint.shapes.basic.newRect = joint.shapes.basic.Generic.extend({

markup: '<g class="rotatable"><g class="scalable"><rect/></g><text/></g>',

defaults: joint.util.deepSupplement({

    type: 'basic.newRect',
    attrs: {
        'rect': { fill: 'white', stroke: 'black', 'follow-scale': true, width: 80, height: 40 },
        'text': { 'font-size': 14, 'ref-x': .5, 'ref-y': .5, ref: 'rect', 'y-alignment': 'middle', 'x-alignment': 'middle' }
    }

}, joint.shapes.basic.Generic.prototype.defaults)
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript jointjs

11
推荐指数
1
解决办法
6251
查看次数

JointJs - 事件onConnect Link

我正在尝试创建一个用户可以动态添加块并使用链接连接块的板.(有什么像这样,但动态地)我使用JointJs框架,到现在为止一切工作正常,但我需要显示一些信息,当用户连接两个街区.我的问题是我在连接块时无法找到要处理的事件.

我查看了这个问题,但在我的例子中,我没有附加事件的链接实例.

在这里你可以看到我的例子

以下是块如何添加到电路板中.该磁体:真正的文本属性是什么使文字连接.我真的需要一些帮助来找到链接连接时要处理的事件.

 var rect = new joint.shapes.basic.newRect({
     position: { x: position, y: position },
     size: { width: 100, height: 40 },
     attrs: {
         rect: { 'stroke-width': '1',  stroke: 'black', rx: 3, ry: 3, fill: 'blue'},
         text: { text: 'Block', magnet: true,  }
     }
 });
 graph.addCell(rect);
Run Code Online (Sandbox Code Playgroud)

我也查看了mouseUp事件和坐标,但没有任何结果......我非常感谢一些帮助

javascript jointjs

10
推荐指数
1
解决办法
3006
查看次数

Joint.js添加带路径类的自定义端口.用于自定义元素

我想要做的是创建一个带有端口和路径的自定义类的元素,这样我就可以为ports添加一个带有自定义路径和我自己的标记的元素.这样当我创建一个元素时,我将为它的形状传递动态路径就像路径类的元素行为一样,并且我也从PortsModelInterface扩展,我也将拥有自己的端口标记.这整个工作就是让svg可以扩展为zomming.以前我使用html自定义元素与我的自定义端口工作正常,但自定义元素的HTML不缩放缩放

var graph = new joint.dia.
var paper = new joint.dia.Paper({
    el: $('#paper'),
    width: 800,
    height: 600,
    gridSize: 1,
    model: graph,
    snapLinks: true,
    embeddingMode: true
});
joint.shapes.custom1={};
 joint.shapes.custom1.Element = joint.shapes.basic.Generic.extend(_.extend({}, joint.shapes.basic.PortsModelInterface, {
        markup: '<g class="rotatable"><g class="scalable"><rect class = "myrect"/></g><g class="inPorts"/><g class="outPorts"/></g>',
        portMarkup: '<g class="port<%= id %>"><circle class="port-body"/></g>',
        defaults: joint.util.deepSupplement({
            type: 'html.Element',
            size: { width: 200, height: 110 },
            inPorts: [],
            outPorts: [],
            attrs: {
                '.': { magnet: true},
                rect: {
                    stroke: 'none', 'fill-opacity': 0, width: 300, height: 210,
                },
                circle: …
Run Code Online (Sandbox Code Playgroud)

javascript svg backbone.js jointjs

10
推荐指数
1
解决办法
4683
查看次数

如何在jointjs上的链接上禁用"删除"操作?

使用jointjs库来构建图形,它是一个文档很少的好库.

http://jointjs.com/demos/fsa 如上页所示,当鼠标在链接上移动时,链接上有一个"删除"图标,可以单击该图标以删除链接,我想在链接上禁用"删除"操作?请指教.

html graph jointjs

9
推荐指数
2
解决办法
6573
查看次数

jointjs:通过单击链接阻止添加顶点

我想通过双击链接为链接添加标签.所以这是我的尝试:

paper.on({
    'cell:pointerdblclick': function(cellView, event, x, y){
        if (cellView.model.isLink()) {
            cellView.model.label(0, {
                position: .5,
                attrs: {
                    rect: { fill: 'white' },
                    text: { text: 'my label' }
                }
            });
        }
    },
});
Run Code Online (Sandbox Code Playgroud)

问题是,通过双击,还可以同时创建一个顶点.我怎么能防止这种情况?

或者让用户为链接添加标签的另一种简单方法是什么?

javascript jointjs

8
推荐指数
1
解决办法
1950
查看次数

对由jointjs创建的元素进行工具提示

标题说明了一切,我在纸上创建了一个图形并填充了单元格和链接,现在我需要添加一个工具提示来显示有关每个元素的信息(选中,悬停...).

我感谢所有提示,链接,答案......

tooltip jointjs

7
推荐指数
1
解决办法
3509
查看次数