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")
)))
}