gnucash maint: [category-barchart] simplify code

Christopher Lam clam at code.gnucash.org
Tue Feb 22 04:15:35 EST 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/5f06fc99 (commit)
	from  https://github.com/Gnucash/gnucash/commit/b79dffc5 (commit)



commit 5f06fc99fd1a4b7d30736a32656388cb8cb6f2b3
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Feb 12 13:15:49 2022 +0800

    [category-barchart] simplify code

diff --git a/gnucash/report/reports/standard/category-barchart.scm b/gnucash/report/reports/standard/category-barchart.scm
index 54dd2ddcc..7b2b810cb 100644
--- a/gnucash/report/reports/standard/category-barchart.scm
+++ b/gnucash/report/reports/standard/category-barchart.scm
@@ -328,23 +328,21 @@ developing over time"))
              ;; created.
              (other-anchor ""))
 
-        ;; Converts a commodity-collector into gnc-monetary in the report's
-        ;; currency using the exchange-fn calculated above. Returns a gnc-monetary
+        ;; Converts a commodity-collector into amount in the report's
+        ;; currency using the exchange-fn calculated above. Returns an amount
         ;; multiplied by the averaging-multiplier (smaller than one; multiplication
         ;; instead of division to avoid division-by-zero issues) in case
         ;; the user wants to see the amounts averaged over some value.
-        (define (collector->monetary c date)
-          (gnc:make-gnc-monetary
-           report-currency
-           (* averaging-multiplier
-              (gnc:gnc-monetary-amount
-               (gnc:sum-collector-commodity
-                c report-currency
-                (lambda (a b) (exchange-fn a b date)))))))
+        (define (collector->report-currency-amount c date)
+          (* averaging-multiplier
+             (gnc:gnc-monetary-amount
+              (gnc:sum-collector-commodity
+               c report-currency
+               (lambda (a b) (exchange-fn a b date))))))
 
         (define (all-zeros data)
           (cond
-           ((gnc:gnc-monetary? data) (zero? (gnc:gnc-monetary-amount data)))
+           ((number? data) (zero? data))
            ((pair? data) (every all-zeros data))
            (else (error 'huh))))
 
@@ -396,11 +394,11 @@ developing over time"))
                   (loop (cdr list-of-mon-collectors)
                         (cdr dates-list)
                         (cons (if do-intervals?
-                                  (collector->monetary
+                                  (collector->report-currency-amount
                                    (gnc:collector- (cadr list-of-mon-collectors)
                                                    (car list-of-mon-collectors))
                                    (cadr dates-list))
-                                  (collector->monetary
+                                  (collector->report-currency-amount
                                    (car list-of-mon-collectors)
                                    (car dates-list)))
                               result))))))
@@ -462,9 +460,7 @@ developing over time"))
         ;; Sort the account list according to the account code field.
         (set! all-data
           (sort
-           (filter (lambda (l)
-                     (not (zero? (gnc:gnc-monetary-amount
-                                  (apply gnc:monetary+ (cadr l))))))
+           (filter (lambda (l) (not (zero? (apply + (cadr l)))))
                    (traverse-accounts 1 topl-accounts))
            (case sort-method
              ((alphabetical)
@@ -480,8 +476,8 @@ developing over time"))
                                      (xaccAccountGetCode (car b)))))
              ((amount)
               (lambda (a b)
-                (> (gnc:gnc-monetary-amount (apply gnc:monetary+ (cadr a)))
-                   (gnc:gnc-monetary-amount (apply gnc:monetary+ (cadr b)))))))))
+                (> (apply + (cadr a))
+                   (apply + (cadr b))))))))
 
         (cond
          ((or (null? all-data) (all-zeros (map cadr all-data)))
@@ -494,7 +490,8 @@ developing over time"))
           (let* ((dates-list (if do-intervals?
                                  (list-head dates-list (1- (length dates-list)))
                                  dates-list))
-                 (date-string-list (map qof-print-date dates-list)))
+                 (date-string-list (map qof-print-date dates-list))
+                 (list-of-rows (apply zip (map cadr all-data))))
 
             ;; Set chart title, subtitle etc.
             (gnc:html-chart-set-type!
@@ -523,7 +520,7 @@ developing over time"))
                 (let* ((start (take all-data (1- max-slices)))
                        (finish (drop all-data (1- max-slices)))
                        (other-sum (map
-                                   (lambda (l) (apply gnc:monetary+ l))
+                                   (lambda (l) (apply + l))
                                    (apply zip (map cadr finish)))))
                   (set! all-data
                     (append start
@@ -551,7 +548,7 @@ developing over time"))
                               ((string? acct) (car series))
                               (show-fullname? (gnc-account-get-full-name acct))
                               (else (xaccAccountGetName acct))))
-                      (amounts (map gnc:gnc-monetary-amount (cadr series)))
+                      (amounts (cadr series))
                       (stack (if stacked? "default" (number->string stack)))
                       (fill (eq? chart-type 'barchart))
                       (urls (cond
@@ -601,18 +598,20 @@ developing over time"))
                 (define (make-cell contents)
                   (gnc:make-html-table-cell/markup "number-cell" contents))
 
+                (define (make-monetary-cell amount)
+                  (make-cell (gnc:make-gnc-monetary report-currency amount)))
+
                 (for-each
                  (lambda (date row)
                    (gnc:html-table-append-row!
                     table
                     (append (list (make-cell date))
-                            (map make-cell row)
+                            (map make-monetary-cell row)
                             (if cols>1?
-                                (list
-                                 (make-cell (apply gnc:monetary+ row)))
+                                (list (make-monetary-cell (apply + row)))
                                 '()))))
                  date-string-list
-                 (apply zip (map cadr all-data)))
+                 list-of-rows)
 
                 (gnc:html-table-set-col-headers!
                  table
@@ -655,10 +654,10 @@ developing over time"))
                             (list date)
                             row
                             (if (pair? (cdr all-data))
-                                (list (apply gnc:monetary+ row))
+                                (list (apply + row))
                                 '())))
                          (map (cut gnc-print-time64 <> iso-date) dates-list)
-                         (apply zip (map cadr all-data)))))))))))))))
+                         list-of-rows)))))))))))))
 
     (unless (gnc:html-document-export-string document)
       (gnc:html-document-set-export-error document (G_ "No exportable data")))



Summary of changes:
 .../report/reports/standard/category-barchart.scm  | 53 +++++++++++-----------
 1 file changed, 26 insertions(+), 27 deletions(-)



More information about the gnucash-changes mailing list