cytoscape-web - 初始化细胞景观

标签 cytoscape-web

作为 cytoscapeweb 2 的新手,我正在按照提供的示例之一学习如何使用 API。 我无法让它工作, Firebug 报告以下消息:

Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) var n = this.nodesGroup.getBBox();

在我的 html 文档中,cytoscapeweb div 嵌入在一个 jquery 选项卡小部件中(只是为了提供上下文)

my.html 中的某处

<div id="tabs">
    <ul>
      <li><a href="#tabs-1">Interactors Selection</a></li>
      <li><a href="#tabs-2">Interactome Builder</a></li>      
    </ul>
    <div id="tabs-1">
      <p>Tab 1 content</p>
    </div>
    <div id="tabs-2">
      <p>Tab 2 content</p>
       <div id="cy"></div>
    </div>
 </div>

在 foo.js 中

function cytoscapeInit() {
    alert ("intializing cytoscape");

    // create a mapper for node size
    var nodeSizeMapper = {
        continuousMapper: {
            attr: {
                name: "weight",
                min: 0,
                max: 100
            },
            mapped: {
                min: 15,
                max: 30
            }
        }
    };
 // call cytoscape web on the `cy` div
    $("#cy").cytoscapeweb({
                              // define the elements in the graph
    elements: {
        nodes: [
            { data: { id: "a", weight: 43 }, classes: "foo" },
            { data: { id: "b", weight: 2 }, classes: "bar" },
            { data: { id: "c", weight: 88 }, classes: "foo bar" }
        ],

        edges: [
            { data: { id: "ab", source: "a", target: "b", weight: 32 }, classes: "foo" },
            { data: { id: "bc", source: "b", target: "c", weight: 12 }, classes: "bar baz" },
            { data: { id: "ca", source: "c", target: "a", weight: 96 }, classes: "baz foo" },
            { data: { id: "ac", source: "a", target: "c", weight: 65 }, classes: "bar" }
        ]
    },

    // define the layout to use
    layout: {
        name: "preset",
        positions: {
            "a": { x: 30, y: 30 },
            "b": { x: 125, y: 131 },
            "c": { x: 200, y: 50 } 
        },
        fit: false,
        stop: function(){
            cy.reset();
            cy.center();
        }
    },

    // define the visual style (like css) of the graph
    style: {
        selectors: {
            "node":{
                shape: "ellipse",
                fillColor: "#888",
                height: nodeSizeMapper,
                width: nodeSizeMapper,
                labelText: {
                    passthroughMapper: "id"
                }
            },
            ".yay": {
                fillColor: "red",
                lineColor: "red",
                targetArrowColor: "red"
            },
            "edge": {
                lineColor: "#ccc",
                targetArrowColor: "#ccc",
                width: {
                    continuousMapper: {
                        attr: {
                            name: "weight"
                        },
                        mapped: {
                            min: 2,
                            max: 5
                        }
                    }
                },
                targetArrowShape: "triangle"
            },
            "node:selected": {
                fillColor: "#333"
            },
            "edge:selected":{
                lineColor: "#666",
                targetArrowColor: "#666"
            }
        }
    },

    // define the callback for when cytoscape web is ready
    ready: function( cy ){
        window.cy = cy;
    }
});

我是否遗漏了一些明显的东西?

如果是这样,我们深表歉意。

最佳答案

(1) 即使在测试时也不要像那样在代码中放置警报。它可以破坏异步代码,例如初始化 Cytoscape Web 或执行 AJAX 调用。请改用 console.log()

(2) 您可能用选项卡隐藏了 Cytoscape Web div,cy。您不应该使用 display: none;,因为 Cytoscape Web 视口(viewport)将是 0x0 像素。尝试类似 position: absolute; left: -9999px; 或类似的隐藏。这需要修改 jQuery 用于隐藏选项卡的任何类名(可能是 .ui-state-hidden 或类似的东西)。

(3) 我将研究使渲染器代码更能容忍隐藏的 Cytoscape Web div。

关于cytoscape-web - 初始化细胞景观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740269/

相关文章:

cytoscape.js - 在 cytoscape.js 中的节点上方添加额外信息

php - 从 php 代码创建一个 cytoscape 树

javascript - 使用 cytoscape-graphml.js 解析 cytoscape.js 中的 graphml 文件

javascript - react Cytoscape JS : All nodes are accumulated in one position

javascript - 仅增加选定边缘的宽度 (cytoscape.js)

cytoscape.js - 有没有办法在节点内部的顶部显示节点标签?

javascript - 使用 cytoscape.js 选择复合节点中的叶节点

javascript - cytoscapejs - 在节点主体内嵌入 html

javascript - 如何根据边的数组对象内的数据选择边?