gnucash master: Bug 726535 - Budget BarChart Report - add option to change to a line chart
Geert Janssens
gjanssens at code.gnucash.org
Thu Jun 19 03:31:31 EDT 2014
Updated via https://github.com/Gnucash/gnucash/commit/3b4111c1 (commit)
from https://github.com/Gnucash/gnucash/commit/ea2389f0 (commit)
commit 3b4111c16dda09a311e561bcad16eaa9298cb0c1
Author: Carsten Rinke <carsten.rinke at gmx.de>
Date: Thu Jun 19 11:04:42 2014 +0200
Bug 726535 - Budget BarChart Report - add option to change to a line chart
Rebasing the patch for 2.6.3 to master commit ea2389f0932beae..
(done manually, not using git)
diff --git a/src/report/report-system/html-linechart.scm b/src/report/report-system/html-linechart.scm
index b6e2779..13e5279 100644
--- a/src/report/report-system/html-linechart.scm
+++ b/src/report/report-system/html-linechart.scm
@@ -494,9 +494,9 @@
(if subtitle
(begin
- (push " options.title += \" (")
- (push (jqplot-escape-string subtitle))
- (push ")\";\n")))
+ (push " options.title += \" <br />")
+ (push subtitle)
+ (push "\";\n")))
(if (and (string? x-label) (> (string-length x-label) 0))
(begin
diff --git a/src/report/standard-reports/budget-barchart.scm b/src/report/standard-reports/budget-barchart.scm
index ccc1372..f5ceb87 100644
--- a/src/report/standard-reports/budget-barchart.scm
+++ b/src/report/standard-reports/budget-barchart.scm
@@ -38,12 +38,13 @@
(use-modules (ice-9 regex)) ;; for regexp-substitute/global, used by jpqplot
(load-from-path "html-jqplot.scm") ;; for jqplot-escape-string
-(define reportname (N_ "Budget Barchart"))
+(define reportname (N_ "Budget Chart"))
(define optname-accounts (N_ "Accounts"))
(define optname-budget (N_ "Budget"))
(define optname-running-sum (N_ "Running Sum"))
+(define optname-chart-type (N_ "Chart Type"))
;(define (options-generator inc-exp?)
(define (options-generator)
@@ -69,6 +70,32 @@
(N_ "Calculate as running sum?")
#t))
+ ;; Display tab
+ (add-option
+ (gnc:make-multichoice-option
+ gnc:pagename-general ;; tab name
+ optname-chart-type ;; displayed option name
+ "c" ;; localization in the tab
+ (N_ "This is a multi choice option.") ;; option help text
+ 'bars ;; default selectioin
+ (list
+ (list->vector
+ (list 'bars
+ (N_ "Barchart")
+ (N_ "Show the report as a bar chart.")
+ )
+ )
+ (list->vector
+ (list 'lines
+ (N_ "Linechart")
+ (N_ "Show the report as a line chart.")
+ )
+ )
+ )
+ )
+ )
+
+
;; Option to select the accounts to that will be displayed
(add-option (gnc:make-account-list-option
gnc:pagename-accounts optname-accounts
@@ -93,18 +120,36 @@
;;
;; Create bar and and vaules
;;
-(define (gnc:chart-create-budget-actual budget acct running-sum)
- (let* ((chart (gnc:make-html-barchart)))
-
- ;; Setup barchart
- (gnc:html-barchart-set-title! chart (xaccAccountGetName acct))
- (gnc:html-barchart-set-width! chart 700)
- (gnc:html-barchart-set-height! chart 400)
- (gnc:html-barchart-set-row-labels-rotated?! chart #t)
- (gnc:html-barchart-set-col-labels!
- chart (list (_ "Budget") (_ "Actual")))
- (gnc:html-barchart-set-col-colors!
- chart '("blue" "red"))
+(define (gnc:chart-create-budget-actual budget acct running-sum chart-type)
+ (let* ((chart #f))
+
+ (if (eqv? chart-type 'bars)
+ (begin
+ ;; Setup barchart
+ (set! chart (gnc:make-html-barchart))
+ (gnc:html-barchart-set-title! chart (xaccAccountGetName acct))
+ (gnc:html-barchart-set-width! chart 700)
+ (gnc:html-barchart-set-height! chart 400)
+ (gnc:html-barchart-set-row-labels-rotated?! chart #t)
+ (gnc:html-barchart-set-col-labels!
+ chart (list (_ "Budget") (_ "Actual")))
+ (gnc:html-barchart-set-col-colors!
+ chart '("blue" "red"))
+ )
+ ;; else
+ (begin
+ ;; Setup linechart
+ (set! chart (gnc:make-html-linechart))
+ (gnc:html-linechart-set-title! chart (xaccAccountGetName acct))
+ (gnc:html-linechart-set-width! chart 700)
+ (gnc:html-linechart-set-height! chart 400)
+ (gnc:html-linechart-set-row-labels-rotated?! chart #t)
+ (gnc:html-linechart-set-col-labels!
+ chart (list (_ "Budget") (_ "Actual")))
+ (gnc:html-linechart-set-col-colors!
+ chart '("blue" "red"))
+ )
+ )
;; Prepair vars for running sums, and to loop though periods
(let* (
@@ -151,19 +196,42 @@
(set! period (+ period 1))
)
- ;; Add data to chart
- (gnc:html-barchart-append-column! chart bgt-vals)
- (gnc:html-barchart-append-column! chart act-vals)
- (gnc:html-barchart-set-row-labels! chart date-list)
- (if running-sum
- (gnc:html-barchart-set-subtitle! chart
- (string-append "Bgt:"
+ (if (eqv? chart-type 'bars)
+ (begin
+ ;; Add data to the bar chart
+ (gnc:html-barchart-append-column! chart bgt-vals)
+ (gnc:html-barchart-append-column! chart act-vals)
+ (gnc:html-barchart-set-row-labels! chart date-list)
+ (if running-sum
+ (gnc:html-barchart-set-subtitle! chart
+ (string-append "Bgt:"
+ (jqplot-escape-string (number->string bgt-sum))
+ "<br /> Act:"
+ (jqplot-escape-string (number->string act-sum))
+ )
+ )
+ )
+ )
+ ;; else
+ (begin
+ ;; Add data to the line chart
+ (gnc:html-linechart-append-column! chart bgt-vals)
+ (gnc:html-linechart-append-column! chart act-vals)
+ (gnc:html-linechart-set-row-labels! chart date-list)
+ (if running-sum
+ (gnc:html-linechart-set-subtitle! chart
+ (string-append "Bgt:"
(jqplot-escape-string (number->string bgt-sum))
"<br /> Act:"
- (jqplot-escape-string (number->string act-sum)))))
+ (jqplot-escape-string (number->string act-sum))
+ )
+ )
+ )
+ )
+ )
)
- ;; Reutrn newly created chart
+ ;; Return newly created chart
chart
))
@@ -185,6 +253,7 @@
(budget (get-option gnc:pagename-general optname-budget))
(budget-valid? (and budget (not (null? budget))))
(running-sum (get-option gnc:pagename-general optname-running-sum))
+ (chart-type (get-option gnc:pagename-general optname-chart-type))
(accounts (get-option gnc:pagename-accounts optname-accounts))
(report-title (get-option gnc:pagename-general
gnc:optname-reportname))
@@ -205,11 +274,17 @@
;; Else create chart for each account
(else
- (for-each (lambda (acct)
- (if (null? (gnc-account-get-descendants acct))
- (gnc:html-document-add-object! document
- (gnc:chart-create-budget-actual budget acct running-sum))))
- accounts))
+ (for-each
+ (lambda (acct)
+ (if (null? (gnc-account-get-descendants acct))
+ (gnc:html-document-add-object! document
+ (gnc:chart-create-budget-actual budget acct running-sum chart-type)
+ )
+ )
+ )
+ accounts
+ )
+ )
) ;; end cond
document
@@ -218,7 +293,7 @@
;; Here we define the actual report
(gnc:define-report
'version 1
- 'name (N_ "Budget Barchart")
+ 'name reportname
'report-guid "415cd38d39054d9e9c4040455290c2b1"
'menu-path (list gnc:menuname-budget)
'options-generator (lambda () (options-generator))
Summary of changes:
src/report/report-system/html-linechart.scm | 6 +-
src/report/standard-reports/budget-barchart.scm | 131 +++++++++++++++++++-----
2 files changed, 106 insertions(+), 31 deletions(-)
More information about the gnucash-changes
mailing list