Skip to content

rogerGunis/schedule2ics

Repository files navigation

Scheduler2ics

Current state

What is it

Assign jobs to workers and write the information who is doing when which job as ics file

The project was intended to have jobs, which must be assigned to a group of people. This will be done by round robin. The jobs can be configured, when they have to be done. If the workers are on holiday on their specific time they won’t re-work the missing work. This is done because we do not struggle the work order of the people.

Features

  • see cli below

  • caution the csv files are expected to always start with a headline, this first line is always ignored!

Getting started

Please see paramters annotations in java file

If all files are in place this software will generate ics files according to:

  • ics files for all workers will generate

  • allEvents.ics will be generated which will name the workers on weekdays

  • for each job there will be

Example of a post processing file

Postprocessing layout

this is done via modified ical2html and is not part of this repository

Basic Usage (File layout)

holidays

rangeStart,rangeEnd,event
01.01.2017,01.01.2017,Neujahr
06.01.2017,06.01.2017,Heilige Drei Könige
14.04.2017,14.04.2017,Karfreitag
17.04.2017,17.04.2017,Ostermontag
01.05.2017,01.05.2017,Tag der Arbeit
25.05.2017,26.05.2017,Christi Himmelfahrt
05.06.2017,05.06.2017,Pfingstmontag
15.06.2017,16.06.2017,Fronleichnam
26.06.2017,29.06.2017,Bauernhof
14.08.2017,15.08.2017,Mariä Himmelfahrt
03.10.2017,03.10.2017,Tag der Deutschen Einheit
31.10.2017,31.10.2017,Reformationstag
01.11.2017,01.11.2017,Allerheiligen
25.12.2017,25.12.2017,1. Weihnachtsfeiertag
26.12.2017,26.12.2017,2. Weihnachtsfeiertag

jobDescriptions

name,startDayOfWeek(mo=1,...,sun=7),duration,begin,end,moveInfoToThisDay (off=0, mo=1,...,sun=7)
Breakfast,1, 5,09.01.2017,01.06.2017,7
Lunch,1 2 3 4 5, 1,11.01.2017,01.06.2017,0
Cleaning,1, 2,23.01.2017,01.06.2017,6

If you want to move the weekly information of a job to another day this is the moveInfoToDay column. For example you want to have breakfast the whole week and want to move the information to sunday. This is done because of better layout in the end.

workers

name,jobs,Vacation days
Jasmina+Julian,Breakfast Cleaning, 20.12.2016-31.12.2016 01.01.2017
Henrike+Wolfgang,Breakfast Lunch(Linsensuppe),
Ann+Flo,Breakfast Lunch(Käsespätzle),
Stefanie+Falko,Breakfast,
Sina+Memo,Breakfast Lunch(Spätzle) Cleaning,
Alex+Christian,Breakfast Lunch(Blumenkohl),
Ricarda+Björn,Breakfast Lunch(Gemüsecurry),
Susanne+Daniel,Breakfast Lunch,
Katinka+Shpend,Breakfast Lunch,
Carina+Jürgen,Breakfast Lunch(Pizza) Cleaning,
Marlene+Carsten,Breakfast Lunch(Quinoa),
Kathrin+Bob,Breakfast Lunch(Spinatnudeln) Cleaning,
Caro+Basti,Breakfast Lunch(Kürbissuppe),
Andrea+Peter,Breakfast Lunch(Gemüseeintopf),
Martina+Roger,Breakfast Lunch(Pancakes),

The text in () is called job proposal. This will be set in the ics file as category.

Developing

clone the source and start coding

Testing

./gradlew test

Building

Compilation is done via gradlew:

./gradlew build
ls -al build/libs/

Travis

In travis.yml you will see a full compile and deployment of the example above. Additionally there is a configuration for pushing the calculated ics file to a dedicated server (owncloud) updating the calendar automatically.

The IcsFileSync.sh will check previously deployed entries delete them and add new events. Changed calendar entries will not be removed and stay in the calendar.

Contributing

"If you’d like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome."

Licensing

see LICENSE file in repository