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" 'report-guid "d5adcc61c62e4b8684dd8907448d7900"
'menu-path (list gnc:menuname-example) 'menu-path (list gnc:menuname-example)
'options-generator options-generator '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-name (caddr l)
'menu-tip (car (cdddr l)) 'menu-tip (car (cdddr l))
'options-generator (lambda () (options-generator (cadr l))) 'options-generator (lambda () (options-generator (cadr l)))
'chart? #t
'renderer (lambda (report-obj) 'renderer (lambda (report-obj)
(piechart-renderer report-obj (piechart-renderer report-obj
(car l) (car l)

View File

@ -185,5 +185,13 @@
;; The options generator function defined above. ;; The options generator function defined above.
'options-generator options-generator '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. ;; The rendering function defined above.
'renderer test-graphing-renderer) 'renderer test-graphing-renderer)

View File

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

View File

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

View File

@ -325,4 +325,5 @@
'report-guid "415cd38d39054d9e9c4040455290c2b1" 'report-guid "415cd38d39054d9e9c4040455290c2b1"
'menu-path (list gnc:menuname-budget) 'menu-path (list gnc:menuname-budget)
'options-generator (lambda () (options-generator)) 'options-generator (lambda () (options-generator))
'chart? #t
'renderer (lambda (report-obj) (net-renderer report-obj))) '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-tip (N_ "Shows a barchart with cash flow over time")
'menu-path (list gnc:menuname-income-expense) 'menu-path (list gnc:menuname-income-expense)
'options-generator cashflow-barchart-options-generator 'options-generator cashflow-barchart-options-generator
'chart? #t
'renderer cashflow-barchart-renderer) 'renderer cashflow-barchart-renderer)

View File

@ -2031,4 +2031,7 @@
'report-guid "ab2acc24afd14630a551f98f1a35fa81" 'report-guid "ab2acc24afd14630a551f98f1a35fa81"
'menu-path (list gnc:menuname-asset-liability) 'menu-path (list gnc:menuname-asset-liability)
'options-generator options-generator '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) 'renderer investment-lots-renderer)

View File

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

View File

@ -29,6 +29,7 @@
(define-module (gnucash reports standard view-column)) (define-module (gnucash reports standard view-column))
(use-modules (gnucash engine)) (use-modules (gnucash engine))
(use-modules (ice-9 match)) (use-modules (ice-9 match))
(use-modules (srfi srfi-1))
(use-modules (gnucash utilities)) (use-modules (gnucash utilities))
(use-modules (gnucash core-utils)) (use-modules (gnucash core-utils))
(use-modules (gnucash app-utils)) (use-modules (gnucash app-utils))
@ -176,6 +177,14 @@
(((child rowspan colspan _) . rest) (((child rowspan colspan _) . rest)
(loop rest (cons (list child rowspan colspan #f) new-reports))))))) (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. ;; define the view now.
(gnc:define-report (gnc:define-report
'version 1 'version 1
@ -186,4 +195,5 @@
'renderer render-view 'renderer render-view
'options-generator make-options 'options-generator make-options
'options-cleanup-cb cleanup-options 'options-cleanup-cb cleanup-options
'options-changed-cb options-changed-cb) 'options-changed-cb options-changed-cb
'chart? include-chart?)