diff --git a/src/main/java/ats/viz/Viz.java b/src/main/java/ats/viz/Viz.java index 6af6adb..c193d70 100644 --- a/src/main/java/ats/viz/Viz.java +++ b/src/main/java/ats/viz/Viz.java @@ -7,6 +7,7 @@ import java.io.FileWriter; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -39,15 +40,14 @@ public class Viz { static final DateTimeFormatter formatter = DateTimeFormat.forPattern("E MMM d, yyyy, HH:mm:ss.SSS"); static int canvasWidth = 1000; static int canvasHeight = 1000; - static int chartWidth = canvasWidth - 50; - static int chartHeight = 50; + static int chartWidth = canvasWidth - 60; + static int chartHeight = 150; DateTime startTime; DateTime endTime; BigDecimal midMin; BigDecimal midMax; List> ticks = new ArrayList<>(); Map>> bars = new HashMap<>(); - // Map>> events = new HashMap<>(); Map events = new HashMap<>(); @@ -74,25 +74,44 @@ public class Viz { myevents.add(e); } - public List timePoints() { + public List timePoints() { long minTime = startTime.getMillis(); long maxTime = endTime.getMillis(); long timespan = maxTime - minTime; float xscale = timespan / chartWidth; + long lastTickTime = 0; + float lastY = 0; - List points = new ArrayList<>(); + List points = new ArrayList<>(); log.debug("{} events", events.size()); - for (Map.Entry>> entry : events.entrySet()) { - log.debug("event: {} / {}", entry.getKey(), entry.getValue()); - long tickTime = entry.getKey().getMillis(); + List times = new ArrayList<>(events.keySet()); + Collections.sort(times); + + for (DateTime key : times) { + long tickTime = key.getMillis(); float x = (tickTime - minTime) / xscale; - log.debug("adding point {}", x); - points.add(x); + float y = 0; + if (tickTime - lastTickTime < 1000) { + y = lastY - 5; + } + log.debug("adding point {},{}", x, y); - // TODO: check for multiple + Float[] point = new Float[2]; + point[0] = x; + point[1] = y; + points.add(point); + + lastTickTime = tickTime; + lastY = y; } + Collections.sort(points, Collections.reverseOrder((f1, f2) -> { + int c = f1[0].compareTo(f2[0]); + if (c != 0) return c; + return f1[1].compareTo(f2[1]); + })); + return points; } } diff --git a/src/main/resources/viz/templates/test.html b/src/main/resources/viz/templates/test.html index 307fda9..d71571e 100644 --- a/src/main/resources/viz/templates/test.html +++ b/src/main/resources/viz/templates/test.html @@ -10,8 +10,8 @@ margin: 20px; } .chartline { - stroke: black; - stroke-width: 2; + stroke: hsl(0, 0%, 50%); + stroke-width: 1; } .tickline { stroke: hsl(240, 100%, 50%); @@ -59,17 +59,17 @@ - + th:transform="|translate(${chartstartx}, ${starty + (chartHeight + margin) * iterstat.index})|"> + @@ -82,7 +82,7 @@ - +