org-mode: bagaimana membuat laporan jam selama berjam-jam bekerja setiap hari?

18

org-clock-reportMengagumkan; namun, ini melaporkan waktu yang dihabiskan untuk setiap tugas. Apakah ada perintah khusus yang Anda gunakan untuk menghasilkan laporan jam yang menunjukkan jam kerja, di seluruh tugas, untuk setiap hari ?

Masalah yang saya temui adalah, saya mengajukan tangkapan TODO saya di bawah file+datetreeentri. Sebagai contoh, satu tugas TODO mungkin diajukan pada Hari -2, tapi saya bisa mengerjakannya - yaitu, pencatatan jam masuk dan keluar - pada Hari -2, -1, dan hari ini. Jadi membuat tabel secara naif hanya akan menunjukkan sesuatu seperti:

#+BEGIN: clocktable :maxlevel 4 :scope file :block thisweek 
#+CAPTION: Clock summary at [2017-09-23 Sat 11:48], for week 2017-W38.
| Headline                              | Time      |         |       |       |
|---------------------------------------+-----------+---------+-------+-------|
| *Total time*                          | *1d 0:12* |         |       |       |
|---------------------------------------+-----------+---------+-------+-------|
| 2017                                  | 1d 0:12   |         |       |       |
| \_  2017-09 September                 |           | 1d 0:12 |       |       |
| \_    2017-09-11 Monday               |           |         |  1:23 |       |
| \_      look into AAA BBBB project    |           |         |       |  
| \_    2017-09-15 Friday               |           |         |  3:33 |       |
| \_      look into XXX YYYY project    |           |         |       |  3:33 |
#+END:

Perhatikan bahwa tugas TODO kedua diajukan di bawah 2017-09-15 Friday, yang merupakan tanggal saya memasukkan tugas. Tapi sungguh, saya mungkin telah mengerjakannya pada hari Jumat, Sabtu, dll. Saya hanya ingin perintah lain untuk menunjukkan berapa jam saya telah bekerja pada setiap hari, menghasilkan laporan seperti berikut:

2017-09-11 Monday     xx hours yy mins worked (across all tasks)
...
2017-09-15 Friday     zz hours tt mins worked (across all tasks)

Terima kasih sebelumnya.

Covi
sumber
Pertanyaan sampingan: apakah use case ini mengilustrasikan bahwa saya tidak seharusnya mengajukan tugas TODO di bawah datetree?
Covi

Jawaban:

17

Saya pikir Anda mungkin menganggap ini sebagai solusi parsial untuk pertanyaan Anda.

Jika Anda memasukkan :step daydalam baris tabel jam Anda maka Anda akan mendapatkan beberapa tabel jam dipancarkan - satu per hari untuk minggu ini dalam contoh Anda.

Sementara ini menjawab bagian pertama dari pertanyaan Anda untuk menunjukkan tugas apa yang dikerjakan per hari, Anda masih akan melihat tugas-tugas itu di bawah hierarki berdasarkan pada struktur data Anda ketika Anda membuat tugas-tugas itu. Jika Anda juga memasukkan maxlevel 0dalam tabel jam maka Anda hanya akan melihat total untuk setiap hari tanpa tugas yang terdaftar, yang menurut saya memberi Anda data yang Anda minta meskipun tidak cukup dalam format daftar sederhana yang Anda inginkan.

Tautan ke bagian manual yang sesuai: http://orgmode.org/manual/The-clock-table.html

Bagian kedua dari pertanyaan tentang apakah tugas-tugas TODO cocok untuk struktur data adalah, saya pikir, turun ke pilihan pribadi. Di satu sisi itu membuatnya mudah untuk menemukan tugas dalam file besar sesuai dengan ketika itu ditambahkan (walaupun saya menduga Anda bisa melakukan hal yang sama dengan tampilan agenda kustom), tetapi di sisi lain itu mencegah Anda mengelompokkan tugas ke dalam hierarki untuk proyek skala besar. Memilih antara opsi-opsi itu tergantung pada bagaimana Anda ingin menggunakan mode-org.

Pilihan pribadi saya adalah bahwa datetrees baik untuk entri tipe "jurnal" (misalnya catatan tentang apa yang dilakukan setiap hari), tetapi dengan tugas yang diajukan dalam hierarki proyek, tetapi tidak ada satu cara yang benar.

Stuart Hickinbottom
sumber
7
Terima kasih! #+BEGIN: clocktable :maxlevel 0 :scope file :step day :tstart "<-1w>" :tend "<now>" :compact ttampaknya berfungsi dengan baik dan memberikan format yang diinginkan. Menindaklanjuti: apakah ada cara mudah untuk mengikat ini ke beberapa kunci, sehingga saya dapat dengan mudah mengeluarkan tabel seperti itu di mana saja di file org apa pun? Saat ini saya harus meletakkan ini di file tetap, posisi tetap, kemudian C-c C-x C-rmemperbaruinya.
Covi
2
@Covi. Senang itu membantu. Maaf atas waktu respons yang lambat. Meskipun Anda dapat menulis fungsi interaktif dan mengikatnya ke tombol untuk melakukan itu, karena itu semua teks mengapa tidak merekam proses sebagai keyboard makro (ketik di baris jam mulai / akhir, pindah ke atas, lakukan Cc Cc untuk menghitung ulang) , lalu simpan makro itu sebagai fungsi baru (yang bisa Anda masukkan ke init.el Anda)? Tautan yang relevan: emacswiki.org/emacs/KeyboardMacrosTricks dan gnu.org/software/emacs/manual/html_node/emacs/…
Stuart Hickinbottom
Apakah ada cara untuk memulai laporan selalu pada hari kerja tertentu seperti Senin? misalnya. Jika saya berada di pertengahan minggu ini dan saya menetapkan :tstart "<-2w>", itu menunjukkan kepada saya beberapa hari terakhir minggu sebelumnya juga sementara saya hanya ingin melihat minggu terakhir dan minggu ini. Sesuatu yang mirip org-agenda-start-on-weekday?
kshenoy
@kshenoy Gunakan :block thisweekuntuk melihat hanya 7 hari dalam minggu ini dimulai pada hari Senin. Itu akan menimpa :tstartdan :tend. Jika Anda ingin laporan terpisah yang menunjukkan 7 hari dari minggu sebelumnya, gunakan :block lastweek.
spk