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