/elgantt

A Gantt Chart (Calendar) for Org Mode

Primary LanguageEmacs LispGNU General Public License v3.0GPL-3.0

El Gantt – A Gantt Chart system for Orgmode files

screenshots/8.png

El Gantt creates a Gantt calendar from your orgmode files. Block entries into the calendar are set using tags, and rows are designated by either categories or tags.

DANGER!!

I am not a programmer, nor do I pretend to be one. This is designed to be a PROTOTYPE. It is guaranteed that you will encounter errors and problems trying to use this package. I have written this to the point where it works for me, and I know the quirks that cause problems enough to avoid them.

The code you will encounter is awful. I learned elisp while writing this package. I worked in very short bursts while doing my real job (lawyer). If it seemed to work, I used it.

I do not have time to work on this! I am hoping this will inspire someone to re-write this from scratch.

This should work with the sample.org file that is in the TEST directory. To use it, you’ll have change line 180 so that org-map-entries points to the sample file rather than using your agenda files.

When I say I learned elisp while writing this, I mean that literally. I did not know anything, and so this is 100% amateur hackery.

How to use

This system operatese on tags or categories.

Using categories (default)

The default to use categories, which are set in a property drawer. This approach works best if your org file is heirarchical. For example

* Justin 
:PROPERTIES:
:CATEGORY: Justin
:END:
** TODO Cut the grass
<2019-01-10 Thu>
** TODO mow the lawn
<2019-02-12 Tue>
** TODO submit TPS reports
DEADLINE: <2019-04-02 Tue>

In this example, all three tasks would be displayed in a row labeled “Justin,” since the CATEGORY property is inherited.

screenshots/1.png

To add another row, start a new category:

* Juanita
:PROPERTIES:
:CATEGORY: Juanita
:END:
** TODO sharpen knives
<2019-07-25 Thu>
** TODO submit thesis for intial review
DEADLINE: <2019-09-08 Sun>

This will produce the following:

screenshots/2.png

Using hashtags instead of Categories

You can also use hashtags. To to this, set elgantt/use-hashtag to non-nil. A tag that starts with a # will substitute for the category.

The benefit of hashtags is that your file need not be hierarchical. For example, the following will pick up the take out the garbage task, and put it on the proper line for Justinia. (Note the take that is marked on July 30.)

* Justin :#Justinia:
** TODO Cut the grass
<2019-01-10 Thu>
** TODO mow the lawn
<2019-02-12 Tue>
** TODO submit TPS reports
DEADLINE: <2019-04-02 Tue>
* Juanita :#Juanitan:
** TODO sharpen knives
<2019-07-25 Thu>
** TODO submit thesis for intial review
DEADLINE: <2019-09-08 Sun>
* An unrelated heading
** TODO take out the garbage :#Justinia:
<2019-07-30 Tue>

screenshots/4.png

Displaying blocks of time

There are two ways to display a block of time

Use tags with x_start and x_end, where x is an arbitrary string.

When using this method, the text of the heading of the start tag is irrelevant.

* Justin 
:PROPERTIES:
:CATEGORY: Justin
:END:
** TODO Cut the grass
<2019-01-10 Thu>
** TODO mow the lawn
<2019-02-12 Tue>
** start TPS reports :TPS_start:
<2019-02-19 Tue>
** TODO submit TPS reports :TPS_end:
DEADLINE: <2019-04-02 Tue>

screenshots/5.png

Using time ranges and the tag x_block and using an active time range

You can also designate a block of time by adding a time range and using the _block tag:

* Justin 
:PROPERTIES:
:CATEGORY: Justin
:END:
** TODO Cut the grass
<2019-01-10 Thu>
** TODO mow the lawn
<2019-02-12 Tue>
** start TPS reports :TPS_start:
<2019-02-19 Tue>
** TODO submit TPS reports :TPS_end:
DEADLINE: <2019-04-02 Tue>
* Juanita
:PROPERTIES:
:CATEGORY: Juanita
:END:
** out of town :vacation_block:
<2019-03-01 Fri>--<2019-04-30 Tue>
** TODO sharpen knives
<2019-07-25 Thu>
** TODO submit thesis for intial review
DEADLINE: <2019-09-08 Sun>

screenshots/6.png

Echo area

The echo area will display the name of the heading, and the headline text at the point. For example, in the above calendar if the point was on Justin and April 2, the echo area shows:

screenshots/7.png

Navigation

Usual emacs keybindings, except:

KeyCommand
spaceJump to point in org file
ReturnOpen agenda for the date at point
b, fJump to next entry on line

Other features

I am pretty sure there are other features, but I have forgotten them due to the lag between when I stopped working on this and when I uploaded it.