diff options
author | Yoni Rabkin <yrk@gnu.org> | 2015-10-12 17:33:38 -0400 |
---|---|---|
committer | Yoni Rabkin <yrk@gnu.org> | 2015-10-12 17:33:38 -0400 |
commit | e7779ce1381fe6e00c73f8e506b2870fff170e30 (patch) | |
tree | d2e31576d0aab2961aeb5333960a85a62b7e94b6 | |
parent | 26d77ec7855a31bfe1667276432ad33eefa06c09 (diff) |
* rt-liberation-report.el: Add Total, found bug.
-rw-r--r-- | rt-liberation-report.el | 25 |
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) |