Import and Export

As of version 1.2, WOD supports exporting your workout and personal record logs over email, and importing this data back again via a URL.

Exporting

To export your logs, you will need to add the correct settings for your email provider in the "Settings" section in the "More" tab. The values include:
  • SMTP Host: the host name of your outgoing email server. E.g., smtp.gmail.com.
  • SMTP Port: the port number you use to connect to your outgoing mail server. This will probably be 25, 465, or 587.
  • Use SSL: select this to turn on secure connections to your mail server (this is highly recommended).
  • Username: the user name you use to log in to your mail server.
  • Address: the email address you want the logs sent to.
Then tap Export Data to Email in the "More" tab. This will bring up a dialog asking for a password; enter the password you use to send email, and the app should pack up your logs and email them to the address you specified.

Importing

To import a log of workouts or personal records, you will need to upload the log JSON file to a web server somewhere, and fill in the Import URL field in the Settings screen. An example would be http://wodapp.com/log.json or http://wodapp.com/records.json. Then, tap the Import Data from URL entry in the "More" tab.
If you have a Mac running Mac OS X on a wireless network, you can use your Mac to serve these files. To do this:
  1. First, copy the files log.json and records.json to the folder Sites in your home folder.
  2. Make sure your iPhone or iPod Touch is on the same wireless network as your Mac (this technique will not work over 3G).
  3. Open System Preferences, and go to the Sharing preference pane, and select Web Sharing.

    Ensure that web sharing is on.
  4. Note the URL that it shows you under the section for "your personal website." You should now be able to access your backup files by the URL http://address/~user/log.json and http://address/~user/records.json.
  5. Enter these URLs into WOD, and select the Import Data from URL entry.

    In my example above, I could use http://192.168.1.5/~csm/log.json to import my log.

Format

The data import and export format is JSON, a simple, lightweight data format based on JavaScript. We won't go into a detailed description of JSON, or how to use it, but will describe instead the objects represented.

For both the workout log and the personal records log, the basic format is:

{ name : [ array of entries ]}

For the workouts log, name is "log", and for the personal records log, it is "records".

The workouts log will contain an array of objects that have the form:

{ "wid" : A GUID, uniquely identifying this entry, "asrx" : 0 or 1, 1 meaning it was performed as prescribed, "notes" : Free-form notes about the workout, "title" : The entry title, may be null, "score" : The score for this entry, "scoretype" : A number, marking the score type, "date" : The date and time of the entry, in seconds since 01-01-1970 }

The score type number can have the following values:

Value Meaning Scoring Notes
1 For time. Seconds.
2 For repetitions. Number of repetitions.
3 For rounds. Number of rounds.
4 No score.
5 Tabata score. Tabata repetitions.
6 Total score. Total score (e.g., CrossFit Total)

The array of records contains objects of a similar form:

{ "wid" : GUID identifying the workout, "kind" : 0 or 1, 1 means it is a movement, 0 a workout, "userorder" : unused, may be used in the future, "notes" : Free-form text about the record, "title" : The title, e.g., the name of the movement, "scoretype" : The score type, "score" : The score, "id" : An internal identifier, "date" : The date, in seconds since 01-01-1970 }

If the record kind is 0, then the score type is interpreted as one of the above workout scoring types, and the wid field will correspond to a workout with the same wid value in the workouts log.

If the record kind is 1, then it is a movement, and the score type can have the following values:

Value Meaning Scoring Notes
1 For weight. Value is in grams.
2 For repetitions.
3 For time. Value is in seconds.
4 No score.
5 For rounds.
6 Total score.
7 For distance. Value is in millimeters.
8 For height. Value is in microns (10-6 meters).