emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/rt-liberation e7779ce 54/72: * rt-liberation-report.el:


From: Stefan Monnier
Subject: [elpa] externals/rt-liberation e7779ce 54/72: * rt-liberation-report.el: Add Total, found bug.
Date: Wed, 5 Aug 2020 11:57:43 -0400 (EDT)

branch: externals/rt-liberation
commit e7779ce1381fe6e00c73f8e506b2870fff170e30
Author: Yoni Rabkin <yrk@gnu.org>
Commit: Yoni Rabkin <yrk@gnu.org>

    * rt-liberation-report.el: Add Total, found bug.
---
 rt-liberation-report.el | 25 +++++++++++++++++++++----
 1 file 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]