我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解GoJs节点的折叠展开实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解GoJs节点的折叠展开实现

前言

前面的文章中提到了提示信息(toolTip)在节点信息内容过多的时候,需要节点信息的内容进行隐藏,在鼠标移入的时候进行未显示信息的提示框形式的选中,本文讲从另外的角度处理在画布上的可视化图形的内容过多的时候的处理情况,一种是把节点的内部的折叠和展开,另外一种就是对部分节点进行折叠和展开。

节点折叠展开的不同情况

对于节点的折叠展开分几种情况。第一种是对于树形布局的特有属性可以对树形布局后代的节点进行一个折叠展开,第二种是前面文章提到的go.Group(组)go.Panel(面板)内部的内容也就是节点内部信息的折叠和展开。

树形布局特有的属性后代节点的折叠展开

this.myDiagram.nodeTemplate =
$$(go.Node, "Spot",
    $$(go.Panel, "Auto",
        $$(go.Shape, "Circle",
            { width: 30, height: 30},
            new go.Binding("fill", "color"),
            new go.Binding("figure", "figure"),
        ),
        $$(go.TextBlock, 
            new go.Binding("text", "text")),
    ),
    $$("TreeExpanderButton",
    { alignment: go.Spot.Right, alignmentFocus: go.Spot.Left },
    )
);

因为属性布局的特殊性,有明确的父子关系。因此gojs内部给内置了名字为TreeExpanderButton的树图折叠展开按钮,在使用的时候只需要根据自己的脑图朝向把图形折叠展开按钮的按钮根据Spot(点布局)给放置到和后代节点解除的位置就可以了。默认可以实现树形结构的折叠展开。

go.Group(组)的内部元素的展开折叠

前文中提到,可以给节点中的属性isGroup设置true。将此节点设置为组的父级显示内容。然后通过其他节点内部的属性group为组的父级节点的key值,来渲染组的上下级关系。代码示例如下

this.myDiagram.groupTemplate  =
$$(go.Group, "Horizontal",
    $$(go.Panel, "Auto",
        $$(go.Shape, "Circle",{width:200,height:200},
            new go.Binding("fill", "color"),
            new go.Binding("figure", "figure"),
        ),
        $$(go.Panel,"Horizontal",
            $$("SubGraphExpanderButton",{ margin: new go.Margin(0, 3, 5, 0)}),
            $$(go.TextBlock, 
                new go.Binding("text", "text")),
        ),
    ),
);
this.myDiagram.nodeTemplate  =
$$(go.Node, "Auto",
    $$(go.Shape, "Circle",{width:50,height:50},
        new go.Binding("fill", "color"),
        new go.Binding("figure", "figure"),
    ),
    $$(go.TextBlock, 
        new go.Binding("text", "text")),
);

组布局有自己的布局模板为groupTemplate,可以根据组布局模板对组的整体样式进行调整。当然在组内的其他节点仍然可以通过nodeTemplate来设置自己的样式。组的展开折叠的属性是SubGraphExpanderButton,可以把组的展开折叠按钮作为一个普通的绘图节点调整想要现实的额位置,其功能为gojs内置,可以直接使用其功能。

go.Panel(面板)的内部元素的展开折叠

在节点图形的模板配置中,如果我们想调整其他的绘图模板的位置,需要两个绘图模板当成一个整体进行布局展示,例如go.Shape(几何图形)go.TextBlock(文本信息)在节点内相对位置不变的需求下,是不能直接把go.TextBlock(文本信息)放到go.Shape(几何图形)内部的,如果想要两个位置相对绑定,就需要把两个绘图模板放到同一个go.Panel(面板之下)。因此对于面板内的元素也可以实现一个展开折叠。

//data
nodes: [
    {
      key: 1,
      text:"三国",
      list1: ["魏", "蜀", "吴"],
    },
],
//methods
this.myDiagram.nodeTemplate = $$(
go.Node,
"Auto",
$$(go.Shape, "Rectangle", { fill: "#67B73C",width:100,height:100 }),
$$(
  go.Panel,
  "Table",
  { column: 0 },
  $$(go.TextBlock, {
    column: 0,
    margin: new go.Margin(3, 3, 0, 3),
    font: "bold 12pt sans-serif",
  },new go.Binding("text", "text")),
  $$("PanelExpanderButton", "LIST1", { column: 1 }),
  $$(
    go.Panel,
    "Vertical",
    { name: "LIST1", row: 1, column: 0, columnSpan: 2 },
    new go.Binding("itemArray", "list1")
  )
)
);

对于go.Panel(面板)的折叠展开按钮是通过内置的PanelExpanderButton来实现的,其然后其第二个参数为需要折叠的go.Panel的name属性保持一直,则可以实现折叠展开。当然也可以根据自己的需求对其样式进行修改。

总结

在可视化图形中。因为数据量大的时候导致显示节点相互折叠导致不完整,往往会对节点内显示的内容进行隐藏。除了前面文章中提到的toolTip(提示信息)之外,还可以通过本文中的折叠展开按钮对内容进行折叠,以保证浏览的重点内容的完整显示。

以上就是详解GoJs节点的折叠展开实现的详细内容,更多关于GoJs节点折叠展开的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解GoJs节点的折叠展开实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解GoJs节点的折叠展开实现

这篇文章主要为大家介绍了GoJs节点的折叠展开实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

amazeui树节点自动展开折叠面板并选中第一个树节点的实现方法

这篇文章主要介绍amazeui树节点自动展开折叠面板并选中第一个树节点的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Amaze UI Tree是Amaze框架的扩展,优点是风格与Amaze框架一致,缺点是很
2023-06-09

详解GoJs节点的选中高亮实现示例

这篇文章主要为大家介绍了GoJs节点的选中高亮实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

Android Studio使用recyclerview实现展开和折叠(在之前的微信页面基础之上)

Android Studio使用recyclerview实现展开和缩回(在之前的微信页面基础之上)Android中RecyclerView点击item展开列表详细内容github源码地址: Android中RecyclerView点击ite
2022-06-06

Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)

Android中RecyclerView点击item展开列表详细内容 效果如下:依然是xml文件的设计,使用了两个RelativeLayout,zu作为主布局和副布局,里面都加入textview显示内容,在副布局里加入一个imageview
2022-06-06

详解PHP中字节转换为双浮点的实现

PHP中字节转换为双浮点的实现是一个比较复杂的过程,需要通过一定的算法来实现。在PHP中,双精度浮点数(double)通常占据8个字节(64位),而字节则通常是以8位为单位进行表示。因此,要将字节转换为双浮点,需要将字节按照一定的规则重新组
详解PHP中字节转换为双浮点的实现
2024-03-07

编程热搜

目录