From 74fd7c820de9c19a1aa1a4b2a68985521f5555fd Mon Sep 17 00:00:00 2001 From: Nikolay Puzanov Date: Tue, 18 Sep 2018 12:45:50 +0300 Subject: [PATCH] Add DELTA days for report command --- README.md | 4 ++-- worktimer.scm | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index daf57b2..d987248 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ stop Stop task current Show current running task report Show report - report day [DATE] Show report for today or DATE + report day [DATE/DELTA] Show report for today or DATE or DELTA days ago (e.g. -1) report week [DATE] Show report for current week or week of DATE report month [DATE] Show report for current month or month of DATE report TASK Show report for project @@ -71,7 +71,7 @@ Команда `report` может иметь параметры: -- `day [DATE]` - отчет по текущему дню или по дате DATE; +- `day [DATE/DELTA]` - отчет по текущему дню, по дате DATE или по дню + DELTA (например, вчера - это -1); - `week [DATE]` - отчет по текущей неделе или по неделе, в которую входит день DATE; - `month [DATE]` - отчет по текущему месяцу или по месяцу, в который входит день diff --git a/worktimer.scm b/worktimer.scm index f957246..eab3fc1 100755 --- a/worktimer.scm +++ b/worktimer.scm @@ -213,6 +213,12 @@ (if (zero? n) (car l) (nth-maybe (- n 1) (cdr l))))) +;;; Add time duration to date +(define (date-add-duration date duration) + (time-monotonic->date + (add-duration + (date->time-monotonic date) duration))) + ;;; ========================= PROJECT SPECIFIC HELPERS ========================= ;;; Find task or deadline by path @@ -574,7 +580,14 @@ (values sheet '()) (let ((date (catch #t (lambda () (string->date range date-format)) - (lambda (key . args) (current-date))))) + (lambda (key . args) + (let ((n (if (null? range) #f (string->number range)))) + (if (and n (string-ci= qualis "day")) + (date-add-duration + (current-date) + (make-time time-duration 0 + (* n 24 60 60))) + (current-date))))))) (let-values (((description filter-lambda) (cond ;; Filter records by day @@ -895,7 +908,7 @@ (format #t " stop Stop task\n") (format #t " current Show current running task\n") (format #t " report Show report\n") - (format #t " report day [DATE] Show report for today or DATE\n") + (format #t " report day [DATE/DELTA] Show report for today or DATE or DELTA days ago (e.g. -1)\n") (format #t " report week [DATE] Show report for current week or week of DATE\n") (format #t " report month [DATE] Show report for current month or month of DATE\n") (format #t " report TASK Show report for project\n")