Shortly spoken MrProjext is a MrProject-Databasefile-Extractor and -Converter: It can search the tasks belonging to a specific timeslot or recource. And (as converter) it can rewrite the extracted result as MrProject-, Evolution-, Yank- or Pilot-File. Here are the details: |
MrProject is a very ambitious eyecandy und intuitively usable project management tool. (Yes, this is not a typo: for a moment I am talking about MrProject instead of MrProjext!) But still MrProject lacks some practically whished features:
For the Moment MrProjext can be got from 2 locations:
You may distribute MrProjext under the conditions of the GNU General Public License also known as copy-left licence.
mrprojext 1.3.1 Purpose: MrProjext is a MrProject-Databasefile-Extractor and -Converter: It can search the tasks belonging to a specific timeslot or recource. And (as converter) it can rewrite the extracted result as MrProject-, Evolution-, Yank- or Pilot-File Usage: mrprojext [OPTIONS]... -h --help Print help and exit -V --version Print version and exit -fSTRING --dbFile=STRING read from mrproject-xml-dbfile (default='stdin') -sSTRING --timeSlotStart=STRING extract tasks not ending before ... (iso8601str) (default='19700101T000000') -eSTRING --timeSlotEnd=STRING extract tasks not starting after ... (iso8601str) (default='21001231T240000') -pSTRING --person=STRING extract tasks being handled by ... (default='all') -gSTRING --group=STRING extract tasks being handled by ... (default='all') -o --onlyOpenTasks extract only unfullfilled tasks (default=off) --only-open extract only unfullfilled tasks (default=off) -i --rwIso8601 rewrite iso8601 date-strings instead of german form (default=off) --iso-dates rewrite iso8601 date-strings instead of german form (default=off) -l --rwOnlyLeafs rewrite only the extracted most embedded tasks (default=off) --only-leafs rewrite only the extracted most embedded tasks (default=off) -X --rwMrPrjFile rewrite the extracted tasks as new mrproject-xml-dbfile (default=off) --output-mrproject rewrite the extracted tasks as new mrproject-xml-dbfile (default=off) -M --rwMemoFile rewrite the extracted tasks as text-memo (default=off) --output-memo rewrite the extracted tasks as text-memo (default=off) -P --rwPilotFile rewrite the extracted tasks as pilot-todo-file (default=off) --output-pilot rewrite the extracted tasks as pilot-todo-file (default=off) -v --rwVcardFile rewrite the extracted tasks as vcard-todo-file (default=off) --output-vcard rewrite the extracted tasks as vcard-todo-file (default=off) -Y --rwYankFile rewrite the extracted tasks as yank-todo-file (default=off) --output-yank rewrite the extracted tasks as yank-todo-file (default=off) -C --rwCslFile rewrite the extracted tasks as comma seperated todo-line-list (default=off) --output-csl rewrite the extracted tasks as comma seperated todo-line-list (default=off) -H --rwHtmlSurvey rewrite a total task survey as htmlpage (default=off) --output-html rewrite a total task survey as htmlpage (default=off) -DSTRING --evaluationDate=STRING build task fullfilling survey with respect to this date (iso8601str) -d --debug print debugMessages (default=off)
This means that MrProjext ...
Some of these features can't be combined with other features. In those cases the combination would be senseless. Ok, here is a little table:
Output Style | Limit to Timeslot | Limit to Person | Limit to Group | Only Open Tasks | Rewrite IsoTimeString | Only most Embedded Tasks |
---|---|---|---|---|---|---|
--rwMrPrjFile |
+ |
+ |
+ |
+ |
- |
- |
--rwMemoFile | + |
+ |
+ |
+ |
+ |
+ |
--rwPilotFile | + |
+ |
+ |
+ |
+ |
+ |
--rwVcardFile | + |
+ |
+ |
+ |
- |
+ |
--rw«Yank»File | + |
+ |
+ |
+ |
- |
+ |
--rw«Yank»File | + |
+ |
+ |
+ |
- |
+ |
MrProject and MrProjext use iso8601-strings of the form YYYYMMDDThhmmss for determining a date. A timeslot is a pair of such strings. The begin of the timeslot must be earlier than the end of the timeslot. A task is touched by the timeslot if it doesn't end before the timeslot starts and if it doesn't start after the end of the timeslot.
Example: Assume, we are managing two tasks. Gifts shall be bought before christmas (20021201T120000 ... 20021223T180000) and be given away at christmas (20021224T120000 ... 20021226T180000):
Assume we want to extract the tasks of the second december week using the command
mrprojext -s 20021207T120000 -e 20021215T120000 -f christmas.mrprojectThen MrProjext will extract only the task to buy christmas gifts whereby its startpoint will be set onto 20021207T120000 and its endpoint onto 20021215T120000.
Assume we want to extract the tasks of some of the last december days using the command
mrprojext --timeSlotStart=20021225T160000 --timeSlotEnd=20021228T130000Then MrProjext reads the master database file from stdin and extracts only the task to give away the christmas gifts whereby its startpoint will be set onto 20021225T160000 without changing its endpoint.
Assume we want to extract the tasks of the third december week using the command
mrprojext -s 20021218T160000 -e 20021225T130000 -f christmas.mrprojectThen MrProjext will extract both tasks whereby the startpoint of the task «buy gifts» will be set onto 20021218T160000 and the endpoint of the task «give away the gifts» will be set onto the 20021225T130000
MrProject uses identifiers for determining named recources. You can order MrProjext to extract only those tasks which shall be fullfilled by a person (recource) by specifying such a name (not an identifier) as commandline argument.
Example: Assume, we are managing two tasks. Gifts shall be bought before christmas by the mother and shall be given away at christmas by the father.
Assume we want to extract the tasks of the mother by using the command
mrprojext -p mother -f christmas.mrprojectThen MrProjext will extract only the task to buy christmas gifts
MrProject allows to link persons to (recource) groups. You can order MrProjext to extract only those tasks which shall be fullfilled by any of the persons of a (recource) group. In this case you have to specify the name of the group as commandline argument.
Example: Assume, we are managing three tasks. Christmas Gifts shall be bought by the mother and shall be given away by the father but shall be unpacked by the children. And assume, that only the mother and the father are member of the group «parents»
mrprojext -g parents -f christmas.mrprojectThen MrProjext will extract only the tasks to buy christmas gifts and to give them away.
For each task MrProject allows to specify the degree of fullfillness. (Certainly some of these values will later be computed on the base of other values). A value of 100 means that the task has totally been fullfilled. You can extract the unfillfilled tasks using the commandline option --onlyOpenTasks.
Example:
mrprojext --onlyOpenTasks -p mother -f christmas.mrprojectIn this case only the open tasks of the mother will be extracted.
MrProjext allows to declare tasks as subtasks of other tasks. So you get a tree of tasks. You may interpret the most embedded tasks as those which you have to fullfill for having fullfilled the more complex tasks. In such cases it might be good to get a list of only those tasks which really must be fullfilled:
Example:
mrprojext --rwOnlyLeafs -f christmas.mrproject
Using the command
mrprojext --rwMemoFile --rwIso8601 -f christmas.mrprojectyou can demand that the date strings will be written as iso8601 time-strings. Without that commandline option MrProjext uses the german format.
Using the command
mrprojext --rwHtmlSurvey -f christmas.mrprojectyou can demand that the whole tree of tasks will be written as html-table. Fullfilled task will be printed onto a green background. Unfullfilled tasks which already should have been fullfilled, will be presented on a red background, the other on a gray background
For being able to decide wether a task should already have been fullfilled or not, mrprojext uses a speficic reference date. If you don't specify such a reference date, mrprojext takes the actual timestamp of your computer. For being able to specify a specific reference date you can use the commandline argument
mrprojext --rwHtmlSurvey --evaluationDate==YYYYMMDDThhmmss -f christmas.mrproject
MrProjext uses the following commandline options for determining those tasks, which shall be extracted:
And using a special format MrProjext rewrites the extracted tasks to stdout. If you want to save the result in a new file you have to redirect the file-descriptor stdout by typing commands like this:mrprojext [$OPTIONS] > extracted-file.mrproject
mrprojext [$OTHER-OPTIONS] --rwMrPrjFile -f christmas.mrproject > xmas.mrproject
mrprojext [$OTHER-OPTIONS] --rwMemoFile -f christmas.mrproject >xmasTodoMemo.txt
vi xmasTodoMemo.txtor
nedit xmasTodoMemo.txt
mrprojext [$OTHER-OPTIONS] --rwPilotFile -f christmas.mrproject >xmasTodoPilot.txt
install-todos /dev/pilot xmasTodoPilot.txt
There's a problem in the tool «install-todos» of the pilot-link-software: It takes a line formatted file evaluating each line as one task-description. Therefore there's (still) no possibility to determine priority, dates or anything else. Hence you will find a task-list in your palm which is not very easily to read. Therefore we want to hint to another method to get your tasks into your palm:
mrprojext [$OTHER-OPTIONS] --rwMemoFile -f christmas.mrproject >xmasTodoMemo.txt
install-memo xmasTodoMemo.txt
Now you have one memo with all your tasks inside of your palm.
mrprojext [$OTHER-OPTIONS] --rwVcardFile -f christmas.mrproject >xmasTodoVcard.txt
mergeMrPrj2Vcards.pl xmasTodoVcard.txt -gf ~/.gnome/user-cal.vcf > ~/.gnome/new-user-cal.vcf
~/.gnome/user-cal.vcfby
~/.gnome/new-user-cal.vcf
Explanation: «mergeMrPrj2Vcards.pl» is a perl-script also distributed and installed by the MrProjext tarball. It takes a file containing the output of MrProjext (generated by the commandline option «--rwVcardFile») and the inputfile of «Gnomecal» [-gf] (or «Evolution» [-ef]) (which are storing their data in kind of the vcard-filetype), replaces all those VTODO-entries of the «Gnomecal»- or Evolution»-file which refers to the Mrproject databasefile, and writes the result back to stdout. «Gnomecal» very often stores the tasks in the file «~/.gnome/user-cal.vcf». If you are using another todo-file you have to specify that file using the commandline argument «-gf».of «mergeMrPrj2Vcards.pl»
mrprojext [$OTHER-OPTIONS] --rwVcardFile -f christmas.mrproject >xmasTodoVcard.txt
mergeMrPrj2Vcards.pl xmasTodoVcard.txt -ef ~/evolution/local/Tasks/tasks.ics >newtasks.ics
~/evolution/local/Tasks/tasks.icsby
newtasks.ics
Explanation: «mergeMrPrj2Vcards.pl» is a perl-script also distributed and installed by the MrProjext tarball. It takes a file containing the output of MrProjext (generated by the commandline option «--rwVcardFile») and the inputfile of «Gnomecal» [-gf] or «Evolution» [-ef] (which are storing their data in kind of the vcard-filetype), replaces all those VTODO-entries of the «Gnomecal»- or Evolution»-file which refers to the Mrproject databasefile. «Evolution» very often stores the task in the file «~/Evolution»/local/Tasks/tasks.ics;». If you are using another todo-file you have to specify that file using the commandline argument «-ef». of «mergeMrPrj2Vcards.pl»
mrprojext [$OTHER-OPTIONS] --rw«Yank»File -f christmas.mrproject >xmasTodoYank.txt
yank -f xmasTodoYank.txt
mrprojext [$OTHER-OPTIONS] --rw«Csl»File -f christmas.mrproject >xmasTodoCsl.txt
reformMrPrjCslFile.pland call
reformMrPrjCslFile.pl xmasTodoCsl.txt
MrProject still doesn't offer a dtd. That's clear because MrProject is heavily developped. On the other hand MrProjext needs a fixpoint for being a converter. Therefore I've written a dtd for MrProject which is used by MrProjext and which will be changed whenever a new MrProject-version will be offered.
Because there may be different dtds for MrProject you may ask which version of MrProjext can handle the xml-database-file of which version of MrProject. Here is the answer:
If you want to change mrprojext have a look at the sources commented by using doxygen
© Karsten Reincke, Osnabrück (Germany) 2001/2002/2003.
You may distribute this application under the conditions of the GNU General Public License also known as copy-left licence.