in atlas-chart/src/main/scala/com/netflix/atlas/chart/graphics/Ticks.scala [46:95]
private def seconds(v: Int): Long = Duration.ofSeconds(v).toMillis
private def minutes(v: Int): Long = Duration.ofMinutes(v).toMillis
private def hours(v: Int): Long = Duration.ofHours(v).toMillis
private def days(v: Int): Long = Duration.ofDays(v).toMillis
// Major and minor tick sizes for time axis.
private val timeTickSizes = List(
minutes(1) -> seconds(10),
minutes(2) -> seconds(30),
minutes(3) -> minutes(1),
minutes(5) -> minutes(1),
minutes(10) -> minutes(2),
minutes(15) -> minutes(5),
minutes(20) -> minutes(5),
minutes(30) -> minutes(10),
hours(1) -> minutes(10),
hours(2) -> minutes(30),
hours(3) -> hours(1),
hours(4) -> hours(1),
hours(6) -> hours(2),
hours(8) -> hours(2),
hours(12) -> hours(3),
days(1) -> hours(4),
days(2) -> hours(8),
days(7) -> days(1),
days(2 * 7) -> days(2),
days(4 * 7) -> days(1 * 7)
)
// Major and minor tick sizes for value axis
private val baseValueTickSizes = List(
10 -> 2,
20 -> 5,
30 -> 10,
40 -> 10,
50 -> 10
)
// Major and minor tick sizes for value axis
private val valueTickSizes = (-25 to 25).toList.flatMap { i =>
val f = math.pow(10, i)
baseValueTickSizes.map {
case (major, minor) =>
val minorPerMajor = major / minor // Number of minor ticks to use between major ticks
(major * f, minor * f, minorPerMajor)
}
}