The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

App::JobLog::Command::vacation - controller for vacation dates

VERSION

version 1.035

SYNOPSIS

 houghton@NorthernSpy:~$ job vacation --help
 job <command>
 
 job vacation [-aflrtx] [long options...] [<description>]
        -l --list       show all vacation times recorded
        -f --flex       add sufficient vacation time to complete workday;
                        this is recorded with the "flex" tag
        -x --fixed      a particular period of time during the day that
                        should be marked as vacation; this is in effect a
                        special variety of work time, since it has a definite
                        start and duration
        -t --tag        tag vacation time; e.g., -a yesterday -t float
        --annual        vacation period repeats annually
        --monthly       vacation period repeats monthly
        -a --add        add date or range; e.g., -a "May 17, 1951"
        -r --remove     remove period with given index from list (see
                        --list); e.g., -d 1
        --help          this usage screen
 houghton@NorthernSpy:~$ job v --list
 no vacation times recorded
 houghton@NorthernSpy:~$ job v --add today job day
 1) 2011-03-07   job day
 houghton@NorthernSpy:~$ job v -a 15 --monthly Ides
 1)         15 monthly  Ides   
 2) 2011-03-07          job day
 houghton@NorthernSpy:~$ job v -a "Feb 13 through 15" --annual Lupercalia
 Feb 13 -- Feb 15 annual  Lupercalia conflicts with existing period 15 monthly  Ides at /home/houghton/perl5/lib/perl5/App/JobLog/Command/vacation.pm line 41
 1)               15 monthly  Ides      
 2) Feb 13 -- Feb 15 annual   Lupercalia
 3)       2011-03-07          job day   
 houghton@NorthernSpy:~$ job today
 Monday,  7 March, 2011
   8:01 am - ongoing  2.09  bar, foo  something to add; and still more                                                                                                  
            vacation  8.00            job day                                                                                                                           
 
   TOTAL HOURS 10.09
   VACATION     8.00
   UNTAGGED     8.00
   bar          2.09
   foo          2.09
 houghton@NorthernSpy:~$ job v -l
 1)               15 monthly  Ides      
 2) Feb 13 -- Feb 15 annual   Lupercalia
 3)       2011-03-07          job day   
 houghton@NorthernSpy:~$ job v --remove 3
 1)               15 monthly  Ides      
 2) Feb 13 -- Feb 15 annual   Lupercalia
 houghton@NorthernSpy:~$ job t
 Monday,  7 March, 2011
   8:01 am - ongoing  2.09  bar, foo  something to add; and still more                                                                                                  
 
   TOTAL HOURS 2.09
   bar         2.09
   foo         2.09
 houghton@NorthernSpy:~$ job v -a today --flex job day
 1)               15 monthly  Ides      
 2) Feb 13 -- Feb 15 annual   Lupercalia
 3)       2011-03-07 flex     job day   
 houghton@NorthernSpy:~$ job t
 Monday,  7 March, 2011
   8:01 am - ongoing  3.07  bar, foo  something to add; and still more                                                                                                  
            vacation  4.93            job day                                                                                                                           
 
   TOTAL HOURS 8.00
   VACATION    4.93
   UNTAGGED    4.93
   bar         3.07
   foo         3.07

DESCRIPTION

App::JobLog::Command::vacation allows you to include time off in your summaries of work events. In most cases time off -- holidays, vacation, sick days, etc. -- are a completely different entity from work log events. They are the equivalent of a number of hours of work but these hours don't have a defined start or end, they may repeat at predictable intervals, and in some cases their duration is flexible, stretching or shrinking depending on how much actual time you work in the day. On the other hand, sometimes you want to report time off just as you do a regular event, giving it a fixed start and end time and hence duration. Because of the peculiar nature of time off, and because it can overlap regular events in ill-defined ways, vacation time is stored in its own file, .joblog/vacation. This is the least human readable of the files used by App::JobLog, but still it isn't too bad:

 houghton@NorthernSpy:~$ cat ~/.joblog/vacation 
 2011  2 15  0  0  0:2011  2 15 23 59 59:02::Ides
 2011  2 13  0  0  0:2011  2 15 23 59 59:01::Lupercalia
 2011  3  7  0  0  0:2011  3  7 23 59 59:10::job day

If you wish to understand this format you can look at the code for App::JobLog::Vacation::Period, but in general you should use App::JobLog::Command::vacation to modify this file.

CATEGORIES OF TIME OFF

repetition

Most time off occurs in a fixed interval of a fixed year. All time off is representable this way. For convenience, though, one may also specify that a period repeats annually or monthly.

flexibility

Most intervals of time off give you the expected number of work hours per day that would otherwise be a work day. One may also mark a vacation period as fixed or flexible, however. A fixed period behaves in every way like a work event except it doesn't appear in the work log. A flexible vacation period shrinks or expands as needed to fill out the hours to the full complement in the days in which they occur.

SORT ORDER

When sorted among themselves, monthly intervals sort before annual which sort before fixed. Ordinary events sort before all vacation events except fixed time off, which sorts as an ordinary event.

SEE ALSO

App::JobLog::Command::today, App::JobLog::Command::summary, App::JobLog::Vacation, App::JobLog::Vacation::Period

AUTHOR

David F. Houghton <dfhoughton@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by David F. Houghton.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.