2013-06-27 2 views
6

Я ищу способ использовать информацию отслеживания времени из файлов повестки дня 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? Если нет, я думаю о том, чтобы ездить на велосипеде по файлам и тегам, используя org-get-table-data для сбора информации о синхронизации; был бы еще один, более эффективный способ делать вещи?

+0

Я не знаю, если есть способ сделать это, но было бы интересно узнать, тоже. –

ответ

9

Вот что я пришел: https://gist.github.com/ffevotte/5899058

Это не очень оптимизирован, но, кажется, получить работу и поддерживать большинство clocktable аргументов динамических блоков.

Sample (анонимной) Выход на мои файлы повестки дня в реальном орг:

#+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: 
+0

это действительно здорово! Спасибо! я хотел бы обобщить только теги ввода (а не все теги в каждой записи) и попытаюсь расширить то, что вы создали (хотя я не очень хорошо знаком с Lisp). – RubyTuesdayDONO

+0

Ничего себе, это работает. Большое вам спасибо за это. –