Добавьте CSS или стиль к каждому узлу в swimlane (библиотека GOjs)

В настоящее время я использую новый график библиотеки GOjs, который является дорожка.

Моя проблема в том, что я хочу добавить РАЗНЫЕ стили к каждому узлу (например, один узел имеет красный цвет bg, другой синий, другие зеленые и т. Д.). Кто-нибудь знает, как это сделать?

Любая помощь приветствуется. Или кто-нибудь может предложить другую библиотеку, которая подходит для меня.


person YouSer    schedule 27.03.2014    source источник


Ответы (1)


Поскольку вы не опубликовали свой код, я буду работать над примерами swinlane (http://www.gojs.net/latest/samples/swimlanes.html).

Если вы посмотрите документацию для узлов (http://gojs.net/beta/intro/nodes.html) вы можете увидеть, как они меняют там цвет.

 diagram.nodeTemplate =
    $(go.Node, "Auto",
      $(go.Shape, "Rectangle",
        new go.Binding("fill", "color")),
      $(go.TextBlock,
        { margin: 5 },
        new go.Binding("text", "key"))
    );

  diagram.model.nodeDataArray = [
    { key: "Alpha", color: "lightblue" }
  ];


В примере с дорожкой у них есть следующий соответствующий код:

myDiagram.nodeTemplate =
      $(go.Node, "Auto",
        $(go.Shape, "Rectangle",
          { fill: "white", portId: "", cursor: "pointer", fromLinkable: true, toLinkable: true }),
        $(go.TextBlock, { margin: 5 },
          new go.Binding("text", "key")),
        // limit dragging of Nodes to stay within the containing Group, defined above
        {
          dragComputation: stayInGroup,
          mouseDrop: function (e, node) {  // dropping a copy of some Nodes and Links onto this Node adds them to this Node's Group
            if (!e.shift && !e.control) return;  // cannot change groups with an unmodified drag-and-drop
            var grp = node.containingGroup;
            if (grp !== null) {
              var ok = grp.addMembers(node.diagram.selection, true);
              if (!ok) grp.diagram.currentTool.doCancel();
            }
          },
          layoutConditions: go.Part.LayoutAdded | go.Part.LayoutNodeSized
        }
      );

myDiagram.model = new go.GraphLinksModel(
    [ // node data
      { key: "Lane1", isGroup: true, color: "lightblue" },
      { key: "Lane2", isGroup: true, color: "lightgreen" },
      { key: "Lane3", isGroup: true, color: "lightyellow" },
      { key: "Lane4", isGroup: true, color: "orange" },
      { key: "oneA", group: "Lane1" },
      { key: "oneB", group: "Lane1" },
      { key: "oneC", group: "Lane1" },
      { key: "oneD", group: "Lane1" },
      { key: "twoA", group: "Lane2" },
      { key: "twoB", group: "Lane2" },
      { key: "twoC", group: "Lane2" },
      { key: "twoD", group: "Lane2" },
      { key: "twoE", group: "Lane2" },
      { key: "twoF", group: "Lane2" },
      { key: "twoG", group: "Lane2" },
      { key: "fourA", group: "Lane4" },
      { key: "fourB", group: "Lane4" },
      { key: "fourC", group: "Lane4" },
      { key: "fourD", group: "Lane4" },
    ],
    [ // link data
      { from: "oneA", to: "oneB" },
      { from: "oneA", to: "oneC" },
      { from: "oneB", to: "oneD" },
      { from: "oneC", to: "oneD" },
      { from: "twoA", to: "twoB" },
      { from: "twoA", to: "twoC" },
      { from: "twoA", to: "twoF" },
      { from: "twoB", to: "twoD" },
      { from: "twoC", to: "twoD" },
      { from: "twoD", to: "twoG" },
      { from: "twoE", to: "twoG" },
      { from: "twoF", to: "twoG" },
      { from: "fourA", to: "fourB" },
      { from: "fourB", to: "fourC" },
      { from: "fourC", to: "fourD" }
    ]);


Чтобы позволить каждому узлу иметь собственный цвет заливки, измените линию

{ fill: "white", portId: "", cursor: "pointer", fromLinkable: true, toLinkable: true }),

to

{ fill: "lightblue", portId: "", cursor: "pointer", fromLinkable: true, toLinkable: true },
new go.Binding("fill", "color")),


После внесения этих изменений вы можете указать, какие цвета заливки вы хотите использовать в данных узла. Обратите внимание, что я изменил исходное значение заливки выше на светло-голубой. Теперь светло-голубой будет цветом по умолчанию, если вы не укажете цвет для узла (fourD будет светло-голубым):

 myDiagram.model = new go.GraphLinksModel(
    [ // node data
      { key: "Lane1", isGroup: true, color: "lightblue" },
      { key: "Lane2", isGroup: true, color: "lightgreen" },
      { key: "Lane3", isGroup: true, color: "lightyellow" },
      { key: "Lane4", isGroup: true, color: "orange" },
      { key: "oneA", group: "Lane1", color: "green" },
      { key: "oneB", group: "Lane1", color: "red" },
      { key: "oneC", group: "Lane1", color: "yellow" },
      { key: "oneD", group: "Lane1", color: "purple" },
      { key: "twoA", group: "Lane2", color: "orange" },
      { key: "twoB", group: "Lane2", color: "green" },
      { key: "twoC", group: "Lane2", color: "red" },
      { key: "twoD", group: "Lane2", color: "yellow" },
      { key: "twoE", group: "Lane2", color: "purple" },
      { key: "twoF", group: "Lane2", color: "orange" },
      { key: "twoG", group: "Lane2", color: "green" },
      { key: "fourA", group: "Lane4", color: "red" },
      { key: "fourB", group: "Lane4", color: "yellow" },
      { key: "fourC", group: "Lane4", color: "purple" },
      { key: "fourD", group: "Lane4" },
    ],
    [ // link data
      { from: "oneA", to: "oneB" },
      { from: "oneA", to: "oneC" },
      { from: "oneB", to: "oneD" },
      { from: "oneC", to: "oneD" },
      { from: "twoA", to: "twoB" },
      { from: "twoA", to: "twoC" },
      { from: "twoA", to: "twoF" },
      { from: "twoB", to: "twoD" },
      { from: "twoC", to: "twoD" },
      { from: "twoD", to: "twoG" },
      { from: "twoE", to: "twoG" },
      { from: "twoF", to: "twoG" },
      { from: "fourA", to: "fourB" },
      { from: "fourB", to: "fourC" },
      { from: "fourC", to: "fourD" }
    ]);
person James T    schedule 27.03.2014
comment
Как раз вовремя, я понял это здесь lessoncup.com/2013/10/linking-and-styling-nodes-with-gojs.html В любом случае, спасибо, сэр! - person YouSer; 27.03.2014
comment
Сэр, вам тоже может быть интересно это. stackoverflow.com/ questions / 22677378 / - person YouSer; 27.03.2014
comment
Я иду к врачам, так что у меня не будет времени до тех пор, но я подозреваю, что это вам поможет :) gojs.net/latest/api/symbols/DiagramEvent.html - person James T; 27.03.2014
comment
Спасибо, сэр, но я уже пробовал их, и что меня действительно беспокоит, так это как, черт возьми, я буду реализовывать эти вещи XD. Я не очень хорош в том, чтобы просто дать, я собираюсь проследить примеры их реализации. - person YouSer; 27.03.2014