gojs - изменить цвет узла, когда он выбран, но в противном случае вернуться к исходному цвету? - PullRequest
0 голосов
/ 18 сентября 2019

Это шаблон узла, с которым я работаю:

      $(go.Node, "Auto",
    {
      deletable: false,
      selectionAdorned: false
    },
    new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
    $(go.Shape, "Terminator",
      {
        fill: "#f8da07", strokeWidth: 2, minSize: new go.Size(90, 40), portId: "", cursor: "pointer", stroke: '#000000', fromLinkable: true,
        toLinkable: false, fromLinkableSelfNode: false, toLinkableSelfNode: false, fromLinkableDuplicates: false, toLinkableDuplicates: false, fromMaxLinks: 1
      },
      new go.Binding("figure"),
      new go.Binding("fill", "color"),
      new go.Binding("fill", "isSelected", function(sel) {
        return sel ? "#e1e1e1" : [selfColor];
      }).ofObject()),
    {
      click: (e, obj) => {
        clickNode(e, obj);
      }
    },
    $(go.TextBlock,
      {
        stroke: "#000000", margin: 4, editable: false, font: "bold 12pt sans-serif", isMultiline: true
      },
      new go.Binding("text").makeTwoWay())
  );

Вы можете видеть, что цвет по умолчанию для узла - # f8da07, но на самом деле он записывается свойством цвета узла с помощьюстрока "new go.Binding (" fill "," color ")".

И, как она есть, я не могу узнать, какой из них является текущим кодом цвета выбранного узла.

Я хочу иметь возможность изменить цвет узла на "# e1e1e1", когда я его выбираю, но я также хочу, чтобы он изменился на старый цвет, когда нет - (который НЕ "# f8da07").

Есть ли правильный способ сделать это?

Любая помощь будет оценена!Спасибо

1 Ответ

1 голос
/ 19 сентября 2019
$(go.Shape,
  { fill: "#f8da07" },  // default color
  new go.Binding("fill", "color"),
  new go.Binding("fill", "isSelected", function(sel, shape) {
    return sel ? "#e1e1e1" : shape.part.data.color || "#f8da07";
  }).ofObject()),
...