[feat] (WIP) make durations for report customizable
This commit is contained in:
parent
5076f52088
commit
6648b146f9
|
@ -1547,6 +1547,20 @@ The first date is the first occurrence of
|
|||
(chronometrist-previous-week-start)
|
||||
(chronometrist-report-date-to-dates-in-week)))
|
||||
|
||||
(defcustom chronometrist-report-schema
|
||||
'[("Task" 25 t)
|
||||
("Sunday" 10 t :right-align t)
|
||||
("Monday" 10 t :right-align t)
|
||||
("Tuesday" 10 t :right-align t)
|
||||
("Wednesday" 10 t :right-align t)
|
||||
("Thursday" 10 t :right-align t)
|
||||
("Friday" 10 t :right-align t)
|
||||
("Saturday" 10 t :right-align t :pad-right 5)
|
||||
("Total" 12 t :right-align t)]
|
||||
"Vector specifying schema of `chronometrist-report' buffer.
|
||||
See `tabulated-list-format'."
|
||||
:type '(vector))
|
||||
|
||||
(defun chronometrist-report-rows ()
|
||||
"Return rows to be displayed in the `chronometrist-report' buffer."
|
||||
(cl-loop
|
||||
|
@ -1556,10 +1570,11 @@ The first date is the first occurrence of
|
|||
for task in chronometrist-task-list collect
|
||||
(let* ((durations (--map (chronometrist-task-time-one-day task (chronometrist-date it))
|
||||
week-dates))
|
||||
(duration-strings (mapcar #'chronometrist-format-duration durations))
|
||||
(total-duration (->> (-reduce #'+ durations)
|
||||
(chronometrist-format-duration)
|
||||
(vector))))
|
||||
(duration-strings (--map (chronometrist-format-duration it 'report)
|
||||
durations))
|
||||
(total-duration (--> (-reduce #'+ durations)
|
||||
(chronometrist-format-duration it 'report)
|
||||
(vector it))))
|
||||
(list task
|
||||
(vconcat
|
||||
(vector task)
|
||||
|
@ -1646,15 +1661,7 @@ Argument _FS-EVENT is ignored."
|
|||
(define-derived-mode chronometrist-report-mode tabulated-list-mode "Chronometrist-Report"
|
||||
"Major mode for `chronometrist-report'."
|
||||
(make-local-variable 'tabulated-list-format)
|
||||
(setq tabulated-list-format [("Task" 25 t)
|
||||
("Sunday" 10 t)
|
||||
("Monday" 10 t)
|
||||
("Tuesday" 10 t)
|
||||
("Wednesday" 10 t)
|
||||
("Thursday" 10 t)
|
||||
("Friday" 10 t)
|
||||
("Saturday" 10 t :pad-right 5)
|
||||
("Total" 12 t)])
|
||||
(setq tabulated-list-format chronometrist-report-schema)
|
||||
(make-local-variable 'tabulated-list-entries)
|
||||
(setq tabulated-list-entries 'chronometrist-report-rows)
|
||||
(make-local-variable 'tabulated-list-sort-key)
|
||||
|
|
|
@ -429,8 +429,9 @@ file.")
|
|||
#+BEGIN_SRC emacs-lisp
|
||||
(defcustom chronometrist-duration-formats
|
||||
`((chronometrist "%h:%.2m:%z%.2s" ,(concat (make-string 7 ?\s) "-"))
|
||||
(chronometrist-total "%h:%.2m:%z%.2s" ,(concat (make-string 6 ?\s) "-"))
|
||||
(report "%m:%s" ,(make-string 3 ?\s)))
|
||||
(chronometrist-total "%h:%.2m:%z%.2s" ,(concat (make-string 6 ?\s) "-"))
|
||||
(report "%h:%.2m:%z%.2s" ,(format "% 5s " "-"))
|
||||
(report-total "%h:%.2m:%z%.2s" ,(format "% 5s " "-")))
|
||||
"List specifying duration formats.
|
||||
Each element must be in the form
|
||||
|
||||
|
@ -2655,6 +2656,22 @@ The first date is the first occurrence of
|
|||
(chronometrist-previous-week-start)
|
||||
(chronometrist-report-date-to-dates-in-week)))
|
||||
#+END_SRC
|
||||
**** schema :custom:variable:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defcustom chronometrist-report-schema
|
||||
'[("Task" 25 t)
|
||||
("Sunday" 10 t :right-align t)
|
||||
("Monday" 10 t :right-align t)
|
||||
("Tuesday" 10 t :right-align t)
|
||||
("Wednesday" 10 t :right-align t)
|
||||
("Thursday" 10 t :right-align t)
|
||||
("Friday" 10 t :right-align t)
|
||||
("Saturday" 10 t :right-align t :pad-right 5)
|
||||
("Total" 12 t :right-align t)]
|
||||
"Vector specifying schema of `chronometrist-report' buffer.
|
||||
See `tabulated-list-format'."
|
||||
:type '(vector))
|
||||
#+END_SRC
|
||||
**** rows :procedure:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun chronometrist-report-rows ()
|
||||
|
@ -2666,10 +2683,11 @@ The first date is the first occurrence of
|
|||
for task in chronometrist-task-list collect
|
||||
(let* ((durations (--map (chronometrist-task-time-one-day task (chronometrist-date it))
|
||||
week-dates))
|
||||
(duration-strings (mapcar #'chronometrist-format-duration durations))
|
||||
(total-duration (->> (-reduce #'+ durations)
|
||||
(chronometrist-format-duration)
|
||||
(vector))))
|
||||
(duration-strings (--map (chronometrist-format-duration it 'report)
|
||||
durations))
|
||||
(total-duration (--> (-reduce #'+ durations)
|
||||
(chronometrist-format-duration it 'report)
|
||||
(vector it))))
|
||||
(list task
|
||||
(vconcat
|
||||
(vector task)
|
||||
|
@ -2770,15 +2788,7 @@ Argument _FS-EVENT is ignored."
|
|||
(define-derived-mode chronometrist-report-mode tabulated-list-mode "Chronometrist-Report"
|
||||
"Major mode for `chronometrist-report'."
|
||||
(make-local-variable 'tabulated-list-format)
|
||||
(setq tabulated-list-format [("Task" 25 t)
|
||||
("Sunday" 10 t)
|
||||
("Monday" 10 t)
|
||||
("Tuesday" 10 t)
|
||||
("Wednesday" 10 t)
|
||||
("Thursday" 10 t)
|
||||
("Friday" 10 t)
|
||||
("Saturday" 10 t :pad-right 5)
|
||||
("Total" 12 t)])
|
||||
(setq tabulated-list-format chronometrist-report-schema)
|
||||
(make-local-variable 'tabulated-list-entries)
|
||||
(setq tabulated-list-entries 'chronometrist-report-rows)
|
||||
(make-local-variable 'tabulated-list-sort-key)
|
||||
|
|
Reference in New Issue