Render last known value in time series chart hairline value tip 19/2019/2
authorTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Tue, 21 Aug 2018 15:54:52 +0000 (18:54 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Tue, 21 Aug 2018 15:55:22 +0000 (15:55 +0000)
Previously if a history item's data stream did not (yet) contain a value
with a timestamp >= than the chart hairline time, the value time on top
of the chart would not paint any value at all for that item. The best
thing the chart can do in such circumstances to prevent unwanted visual
skipping in the UI is to paint the last known sample's value regardless
of its endTime value.

gitlab #85

Change-Id: I362a19b8699c8c4a96240ddfc3fd68a91d6bbd06

bundles/org.simantics.trend/src/org/simantics/trend/impl/Plot.java

index bbeb3e695dbb9bf5a1c0b4bf0cc747d289fa2f20..d014d6556a0633d6704338bf1c565e1e9141da3c 100644 (file)
@@ -475,8 +475,16 @@ public class Plot extends TrendGraphicalNode {
                                }
                                
                                if ( vb.getSample()!=null ) {
-                                       
-                                       if (isLast && vb.hasEndTime() && vb.getEndTimeDouble()<time) continue nextItem;
+
+                                       // gitlab #54: this can cause the value tip to not render values at all
+                                       // for items that have not been flushed at the point in time when this drawing
+                                       // is done. These circumstances are always temporary and later refreshes will
+                                       // remedy the situation. Having this logic can cause item values to randomly
+                                       // not be shown which is actually even more confusing to the user than rendering
+                                       // the latest flushed sample value.
+                                       // 
+                                       // For this reason, the if below has been commented out.
+                                       //if (isLast && vb.hasEndTime() && vb.getEndTimeDouble()<time) continue nextItem;
                                                                                
                                        if ( !vb.isNanSample() && !vb.isNullValue() ) {
                                                Binding b = vb.getValueBinding();