summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoni Rabkin <yrk@gnu.org>2015-10-12 17:33:38 -0400
committerYoni Rabkin <yrk@gnu.org>2015-10-12 17:33:38 -0400
commite7779ce1381fe6e00c73f8e506b2870fff170e30 (patch)
treed2e31576d0aab2961aeb5333960a85a62b7e94b6
parent26d77ec7855a31bfe1667276432ad33eefa06c09 (diff)
* rt-liberation-report.el: Add Total, found bug.
-rw-r--r--rt-liberation-report.el25
1 files changed, 21 insertions, 4 deletions
diff --git a/rt-liberation-report.el b/rt-liberation-report.el
index b2af361..efb958b 100644
--- a/rt-liberation-report.el
+++ b/rt-liberation-report.el
@@ -50,10 +50,11 @@ return `nil'."
(rt-liber-rest-run-ls-query
(rt-liber-compile-query
(and (queue rt-queue)
- (resolved start-date end-date)
+ (resolved end-date start-date)
(status "resolved"))))))
(defun rt-liber-report-scan-ticket (ticket-alist)
+ "Convert TICKET-ALIST to set format."
(let ((date-resolved (cdr (assoc "Resolved" ticket-alist)))
(owner (cdr (assoc "Owner" ticket-alist))))
`(,(format-time-string "%d-%m-%Y" (date-to-time date-resolved))
@@ -74,6 +75,7 @@ return `nil'."
r))
(defun rt-liber-report-count (f l)
+ "Apply function F to list L to produce a count."
(let (out)
(while l
(let* ((head (car l))
@@ -84,13 +86,23 @@ return `nil'."
(setq l (cdr l)))
out))
+(defun rt-liber-report-count-total (l)
+ (let ((c 0))
+ (while l
+ (setq c (+ c (cdr (car l))))
+ (setq l (cdr l)))
+ c))
+
(defun rt-liber-report-count-by-date (l)
+ "Count resolved tickets by date."
(rt-liber-report-count #'car l))
(defun rt-liber-report-count-by-owner (l)
+ "Count resolved tickets by owner."
(rt-liber-report-count #'cdr l))
(defun rt-liber-report-print-csv (header l)
+ "Output list L in a CSV format, starting with HEADER."
(let (out)
(with-temp-buffer
(insert (format "\n%s\n" header))
@@ -101,12 +113,14 @@ return `nil'."
out))
(defun rt-liber-report (rt-queue start-date end-date)
+ "Print tickets resolved between START-DATE and END-DATE."
(let ((tickets (rt-liber-report-scan-interval
(rt-liber-report-get-interval
- rt-queue end-date start-date)))
+ rt-queue start-date end-date)))
by-date by-owner
by-date-out
- by-owner-out)
+ by-owner-out
+ total)
(when (not tickets)
(error (concat "no tickets in interval between "
start-date " and " end-date)))
@@ -119,9 +133,12 @@ return `nil'."
by-owner
#'(lambda (a b)
(> (cdr a) (cdr b)))))
+ ;; count total
+ (setq total (rt-liber-report-count-total by-owner))
;; print
(insert (rt-liber-report-print-csv "date, resolved" by-date))
- (insert (rt-liber-report-print-csv "owner, resolved" by-owner))))
+ (insert (rt-liber-report-print-csv "owner, resolved" by-owner))
+ (insert (format "\ntotal tickets resolved: %d\n" total))))
(provide 'rt-report)