All Projects → mgifos → Quick Plan

mgifos / Quick Plan

Licence: apache-2.0
Defines and schedules Garmin workouts

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Quick Plan

aircal
Visualize Airflow's schedule by exporting future DAG runs as events to Google Calendar.
Stars: ✭ 66 (-29.03%)
Mutual labels:  schedule, calendar
Phpcalfeed
A simple PHP script for providing calendar feeds for your website in a variety of different formats including iCalendar, RSS, JSON and XML.
Stars: ✭ 31 (-66.67%)
Mutual labels:  schedule, calendar
Icalendar Generator
Generate calendars in the iCalendar format
Stars: ✭ 193 (+107.53%)
Mutual labels:  schedule, calendar
Vue Schedule Calendar
日程调度日历。
Stars: ✭ 110 (+18.28%)
Mutual labels:  schedule, calendar
Opening Hours
Query and format a set of opening hours
Stars: ✭ 997 (+972.04%)
Mutual labels:  schedule, calendar
Angular Gantt Schedule Timeline Calendar
Angular version of gantt-schedule-timeline-calendar [ angular gantt, gantt chart, angular gantt chart, angular schedule, angular timeline, angular calendar, gantt chart, schedule, scheduler, timeline, calendar ]
Stars: ✭ 32 (-65.59%)
Mutual labels:  schedule, calendar
Laravel Google Calendar
Manage events on a Google Calendar
Stars: ✭ 787 (+746.24%)
Mutual labels:  schedule, calendar
Forcal
📅 Das AddOn ist ein variabel einsetzbarer Kalender(-Generator), Skedule, Newssystem, Event- und Terminplaner für REDAXO 5.x.
Stars: ✭ 52 (-44.09%)
Mutual labels:  schedule, calendar
Tui.calendar
🍞📅A JavaScript calendar that has everything you need.
Stars: ✭ 9,537 (+10154.84%)
Mutual labels:  schedule, calendar
Gantt Schedule Timeline Calendar
Gantt Gantt Gantt Timeline Schedule Calendar [ javascript gantt, js gantt, projects gantt, timeline, scheduler, gantt timeline, reservation timeline, react gantt, angular gantt, vue gantt, svelte gantt, booking manager ]
Stars: ✭ 990 (+964.52%)
Mutual labels:  schedule, calendar
Period
Complex period comparisons
Stars: ✭ 1,001 (+976.34%)
Mutual labels:  schedule, calendar
Late
A web app for RPI students to manage their course load.
Stars: ✭ 53 (-43.01%)
Mutual labels:  schedule, calendar
React Datetimerange Picker
A datetime range picker for your React app.
Stars: ✭ 82 (-11.83%)
Mutual labels:  calendar
Core Components
Accessible and lightweight Javascript components
Stars: ✭ 85 (-8.6%)
Mutual labels:  calendar
Kotlin Agendacalendarview
Android calendar library provides easy to use widget with events
Stars: ✭ 81 (-12.9%)
Mutual labels:  calendar
Calendarsyncplus
This utility synchronizes Calendar entries between different calendar providers (Apps like Outlook,Services EWS/Google/Live).
Stars: ✭ 80 (-13.98%)
Mutual labels:  calendar
Davos
Web-based FTP automation for Linux servers.
Stars: ✭ 90 (-3.23%)
Mutual labels:  schedule
Ioabstraction
Library for Arduino and mbed that abstracts pins and i2c expanders (8574, 23017), supports AVR and I2c AT24 EEPROMs, Rotary encoders, fully debounced switches and simple task management.
Stars: ✭ 84 (-9.68%)
Mutual labels:  schedule
Vue Draggablecal
Not your ordinary datepicker. A Vuejs draggable date selector with a fresh responsive design, mobile ready and 0 dependencies, 17kb gzipped
Stars: ✭ 79 (-15.05%)
Mutual labels:  calendar
Jobber
An alternative to cron, with sophisticated status-reporting and error-handling
Stars: ✭ 1,217 (+1208.6%)
Mutual labels:  schedule

Quick plan

is a command line tool to define, import, schedule and share GarminConnect workouts i.e. weekly based training plans.

An example of a workout definition notation:

running: 15k, 3x3.2k @HMP
- warmup: 2km @z2
- repeat: 3
  - run: 3200m @ 5:05-4:50
  - recover: 800m @z2
- run: 1km @z2
- cooldown: lap-button

and the tool's job is actually to translate it to this: 15k workout

File format

The file format is a spreadsheet exported to csv format. The 1st row is reserved for heading, can be anything (you define your first day of a week etc.). The 1st column is reserved for a week number. The cells represent days and they are populated with workouts (definitions and references), so there's a limitation: a single workout per day/cell, for now. In case of the references, a workout needs to be defined first in one of the previous cells and then it can be referenced by name in the following cells.

An example of 2-weeks training plan, containing 2 workout definitions, 4 references and 6 training days in total:

Week Mon Tue Wed Thu Fri Sat Sun
1 running: run-fast
- warmup: 10:00 @ z2
- repeat: 3
  - run: 1.5km @ 5:10-4:40
  - recover: 500m @ z2
- cooldown: 05:00
rest rest run-fast rest rest rest
2 run-fast cycling: cycle-wo
- bike: 15 km @ 20.0-30kph
rest run-fast rest rest cycle-wo

Checkout a complete training plan for 80K ultra. It was originally published in an article on Runner's world website - here's the link.

Installation

  • Java 8 is a prerequisite, make sure you have it installed
  • Go to the releases page of this project
  • Download latest release zip file and unzip it somewhere on your computer
  • Enter bin folder and run quick-plan command (use quick-plan.bat if you are a Windows user or mark quick-plan script as executable on Linux or Mac systems)

Command line options

quick-plan --help

quick-plan 0.x

Usage: quick-plan [import|schedule] [options] <file>

  -e, --email <value>      E-mail to login to Garmin Connect
  -p, --password <value>   Password to login to Garmin Connect
  -m, --measurement_system <value>
                           "metric" (default) or "imperial" (miles, inches, ...) measurement system choice.
  -x, --delete             Delete all existing workouts with same names as the ones that are going to be imported.
  -c, --auto-cooldown      Add automatically cooldown: lap-button as an additional last step of each workout definition.
  --help                   prints this usage text

  <file>                   File with a weekly based plan in CSV format


Command: import
Imports all workout definitions from CSV file.
Command: schedule [options]
Schedules your weekly plan defined in CSV in Garmin Connect calendar, starting from the first day of first week or ending on the last day of the last week. Either start or end date must be entered so the scheduling can be done properly. In case both are entered, start date has priority. All dates have to be entered in ISO date format e.g. '2018-03-24'.

  -s, --start <value>      Date of the first day of the first week of the plan
  -n, --end <value>        Date of the last day of the last week of the plan

EXAMPLES

#Imports all the workouts from ultra 80k plan
quick-plan import -e [email protected] ultra-80k-runnersworld.csv

#Deletes all the workouts from ultra 80k plan
quick-plan -x [email protected] ultra-80k-runnersworld.csv

#Schedules ultra 80k plan targeting 28-4-2018 for a race day, while previously deleting if any with the same name already exists
quick-plan schedule -n 2018-04-29 -x -e [email protected] ultra-80k-runnersworld.csv

Workout notation

The reserved keywords of the notation are: workout, warmup, cooldown, run, bike, go, repeat, recover and lap-button.

<workout> := <header>(<newline><step>)+

<header> := [running | cycling | custom]: <name>

<name> := [\u0020-\u007F]+ (printable ascii characters)

<step> := <indent>- <step-def>

<step-def> := <simple-step> | <repetition-step>

<simple-step> := (warmup | cooldown | run | bike | go | recover): <duration> [@ <target>]

<repetition-step> := repeat: <count>(<newline><step>)+ (with each r. step, depth is increased by 1 - check <indent>)

<duration> := <distance-duration> | <time-duration> | lap-button

<distance-duration> := <number> (km | m | mi)

<time-duration> := <minutes>:<seconds>

<target> := <zone-target> | <pace-target> | <hr-target> | <speed-target> | <power-target> | <cadence-target>

<zone-target> := z[1-6]

<pace-target> := <pace> - <pace> (mpk | mpm)?

<hr-target> := \d{1,3} - \d{1,3} bpm

<power-target> := \d{1,3} - \d{1,3} W

<cadence-target> := \d{1,3} - \d{1,3} rpm

<speed-target> := <kph-speed> - <kph-speed> (kph | mph)?

<pace> := <minutes>:<seconds>

<kph-speed> := \d{1,3}(\.\d)?

<minutes> := \d{1,3}

<seconds> := \d{2}

<newline> := [\r\n]

<indent> := \s{depth * 2} (depends on depth parameter related to the repetion step / starts from 0)

Unit of measurements (metric vs imperial)

As Garmin supports metric and imperial measurement systems, quick-plan can do this as well. There are two ways of usage:

  • implicit (through the tool configuration (see the option -m) or
  • explicit (it can be specified within the workout definition by using units:
    • km vs mi (for distance),
    • kph vs mph (for speed) and
    • mpk vs mpm (for pace).

If not specified -m value from configuration will be used ('metric' by default).

Known issues

  • It is highly recommended to use Google Spreadsheets or LibreOffice Calc to edit CSV files, as they both force line-feed (LF) instead of carriage-return (CR) character for internal line breaks when defining workouts. The parser we use is not able to parse CR values within the quoted values at the moment.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].