Cum să urmăriți rapid orele offline?

Uneori prefer să lucrez offline. Pot să-l cronometrez și să îl notez și să evit să pornesc computerul.

Îmi place să folosesc un tabel și org-update-all-dblocks pentru a calcula orele mele pentru ziua respectivă. Este foarte convenabil pentru mine, deoarece aș putea petrece un număr impar de minute pe parcursul zilei lucrând pentru un client.

Dacă vreau să adaug rapid orele offline și să actualizez tabelul, nu org-mode aveți deja o funcție pentru asta? Știu că pot org-clock-in și org-clock-out pentru a genera un ceas , apoi tastați-l manual și folosiți org-update-all-dblocks pentru a recalcula, dar în mod ideal aș dori o singură funcție pe care o pot suna, care să mă întrebe câte minute vreau să introduc. Probabil ar trebui folosiți doar ora și data curente ca început, chiar dacă acest lucru ar intra în conflict cu munca pe care încep să o fac după ce am adăugat orele offline.

Ar fi chiar mai bine dacă org-mode avea un concept de ore offline care a înțeles că aș putea cunoaște data, dar probabil că nu am înregistrat ora din zi, astfel încât ora din zi ar putea fi lăsată afară, dar totuși calculată într-un tabel cu ceas.

Dacă trebuie să scriu câteva q uick și elisp murdar, ce funcții mi-ar fi de folos în afară de cele de mai sus? Cred că piesele care îmi lipsesc sunt ceva pentru a apuca cel mai recent ceas, ceva pentru a adăuga minute la el și ceva pentru a solicita câteva minute.

Răspuns

Următoarea comandă inserează intrarea tipică a jurnalului de organizație, un interval de timp care începe de acum N minute:

(defun org-insert-clock-range (&optional n) (interactive "NTime Offset (in min): ") (let* ((ctime (cdr (decode-time (current-time)))) (min (car ctime)) (start (apply "encode-time 0 (- min n) (cdr ctime)))) (org-insert-time-stamp start t t "CLOCK: ") (insert "--") (org-insert-time-stamp (current-time) t t))) 

Răspuns

Răspunsul mutbuerger m-a ajutat foarte mult. Este prima mea programare în elisp, în afară de configurație. Răspunsul său a fost aproape de semn, dar am dorit totuși funcționalitatea normală a clock-in și clock-out pentru găsirea sau crearea jurnalului de bord sub cea mai apropiată rubrică și adăugarea unui notă.

Soluția mea modificată a fost aceasta:

(defun offset-current-time (n) (let* ((ctime (cdr (decode-time (current-time)))) (minutes (car ctime))) (apply "encode-time 0 (- minutes n) (cdr ctime)))) (defun org-insert-clock-range (&optional n) (interactive "NTime Offset (in min): ") (org-clock-in nil (offset-current-time n)) (org-clock-out)) (defadvice org-clock-out (after org-clock-out-after activate) (org-update-all-dblocks)) (add-hook "org-mode-hook (lambda () ; Keys for org mode ;snip (define-key evil-normal-state-map (kbd "gl") "org-insert-clock-range) ;snip )) 

Răspuns

Gestionez orele offline cu o cutie de instrumente cu funcții personalizate pentru a manipula jurnalele de ceas în sintaxa proprie a Organului și un script pentru a converti o notație text simplă în sintaxă Org.

Funcții în https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :

  • org-clock-split-current-interval (Am legat acest lucru de C-c o s): dacă există un interval în linia curentă, în care de fapt s-au făcut două sarcini, ușurați împărțirea în două intervale.
  • org-clock-change-hh-mm (legat de C-c o :): lăsând ziua neschimbată, adaptați orele / minutele unui jurnal de ceas. Caz de utilizare tipic : copiați o linie de jurnal de ceas din altă parte, adaptați-o în funcție de timpul lucrat offline.

Script: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl

Fluxul meu de utilizare:

  1. înregistrați orele offline într-un fișier text de ex. pe telefonul meu mobil
  2. sincronizați acest fișier cu computerul meu
  3. pe computer, rulați org-offline-to-clock.pl BEFORE > AFTER
  4. validați cu diff BEFORE AFTER
  5. dacă sunteți fericit, mv AFTER BEFORE
  6. mutați liniile selectate în fișierul meu actual de organizare.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *