Некорректное расположение групп при попытке выровнять любой узел по левой стороне - PullRequest
0 голосов
/ 13 июня 2019

Я бы хотел выровнять некоторые узлы (есть определенный тип) по левому и правому краю внутри группы.Когда я добавляю узел в группу, которая должна быть выровнена по левой стороне, у меня возникает проблема с макетом: one node aligned by left side

, но если я добавлю второй узел, который должен быть выровнен по правой сторонеИЛИ удалите все узлы, расположение групп правильное, и они выровнены по левой стороне экрана.С двумя узлами: two nodes

без узлов:

without nodes

Это шаблон моих групп:

$(go.Group, "Auto",
  {
    layout: $(go.LayeredDigraphLayout, {
          direction: 0,
          columnSpacing: 10,
          initializeOption: go.LayeredDigraphLayout.InitDepthFirstOut,
          aggressiveOption: go.LayeredDigraphLayout.AggressiveMore
        }),
    minSize: new go.Size(800, 30),
    computesBoundsIncludingLocation: true,
    computesBoundsIncludingLinks: true,
    computesBoundsAfterDrag: true,
    isSubGraphExpanded: true,
  },
  $(go.Shape, "Rectangle", [
      {
          fill: null,
          stroke: "gray",
          strokeWidth: 2
      },
      new go.Binding('fill', '', function (group) {
          return group.data.isEditable ? '#eee' : '#F7EAEC';
      }).ofObject('')
  ]),
  $(go.Panel, "Vertical",
      { defaultAlignment: go.Spot.Left, margin: 4 },
      $(go.Panel, "Horizontal",
          { defaultAlignment: go.Spot.Top },
          $(go.TextBlock,
              { font: "Bold 18px Sans-Serif", margin: 4, textAlign: "left" },
              new go.Binding("text", "name"))
      ),
      $(go.Placeholder,
          { padding: new go.Margin(10, 10), margin: 0 })
  )
)

Чтобы выровнять узел по левому краю, я просто установил новое местоположение для детали на LayoutCompleted событие:

var viewportBounds = event.diagram.viewportBounds.copy(); 
var yPosition = part.location.y;
var xPosition = viewportBounds.x > 15 ? 5 : viewportBounds.x; // some margin for left
part.location = new go.Point(xPosition, yPosition);

Буду благодарен за любую помощь, чтобы исправитьэта проблема.

...