дважды щелкните узлы в cytoscape. js не работает - PullRequest
1 голос
/ 05 мая 2020

У меня проблема с этим плагином. Я хочу дважды щелкнуть по узлам, и идентификатор узлов должен отображаться в консоли. Я добавил ссылку на это расширение из https://github.com/fixpoint/cytoscape-dblclick, а затем следовал этот пост Cytoscape js - Вызов функции всякий раз, когда щелкают узел , но все еще не работает. Кто-нибудь знает, почему он не работает, было бы неплохо, если бы вы его поделили. Вы можете увидеть мой код:

$(function() {

  var elements = {
    nodes: [

    ],
    edges: [

    ]
  };

  function randomNumber(a) {
    return Math.floor(Math.random() * (a));
  }
  var cy = window.cy = cytoscape({
    container: document.getElementById('cy'),

    ready: function() {},
    style: [{
        selector: "node", //edge
        style: {
          content: "data(id)",
          shape: "roundrectangle", //square, circle

          "text-valign": "center",
          "text-halign": "center",
          height: "60px", //new
          width: "100px", //new
          //padding: "10px", //new
          "text-wrap": 'wrap', //new
          color: "#fff",
          "background-color": "#11479e",
          //   "background-color": "data(faveColor)"
        }
      },

      {
        //arrows
        selector: "edge",
        style: {
          "curve-style": "taxi",
          //'background-color': '#008000',
          width: 4,
          "target-arrow-shape": "triangle",
          "line-color": "#9dbaea",
          "target-arrow-color": "#9dbaea"
        }
      }
    ],
  });


  cy.dblclick();
  cy.on('dblclick', function(evt) {
    console.log('dblclick');
    cy.animate({
      fit: {
        eles: evt.target,
        padding: 10,
      },
    });
  });
  cy.on('dblclick:timeout', function(evt) {
    console.log('dblclick:timeout');
  });

  var ab = 12;
  for (var i = 0; i < ab; i++) {
    //elements.nodes.push({ "data": { "id": i } });
    cy.add([{
        group: "nodes",
        data: {
          id: i
        }
      }

    ])
  }
  var cb = 20;
  for (var i = 0; i < cb; i++) {
    cy.add([{
      group: "edges",
      data: {
        source: randomNumber(ab),
        target: randomNumber(ab)
      }
    }])
  }
  cy.layout({
    name: "dagre", //dagre, grid
    directed: true,
    nodeDimensionsIncludeLabels: true,
    boxSelectionEnabled: true,
    autounselectify: true,
    zoomingEnabled: true,
    userZoomingEnabled: true,
    styleEnabled: true
  }).run();



  cy.elements().qtip({
    content: function() {
      return 'Text, Test ' + this.id()
    },
    position: {
      my: 'center left', //top center
      at: 'center right' //bottom center
    },
    style: {
      classes: 'qtip-bootstrap', //qtip-dark
      tip: {
        width: 16,
        height: 10

      }
    }
  });
  //  });

}); //end
body {
  font-family: helvetica;
  font-size: 14px;
}

#cy {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 999;
}

h1 {
  opacity: 0.5;
  font-size: 1em;
}
<!DOCTYPE>

<html>

<head>
  <title>cytoscape-panzoom.js demo</title>

  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">

  <link href="cytoscape.js-panzoom.css" rel="stylesheet" type="text/css" />
  <link href="font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" type="text/css" />

  <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
  <script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
  <!-- partial -->
  <script src="https://js.cytoscape.org/js/cytoscape.min.js"></script>

  <script src="https://cdn.rawgit.com/cpettitt/dagre/v0.7.4/dist/dagre.min.js"></script>
  <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.5.0/cytoscape-dagre.js"></script>
  <!-- qtip Links -->
  <script src="https://unpkg.com/jquery@3.3.1/dist/jquery.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/jquery.qtip.min.js"></script>
  <link href="http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/jquery.qtip.min.css" rel="stylesheet" type="text/css" />
  <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-qtip/2.7.0/cytoscape-qtip.js"></script>

  <!-- for testing with local version of cytoscape.js -->
  <!-- <script src="../cytoscape.js/build/cytoscape.js"></script> -->

  <script src="https://unpkg.com/cytoscape-dblclick/dist/index.js"></script>
  <script src="cytoscape-panzoom.js"></script>

</head>

<body>

  <div id="cy"></div>


</body>

</html>

1 Ответ

3 голосов
/ 06 мая 2020

Просто следуйте за публикацией, которую вы уже связали, и регистрируйте информацию об узле вместо того, чтобы подгонять график к узлу, по которому щелкнули. Кроме того, в вашей демонстрации в заголовке было несколько скриптов stati c, по этой причине я их удалил. Таким образом, qtip снова работает:

$(function() {

  var elements = {
    nodes: [

    ],
    edges: [

    ]
  };

  function randomNumber(a) {
    return Math.floor(Math.random() * (a));
  }
  var cy = window.cy = cytoscape({
    container: document.getElementById('cy'),

    ready: function() {},
    style: [{
        selector: "node", //edge
        style: {
          content: "data(id)",
          shape: "roundrectangle", //square, circle

          "text-valign": "center",
          "text-halign": "center",
          height: "60px", //new
          width: "100px", //new
          //padding: "10px", //new
          "text-wrap": 'wrap', //new
          color: "#fff",
          "background-color": "#11479e",
          //   "background-color": "data(faveColor)"
        }
      },

      {
        //arrows
        selector: "edge",
        style: {
          "curve-style": "taxi",
          //'background-color': '#008000',
          width: 4,
          "target-arrow-shape": "triangle",
          "line-color": "#9dbaea",
          "target-arrow-color": "#9dbaea"
        }
      }
    ],
  });


  cy.dblclick();
  cy.on('dblclick', function(evt) {
    console.log(evt.target.id());
  });

  var ab = 12;
  for (var i = 0; i < ab; i++) {
    //elements.nodes.push({ "data": { "id": i } });
    cy.add([{
        group: "nodes",
        data: {
          id: i
        }
      }

    ])
  }
  var cb = 20;
  for (var i = 0; i < cb; i++) {
    cy.add([{
      group: "edges",
      data: {
        source: randomNumber(ab),
        target: randomNumber(ab)
      }
    }])
  }
  cy.layout({
    name: "dagre", //dagre, grid
    directed: true,
    nodeDimensionsIncludeLabels: true,
    boxSelectionEnabled: true,
    autounselectify: true,
    zoomingEnabled: true,
    userZoomingEnabled: true,
    styleEnabled: true
  }).run();



  cy.elements().qtip({
    content: function() {
      return 'Text, Test ' + this.id()
    },
    position: {
      my: 'center left', //top center
      at: 'center right' //bottom center
    },
    style: {
      classes: 'qtip-bootstrap', //qtip-dark
      tip: {
        width: 16,
        height: 10

      }
    }
  });
  //  });

}); //end
body {
  font-family: helvetica;
  font-size: 14px;
}

#cy {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 999;
}

h1 {
  opacity: 0.5;
  font-size: 1em;
}
<!DOCTYPE>

<html>

<head>
  <title>cytoscape-panzoom.js demo</title>

  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">

  <!--<link href="cytoscape.js-panzoom.css" rel="stylesheet" type="text/css" />-->
  <!--<link href="font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" type="text/css" />-->

  <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
  <script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
  <!-- partial -->
  <script src="https://js.cytoscape.org/js/cytoscape.min.js"></script>

  <script src="https://cdn.rawgit.com/cpettitt/dagre/v0.7.4/dist/dagre.min.js"></script>
  <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.5.0/cytoscape-dagre.js"></script>
  <!-- qtip Links -->
  <script src="https://unpkg.com/jquery@3.3.1/dist/jquery.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/jquery.qtip.min.js"></script>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/jquery.qtip.min.css" rel="stylesheet" type="text/css" />
  <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-qtip/2.7.0/cytoscape-qtip.js"></script>

  <!-- for testing with local version of cytoscape.js -->
  <!-- <script src="../cytoscape.js/build/cytoscape.js"></script> -->

  <script src="https://unpkg.com/cytoscape-dblclick/dist/index.js"></script>
  <!--<script src="cytoscape-panzoom.js"></script>-->

</head>

<body>

  <div id="cy"></div>


</body>

</html>
...