ENH: if no Display/* selected, insert empty left-column

Previously, if user selected NO split header (eg Date
Description Memo etc) the report would display the data
columns, which means the subtotal would cause misalignment.
This commit ensures the columns are aligned when user
selects no split information. At least 1 left-column is
required to allow for subtotal headers and summaries within
the table.
This commit is contained in:
Christopher Lam 2017-11-28 21:06:34 +08:00
parent 230493f294
commit 7b6ac3a077

View File

@ -849,33 +849,37 @@ tags within description, notes or memo. ")
(cdr (assq param used-columns))) (cdr (assq param used-columns)))
(define left-columns (define left-columns
(let* ((add-if (lambda pred? . items) (if pred? items '()))) (let* ((add-if (lambda (pred? . items) (if pred? items '())))
(append (left-cols-list
(add-if (column-uses? 'date) (append
(_ "Date")) (add-if (column-uses? 'date)
(add-if (column-uses? 'reconciled-date) (_ "Date"))
(_ "Reconciled Date")) (add-if (column-uses? 'reconciled-date)
(add-if (column-uses? 'num) (_ "Reconciled Date"))
(if (and BOOK-SPLIT-ACTION (add-if (column-uses? 'num)
(opt-val gnc:pagename-display (N_ "Trans Number"))) (if (and BOOK-SPLIT-ACTION
(_ "Num/T-Num") (opt-val gnc:pagename-display (N_ "Trans Number")))
(_ "Num"))) (_ "Num/T-Num")
(add-if (column-uses? 'description) (_ "Num")))
(_ "Description")) (add-if (column-uses? 'description)
(add-if (column-uses? 'memo) (_ "Description"))
(if (column-uses? 'notes) (add-if (column-uses? 'memo)
(string-append (_ "Memo") "/" (_ "Notes")) (if (column-uses? 'notes)
(_ "Memo"))) (string-append (_ "Memo") "/" (_ "Notes"))
(add-if (or (column-uses? 'account-name) (_ "Memo")))
(column-uses? 'account-code)) (add-if (or (column-uses? 'account-name)
(_ "Account")) (column-uses? 'account-code))
(add-if (or (column-uses? 'other-account-name) (_ "Account"))
(column-uses? 'other-account-code)) (add-if (or (column-uses? 'other-account-name)
(_ "Transfer from/to")) (column-uses? 'other-account-code))
(add-if (column-uses? 'shares) (_ "Transfer from/to"))
(_ "Shares")) (add-if (column-uses? 'shares)
(add-if (column-uses? 'price) (_ "Shares"))
(_ "Price")))) (add-if (column-uses? 'price)
(_ "Price")))))
(if (null? headings-list)
(list "")
headings-list)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
@ -1236,6 +1240,11 @@ tags within description, notes or memo. ")
(gnc:make-gnc-monetary (xaccTransGetCurrency trans) (gnc:make-gnc-monetary (xaccTransGetCurrency trans)
(xaccSplitGetSharePrice split))))) (xaccSplitGetSharePrice split)))))
;; hack to ensure cell alignment is corrected when no left columns were selected
;; this is needed because subtotal renderer will always insert at least 1 column
(if (null? row-contents)
(addto! row-contents (gnc:html-make-empty-cell)))
(for-each (lambda (cell) (for-each (lambda (cell)
(let ((cell-content (vector-ref cell 0)) (let ((cell-content (vector-ref cell 0))
;; reverse? returns a bool - will check if the cell type has reversible sign, ;; reverse? returns a bool - will check if the cell type has reversible sign,