Bläddra i källkod

Fix missing points on charts

Innokenty Enikev 10 år sedan
förälder
incheckning
e63f57831d
1 ändrade filer med 8 tillägg och 6 borttagningar
  1. 8 6
      finance.lisp

+ 8 - 6
finance.lisp

@@ -20,17 +20,19 @@
        collect (cons (aget "Name" rate)
                      (read-from-string (aget "Rate" rate))))))
 
+(defun get-serie (series name)
+  (loop for (time . rates) in series
+     when (aget name rates)
+     collect (list time (aget name rates))))
+
 (defun make-chart (series &key (usd t) (eur t) (gbp t))
   (let ((flat (remove-if #'null (if (alexandria:circular-list-p series)
                                      (flat-circular series)
                                      series))))
     (adw-charting:with-line-chart (1200 900)
-      (when usd
-        (adw-charting:add-series "USD/RUB" (loop for p in flat collect (list (car p) (cdadr p)))))
-      (when eur
-        (adw-charting:add-series "EUR/RUB" (loop for p in flat collect (list (car p) (cdaddr p)))))
-      (when gbp
-        (adw-charting:add-series "GBP/RUB" (loop for p in flat collect (list (car p) (cdr (cadddr p))))))
+      (when usd (adw-charting:add-series "USD/RUB" (get-serie flat "USD/RUB")))
+      (when eur (adw-charting:add-series "EUR/RUB" (get-serie flat "EUR/RUB")))
+      (when gbp (adw-charting:add-series "GBP/RUB" (get-serie flat "GBP/RUB")))
       (adw-charting:set-axis
        :x "Time" :draw-gridlines-p t
        :label-formatter #'(lambda (v) (local-time:format-timestring nil (local-time:unix-to-timestamp v)