emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Rainer Stengele <rainer.stengele@online.de>
To: Roland Everaert <reveatwork@gmail.com>,
	Eric S Fraga <e.fraga@ucl.ac.uk>,
	emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: 9.0.6 and clock tables
Date: Fri, 12 May 2017 16:41:19 +0200	[thread overview]
Message-ID: <ab0a477e-4bae-c9b6-37d8-3fdbac9ecd74@online.de> (raw)
In-Reply-To: <CACdPZ9LStHRXFYZLgDbGK-=Ksjjdt9h5nYyj9+7OTesKTVgG7A@mail.gmail.com>

Am 08.05.2017 um 12:31 schrieb Roland Everaert:
> I just see this.
>
> Since this morning my clocktable doesn't fill a column related to a
> property, any known issue and workaround/fix for this?
>
>
> Regards,
>
> On Mon, May 8, 2017 at 10:37 AM, Eric S Fraga <e.fraga@ucl.ac.uk
> <mailto:e.fraga@ucl.ac.uk>> wrote:
>
>     On Sunday,  7 May 2017 at 10:16, Nicolas Goaziou wrote:
>     > Would you happen to have any news on it?
>
>     Had no time but ...
>
>     > BTW, you may need to remove any TBLFM: entry related to % since
>     this is
>     > no longer necessary when using :formula %.
>
>     ... removing the existing TBLFM line fixes the problem!  Many thanks!
>
>     --
>     : Eric S Fraga (0xFFFCF67D), Emacs 26.0.50, Org
>     release_9.0.6-407-gc28ec3
>
>
Hi,

I have a wrong clock summary in my agenda and also in clock tables since 
9.0.6. Also the clock sum format suddenly includes days instead of only 
hours as before.

I have a function overriding the agenda clocktable report - see below.
What has changed in terms of clock time sum?
It seems this section is no more working as before:

  (format org-clock-total-time-cell-format
	     (org-minutes-to-clocksum-string (or total-time 0)))

org-minutes-to-clocksum-string simply contains "*%s*"

Please advise.

Thank you.
Regards, Rainer



(defun rst/org-clocktable-write-default (ipos tables params)
   "Write out a clock table at position IPOS in the current buffer.
TABLES is a list of tables with clocking data as produced by
`org-clock-get-table-data'.  PARAMS is the parameter property list obtained
from the dynamic block definition."
   ;; This function looks quite complicated, mainly because there are a
   ;; lot of options which can add or remove columns.  I have massively
   ;; commented this function, the I hope it is understandable.  If
   ;; someone wants to write their own special formatter, this maybe
   ;; much easier because there can be a fixed format with a
   ;; well-defined number of columns...
   (let* ((hlchars '((1 . "*") (2 . "/")))
	 (lwords (assoc (or (plist-get params :lang)
			    (org-bound-and-true-p org-export-default-language)
			    "en")
			org-clock-clocktable-language-setup))
	 (multifile (plist-get params :multifile))
	 (block (plist-get params :block))
	 (sort (plist-get params :sort))
	 (ts (plist-get params :tstart))
	 (te (plist-get params :tend))
	 (header (plist-get  params :header))
	 (narrow (plist-get params :narrow))
	 (ws (or (plist-get params :wstart) 1))
	 (ms (or (plist-get params :mstart) 1))
	 (link (plist-get params :link))
	 (maxlevel (or (plist-get params :maxlevel) 3))
	 (emph (plist-get params :emphasize))
	 (level-p (plist-get params :level))
	 (org-time-clocksum-use-effort-durations
	  (plist-get params :effort-durations))
	 (timestamp (plist-get params :timestamp))
	 (properties (plist-get params :properties))
	 (ntcol (max 1 (or (plist-get params :tcolumns) 100)))
	 (rm-file-column (plist-get params :one-file-with-archives))
	 (indent (plist-get params :indent))
	 (case-fold-search t)
	 range-text total-time tbl level hlc formula pcol
	 file-time entries entry headline
	 recalc content narrow-cut-p tcol)

     ;; Some consistency test for parameters
     (unless (integerp ntcol)
       (setq params (plist-put params :tcolumns (setq ntcol 100))))

     (when block
       ;; Get the range text for the header
       (setq range-text (nth 2 (org-clock-special-range block nil t ws 
ms))))

     ;; Compute the total time
     (setq total-time (apply '+ (mapcar 'cadr tables)))

     ;; Now we need to output this tsuff
     (goto-char ipos)

     ;; Insert the text *before* the actual table
     (insert-before-markers
      (or header
	 ;; Format the standard header
	 (concat
	  "#+CAPTION: "
	  (nth 9 lwords) " ["
	  (substring
	   (format-time-string (cdr org-time-stamp-formats))
	   1 -1)
	  "]"
	  (if block (concat ", for " range-text ".") "")
	  "\n")))


     ;; Insert the table header line
     (insert-before-markers
      "|"				; table line starter
      ;; (if multifile (concat (nth 1 lwords) "|") "") ; file column, maybe
      (if level-p   (concat (nth 2 lwords) "|") "") ; level column, maybe
      (if timestamp (concat (nth 3 lwords) "|") "") ; timestamp column, 
maybe
      (if properties (concat (mapconcat 'identity properties "|") "|") 
"") ;properties columns, maybe
      ;; (concat (nth 4 lwords) "|"
      (concat
	     (nth 5 lwords) "|\n"))	; headline and time columns


     ;; Insert the total time in the table
     (insert-before-markers
      ;; "|-\n"				; a hline
      ;; "\n"				; a hline

      "|"				; table line starter
      ;; (if multifile (concat "| " (nth 6 lwords) " ") "")
					; file column, maybe
      (if level-p   "|"      "")		; level column, maybe
      (if timestamp "|"      "")		; timestamp column, maybe
      (if properties (make-string (length properties) ?|) "") ; 
properties columns, maybe
      ;; (concat (format org-clock-total-time-cell-format (nth 7 
lwords))  "| ") ; instead of a headline
      (format org-clock-total-time-cell-format
	     (org-minutes-to-clocksum-string (or total-time 0))) ; the time
      "|\n")				; close line

     ;; Now iterate over the tables and insert the data
     ;; but only if any time has been collected
     (when (and total-time (> total-time 0))

       (while (setq tbl (pop tables))
	;; now tbl is the table resulting from one file.
	(setq file-time (nth 1 tbl))
	(when (or (and file-time (> file-time 0))
		  (not (plist-get params :fileskip0)))
	  (insert-before-markers "|-\n") ; a hline because a new file starts
	  ;; First the file time, if we have multiple files
	  (when (and nil multifile)
	    ;; Summarize the time collected from this file
	    (insert-before-markers
					; (format (concat "| %s %s | %s%s"
	     (format (concat "| %s | %s%s"
			     (format org-clock-file-time-cell-format (nth 8 lwords))
			     " | *%s*|\n")
		     ; (file-name-nondirectory (car tbl))
		     (if level-p   "| " "") ; level column, maybe
		     (if timestamp "| " "") ; timestamp column, maybe
		     (if properties (make-string (length properties) ?|) "") 
;properties columns, maybe
		     (org-minutes-to-clocksum-string (nth 1 tbl))))) ; the time

	  ;; Get the list of node entries and iterate over it
	  (setq entries (nth 2 tbl))
	  (while (setq entry (pop entries))
	    (setq level (car entry)
		  headline (nth 1 entry)
		  hlc (if emph (or (cdr (assoc level hlchars)) "") ""))
	    (when narrow-cut-p
	      (if (and (string-match (concat "\\`" org-bracket-link-regexp
					     "\\'")
				     headline)
		       (match-end 3))
		  (setq headline
			(format "[[%s][%s]]"
				(match-string 1 headline)
				(org-shorten-string (match-string 3 headline)
						    narrow)))
		(setq headline (org-shorten-string headline narrow))))
	    (insert-before-markers
	     "|"		    ; start the table line
	     ;; (if multifile "|" "")  ; free space for file name column?
	     (if level-p (format "%d|" (car entry)) "")	; level, maybe
	     (if timestamp (concat (nth 2 entry) "|") "") ; timestamp, maybe
	     (if properties
		 (concat
		  (mapconcat
		   (lambda (p) (or (cdr (assoc p (nth 4 entry))) ""))
		   properties "|") "|") "") ;properties columns, maybe
	     (if indent (org-clocktable-indent-string level) "") ; indentation
	     ;; hlc headline hlc "|"	; headline
	     (make-string (min (1- ntcol) (or (- level 1))) ?|)
					; empty fields for higher levels
	     hlc (org-minutes-to-clocksum-string (nth 3 entry)) hlc ; time
	     "|\n"			; close line
	     )))))
     ;; When exporting subtrees or regions the region might be
     ;; activated, so let's disable ̀delete-active-region'
     (let ((delete-active-region nil)) (backward-delete-char 1))

     ;; Back to beginning, align the table, recalculate if necessary
     (goto-char ipos)
     (skip-chars-forward "^|")
     (org-table-align)
     (when org-hide-emphasis-markers
       ;; we need to align a second time
       (org-table-align))
     (when sort
       (save-excursion
	(org-table-goto-line 3)
	(org-table-goto-column (car sort))
	(org-table-sort-lines nil (cdr sort))))
     (when recalc
       (if (eq formula '%)
	  (save-excursion
	    (if (and narrow (not narrow-cut-p)) (beginning-of-line 2))
	    (org-table-goto-column pcol nil 'force)
	    (insert "%")))
       (org-table-recalculate 'all))
     (when rm-file-column
       ;; The file column is actually not wanted
       (forward-char 1)
       (org-table-delete-column))
     total-time))

  reply	other threads:[~2017-05-12 14:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-02 19:12 9.0.6 and clock tables Eric S Fraga
2017-05-07 10:16 ` Nicolas Goaziou
     [not found] ` <be8d3f2cb33b4709844ed24f43da4bec@HE1PR01MB1898.eurprd01.prod.exchangelabs.com>
2017-05-08  8:37   ` Eric S Fraga
2017-05-08 10:31     ` Roland Everaert
2017-05-12 14:41       ` Rainer Stengele [this message]
2017-05-12 15:23         ` Nicolas Goaziou
2017-05-15  6:57           ` Rainer Stengele
2017-05-15 11:35             ` 9.0.6 and clock tables -> solved Rainer Stengele
2017-05-12 15:24       ` 9.0.6 and clock tables Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab0a477e-4bae-c9b6-37d8-3fdbac9ecd74@online.de \
    --to=rainer.stengele@online.de \
    --cc=e.fraga@ucl.ac.uk \
    --cc=emacs-orgmode@gnu.org \
    --cc=reveatwork@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).