gnucash stable: [trep-engine] improve readability of left-columns
Christopher Lam
clam at code.gnucash.org
Sat Apr 29 00:59:21 EDT 2023
Updated via https://github.com/Gnucash/gnucash/commit/20970feb (commit)
from https://github.com/Gnucash/gnucash/commit/08e9f48f (commit)
commit 20970febed7fe99a1ba3f9c323ad2dd9a33a8dd9
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Apr 29 12:25:41 2023 +0800
[trep-engine] improve readability of left-columns
similar to 93dd19e98b, change left-columns to use an assoc-list
instead of a vector. left-columns is not a customisable object, so
there's no need for a backward compatibility path.
diff --git a/gnucash/report/trep-engine.scm b/gnucash/report/trep-engine.scm
index 944fd39502..0479366f57 100644
--- a/gnucash/report/trep-engine.scm
+++ b/gnucash/report/trep-engine.scm
@@ -1148,136 +1148,146 @@ be excluded from periodic reporting.")
(left-cols-list
(append
(add-if (column-uses? 'date)
- (vector (G_ "Date")
- (lambda (split transaction-row?)
- (and transaction-row?
- (gnc:make-html-table-cell/markup
- "date-cell"
- (qof-print-date
- (xaccTransGetDate
- (xaccSplitGetParent split))))))))
+ (list (cons 'heading (G_ "Date"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (and transaction-row?
+ (gnc:make-html-table-cell/markup
+ "date-cell"
+ (qof-print-date
+ (xaccTransGetDate
+ (xaccSplitGetParent split)))))))))
(add-if (column-uses? 'entered)
- (vector (G_ "Date Entered")
- (lambda (split transaction-row?)
- (and transaction-row?
- (gnc:make-html-table-cell/markup
- "date-cell" (qof-print-date
- (xaccTransRetDateEntered
- (xaccSplitGetParent split))))))))
+ (list (cons 'heading (G_ "Date Entered"))
+ (cons 'renderer-fn (lambda (split transaction-row?)
+ (and transaction-row?
+ (gnc:make-html-table-cell/markup
+ "date-cell" (qof-print-date
+ (xaccTransRetDateEntered
+ (xaccSplitGetParent split)))))))))
(add-if (column-uses? 'reconciled-date)
- (vector (G_ "Reconciled Date")
- (lambda (split transaction-row?)
- (let ((reconcile-date
- (and (char=? (xaccSplitGetReconcile split) #\y)
- (xaccSplitGetDateReconciled split))))
- (and reconcile-date
- (gnc:make-html-table-cell/markup
- "date-cell"
- (qof-print-date reconcile-date)))))))
+ (list (cons 'heading (G_ "Reconciled Date"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (let ((reconcile-date
+ (and (char=? (xaccSplitGetReconcile split) #\y)
+ (xaccSplitGetDateReconciled split))))
+ (and reconcile-date
+ (gnc:make-html-table-cell/markup
+ "date-cell"
+ (qof-print-date reconcile-date))))))))
(add-if (column-uses? 'num)
- (vector (if (and BOOK-SPLIT-ACTION
- (opt-val gnc:pagename-display
- (N_ "Trans Number")))
- (G_ "Num/T-Num")
- (G_ "Num"))
- (lambda (split transaction-row?)
- (let* ((trans (xaccSplitGetParent split))
- (num (gnc-get-num-action trans split))
- (t-num (if (and BOOK-SPLIT-ACTION
- (opt-val
- gnc:pagename-display
- (N_ "Trans Number")))
- (gnc-get-num-action trans #f)
- ""))
- (num-string (if (string-null? t-num)
- num
- (string-append num "/" t-num))))
- (and transaction-row?
- (gnc:make-html-table-cell/markup
- "text-cell" num-string))))))
+ (list (cons 'heading (if (and BOOK-SPLIT-ACTION
+ (opt-val gnc:pagename-display
+ (N_ "Trans Number")))
+ (G_ "Num/T-Num")
+ (G_ "Num")))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (let* ((trans (xaccSplitGetParent split))
+ (num (gnc-get-num-action trans split))
+ (t-num (if (and BOOK-SPLIT-ACTION
+ (opt-val
+ gnc:pagename-display
+ (N_ "Trans Number")))
+ (gnc-get-num-action trans #f)
+ ""))
+ (num-string (if (string-null? t-num)
+ num
+ (string-append num "/" t-num))))
+ (and transaction-row?
+ (gnc:make-html-table-cell/markup
+ "text-cell" num-string)))))))
(add-if (column-uses? 'description)
- (vector (G_ "Description")
- (lambda (split transaction-row?)
- (define trans (xaccSplitGetParent split))
- (and transaction-row?
- (gnc:make-html-table-cell/markup
- "text-cell"
- (xaccTransGetDescription trans))))))
+ (list (cons 'heading (G_ "Description"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (define trans (xaccSplitGetParent split))
+ (and transaction-row?
+ (gnc:make-html-table-cell/markup
+ "text-cell"
+ (xaccTransGetDescription trans)))))))
(add-if (column-uses? 'memo)
- (vector (if (column-uses? 'notes)
- (string-append (G_ "Memo") "/" (G_ "Notes"))
- (G_ "Memo"))
- (lambda (split transaction-row?)
- (define trans (xaccSplitGetParent split))
- (define memo (xaccSplitGetMemo split))
- (if (and (string-null? memo) (column-uses? 'notes))
- (xaccTransGetNotes trans)
- memo))))
+ (list (cons 'heading (if (column-uses? 'notes)
+ (string-append (G_ "Memo") "/" (G_ "Notes"))
+ (G_ "Memo")))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (define trans (xaccSplitGetParent split))
+ (define memo (xaccSplitGetMemo split))
+ (if (and (string-null? memo) (column-uses? 'notes))
+ (xaccTransGetNotes trans)
+ memo)))))
(add-if (or (column-uses? 'account-name) (column-uses? 'account-code))
- (vector (G_ "Account")
- (lambda (split transaction-row?)
- (account-namestring
- (xaccSplitGetAccount split)
- (column-uses? 'account-code)
- (column-uses? 'account-name)
- (column-uses? 'account-full-name)))))
+ (list (cons 'heading (G_ "Account"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (account-namestring
+ (xaccSplitGetAccount split)
+ (column-uses? 'account-code)
+ (column-uses? 'account-name)
+ (column-uses? 'account-full-name))))))
(add-if (or (column-uses? 'other-account-name)
(column-uses? 'other-account-code))
- (vector (G_ "Transfer from/to")
- (lambda (split transaction-row?)
- (and (< 1 (xaccTransCountSplits
- (xaccSplitGetParent split)))
- (account-namestring
- (xaccSplitGetAccount
- (xaccSplitGetOtherSplit split))
- (column-uses? 'other-account-code)
- (column-uses? 'other-account-name)
- (column-uses? 'other-account-full-name))))))
+ (list (cons 'heading (G_ "Transfer from/to"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (and (< 1 (xaccTransCountSplits
+ (xaccSplitGetParent split)))
+ (account-namestring
+ (xaccSplitGetAccount
+ (xaccSplitGetOtherSplit split))
+ (column-uses? 'other-account-code)
+ (column-uses? 'other-account-name)
+ (column-uses? 'other-account-full-name)))))))
(add-if (column-uses? 'shares)
- (vector (G_ "Shares")
- (lambda (split transaction-row?)
- (gnc:make-html-table-cell/markup
- "number-cell"
- (xaccSplitGetAmount split)))))
+ (list (cons 'heading (G_ "Shares"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (gnc:make-html-table-cell/markup
+ "number-cell"
+ (xaccSplitGetAmount split))))))
(add-if (column-uses? 'link)
- (vector ""
- (lambda (split transaction-row?)
- (let ((url (xaccTransGetDocLink
- (xaccSplitGetParent split))))
- (and (not (string-null? url))
- (gnc:make-html-table-cell/markup
- "text-cell"
- (if opt-use-links?
- (gnc:html-transaction-doclink-anchor
- (xaccSplitGetParent split)
- ;; Translators: 'L' is short for Linked Document
- (C_ "Column header for 'Document Link'" "L"))
- (C_ "Column header for 'Document Link'" "L"))))))))
+ (list (cons 'heading "")
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (let ((url (xaccTransGetDocLink
+ (xaccSplitGetParent split))))
+ (and (not (string-null? url))
+ (gnc:make-html-table-cell/markup
+ "text-cell"
+ (if opt-use-links?
+ (gnc:html-transaction-doclink-anchor
+ (xaccSplitGetParent split)
+ ;; Translators: 'L' is short for Linked Document
+ (C_ "Column header for 'Document Link'" "L"))
+ (C_ "Column header for 'Document Link'" "L")))))))))
(add-if (column-uses? 'price)
- (vector (G_ "Price")
- (lambda (split transaction-row?)
- (gnc:make-html-table-cell/markup
- "number-cell"
- (gnc:default-price-renderer
- (xaccTransGetCurrency (xaccSplitGetParent split))
- (xaccSplitGetSharePrice split)))))))))
+ (list (cons 'heading (G_ "Price"))
+ (cons 'renderer-fn
+ (lambda (split transaction-row?)
+ (gnc:make-html-table-cell/markup
+ "number-cell"
+ (gnc:default-price-renderer
+ (xaccTransGetCurrency (xaccSplitGetParent split))
+ (xaccSplitGetSharePrice split))))))))))
(if (or (column-uses? 'subtotals-only)
(and (null? left-cols-list)
(or (opt-val gnc:pagename-display "Totals")
(primary-get-info 'renderer-fn)
(secondary-get-info 'renderer-fn))))
- (list (vector "" (lambda (s t) #f)))
+ `(((heading . "") (renderer-fn . ,(const #f))))
left-cols-list)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1463,9 +1473,7 @@ be excluded from periodic reporting.")
default-calculated-cells))
(define headings-left-columns
- (map (lambda (column)
- (vector-ref column 0))
- left-columns))
+ (map (cut assq-ref <> 'heading) left-columns))
(define headings-right-columns
(map (cut assq-ref <> 'heading) calculated-cells))
@@ -1748,8 +1756,7 @@ be excluded from periodic reporting.")
(append
(gnc:html-make-empty-cells indent-level)
(map (lambda (left-col)
- ((vector-ref left-col 1)
- split transaction-row?))
+ ((assq-ref left-col 'renderer-fn) split transaction-row?))
left-columns)
(map (lambda (cell)
(let* ((cell-monetary ((assq-ref cell 'calc-fn)
Summary of changes:
gnucash/report/trep-engine.scm | 223 +++++++++++++++++++++--------------------
1 file changed, 115 insertions(+), 108 deletions(-)
More information about the gnucash-changes
mailing list