[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,26 +1148,28 @@ 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"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(and transaction-row? (and transaction-row?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"date-cell" "date-cell"
(qof-print-date (qof-print-date
(xaccTransGetDate (xaccTransGetDate
(xaccSplitGetParent split)))))))) (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"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(let ((reconcile-date (let ((reconcile-date
(and (char=? (xaccSplitGetReconcile split) #\y) (and (char=? (xaccSplitGetReconcile split) #\y)
@ -1175,14 +1177,15 @@ be excluded from periodic reporting.")
(and reconcile-date (and reconcile-date
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"date-cell" "date-cell"
(qof-print-date reconcile-date))))))) (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")))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(let* ((trans (xaccSplitGetParent split)) (let* ((trans (xaccSplitGetParent split))
(num (gnc-get-num-action trans split)) (num (gnc-get-num-action trans split))
@ -1197,40 +1200,44 @@ be excluded from periodic reporting.")
(string-append num "/" t-num)))) (string-append num "/" t-num))))
(and transaction-row? (and transaction-row?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"text-cell" num-string)))))) "text-cell" num-string)))))))
(add-if (column-uses? 'description) (add-if (column-uses? 'description)
(vector (G_ "Description") (list (cons 'heading (G_ "Description"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(define trans (xaccSplitGetParent split)) (define trans (xaccSplitGetParent split))
(and transaction-row? (and transaction-row?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"text-cell" "text-cell"
(xaccTransGetDescription trans)))))) (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")))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(define trans (xaccSplitGetParent split)) (define trans (xaccSplitGetParent split))
(define memo (xaccSplitGetMemo split)) (define memo (xaccSplitGetMemo split))
(if (and (string-null? memo) (column-uses? 'notes)) (if (and (string-null? memo) (column-uses? 'notes))
(xaccTransGetNotes trans) (xaccTransGetNotes trans)
memo)))) 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"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(account-namestring (account-namestring
(xaccSplitGetAccount split) (xaccSplitGetAccount split)
(column-uses? 'account-code) (column-uses? 'account-code)
(column-uses? 'account-name) (column-uses? 'account-name)
(column-uses? 'account-full-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"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(and (< 1 (xaccTransCountSplits (and (< 1 (xaccTransCountSplits
(xaccSplitGetParent split))) (xaccSplitGetParent split)))
@ -1239,17 +1246,19 @@ be excluded from periodic reporting.")
(xaccSplitGetOtherSplit split)) (xaccSplitGetOtherSplit split))
(column-uses? 'other-account-code) (column-uses? 'other-account-code)
(column-uses? 'other-account-name) (column-uses? 'other-account-name)
(column-uses? 'other-account-full-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"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(xaccSplitGetAmount split))))) (xaccSplitGetAmount split))))))
(add-if (column-uses? 'link) (add-if (column-uses? 'link)
(vector "" (list (cons 'heading "")
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(let ((url (xaccTransGetDocLink (let ((url (xaccTransGetDocLink
(xaccSplitGetParent split)))) (xaccSplitGetParent split))))
@ -1261,23 +1270,24 @@ be excluded from periodic reporting.")
(xaccSplitGetParent split) (xaccSplitGetParent split)
;; Translators: 'L' is short for Linked Document ;; 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")))))))) (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"))
(cons 'renderer-fn
(lambda (split transaction-row?) (lambda (split transaction-row?)
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:default-price-renderer (gnc:default-price-renderer
(xaccTransGetCurrency (xaccSplitGetParent split)) (xaccTransGetCurrency (xaccSplitGetParent split))
(xaccSplitGetSharePrice 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)