r17384 - gnucash/branches/2.2 - [r17316] Reports: Add option to display a table of data beneath barcharts.
Andreas Köhler
andi5 at cvs.gnucash.org
Tue Jul 22 18:33:35 EDT 2008
Author: andi5
Date: 2008-07-22 18:33:35 -0400 (Tue, 22 Jul 2008)
New Revision: 17384
Trac: http://svn.gnucash.org/trac/changeset/17384
Modified:
gnucash/branches/2.2/AUTHORS
gnucash/branches/2.2/src/report/standard-reports/category-barchart.scm
gnucash/branches/2.2/src/report/standard-reports/net-barchart.scm
Log:
[r17316] Reports: Add option to display a table of data beneath barcharts.
Patch by Joachim Herb.
Committed by cedayiv.
Modified: gnucash/branches/2.2/AUTHORS
===================================================================
--- gnucash/branches/2.2/AUTHORS 2008-07-22 22:33:24 UTC (rev 17383)
+++ gnucash/branches/2.2/AUTHORS 2008-07-22 22:33:35 UTC (rev 17384)
@@ -160,6 +160,7 @@
John Hasler <john at dhh.gt.org> engine patch
Jon Kåre Hellan <hellan at acm.org> misc core dump fixes
Hendrik-Jan Heins <hjh at passys.nl> Dutch translation
+Joachim Herb <joachim.herb at gmx.de> Data table option for barchart reports
Claus Hindsgaul <claus_h at image.dk> messages Danish translation
Ori Hoch <ori at uumpa.com> Hebrew translation
Péter Hosszú <hosszu at web.de> Hungarian translation
Modified: gnucash/branches/2.2/src/report/standard-reports/category-barchart.scm
===================================================================
--- gnucash/branches/2.2/src/report/standard-reports/category-barchart.scm 2008-07-22 22:33:24 UTC (rev 17383)
+++ gnucash/branches/2.2/src/report/standard-reports/category-barchart.scm 2008-07-22 22:33:35 UTC (rev 17384)
@@ -146,13 +146,20 @@
"c" (N_ "Maximum number of bars in the chart") 8
2 24 0 1))
+ (add-option
+ (gnc:make-simple-boolean-option
+ gnc:pagename-display
+ (N_ "Show table")
+ "d" (N_ "Display a table of the selected data.")
+ #f))
+
(gnc:options-add-plot-size!
options gnc:pagename-display
- optname-plot-width optname-plot-height "d" 400 400)
+ optname-plot-width optname-plot-height "e" 400 400)
(gnc:options-add-sort-method!
options gnc:pagename-display
- optname-sort-method "e" 'amount)
+ optname-sort-method "f" 'amount)
(gnc:options-set-default-section options gnc:pagename-general)
@@ -209,8 +216,10 @@
(work-done 0)
(work-to-do 0)
+ (show-table? (get-option gnc:pagename-display (N_ "Show table")))
(document (gnc:make-html-document))
(chart (gnc:make-html-barchart))
+ (table (gnc:make-html-table))
(topl-accounts (gnc:filter-accountlist-type
account-types
(gnc-account-get-children-sorted
@@ -518,8 +527,80 @@
chart (append urls urls)))
(gnc:report-percent-done 98)
- (gnc:html-document-add-object! document chart))
+ (gnc:html-document-add-object! document chart)
+ (if show-table?
+ (begin
+ (gnc:html-table-append-column! table date-string-list)
+ (letrec
+ ((addcol
+ (lambda (col)
+ (if (not (null? col))
+ (begin
+ (gnc:html-table-append-column!
+ table (car col))
+ (addcol (cdr col))
+ )
+ ))
+ ))
+ (addcol (map cadr all-data))
+ )
+
+ (gnc:html-table-set-col-headers!
+ table
+ (append
+ (list (_ "Date"))
+ (map (lambda (pair)
+ (regexp-substitute/global #f "&"
+ (if (string? (car pair))
+ (car pair)
+ ((if show-fullname?
+ gnc-account-get-full-name
+ xaccAccountGetName) (car pair)))
+ 'pre " " (_ "and") " " 'post))
+ all-data)
+ (if (> (gnc:html-table-num-columns table) 2)
+ (list (_ "Grand Total"))
+ (list nil)
+ )
+ ))
+
+ (if (> (gnc:html-table-num-columns table) 2)
+ (letrec
+ ((sumtot
+ (lambda (row)
+ (if (null? row)
+ '()
+ (cons (sumrow (car row)) (sumtot (cdr row)))
+ )
+ )
+ )
+ (sumrow
+ (lambda (row)
+ (if (not (null? row))
+ (+ (car row) (sumrow (cdr row)))
+ 0
+ )
+ )
+ ))
+ (gnc:html-table-append-column!
+ table
+ (sumtot (apply zip (map cadr all-data)))
+ )
+ )
+ )
+ ;; set numeric columns to align right
+ (for-each
+ (lambda (col)
+ (gnc:html-table-set-col-style!
+ table col "td"
+ 'attribute (list "align" "right")))
+ '(1 2 3 4 5 6 7 8 9 10 11 12 13 14))
+ (gnc:html-document-add-object! document table)
+ ) ;; begin if
+ )
+ )
+
;; else if empty data
(gnc:html-document-add-object!
document
Modified: gnucash/branches/2.2/src/report/standard-reports/net-barchart.scm
===================================================================
--- gnucash/branches/2.2/src/report/standard-reports/net-barchart.scm 2008-07-22 22:33:24 UTC (rev 17383)
+++ gnucash/branches/2.2/src/report/standard-reports/net-barchart.scm 2008-07-22 22:33:35 UTC (rev 17384)
@@ -120,9 +120,16 @@
(N_ "Show a Net Worth bar?"))
#t))
+ (add-option
+ (gnc:make-simple-boolean-option
+ gnc:pagename-display
+ (N_ "Show table")
+ "c" (N_ "Display a table of the selected data.")
+ #f))
+
(gnc:options-add-plot-size!
options gnc:pagename-display
- optname-plot-width optname-plot-height "c" 500 400)
+ optname-plot-width optname-plot-height "d" 500 400)
(gnc:options-set-default-section options gnc:pagename-general)
@@ -179,6 +186,7 @@
(report-title (get-option gnc:pagename-general
gnc:optname-reportname))
(classified-accounts (gnc:decompose-accountlist accounts))
+ (show-table? (get-option gnc:pagename-display (N_ "Show table")))
(document (gnc:make-html-document))
(chart (gnc:make-html-barchart))
(non-zeros #f))
@@ -356,7 +364,45 @@
;; Test for all-zero data here.
(if non-zeros
+ (begin
(gnc:html-document-add-object! document chart)
+ (if show-table?
+ (let ((table (gnc:make-html-table)))
+ (gnc:html-table-set-col-headers!
+ table
+ (append
+ (list (_ "Date"))
+ (if show-sep?
+ (if inc-exp?
+ (list (_ "Income") (_ "Expense"))
+ (list (_ "Assets") (_ "Liabilities")))
+ '())
+ (if show-net?
+ (if inc-exp?
+ (list (_ "Net Profit"))
+ (list (_ "Net Worth")))
+ '()))
+ )
+ (gnc:html-table-append-column! table date-string-list)
+ (if show-sep?
+ (begin
+ (gnc:html-table-append-column! table assets-list)
+ (gnc:html-table-append-column! table liability-list)
+ )
+ )
+ (if show-net?
+ (gnc:html-table-append-column! table net-list)
+ )
+ ;; set numeric columns to align right
+ (for-each
+ (lambda (col)
+ (gnc:html-table-set-col-style!
+ table col "td"
+ 'attribute (list "align" "right")))
+ '(1 2 3))
+
+ (gnc:html-document-add-object! document table))
+ ))
(gnc:html-document-add-object!
document
(gnc:html-make-empty-data-warning
More information about the gnucash-changes
mailing list