gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Sun Aug 16 10:09:38 EDT 2020


Updated	 via  https://github.com/Gnucash/gnucash/commit/79a27354 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/94c61e15 (commit)
	from  https://github.com/Gnucash/gnucash/commit/088a386d (commit)



commit 79a273545c2487294ca96f014c1f917b9845549f
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sun Aug 16 21:57:59 2020 +0800

    [net-charts] export table as CSV
    
    table can be exported

diff --git a/gnucash/report/reports/standard/net-charts.scm b/gnucash/report/reports/standard/net-charts.scm
index fd838dcef..6f5928098 100644
--- a/gnucash/report/reports/standard/net-charts.scm
+++ b/gnucash/report/reports/standard/net-charts.scm
@@ -176,7 +176,7 @@
 ;; includes all the relevant Scheme code. The option database passed
 ;; to the function is one created by the options-generator function
 ;; defined above.
-(define (net-renderer report-obj inc-exp? linechart?)
+(define (net-renderer report-obj inc-exp? linechart? export-type)
 
   ;; This is a helper function for looking up option values.
   (define (get-option section name)
@@ -440,8 +440,18 @@
                        'attribute (list "class" "number-cell")))
                     '(1 2 3))
 
-                   (gnc:html-document-add-object! document table))
-                 ))
+                   (gnc:html-document-add-object! document table)))
+
+             (cond
+              ((eq? export-type 'csv)
+               (gnc:html-document-set-export-string
+                document
+                (gnc:lists->csv
+                 (cons (if inc-exp?
+                           (map G_ '("Date" "Income" "Expense" "Net Profit"))
+                           (map G_ '("Date" "Assets" "Liabilities" "Net Worth")))
+                       (map list date-string-list minuend-balances
+                            subtrahend-balances difference-balances)))))))
            (gnc:html-document-add-object!
             document
             (gnc:html-make-empty-data-warning
@@ -473,7 +483,10 @@
  'report-guid net-worth-barchart-uuid
  'menu-path (list gnc:menuname-asset-liability)
  'options-generator (lambda () (options-generator #f #f))
- 'renderer (lambda (report-obj) (net-renderer report-obj #f #f)))
+ 'renderer (lambda (report-obj) (net-renderer report-obj #f #f #f))
+ 'export-types '(("CSV" . csv))
+ 'export-thunk (lambda (report-obj export-type filename)
+                 (net-renderer report-obj #f #f export-type)))
 
 (gnc:define-report
  'version 1
@@ -482,7 +495,10 @@
  'menu-name (N_ "Income & Expense Barchart")
  'menu-path (list gnc:menuname-income-expense)
  'options-generator (lambda () (options-generator #t #f))
- 'renderer (lambda (report-obj) (net-renderer report-obj #t #f)))
+ 'renderer (lambda (report-obj) (net-renderer report-obj #t #f #f))
+ 'export-types '(("CSV" . csv))
+ 'export-thunk (lambda (report-obj export-type filename)
+                 (net-renderer report-obj #t #f export-type)))
 
 (gnc:define-report
  'version 1
@@ -490,7 +506,10 @@
  'report-guid net-worth-linechart-uuid
  'menu-path (list gnc:menuname-asset-liability)
  'options-generator (lambda () (options-generator #f #t))
- 'renderer (lambda (report-obj) (net-renderer report-obj #f #t)))
+ 'renderer (lambda (report-obj) (net-renderer report-obj #f #t #f))
+ 'export-types '(("CSV" . csv))
+ 'export-thunk (lambda (report-obj export-type filename)
+                 (net-renderer report-obj #f #t export-type)))
 
 ;; Not sure if a line chart makes sense for Income & Expense
 ;; Feel free to uncomment and try it though
@@ -501,4 +520,7 @@
  'menu-name (N_ "Income & Expense Linechart")
  'menu-path (list gnc:menuname-income-expense)
  'options-generator (lambda () (options-generator #t #t))
- 'renderer (lambda (report-obj) (net-renderer report-obj #t #t)))
+ 'renderer (lambda (report-obj) (net-renderer report-obj #t #t #f))
+ 'export-types '(("CSV" . csv))
+ 'export-thunk (lambda (report-obj export-type filename)
+                 (net-renderer report-obj #t #t export-type)))

commit 94c61e15f337d222d249a68ffcfb6b362faf2fd2
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sun Aug 16 21:51:07 2020 +0800

    [trep-engine] export gnc:lists->csv
    
    converts a list of lists to CSV string.

diff --git a/gnucash/report/trep-engine.scm b/gnucash/report/trep-engine.scm
index 6410a1c58..965b8c71c 100644
--- a/gnucash/report/trep-engine.scm
+++ b/gnucash/report/trep-engine.scm
@@ -465,6 +465,7 @@ Credit Card, and Income accounts."))
   (and (keylist-get-info (sortkey-list split-action?) sortkey 'split-sortvalue)
        (not (keylist-get-info (sortkey-list split-action?) sortkey 'sortkey))))
 
+(define-public gnc:lists->csv lists->csv)
 (define (lists->csv lst)
   ;; converts a list of lists into CSV
   ;; this function aims to follow RFC4180, and will pad lists to



Summary of changes:
 gnucash/report/reports/standard/net-charts.scm | 36 +++++++++++++++++++++-----
 gnucash/report/trep-engine.scm                 |  1 +
 2 files changed, 30 insertions(+), 7 deletions(-)



More information about the gnucash-changes mailing list