Implement chart? flag in reports using chart.js

This commit is contained in:
Vincent Dawans 2023-06-27 19:25:07 -07:00
parent 423a9f17cd
commit e1ba6030de
11 changed files with 36 additions and 2 deletions

View File

@ -491,4 +491,7 @@
'report-guid "d5adcc61c62e4b8684dd8907448d7900"
'menu-path (list gnc:menuname-example)
'options-generator options-generator
'renderer renderer)
'chart? (lambda (report_obj)
(let* ((options (gnc:report-options report_obj)))
(gnc-optiondb-lookup-value options gnc:pagename-display "Show plot")))
'renderer renderer)

View File

@ -301,6 +301,7 @@
'menu-name (caddr l)
'menu-tip (car (cdddr l))
'options-generator (lambda () (options-generator (cadr l)))
'chart? #t
'renderer (lambda (report-obj)
(piechart-renderer report-obj
(car l)

View File

@ -185,5 +185,13 @@
;; The options generator function defined above.
'options-generator options-generator
;; A flag that informs the renderer whether or not to include
;; the chart.js library in the html header.
;; Can be set directly to a #t or #f value or
;; if it changes based on report options, it can be set to
;; a procedure that will be called with the report object
;; to retrieve a #t or #f value
'chart? #t
;; The rendering function defined above.
'renderer test-graphing-renderer)

View File

@ -588,6 +588,7 @@ balance at a given time"))
'options-generator (lambda () (options-generator acct-types
income-expense?
depth-based?))
'chart? #t
'renderer (lambda (report-obj)
(piechart-renderer report-obj name uuid
acct-types income-expense? depth-based?

View File

@ -306,4 +306,5 @@ date point, a projected minimum balance including scheduled transactions."))
'report-guid "321d940d487d4ccbb4bd0467ffbadbf2"
'menu-path (list gnc:menuname-asset-liability)
'options-generator options-generator
'chart? #t
'renderer document-renderer)

View File

@ -325,4 +325,5 @@
'report-guid "415cd38d39054d9e9c4040455290c2b1"
'menu-path (list gnc:menuname-budget)
'options-generator (lambda () (options-generator))
'chart? #t
'renderer (lambda (report-obj) (net-renderer report-obj)))

View File

@ -351,4 +351,5 @@
'menu-tip (N_ "Shows a barchart with cash flow over time")
'menu-path (list gnc:menuname-income-expense)
'options-generator cashflow-barchart-options-generator
'chart? #t
'renderer cashflow-barchart-renderer)

View File

@ -2031,4 +2031,7 @@
'report-guid "ab2acc24afd14630a551f98f1a35fa81"
'menu-path (list gnc:menuname-asset-liability)
'options-generator options-generator
'chart? (lambda (report_obj)
(let* ((options (gnc:report-options report_obj)))
(gnc-optiondb-lookup-value options pagename-chart optname-show-chart)))
'renderer investment-lots-renderer)

View File

@ -472,6 +472,7 @@
'report-guid net-worth-barchart-uuid
'menu-path (list gnc:menuname-asset-liability)
'options-generator (lambda () (options-generator #f #f))
'chart? #t
'renderer (lambda (report-obj) (net-renderer report-obj #f #f #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type)
@ -484,6 +485,7 @@
'menu-name (N_ "Income & Expense Barchart")
'menu-path (list gnc:menuname-income-expense)
'options-generator (lambda () (options-generator #t #f))
'chart? #t
'renderer (lambda (report-obj) (net-renderer report-obj #t #f #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type)
@ -495,6 +497,7 @@
'report-guid net-worth-linechart-uuid
'menu-path (list gnc:menuname-asset-liability)
'options-generator (lambda () (options-generator #f #t))
'chart? #t
'renderer (lambda (report-obj) (net-renderer report-obj #f #t #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type)
@ -509,6 +512,7 @@
'menu-name (N_ "Income & Expense Linechart")
'menu-path (list gnc:menuname-income-expense)
'options-generator (lambda () (options-generator #t #t))
'chart? #t
'renderer (lambda (report-obj) (net-renderer report-obj #t #t #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type)

View File

@ -302,4 +302,5 @@ Unfortunately, the plotting tool can't handle that.")))
'menu-path (list gnc:menuname-asset-liability)
'menu-name (N_ "Price Scatterplot")
'options-generator options-generator
'chart? #t
'renderer renderer)

View File

@ -29,6 +29,7 @@
(define-module (gnucash reports standard view-column))
(use-modules (gnucash engine))
(use-modules (ice-9 match))
(use-modules (srfi srfi-1))
(use-modules (gnucash utilities))
(use-modules (gnucash core-utils))
(use-modules (gnucash app-utils))
@ -176,6 +177,14 @@
(((child rowspan colspan _) . rest)
(loop rest (cons (list child rowspan colspan #f) new-reports)))))))
(define (include-chart? report)
(let* ((options (gnc:report-options report))
(reports
(gnc-optiondb-lookup-value options "__general" "report-list"))
(has-chart? (lambda (child)
(gnc:report-chart? (gnc-report-find (car child))))))
(any has-chart? reports)))
;; define the view now.
(gnc:define-report
'version 1
@ -186,4 +195,5 @@
'renderer render-view
'options-generator make-options
'options-cleanup-cb cleanup-options
'options-changed-cb options-changed-cb)
'options-changed-cb options-changed-cb
'chart? include-chart?)