Skip to content

Task Schema

Geoffrey Gilmore edited this page May 3, 2016 · 16 revisions

#Task Schema

##Individual Task:

('task 
	('id <id>) 
	('description <description>) 
	('deadline <deadline>) 
	('duration <duration>)
	('dependencies <dependencies>))
	

###<id>

unique integer identifier for a given task

####Example

('id 22)

###<description>

String description of a task

####Example

('description "This is not The Greatest Task in the World, no. This is
just a tribute...")

###<duration>

String time representation that represents how long a given task is supposed to last

####Time Format

`"XXd-XXh-XXm"`

XXd - how many days that you want a given task to last

XXh - how many hours that you want a given task to last

XXm - how many minutes that you want a given task to last

Each field must be an integer value, and all three fields must exist in the string.

"3d-00h-00m", "0003d-00h-00m", "0d-72h-00m", and "00d-00h-4320m" all map to the same duration (3 days).

####Example

('duration "11d-22h-63m")

This makes a task that will last 11 days, 22 hours, and 63 minutes.

###<deadline>

String time representation that represents the fixed moment in time that a task must be completed by.

####Time Format "YYYY-MM-DD-HH-mm" (24 hr notation)

"YYYY" - The year field of the fixed time. Must be 4 digits long.

-"MM" - The month field of the fixed time. Must be 2 digit integers in the interval [1, 12].

-"DD" - The day field of the fixed time. Must be 2 digit integers in the interval [1, 31].

-"HH" - The hour portion of the fixed time. This is in 24 hour format. "HH" must be 2 digits long, and in the interval [1, 12].

-"mm" - The minute portion of the fixed time. "mm" must be 2 digits long, and "mm" must be in the interval [00, 59].

####Example

('deadline "1958-09-09-11-58")

This creates a deadline for the task that is September 9th 1958, at 11:58 AM.

###<dependencies>

list of integer ids, possibly empty of the tasks that must be completed before this task can be started.

####Examples

('dependencies '())

This task has no dependencies

('dependencies '(22, 44)

Tasks 22 and 44 must be completed before this task can be started.

##Schedule Options:

('options
	('hours-per-day <hours-per-day>)
	('time-per-task <time-per-task>)
	('break-interval <break-interval>))

###<hours-per-day>

7 element list with time elemements, representing the amount of hours that you want to work per day

####Example

("8h" "8h" "5h" "3h" "2h" "0h" "0h")

This represents the following work schedule:

  • Monday: The user wants to work 8 hours.

  • Tuesday: The user wants to work 8 hours.

  • Wednesday: The user wants to work 5 hours.

  • Thursday: The user wants to work 3 hours.

  • Friday: The user wants to work 2h hours.

  • Saturday: The user wants to work no hours.

  • Sunday: The user wants to work no hours.

###<time-per-task>

String time representation of the maxmium amount of time per day that you want to spend doing a particular task.

####Time Format

"XXh-XXm"

XXh -how many hours that you want to spend on a given task per day

XXm - how many minutes that you want to spend on a given task per day

Each field must be an integer value, and both fields must exist in the string.

####Example

('time-per-task "03h-15m")

This says that user wants to spend 3 hours and 15 minutes at most per day on any given task.

###<break-interval>

String time representation of how long of a break the user wants in between work chunks.

####Time Format

"XXm-every-XXh"

XXm - how many minutes of a break a user wants in between work chunks

XXh - how long each work chunk should last

Each field must be an integer value, and both fields must exist in the string.

####Example

('break-interval "45m-every-09h") 

This says that the user wants to take a 45 minute break after working a 9 hour work chunk.

Clone this wiki locally