|
@@ -108,11 +108,12 @@
|
|
|
|
|
|
|
|
(defvar *chart-points* 800 "Data points in chart")
|
|
(defvar *chart-points* 800 "Data points in chart")
|
|
|
(defun make-chart (series symbols)
|
|
(defun make-chart (series symbols)
|
|
|
- (let* ((r (multiple-value-list (range series :key #'car)))
|
|
|
|
|
- (fmt (if (<= (- (second r) (first r))
|
|
|
|
|
- (* 60 60 36))
|
|
|
|
|
- '((:hour 2) ":" (:min 2))
|
|
|
|
|
- '((:day 2) "." (:month 2) " " (:hour 2) ":" (:min 2)))))
|
|
|
|
|
|
|
+ (let* ((r (apply #'- (reverse (multiple-value-list (range series :key #'car)))))
|
|
|
|
|
+ (fmt (cond
|
|
|
|
|
+ ((<= r (* 60 60 36)) '((:hour 2) ":" (:min 2)))
|
|
|
|
|
+ ((<= r (* 60 60 24 7)) '((:day 2) "." (:month 2) " " (:hour 2) ":" (:min 2)))
|
|
|
|
|
+ ((<= r (* 60 60 24 365)) '((:day 2) "." (:month 2)))
|
|
|
|
|
+ (t '((:day 2) "." (:month 2) "." (:year 2))))))
|
|
|
(adw-charting:with-line-chart ((+ 90 *chart-points*)
|
|
(adw-charting:with-line-chart ((+ 90 *chart-points*)
|
|
|
(floor (* 3 *chart-points*) 4))
|
|
(floor (* 3 *chart-points*) 4))
|
|
|
(loop for symbol in symbols
|
|
(loop for symbol in symbols
|
|
@@ -366,7 +367,7 @@
|
|
|
(day-range (some #'(lambda (a) (aget a +chart-ranges+)) args))
|
|
(day-range (some #'(lambda (a) (aget a +chart-ranges+)) args))
|
|
|
(number (some #'(lambda (a) (parse-integer a :junk-allowed t)) args))
|
|
(number (some #'(lambda (a) (parse-integer a :junk-allowed t)) args))
|
|
|
(avg (* 60 (cond
|
|
(avg (* 60 (cond
|
|
|
- (day-range (round day-range *chart-points*))
|
|
|
|
|
|
|
+ (day-range (round (* day-range (or number 1)) *chart-points*))
|
|
|
(number)
|
|
(number)
|
|
|
(:otherwise 1))))
|
|
(:otherwise 1))))
|
|
|
(after-ts (local-time:timestamp- (local-time:now)
|
|
(after-ts (local-time:timestamp- (local-time:now)
|