¿Cómo registrar horas sin conexión rápidamente?

A veces prefiero trabajar sin conexión. Puedo cronometrarlo y anotarlo y evitar encender mi computadora.

Me gusta usar una tabla y org-update-all-dblocks para calcular mis horas del día. Es muy conveniente para mí, porque podría pasar una cantidad impar de minutos durante el día trabajando para un cliente.

Si quiero agregar rápidamente mis horas sin conexión y actualizar la tabla, ¿org-mode ¿ya tienes una función para esto? Sé que puedo org-clock-in y org-clock-out generar un reloj , y luego vuelva a escribirlo manualmente y use org-update-all-dblocks para volver a calcular, pero lo ideal sería que una sola función a la que pueda llamar me pregunte cuántos minutos quiero ingresar. Probablemente debería solo use la hora y fecha actuales como inicio, aunque eso aparentemente entraría en conflicto con el trabajo que comienzo a hacer después de agregar las horas sin conexión.

Sería incluso mejor si org-mode tenía un concepto de horas sin conexión que entendía que yo podría saber la fecha pero probablemente no registré la hora del día, por lo que la hora del día podría omitirse, pero aún así calcularla en una tabla de reloj.

Si tengo que escribir alguna q uick and dirty elisp, ¿qué funciones me serían de utilidad además de las anteriores? Creo que las piezas que me faltan son algo para agarrar el reloj más reciente, algo para agregarle minutos y algo para solicitar una cantidad de minutos.

Respuesta

El siguiente comando inserta la entrada típica del libro de registro de la organización, un intervalo de tiempo que comienza hace N minutos:

(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))) 

Respuesta

La respuesta de mutbuerger me ayudó mucho. Es la primera vez que programo en elisp que no sea la configuración. Su respuesta estuvo cerca de la marca, pero todavía quería la funcionalidad normal de reloj de entrada y salida para encontrar o crear el libro de registro bajo el encabezado más cercano, y agregar un nota.

Mi solución modificada fue esta:

(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 )) 

Respuesta

Administro los tiempos fuera de línea con una caja de herramientas de funciones personalizadas para manipular los registros del reloj en la sintaxis propia de Org y un script para convertir una notación de texto sin formato abreviado a la sintaxis de Org.

Funciones en https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :

  • org-clock-split-current-interval (Lo vinculé a C-c o s): si hay un intervalo en la línea actual, en el que en realidad se realizaron dos tareas, facilite dividirlo en dos intervalos.
  • org-clock-change-hh-mm (vinculado a C-c o :): dejando el día sin cambios, adapte las horas / minutos de un registro de reloj. Caso de uso típico : copie una línea de registro de reloj de otro lugar, adáptela según el tiempo trabajado sin conexión.

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

Mi flujo de trabajo para usarlo:

  1. registrar los tiempos sin conexión en un archivo de texto, por ejemplo en mi teléfono móvil
  2. sincronizar este archivo con mi PC
  3. en la PC, ejecutar org-offline-to-clock.pl BEFORE > AFTER
  4. validar con diff BEFORE AFTER
  5. si está contento, mv AFTER BEFORE
  6. mueve las líneas seleccionadas a mi archivo de organización real.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *