change-view.html 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>重新布局不改变视窗</title>
  6. </head>
  7. <body>
  8. <button id='changeView'>改变布局</button>
  9. <div id="mountNode" style="background: #ccc;"></div>
  10. <script src="../build/g6.js"></script>
  11. <script src="../build/grid.js"></script>
  12. <script>
  13. const grid = new Grid()
  14. const graph = new G6.TreeGraph({
  15. plugins: [grid],
  16. container: 'mountNode',
  17. width: 500,
  18. height: 500,
  19. defaultNode: {
  20. size: [20, 20]
  21. },
  22. modes: {
  23. default: [ 'drag-node', 'drag-canvas', {
  24. type: 'collapse-expand',
  25. onChange(item, collapsed) {
  26. const data = item.getModel()
  27. data.collapsed = collapsed
  28. return true
  29. }
  30. } ]
  31. },
  32. nodeStyle: {
  33. default: {
  34. fill: '#40a9ff',
  35. stroke: '#096dd9'
  36. }
  37. },
  38. edgeStyle: {
  39. default: {
  40. stroke: '#A3B1BF'
  41. }
  42. },
  43. defaultEdge: {
  44. shape: 'cubic-horizontal'
  45. },
  46. layout: {
  47. type: 'dendrogram',
  48. nodeSep: 50,
  49. rankSep: 100,
  50. direction: 'LR'
  51. }
  52. });
  53. let data = {
  54. // isRoot: true,
  55. id: 'Root',
  56. style: {
  57. fill: 'red'
  58. },
  59. children: [
  60. {
  61. id: 'SubTreeNode1',
  62. raw: {},
  63. children: [
  64. {
  65. id: 'SubTreeNode1.1'
  66. }
  67. ]
  68. },
  69. {
  70. id: 'SubTreeNode2',
  71. children: [
  72. {
  73. id: 'SubTreeNode2.1'
  74. },
  75. {
  76. id: 'SubTreeNode2.2'
  77. }
  78. ]
  79. }
  80. ]
  81. };
  82. graph.data(data)
  83. graph.render()
  84. graph.fitView()
  85. document.getElementById('changeView').addEventListener('click', (evt) => {
  86. const matrix = G6.Util.clone(graph.get('group').getMatrix())
  87. data.children.pop()
  88. graph.changeData(data)
  89. graph.get('group').setMatrix(matrix)
  90. graph.paint()
  91. })
  92. </script>
  93. </body>
  94. </html>