验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

GoJs节点的折叠展开怎么实现

阅读:827 来源:乙速云 作者:代码code

GoJs节点的折叠展开怎么实现

      节点折叠展开的不同情况

      对于节点的折叠展开分几种情况。第一种是对于树形布局的特有属性可以对树形布局后代的节点进行一个折叠展开,第二种是前面文章提到的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属性保持一直,则可以实现折叠展开。当然也可以根据自己的需求对其样式进行修改。

    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>