When I dynamically changed the graduatedTickUnit, why did the tick mark disappear?

I use a 360 degree sector as the main shape. When I change the graduatedMin or graduatedMax, graduatedTickUnit will change according to the conversion function accordingly. However, the strange thing is that when the range is reduced, the short tick disappears. If I continue to reduce the range, the long tick also disappears.

const makeSector = function (data) {
  let radius = data.width / 2,
    angle = SectorReshapingTool.getAngle(data),
    sweep = data.rotationDirection ? -360 : 360,
    start = new go.Point(radius, 0).rotate(angle),
    geo;

  geo = new go.Geometry()
    .add(new go.PathFigure(radius + start.x, radius + start.y)  // start point
      .add(new go.PathSegment(go.PathSegment.Arc,
        angle, sweep,  // angles
        radius, radius,  // center
        radius, radius))  // radius
      // .add(new go.PathSegment(go.PathSegment.Line, radius, radius).close())
    )
    // .add(new go.PathFigure(0, 0))  // make sure the Geometry always includes the whole circle
    // .add(new go.PathFigure(2 * radius, 2 * radius));  // even if only a small sector is "lit"

  return geo;
}

const getTickUnit = function ({ minValue, maxValue, majorScaleNum, minorScaleNum }) {
  let unit = ((maxValue - minValue) / majorScaleNum / minorScaleNum).toFixed(2)
  // console.log(unit)
  return unit
}

function makeRing() {
  return MAKE(
      go.Node,
      "Auto",
      {
        selectionObjectName: "PAD",
        resizeObjectName: "PAD",
        background: "transparent"
      },
      MAKE(
        go.Panel,
        "Graduated",
        { stretch: go.GraphObject.None },
        // { graduatedTickUnit: 2 },
        new go.Binding("graduatedTickBase", "minValue"),
        new go.Binding("graduatedMin", "minValue"),
        new go.Binding("graduatedMax", "maxValue"),
        new go.Binding("graduatedTickUnit", "", getTickUnit),
        MAKE(
          go.Shape,
          { name: "PAD" },
          new go.Binding("width", "width").makeTwoWay(),
          new go.Binding("height", "height").makeTwoWay(),
          new go.Binding("fill", "backgroundColor"),
          new go.Binding("stroke", "", getOuterStroke),
          new go.Binding("geometry", "", makeSector),
        ),
        MAKE(
          go.Shape,
          { geometryString: "M0 0 V5" },
          new go.Binding("alignmentFocus", "", getAlignmentFocus),
          new go.Binding("stroke", "tickColor"),
          new go.Binding("visible", "showScale")
        ),
        MAKE(
          go.Shape,
          { geometryString: "M0 0 V10" },
          new go.Binding("alignmentFocus", "", getAlignmentFocus),
          new go.Binding("interval", "minorScaleNum"),
          new go.Binding("graduatedSkip", "", skipMaxValue),
          new go.Binding("stroke", "tickColor"),
          new go.Binding("visible", "showScale")
        )))
}

2019-06-24_172052 2019-06-24_172126 2019-06-24_172138

What values are you using for majorScaleNum and minorScaleNum? What number is the getTickUnit function returning in cases where the ticks aren’t displaying?

Also, make sure your getTickUnit function is returning a number, not a string.

I have made sure that the function returns number, but the problem still exists. When the graduatedTickUnit is less than 2, the short tick disappears, and when it is less than 0.4, the long tick disappears.

// initial value
majorScaleNum = 10;
minorScaleNum = 5;
minValue = 0;
maxValue = 100;

Ok, I see what you mean. This is because we have some code that prevents drawing ticks that are close together depending on the diagram scale, but I think it is incorrectly hiding ticks here. We’ll work on a fix.

This has been updated and will be in the next release, maybe next week.

Thank you for your work. And I may sometimes scale the diagram, I want to know if the tick will be prevented drawing after the next release in this case

I also have another question: Why is the graduatedTickUnit larger, the more it is offset when rotating the sector?. Can you help me see it?