[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.
This commit is contained in:
Christopher Lam 2023-04-29 12:25:41 +08:00
parent 08e9f48fdc
commit 20970febed

View File

@ -1148,136 +1148,146 @@ be excluded from periodic reporting.")
(left-cols-list (left-cols-list
(append (append
(add-if (column-uses? 'date) (add-if (column-uses? 'date)
(vector (G_ "Date") (list (cons 'heading (G_ "Date"))
(lambda (split transaction-row?) (cons 'renderer-fn
(and transaction-row? (lambda (split transaction-row?)
(gnc:make-html-table-cell/markup (and transaction-row?
"date-cell" (gnc:make-html-table-cell/markup
(qof-print-date "date-cell"
(xaccTransGetDate (qof-print-date
(xaccSplitGetParent split)))))))) (xaccTransGetDate
(xaccSplitGetParent split)))))))))
(add-if (column-uses? 'entered) (add-if (column-uses? 'entered)
(vector (G_ "Date Entered") (list (cons 'heading (G_ "Date Entered"))
(lambda (split transaction-row?) (cons 'renderer-fn (lambda (split transaction-row?)
(and transaction-row? (and transaction-row?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"date-cell" (qof-print-date "date-cell" (qof-print-date
(xaccTransRetDateEntered (xaccTransRetDateEntered
(xaccSplitGetParent split)))))))) (xaccSplitGetParent split)))))))))
(add-if (column-uses? 'reconciled-date) (add-if (column-uses? 'reconciled-date)
(vector (G_ "Reconciled Date") (list (cons 'heading (G_ "Reconciled Date"))
(lambda (split transaction-row?) (cons 'renderer-fn
(let ((reconcile-date (lambda (split transaction-row?)
(and (char=? (xaccSplitGetReconcile split) #\y) (let ((reconcile-date
(xaccSplitGetDateReconciled split)))) (and (char=? (xaccSplitGetReconcile split) #\y)
(and reconcile-date (xaccSplitGetDateReconciled split))))
(gnc:make-html-table-cell/markup (and reconcile-date
"date-cell" (gnc:make-html-table-cell/markup
(qof-print-date reconcile-date))))))) "date-cell"
(qof-print-date reconcile-date))))))))
(add-if (column-uses? 'num) (add-if (column-uses? 'num)
(vector (if (and BOOK-SPLIT-ACTION (list (cons 'heading (if (and BOOK-SPLIT-ACTION
(opt-val gnc:pagename-display (opt-val gnc:pagename-display
(N_ "Trans Number"))) (N_ "Trans Number")))
(G_ "Num/T-Num") (G_ "Num/T-Num")
(G_ "Num")) (G_ "Num")))
(lambda (split transaction-row?) (cons 'renderer-fn
(let* ((trans (xaccSplitGetParent split)) (lambda (split transaction-row?)
(num (gnc-get-num-action trans split)) (let* ((trans (xaccSplitGetParent split))
(t-num (if (and BOOK-SPLIT-ACTION (num (gnc-get-num-action trans split))
(opt-val (t-num (if (and BOOK-SPLIT-ACTION
gnc:pagename-display (opt-val
(N_ "Trans Number"))) gnc:pagename-display
(gnc-get-num-action trans #f) (N_ "Trans Number")))
"")) (gnc-get-num-action trans #f)
(num-string (if (string-null? t-num) ""))
num (num-string (if (string-null? t-num)
(string-append num "/" t-num)))) num
(and transaction-row? (string-append num "/" t-num))))
(gnc:make-html-table-cell/markup (and transaction-row?
"text-cell" num-string)))))) (gnc:make-html-table-cell/markup
"text-cell" num-string)))))))
(add-if (column-uses? 'description) (add-if (column-uses? 'description)
(vector (G_ "Description") (list (cons 'heading (G_ "Description"))
(lambda (split transaction-row?) (cons 'renderer-fn
(define trans (xaccSplitGetParent split)) (lambda (split transaction-row?)
(and transaction-row? (define trans (xaccSplitGetParent split))
(gnc:make-html-table-cell/markup (and transaction-row?
"text-cell" (gnc:make-html-table-cell/markup
(xaccTransGetDescription trans)))))) "text-cell"
(xaccTransGetDescription trans)))))))
(add-if (column-uses? 'memo) (add-if (column-uses? 'memo)
(vector (if (column-uses? 'notes) (list (cons 'heading (if (column-uses? 'notes)
(string-append (G_ "Memo") "/" (G_ "Notes")) (string-append (G_ "Memo") "/" (G_ "Notes"))
(G_ "Memo")) (G_ "Memo")))
(lambda (split transaction-row?) (cons 'renderer-fn
(define trans (xaccSplitGetParent split)) (lambda (split transaction-row?)
(define memo (xaccSplitGetMemo split)) (define trans (xaccSplitGetParent split))
(if (and (string-null? memo) (column-uses? 'notes)) (define memo (xaccSplitGetMemo split))
(xaccTransGetNotes trans) (if (and (string-null? memo) (column-uses? 'notes))
memo)))) (xaccTransGetNotes trans)
memo)))))
(add-if (or (column-uses? 'account-name) (column-uses? 'account-code)) (add-if (or (column-uses? 'account-name) (column-uses? 'account-code))
(vector (G_ "Account") (list (cons 'heading (G_ "Account"))
(lambda (split transaction-row?) (cons 'renderer-fn
(account-namestring (lambda (split transaction-row?)
(xaccSplitGetAccount split) (account-namestring
(column-uses? 'account-code) (xaccSplitGetAccount split)
(column-uses? 'account-name) (column-uses? 'account-code)
(column-uses? 'account-full-name))))) (column-uses? 'account-name)
(column-uses? 'account-full-name))))))
(add-if (or (column-uses? 'other-account-name) (add-if (or (column-uses? 'other-account-name)
(column-uses? 'other-account-code)) (column-uses? 'other-account-code))
(vector (G_ "Transfer from/to") (list (cons 'heading (G_ "Transfer from/to"))
(lambda (split transaction-row?) (cons 'renderer-fn
(and (< 1 (xaccTransCountSplits (lambda (split transaction-row?)
(xaccSplitGetParent split))) (and (< 1 (xaccTransCountSplits
(account-namestring (xaccSplitGetParent split)))
(xaccSplitGetAccount (account-namestring
(xaccSplitGetOtherSplit split)) (xaccSplitGetAccount
(column-uses? 'other-account-code) (xaccSplitGetOtherSplit split))
(column-uses? 'other-account-name) (column-uses? 'other-account-code)
(column-uses? 'other-account-full-name)))))) (column-uses? 'other-account-name)
(column-uses? 'other-account-full-name)))))))
(add-if (column-uses? 'shares) (add-if (column-uses? 'shares)
(vector (G_ "Shares") (list (cons 'heading (G_ "Shares"))
(lambda (split transaction-row?) (cons 'renderer-fn
(gnc:make-html-table-cell/markup (lambda (split transaction-row?)
"number-cell" (gnc:make-html-table-cell/markup
(xaccSplitGetAmount split))))) "number-cell"
(xaccSplitGetAmount split))))))
(add-if (column-uses? 'link) (add-if (column-uses? 'link)
(vector "" (list (cons 'heading "")
(lambda (split transaction-row?) (cons 'renderer-fn
(let ((url (xaccTransGetDocLink (lambda (split transaction-row?)
(xaccSplitGetParent split)))) (let ((url (xaccTransGetDocLink
(and (not (string-null? url)) (xaccSplitGetParent split))))
(gnc:make-html-table-cell/markup (and (not (string-null? url))
"text-cell" (gnc:make-html-table-cell/markup
(if opt-use-links? "text-cell"
(gnc:html-transaction-doclink-anchor (if opt-use-links?
(xaccSplitGetParent split) (gnc:html-transaction-doclink-anchor
;; Translators: 'L' is short for Linked Document (xaccSplitGetParent split)
(C_ "Column header for 'Document Link'" "L")) ;; Translators: 'L' is short for Linked Document
(C_ "Column header for 'Document Link'" "L")))))))) (C_ "Column header for 'Document Link'" "L"))
(C_ "Column header for 'Document Link'" "L")))))))))
(add-if (column-uses? 'price) (add-if (column-uses? 'price)
(vector (G_ "Price") (list (cons 'heading (G_ "Price"))
(lambda (split transaction-row?) (cons 'renderer-fn
(gnc:make-html-table-cell/markup (lambda (split transaction-row?)
"number-cell" (gnc:make-html-table-cell/markup
(gnc:default-price-renderer "number-cell"
(xaccTransGetCurrency (xaccSplitGetParent split)) (gnc:default-price-renderer
(xaccSplitGetSharePrice split))))))))) (xaccTransGetCurrency (xaccSplitGetParent split))
(xaccSplitGetSharePrice split))))))))))
(if (or (column-uses? 'subtotals-only) (if (or (column-uses? 'subtotals-only)
(and (null? left-cols-list) (and (null? left-cols-list)
(or (opt-val gnc:pagename-display "Totals") (or (opt-val gnc:pagename-display "Totals")
(primary-get-info 'renderer-fn) (primary-get-info 'renderer-fn)
(secondary-get-info 'renderer-fn)))) (secondary-get-info 'renderer-fn))))
(list (vector "" (lambda (s t) #f))) `(((heading . "") (renderer-fn . ,(const #f))))
left-cols-list))) left-cols-list)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -1463,9 +1473,7 @@ be excluded from periodic reporting.")
default-calculated-cells)) default-calculated-cells))
(define headings-left-columns (define headings-left-columns
(map (lambda (column) (map (cut assq-ref <> 'heading) left-columns))
(vector-ref column 0))
left-columns))
(define headings-right-columns (define headings-right-columns
(map (cut assq-ref <> 'heading) calculated-cells)) (map (cut assq-ref <> 'heading) calculated-cells))
@ -1748,8 +1756,7 @@ be excluded from periodic reporting.")
(append (append
(gnc:html-make-empty-cells indent-level) (gnc:html-make-empty-cells indent-level)
(map (lambda (left-col) (map (lambda (left-col)
((vector-ref left-col 1) ((assq-ref left-col 'renderer-fn) split transaction-row?))
split transaction-row?))
left-columns) left-columns)
(map (lambda (cell) (map (lambda (cell)
(let* ((cell-monetary ((assq-ref cell 'calc-fn) (let* ((cell-monetary ((assq-ref cell 'calc-fn)