Catch case with empty or zero data lists before handing off to graph code.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@4281 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Robert Graham Merkel 2001-05-25 07:12:36 +00:00
parent 3c1c2a1a5f
commit 29678f8a6f
2 changed files with 89 additions and 52 deletions

View File

@ -16,6 +16,10 @@
* src/gnc-ui.h: add new help file * src/gnc-ui.h: add new help file
2001-05-25 Robert Graham Merkel <rgmerk@mira.net> 2001-05-25 Robert Graham Merkel <rgmerk@mira.net>
* src/scm/report/average-balance.scm: catch all-zero-data
case, display warning message rather than let the graphing
code catch it.
* src/scm/html-utilities.scm: display report title * src/scm/html-utilities.scm: display report title
string in gnc:html-no-account-warning and string in gnc:html-no-account-warning and

View File

@ -293,9 +293,16 @@
(beforebegindate (gnc:timepair-end-day-time (beforebegindate (gnc:timepair-end-day-time
(gnc:timepair-previous-day begindate))) (gnc:timepair-previous-day begindate)))
(all-zeros? #t)
;; startbal will be a commodity-collector ;; startbal will be a commodity-collector
(startbal '())) (startbal '()))
(define (list-all-zeros? alist)
(if (null? alist) #t
(if (not (= 0.0 (car alist)))
#f
(list-all-zeros? (cdr alist)))))
(define (monetary->double foreign-monetary date) (define (monetary->double foreign-monetary date)
(gnc:numeric-to-double (gnc:numeric-to-double
(gnc:gnc-monetary-amount (gnc:gnc-monetary-amount
@ -378,61 +385,87 @@
(col-labels '()) (col-labels '())
(col-colors '())) (col-colors '()))
(if (memq 'AvgBalPlot plot-type) (if (memq 'AvgBalPlot plot-type)
(begin (let
(gnc:html-barchart-append-column! ((number-data
barchart (map
(map (lambda (row) (list-ref row 2)) data)) (lambda (row) (list-ref row 2)) data)))
(set! col-labels (if (not (list-all-zeros? number-data))
(append col-labels (begin
(list (list-ref columns 2)))) (gnc:html-barchart-append-column!
(set! col-colors barchart
(append col-colors (list "blue"))))) (map (lambda (row) (list-ref row 2)) data))
(set! col-labels
(append col-labels
(list (list-ref columns 2))))
(set! col-colors
(append col-colors (list "blue")))
(set! all-zeros? #f)))))
(if (memq 'GainPlot plot-type) (if (memq 'GainPlot plot-type)
(begin (let ((number-data
(gnc:html-barchart-append-column! (map (lambda (row) (list-ref row 7)) data)))
barchart (if (not (list-all-zeros? number-data))
(map (lambda (row) (list-ref row 7)) data)) (begin
(set! col-labels (gnc:html-barchart-append-column!
(append col-labels barchart
(list (list-ref columns 7)))) (map (lambda (row) (list-ref row 7)) data))
(set! col-colors (set! col-labels
(append col-colors (list "green"))))) (append col-labels
(if (memq 'GLPlot plot-type) (list (list-ref columns 7))))
(begin (set! col-colors
;; debit column (append col-colors (list "green")))
(gnc:html-barchart-append-column! (set! all-zeros? #f)))))
barchart
(map (lambda (row) (list-ref row 5)) data))
(set! col-labels
(append col-labels
(list (list-ref columns 5))))
(set! col-colors
(append col-colors (list "black")))
;; credit (if (memq 'GLPlot plot-type)
(gnc:html-barchart-append-column! (let ((debit-data
barchart (map (lambda (row) list-ref row 5) data))
(map (lambda (row) (list-ref row 6)) data)) (credit-data
(set! col-labels (map (lambda (row) list-ref row 6) data)))
(append col-labels ;; debit column
(list (list-ref columns 6)))) (if (not (and
(set! col-colors (list-all-zeros? debit-data)
(append col-colors (list "red"))))) (list-all-zeros? credit-data)))
(begin
(gnc:html-barchart-set-col-labels! (gnc:html-barchart-append-column!
barchart col-labels) barchart
(gnc:html-barchart-set-col-colors! number-data)
barchart col-colors) (set! col-labels
(gnc:html-barchart-set-row-labels! (append col-labels
barchart (map car data)) (list (list-ref columns 5))))
(gnc:html-barchart-set-row-labels-rotated?! barchart #t) (set! col-colors
(append col-colors (list "black")))
(gnc:html-barchart-set-width! barchart width)
(gnc:html-barchart-set-height! barchart height) ;; credit
(gnc:html-barchart-set-height! barchart height) (gnc:html-barchart-append-column!
(gnc:html-document-add-object! document barchart))) barchart
(map (lambda (row) (list-ref row 6)) data))
(set! col-labels
(append col-labels
(list (list-ref columns 6))))
(set! col-colors
(append col-colors (list "red")))
(set all-zeros? #f)))))
(if (not all-zeros?)
(begin
(gnc:html-barchart-set-col-labels!
barchart col-labels)
(gnc:html-barchart-set-col-colors!
barchart col-colors)
(gnc:html-barchart-set-row-labels!
barchart (map car data))
(gnc:html-barchart-set-row-labels-rotated?! barchart #t)
(gnc:html-barchart-set-width! barchart width)
(gnc:html-barchart-set-height! barchart height)
(gnc:html-barchart-set-height! barchart height)
(gnc:html-document-add-object! document barchart))
(gnc:html-document-add-object!
document
(gnc:html-make-empty-data-warning
(_ "Average Balance"))))))
;; make a table (optionally) ;; make a table (optionally)
(if show-table? (if show-table?
(let ((table (gnc:make-html-table))) (let ((table (gnc:make-html-table)))