时间表按标签分组

时间:2013-06-27 21:32:03

标签: emacs elisp org-mode

我正在寻找一种方法来使用org-mode议程文件中的时间跟踪信息来构建时间表。将指示在不同任务中花费的时间,按标签分组并限制在给定的时间范围内,有点像时钟表动态块,但按标签而不是文件/类别/标题分组。

例如,如果我的议程包含以下数据(可能分散在不同的文件中):

* TODO project 1
** TODO task 1                                                  :tag1:
   :LOGBOOK:
   CLOCK: [2013-06-27 Thu 18:00]--[2013-06-27 Thu 19:04] =>  1:04
   CLOCK: [2013-06-26 Wed 17:00]--[2013-06-26 Wed 17:32] =>  0:32
   :END:
** TODO task 2                                                  :tag2:
   :LOGBOOK:
   CLOCK: [2013-06-27 Thu 17:00]--[2013-06-27 Thu 18:00] =>  1:00
   CLOCK: [2013-06-27 Thu 15:00]--[2013-06-27 Thu 15:50] =>  0:50
   :END:

* TODO project 2                                                :tag2:
  :LOGBOOK:
  CLOCK: [2013-06-27 Thu 19:04]--[2013-06-27 Thu 21:00] =>  1:56
  CLOCK: [2013-06-27 Thu 15:50]--[2013-06-27 Thu 17:00] =>  1:10
  :END:

我想得到这样的结果:

#+BEGIN: clocktable-by-tag :maxlevel 2 :tags ("p1" "p2") :tstart "2013-06-27" :tend "2013-06-28"
| Tag  | Headline        | Time   |      |
|------+-----------------+--------+------|
| tag1 | *Tag time*      | *1:04* |      |
|      | TODO project 1  | 1:04   |      |
|      | \__ TODO task 1 |        | 1:04 |
|------+-----------------+--------+------|
| tag2 | *Tag time*      | *4:56* |      |
|      | TODO project 1  | 1:50   |      |
|      | \__ TODO task 2 |        | 1:50 |
|      | TODO project 2  | 3:06   |      |
#+END:

有没有标准的方法来组织这个?如果没有,我正在考虑循环使用议程文件和标签,使用org-get-table-data来收集时钟信息;会不会有另一种更有效的做事方式?

1 个答案:

答案 0 :(得分:10)

以下是我的观点:https://gist.github.com/ffevotte/5899058

它没有得到很好的优化,但似乎完成了工作并且应该支持大多数clocktable动态块参数。

我的真实组织议程文件中的示例(匿名)输出:

#+BEGIN: clocktable-by-tag :tags ("p_f3c" "p_sc") :tstart "2013-01-01" :tend "2013-05-19" :maxlevel 2
| Tag   | Headline                     | Time (h) |       |      |
|       |                              |      <r> |       |      |
|-------+------------------------------+----------+-------+------|
| p_f3c | *Tag time*                   |  *18.42* |       |      |
|       | File *xxx.org*               |    18.42 |       |      |
|       | . xxxxxxxxxxxxxxxxxxx        |          | 13.03 |      |
|       | . \__ xxxxxxxxxxxxx          |          |       | 7.78 |
|       | . \__ xxxxxxxxxxxxxxxxxxxxx  |          |       | 3.98 |
|       | . xxxxxxxxxxxxxxxxxx         |          |  5.38 |      |
|       | . \__ xxxxxxxxxxxxxxx        |          |       | 5.38 |
|-------+------------------------------+----------+-------+------|
| p_sc  | *Tag time*                   |  *18.90* |       |      |
|       | File *yyyy.org*              |     4.42 |       |      |
|       | . xxxxxxxxxxxxxxxxxxxxxx     |          |  2.83 |      |
|       | . xxxxxxxxxxxxxxxxxx         |          |  1.58 |      |
|       | . \__ xxxxxxxxxxxxxxxxxxxxxx |          |       | 1.58 |
|       | File *todo.org*              |    14.48 |       |      |
|       | . xxxxxxxxxxxxxxxx           |          | 14.48 |      |
|       | . \__ xxxxxxxxxxx            |          |       | 2.00 |
|       | . \__ xxxxxxxxxxxxx          |          |       | 8.48 |
|       | . \__ xxxxx                  |          |       | 4.00 |
#+END: