@@ -2641,15 +2641,16 @@ Misc
2641
2641
(zeroth-point (conc " SELECT " timef " ," varfn " ," valfn " FROM " tablen " WHERE " varfn " ='" fieldname " ' AND " timef " < " tstart " LIMIT 1" )))
2642
2642
(print " all-dat-qrystr: " all-dat-qrystr)
2643
2643
(hash-table-set! res-ht fieldname ; ; (fetch-rows (sql db qrystr)))))
2644
- (sqlite3:fold-row
2645
- (lambda (res t var val )
2646
- (cons (vector t var val) res))
2647
- '() db all-dat-qrystr))
2644
+ (reverse
2645
+ (sqlite3:fold-row
2646
+ (lambda (res t var val )
2647
+ (cons (vector t var val) res))
2648
+ '() db all-dat-qrystr)))
2648
2649
(let ((zeropt (handle-exceptions
2649
2650
exn
2650
2651
#f
2651
2652
(sqlite3:first-row db all-dat-qrystr))))
2652
- (if zeropt
2653
+ (if zeropt ; ; NOTE: Add zeropt to the beginning of the list as the list was reversed above.
2653
2654
(hash-table-set! res-ht
2654
2655
fieldname
2655
2656
(cons
@@ -2669,7 +2670,7 @@ Misc
2669
2670
(dur (- tstart tend)) ; ; time duration
2670
2671
(cmp (vg:get-component dwg " runslib" compname))
2671
2672
(cfg (configf:get-section *configdat* " graph" ))
2672
- (stdcolor (vg:rgb->number 20 30 40 )))
2673
+ (stdcolor (vg:rgb->number 120 130 140 )))
2673
2674
(vg:add-obj-to-comp
2674
2675
cmp
2675
2676
(vg:make-rect-obj llx lly ulx uly))
@@ -2682,23 +2683,42 @@ Misc
2682
2683
(let* ((dat (hash-table-ref alldat fieldn ))
2683
2684
(vals (map (lambda (x )(vector-ref x 2 )) dat)))
2684
2685
(if (not (null? vals))
2685
- (let* ((maxval (apply max vals))
2686
- (minval (apply min vals))
2687
- (yoff (- lly minval))
2688
- (yscale (/ (- maxval minval)(- uly lly)))
2689
- (yfunc (lambda (y )(* (+ y yoff) yscale))))
2686
+ (let* ((maxval (apply max vals))
2687
+ (minval (apply min vals))
2688
+ (yoff (- lly minval))
2689
+ (deltaval (- maxval minval))
2690
+ (yscale (/ (- uly lly)(if (eq? deltaval 0 ) 1 deltaval)))
2691
+ (yfunc (lambda (y )(* (+ y yoff) yscale))))
2690
2692
; ; (print (car cf) ": " (hash-table->alist
2691
- (for-each
2692
- (lambda (dpt )
2693
- (let* ((tval (vector-ref dpt 0 ))
2694
- (yval (vector-ref dpt 2 ))
2695
- (stval (tfn tval))
2696
- (syval (yfunc yval)))
2697
- (vg:add-obj-to-comp
2698
- cmp
2699
- (vg:make-rect-obj (- stval 2 ) lly (+ stval 2 )(+ lly (* yval yscale))
2700
- fill-color: stdcolor))))
2701
- dat))))) ; ; for each data point in the series
2693
+ (fold
2694
+ (lambda (next prev ) ; ; #(time ? val) #(time ? val)
2695
+ (if prev
2696
+ (let* ((last-tval (tfn (vector-ref prev 0 )))
2697
+ (last-yval (+ lly (* yscale (vector-ref prev 2 ))))
2698
+ (curr-tval (tfn (vector-ref next 0 ))))
2699
+ (if (> curr-tval last-tval)
2700
+ (vg:add-obj-to-comp
2701
+ cmp
2702
+ (vg:make-rect-obj last-tval lly curr-tval last-yval ; ; (- stval 2) lly (+ stval 2)(+ lly (* yval yscale))
2703
+ fill-color: stdcolor
2704
+ line-color: stdcolor))
2705
+ (print " ERROR: curr-tval is not > last-tval; curr-tval " curr-tval " , last-tval " last-tval))))
2706
+ next)
2707
+ ; ; for init create vector tstart,0
2708
+ #f ; ; (vector tstart minval minval)
2709
+ dat)
2710
+ ; ; (for-each
2711
+ ; ; (lambda (dpt)
2712
+ ; ; (let* ((tval (vector-ref dpt 0))
2713
+ ; ; (yval (vector-ref dpt 2))
2714
+ ; ; (stval (tfn tval))
2715
+ ; ; (syval (yfunc yval)))
2716
+ ; ; (vg:add-obj-to-comp
2717
+ ; ; cmp
2718
+ ; ; (vg:make-rect-obj (- stval 2) lly (+ stval 2)(+ lly (* yval yscale))
2719
+ ; ; fill-color: stdcolor))))
2720
+ ; ; dat)
2721
+ )))) ; ; for each data point in the series
2702
2722
(hash-table-keys alldat)))))
2703
2723
cfg)))
2704
2724
0 commit comments