Merge pull request #108 from SamR1/new-ui
User interface rewriting for better display
@ -16,6 +16,8 @@ export DATABASE_TEST_URL=postgresql://fittrackee:fittrackee@fittrackee-db:5432/f
|
||||
|
||||
# Emails
|
||||
export UI_URL=http://0.0.0.0:5000
|
||||
# For development:
|
||||
# export UI_URL=http://0.0.0.0:3000
|
||||
export EMAIL_URL=smtp://none:none@mail:1025
|
||||
export SENDER_EMAIL=fittrackee@example.com
|
||||
export REDIS_URL=redis://redis:6379
|
||||
|
@ -16,6 +16,7 @@ services:
|
||||
alias: postgres
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- tests
|
||||
- selenium
|
||||
|
||||
@ -28,16 +29,33 @@ stages:
|
||||
script:
|
||||
- pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing
|
||||
|
||||
lint:
|
||||
|
||||
.javascript:
|
||||
stage: tests
|
||||
before_script:
|
||||
- apt-get update && apt-get install -y nodejs npm
|
||||
- npm install --global yarn
|
||||
- cd fittrackee_client
|
||||
- yarn install
|
||||
|
||||
python-lint:
|
||||
stage: lint
|
||||
extends: .python
|
||||
script:
|
||||
- pytest --flake8 --isort --black -m "flake8 or isort or black" fittrackee e2e --ignore=fittrackee/migrations
|
||||
|
||||
type-check:
|
||||
python-type-check:
|
||||
stage: lint
|
||||
extends: .python
|
||||
script:
|
||||
- mypy fittrackee
|
||||
|
||||
eslint:
|
||||
stage: lint
|
||||
extends: .javascript
|
||||
script:
|
||||
- yarn lint
|
||||
|
||||
python-3.7:
|
||||
extends: .python
|
||||
image: python:3.7
|
||||
@ -53,6 +71,16 @@ python-3.10:
|
||||
extends: .python
|
||||
image: python:3.10
|
||||
|
||||
typescript:
|
||||
stage: tests
|
||||
before_script:
|
||||
- apt-get update && apt-get install -y nodejs npm
|
||||
- npm install --global yarn
|
||||
- cd fittrackee_client
|
||||
- yarn install
|
||||
script:
|
||||
- yarn test:unit
|
||||
|
||||
firefox:
|
||||
stage: selenium
|
||||
services:
|
||||
|
26
CHANGELOG.md
@ -1,15 +1,37 @@
|
||||
# Change log
|
||||
|
||||
## Version 0.5.0 (unreleased)
|
||||
|
||||
### Issues Closed
|
||||
|
||||
#### New Features
|
||||
|
||||
* [#91](https://github.com/SamR1/FitTrackee/issues/91) - Display elevation chart with min and max altitude of workout
|
||||
* [#18](https://github.com/SamR1/FitTrackee/issues/18) - Better UI
|
||||
|
||||
#### Bugs Fixed
|
||||
|
||||
* [#95](https://github.com/SamR1/FitTrackee/issues/95) - Some workouts seem to be missing on statistics chart
|
||||
|
||||
#### Misc
|
||||
|
||||
* [#104](https://github.com/SamR1/FitTrackee/issues/104) - Switch to AGPLv3 license
|
||||
|
||||
### Pull Requests
|
||||
|
||||
* [#84/#93](https://github.com/SamR1/FitTrackee/pull/93) - Add elevation data and new sports
|
||||
|
||||
|
||||
## Version 0.4.9 (2021/07/16)
|
||||
|
||||
### Issues Closed
|
||||
|
||||
#### New Features
|
||||
|
||||
* [#83](https://github.com/SamR1/Fittrackee/issues/83) - allow using configured tile server to generate static maps
|
||||
**Note**: to keep using the default tile server, set environment variable `DEFAULT_STATICMAP` to `True`
|
||||
* [#81](https://github.com/SamR1/Fittrackee/issues/81) - display remaining characters in textarea
|
||||
|
||||
### Issues Closed
|
||||
|
||||
#### Bugs Fixed
|
||||
|
||||
* [#82](https://github.com/SamR1/Fittrackee/issues/82) - a user can not modify his birth day
|
||||
|
12
Makefile
@ -9,7 +9,7 @@ make-p:
|
||||
build-client: lint-client
|
||||
cd fittrackee_client && $(NPM) build
|
||||
|
||||
check-all: lint-all type-check test-python
|
||||
check-all: lint-all type-check test-python test-client
|
||||
|
||||
clean:
|
||||
rm -rf .mypy_cache
|
||||
@ -54,7 +54,7 @@ docker-run-workers:
|
||||
|
||||
docker-serve-client:
|
||||
docker-compose -f docker-compose-dev.yml up -d fittrackee_client
|
||||
docker-compose -f docker-compose-dev.yml exec fittrackee_client react-scripts start
|
||||
docker-compose -f docker-compose-dev.yml exec fittrackee_client yarn serve
|
||||
|
||||
docker-shell:
|
||||
docker-compose -f docker-compose-dev.yml exec fittrackee docker/shell.sh
|
||||
@ -98,8 +98,7 @@ install-client:
|
||||
cd fittrackee_client && $(NPM) install --prod
|
||||
|
||||
install-client-dev:
|
||||
# https://github.com/facebook/create-react-app/issues/8688
|
||||
cd fittrackee_client && $(NPM) install && sed -i '/process.env.CI/ s/isInteractive [|]*//' node_modules/react-scripts/scripts/start.js
|
||||
cd fittrackee_client && $(NPM) install
|
||||
|
||||
install-dev: install-client-dev install-python-dev
|
||||
|
||||
@ -154,7 +153,7 @@ serve-dev:
|
||||
$(MAKE) P="serve-client serve-python-dev" make-p
|
||||
|
||||
serve-client:
|
||||
cd fittrackee_client && $(NPM) start
|
||||
cd fittrackee_client && PORT=3000 $(NPM) serve
|
||||
|
||||
serve-python:
|
||||
echo 'Running on http://$(HOST):$(PORT)'
|
||||
@ -173,6 +172,9 @@ test-e2e-client: init-db
|
||||
test-python:
|
||||
$(PYTEST) fittrackee --cov-config .coveragerc --cov=fittrackee --cov-report term-missing $(PYTEST_ARGS)
|
||||
|
||||
test-client:
|
||||
cd fittrackee_client && $(NPM) test:unit
|
||||
|
||||
type-check:
|
||||
echo 'Running mypy...'
|
||||
$(MYPY) fittrackee
|
||||
|
@ -3,10 +3,11 @@
|
||||
|
||||
[![PyPI version](https://img.shields.io/pypi/v/fittrackee.svg)](https://pypi.org/project/fittrackee/)
|
||||
[![Python Version](https://img.shields.io/badge/python-3.7+-brightgreen.svg)](https://python.org)
|
||||
[![Flask Version](https://img.shields.io/badge/flask-1.1-brightgreen.svg)](http://flask.pocoo.org/)
|
||||
[![Flask Version](https://img.shields.io/badge/flask-2.0-brightgreen.svg)](http://flask.pocoo.org/)
|
||||
[![code style: black](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)
|
||||
[![type check: mypy](https://img.shields.io/badge/type%20check-mypy-blue)](http://mypy-lang.org/)
|
||||
[![React Version](https://img.shields.io/badge/react-17.0-brightgreen.svg)](https://reactjs.org/)
|
||||
[![Vue Version](https://img.shields.io/badge/vue-3.2-brightgreen.svg)](https://v3.vuejs.org/)
|
||||
[![Typescript Version](https://img.shields.io/npm/types/typescript)](https://www.typescriptlang.org/)
|
||||
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
|
||||
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/290a285f22e94132904dc13b4dd19d1d)](https://www.codacy.com/app/SamR1/FitTrackee)
|
||||
[![pipeline status](https://gitlab.com/SamR1/FitTrackee/badges/master/pipeline.svg)](https://gitlab.com/SamR1/FitTrackee/-/commits/master)
|
||||
|
@ -37,7 +37,7 @@ services:
|
||||
container_name: fittrackee_client
|
||||
environment:
|
||||
- NODE_ENV=development
|
||||
- REACT_APP_API_URL=http://localhost:5000
|
||||
- VUE_APP_API_URL=http://localhost:5000
|
||||
build:
|
||||
context: ./fittrackee_client
|
||||
volumes:
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: e3ce843579e66aa31a330fdf6680e945
|
||||
config: d2c47424fbb13c7705708db687756ae8
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
Before Width: | Height: | Size: 506 KiB After Width: | Height: | Size: 535 KiB |
Before Width: | Height: | Size: 395 KiB After Width: | Height: | Size: 367 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 71 KiB |
BIN
docs/_images/fittrackee_screenshot-06.png
Normal file
After Width: | Height: | Size: 100 KiB |
@ -1,15 +1,37 @@
|
||||
# Change log
|
||||
|
||||
## Version 0.5.0 (unreleased)
|
||||
|
||||
### Issues Closed
|
||||
|
||||
#### New Features
|
||||
|
||||
* [#91](https://github.com/SamR1/FitTrackee/issues/91) - Display elevation chart with min and max altitude of workout
|
||||
* [#18](https://github.com/SamR1/FitTrackee/issues/18) - Better UI
|
||||
|
||||
#### Bugs Fixed
|
||||
|
||||
* [#95](https://github.com/SamR1/FitTrackee/issues/95) - Some workouts seem to be missing on statistics chart
|
||||
|
||||
#### Misc
|
||||
|
||||
* [#104](https://github.com/SamR1/FitTrackee/issues/104) - Switch to AGPLv3 license
|
||||
|
||||
### Pull Requests
|
||||
|
||||
* [#84/#93](https://github.com/SamR1/FitTrackee/pull/93) - Add elevation data and new sports
|
||||
|
||||
|
||||
## Version 0.4.9 (2021/07/16)
|
||||
|
||||
### Issues Closed
|
||||
|
||||
#### New Features
|
||||
|
||||
* [#83](https://github.com/SamR1/Fittrackee/issues/83) - allow using configured tile server to generate static maps
|
||||
**Note**: to keep using the default tile server, set environment variable `DEFAULT_STATICMAP` to `True`
|
||||
* [#81](https://github.com/SamR1/Fittrackee/issues/81) - display remaining characters in textarea
|
||||
|
||||
### Issues Closed
|
||||
|
||||
#### Bugs Fixed
|
||||
|
||||
* [#82](https://github.com/SamR1/Fittrackee/issues/82) - a user can not modify his birth day
|
||||
|
@ -39,12 +39,17 @@ Account
|
||||
|
||||
Workouts
|
||||
^^^^^^^^
|
||||
- 6 sports are supported:
|
||||
- 11 sports are supported:
|
||||
- Cycling (Sport)
|
||||
- Cycling (Transport)
|
||||
- Hiking
|
||||
- Montain Biking
|
||||
- Mountain Biking
|
||||
- Mountain Biking (Electric) (**new in 0.5.0**)
|
||||
- Rowing (**new in 0.5.0**)
|
||||
- Running
|
||||
- Skiing (Alpine) (**new in 0.5.0**)
|
||||
- Skiing (Cross Country) (**new in 0.5.0**)
|
||||
- Trail (**new in 0.5.0**)
|
||||
- Walking
|
||||
- Dashboard with month calendar displaying workouts and record. The week can start on Sunday or Monday (which can be changed in the user settings). The calendar displays up to 100 workouts.
|
||||
- Workout creation by uploading a gpx file. A workout can even be created without gpx (the user must enter date, time, duration and distance)
|
||||
@ -94,3 +99,6 @@ Administration
|
||||
~~~~~~~~~~~~~~
|
||||
.. figure:: _images/fittrackee_screenshot-05.png
|
||||
:alt: FitTrackee Administration
|
||||
|
||||
.. figure:: _images/fittrackee_screenshot-06.png
|
||||
:alt: FitTrackee Sports Administration
|
@ -1,7 +1,7 @@
|
||||
Installation
|
||||
############
|
||||
|
||||
This application is written in Python (API) and Javascript (client):
|
||||
This application is written in Python (API) and Typescript (client):
|
||||
|
||||
- API:
|
||||
- Flask
|
||||
@ -10,9 +10,9 @@ This application is written in Python (API) and Javascript (client):
|
||||
- `python-forecast.io <https://github.com/ZeevG/python-forecast.io>`_ to fetch weather data from `Dark Sky <https://darksky.net>`__ (former forecast.io)
|
||||
- `dramatiq <https://flask-dramatiq.readthedocs.io/en/latest/>`_ for task queue
|
||||
- Client:
|
||||
- React/Redux
|
||||
- Vue3/Vuex
|
||||
- `Leaflet <https://leafletjs.com/>`__ to display map
|
||||
- `Recharts <https://github.com/recharts/recharts>`__ to display charts with elevation and speed
|
||||
- `Chart.js <https://www.chartjs.org/>`__ to display charts with elevation and speed
|
||||
|
||||
Sports and weather icons are made by `Freepik <https://www.freepik.com/>`__ from `www.flaticon.com <https://www.flaticon.com/>`__.
|
||||
|
||||
@ -191,62 +191,12 @@ deployment method.
|
||||
**Dark Sky** API key for weather data (not mandatory).
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_API_URL
|
||||
.. envvar:: VUE_APP_API_URL
|
||||
|
||||
**FitTrackee** API URL, only needed in dev environment.
|
||||
|
||||
|
||||
|
||||
Deprecated variables
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. envvar:: REACT_APP_GPX_LIMIT_IMPORT
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Maximum number of gpx file in zip archive.
|
||||
|
||||
:default: 10
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_MAX_SINGLE_FILE_SIZE
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Maximum size of a gpx or picture file.
|
||||
|
||||
:default: 1MB
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_MAX_ZIP_FILE_SIZE
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Maximum size of a zip archive.
|
||||
|
||||
:default: 10MB
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_ALLOW_REGISTRATION
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Allows users to register.
|
||||
|
||||
:default: true
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_THUNDERFOREST_API_KEY
|
||||
|
||||
.. deprecated:: 0.4.0 see `TILE_SERVER_URL <installation.html#envvar-TILE_SERVER_URL>`__
|
||||
|
||||
ThunderForest API key.
|
||||
|
||||
.. warning::
|
||||
| Since FitTrackee 0.3.0, some applications parameters are now stored in database.
|
||||
| Related environment variables are needed to initialize database when upgrading from version prior 0.3.0.
|
||||
|
||||
|
||||
Emails
|
||||
^^^^^^
|
||||
.. versionadded:: 0.3.0
|
||||
@ -409,7 +359,7 @@ Dev environment
|
||||
- Create **.env** from example and update it
|
||||
(see `Environment variables <installation.html#environment-variables>`__).
|
||||
|
||||
- Install Python virtualenv, React and all related packages and
|
||||
- Install Python virtualenv, Vue and all related packages and
|
||||
initialize the database:
|
||||
|
||||
.. code:: bash
|
||||
@ -439,13 +389,13 @@ Production environment
|
||||
.. warning::
|
||||
| Note that FitTrackee is under heavy development, some features may be unstable.
|
||||
|
||||
- Download the last release (for now, it is the release v0.4.9):
|
||||
- Download the last release (for now, it is the release v0.5.0):
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.4.9.tar.gz
|
||||
$ tar -xzf v0.4.9.tar.gz
|
||||
$ mv FitTrackee-0.4.9 FitTrackee
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.5.0.tar.gz
|
||||
$ tar -xzf v0.5.0.tar.gz
|
||||
$ mv FitTrackee-0.5.0 FitTrackee
|
||||
$ cd FitTrackee
|
||||
|
||||
- Create **.env** from example and update it
|
||||
@ -520,13 +470,13 @@ Prod environment
|
||||
|
||||
- Change to the directory where FitTrackee directory is located
|
||||
|
||||
- Download the last release (for now, it is the release v0.4.9) and overwrite existing files:
|
||||
- Download the last release (for now, it is the release v0.5.0) and overwrite existing files:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.4.9.tar.gz
|
||||
$ tar -xzf v0.4.9.tar.gz
|
||||
$ cp -R FitTrackee-0.4.9/* FitTrackee/
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.5.0.tar.gz
|
||||
$ tar -xzf v0.5.0.tar.gz
|
||||
$ cp -R FitTrackee-0.5.0/* FitTrackee/
|
||||
$ cd FitTrackee
|
||||
|
||||
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
|
||||
@ -704,19 +654,25 @@ Open http://localhost:8025 to access `MailHog interface <https://github.com/mail
|
||||
$ make docker-shell
|
||||
|
||||
|
||||
Client Development
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
Development
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 0.4.10
|
||||
.. versionadded:: 0.5.0
|
||||
|
||||
- in order to start client with React dev tools, install `fittrackee_client`
|
||||
- an additional step is to install `fittrackee_client`
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ make docker-build-client
|
||||
|
||||
- start React app
|
||||
- to start **FitTrackee** with client dev tools:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ make docker-serve-client
|
||||
|
||||
Open http://localhost:3000 and log in (the email is ``admin@example.com``
|
||||
and the password ``mpwoadmin``) or register
|
||||
|
||||
.. note::
|
||||
Some environment variables need to be updated like `UI_URL`
|
85
docs/_static/basic.css
vendored
@ -130,7 +130,7 @@ ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li div.context {
|
||||
ul.search li p.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
@ -508,6 +508,63 @@ table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* -- object description styles --------------------------------------------- */
|
||||
|
||||
.sig {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
}
|
||||
|
||||
.sig-name, code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-name {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sig-prename, code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.sig-param.n {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* C++ specific styling */
|
||||
|
||||
.sig-inline.c-texpr,
|
||||
.sig-inline.cpp-texpr {
|
||||
font-family: unset;
|
||||
}
|
||||
|
||||
.sig.c .k, .sig.c .kt,
|
||||
.sig.cpp .k, .sig.cpp .kt {
|
||||
color: #0033B3;
|
||||
}
|
||||
|
||||
.sig.c .m,
|
||||
.sig.cpp .m {
|
||||
color: #1750EB;
|
||||
}
|
||||
|
||||
.sig.c .s, .sig.c .sc,
|
||||
.sig.cpp .s, .sig.cpp .sc {
|
||||
color: #067D17;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
@ -634,14 +691,6 @@ dl.glossary dt {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
@ -770,8 +819,12 @@ div.code-block-caption code {
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
-webkit-user-select: text; /* Safari fallback only */
|
||||
-webkit-user-select: none; /* Chrome/Safari */
|
||||
-moz-user-select: none; /* Firefox */
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
@ -786,16 +839,6 @@ div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
|
6
docs/_static/custom.css
vendored
@ -92,3 +92,9 @@ dl.field-list > dt {
|
||||
height: 65px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 1px solid #cecdcd;
|
||||
margin: 5px 0;
|
||||
}
|
2
docs/_static/doctools.js
vendored
@ -301,12 +301,14 @@ var Documentation = {
|
||||
window.location.href = prevHref;
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 39: // right
|
||||
var nextHref = $('link[rel="next"]').prop('href');
|
||||
if (nextHref) {
|
||||
window.location.href = nextHref;
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
2
docs/_static/documentation_options.js
vendored
@ -1,6 +1,6 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: '0.4.9',
|
||||
VERSION: '0.5.0',
|
||||
LANGUAGE: 'None',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
|
10
docs/_static/searchtools.js
vendored
@ -282,7 +282,10 @@ var Search = {
|
||||
complete: function(jqxhr, textstatus) {
|
||||
var data = jqxhr.responseText;
|
||||
if (data !== '' && data !== undefined) {
|
||||
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||
var summary = Search.makeSearchSummary(data, searchterms, hlterms);
|
||||
if (summary) {
|
||||
listItem.append(summary);
|
||||
}
|
||||
}
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
@ -498,6 +501,9 @@ var Search = {
|
||||
*/
|
||||
makeSearchSummary : function(htmlText, keywords, hlwords) {
|
||||
var text = Search.htmlToText(htmlText);
|
||||
if (text == "") {
|
||||
return null;
|
||||
}
|
||||
var textLower = text.toLowerCase();
|
||||
var start = 0;
|
||||
$.each(keywords, function() {
|
||||
@ -509,7 +515,7 @@ var Search = {
|
||||
var excerpt = ((start > 0) ? '...' : '') +
|
||||
$.trim(text.substr(start, 240)) +
|
||||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<div class="context"></div>').text(excerpt);
|
||||
var rv = $('<p class="context"></p>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
|
@ -1,19 +1,19 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define('underscore', factory) :
|
||||
(global = global || self, (function () {
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {
|
||||
var current = global._;
|
||||
var exports = global._ = factory();
|
||||
exports.noConflict = function () { global._ = current; return exports; };
|
||||
}()));
|
||||
}(this, (function () {
|
||||
// Underscore.js 1.12.0
|
||||
// Underscore.js 1.13.1
|
||||
// https://underscorejs.org
|
||||
// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
|
||||
// Underscore may be freely distributed under the MIT license.
|
||||
|
||||
// Current version.
|
||||
var VERSION = '1.12.0';
|
||||
var VERSION = '1.13.1';
|
||||
|
||||
// Establish the root object, `window` (`self`) in the browser, `global`
|
||||
// on the server, or `this` in some virtual machines. We use `self`
|
||||
@ -170,7 +170,7 @@
|
||||
var isArray = nativeIsArray || tagTester('Array');
|
||||
|
||||
// Internal function to check whether `key` is an own property name of `obj`.
|
||||
function has(obj, key) {
|
||||
function has$1(obj, key) {
|
||||
return obj != null && hasOwnProperty.call(obj, key);
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@
|
||||
(function() {
|
||||
if (!isArguments(arguments)) {
|
||||
isArguments = function(obj) {
|
||||
return has(obj, 'callee');
|
||||
return has$1(obj, 'callee');
|
||||
};
|
||||
}
|
||||
}());
|
||||
@ -268,7 +268,7 @@
|
||||
|
||||
// Constructor is a special case.
|
||||
var prop = 'constructor';
|
||||
if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);
|
||||
if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);
|
||||
|
||||
while (nonEnumIdx--) {
|
||||
prop = nonEnumerableProps[nonEnumIdx];
|
||||
@ -284,7 +284,7 @@
|
||||
if (!isObject(obj)) return [];
|
||||
if (nativeKeys) return nativeKeys(obj);
|
||||
var keys = [];
|
||||
for (var key in obj) if (has(obj, key)) keys.push(key);
|
||||
for (var key in obj) if (has$1(obj, key)) keys.push(key);
|
||||
// Ahem, IE < 9.
|
||||
if (hasEnumBug) collectNonEnumProps(obj, keys);
|
||||
return keys;
|
||||
@ -318,24 +318,24 @@
|
||||
// If Underscore is called as a function, it returns a wrapped object that can
|
||||
// be used OO-style. This wrapper holds altered versions of all functions added
|
||||
// through `_.mixin`. Wrapped objects may be chained.
|
||||
function _(obj) {
|
||||
if (obj instanceof _) return obj;
|
||||
if (!(this instanceof _)) return new _(obj);
|
||||
function _$1(obj) {
|
||||
if (obj instanceof _$1) return obj;
|
||||
if (!(this instanceof _$1)) return new _$1(obj);
|
||||
this._wrapped = obj;
|
||||
}
|
||||
|
||||
_.VERSION = VERSION;
|
||||
_$1.VERSION = VERSION;
|
||||
|
||||
// Extracts the result from a wrapped and chained object.
|
||||
_.prototype.value = function() {
|
||||
_$1.prototype.value = function() {
|
||||
return this._wrapped;
|
||||
};
|
||||
|
||||
// Provide unwrapping proxies for some methods used in engine operations
|
||||
// such as arithmetic and JSON stringification.
|
||||
_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
|
||||
_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;
|
||||
|
||||
_.prototype.toString = function() {
|
||||
_$1.prototype.toString = function() {
|
||||
return String(this._wrapped);
|
||||
};
|
||||
|
||||
@ -370,8 +370,8 @@
|
||||
// Internal recursive comparison function for `_.isEqual`.
|
||||
function deepEq(a, b, aStack, bStack) {
|
||||
// Unwrap any wrapped objects.
|
||||
if (a instanceof _) a = a._wrapped;
|
||||
if (b instanceof _) b = b._wrapped;
|
||||
if (a instanceof _$1) a = a._wrapped;
|
||||
if (b instanceof _$1) b = b._wrapped;
|
||||
// Compare `[[Class]]` names.
|
||||
var className = toString.call(a);
|
||||
if (className !== toString.call(b)) return false;
|
||||
@ -463,7 +463,7 @@
|
||||
while (length--) {
|
||||
// Deep compare each member
|
||||
key = _keys[length];
|
||||
if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
|
||||
if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
|
||||
}
|
||||
}
|
||||
// Remove the first object from the stack of traversed objects.
|
||||
@ -642,15 +642,15 @@
|
||||
|
||||
// Normalize a (deep) property `path` to array.
|
||||
// Like `_.iteratee`, this function can be customized.
|
||||
function toPath(path) {
|
||||
function toPath$1(path) {
|
||||
return isArray(path) ? path : [path];
|
||||
}
|
||||
_.toPath = toPath;
|
||||
_$1.toPath = toPath$1;
|
||||
|
||||
// Internal wrapper for `_.toPath` to enable minification.
|
||||
// Similar to `cb` for `_.iteratee`.
|
||||
function toPath$1(path) {
|
||||
return _.toPath(path);
|
||||
function toPath(path) {
|
||||
return _$1.toPath(path);
|
||||
}
|
||||
|
||||
// Internal function to obtain a nested property in `obj` along `path`.
|
||||
@ -668,19 +668,19 @@
|
||||
// `undefined`, return `defaultValue` instead.
|
||||
// The `path` is normalized through `_.toPath`.
|
||||
function get(object, path, defaultValue) {
|
||||
var value = deepGet(object, toPath$1(path));
|
||||
var value = deepGet(object, toPath(path));
|
||||
return isUndefined(value) ? defaultValue : value;
|
||||
}
|
||||
|
||||
// Shortcut function for checking if an object has a given property directly on
|
||||
// itself (in other words, not on a prototype). Unlike the internal `has`
|
||||
// function, this public version can also traverse nested properties.
|
||||
function has$1(obj, path) {
|
||||
path = toPath$1(path);
|
||||
function has(obj, path) {
|
||||
path = toPath(path);
|
||||
var length = path.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
var key = path[i];
|
||||
if (!has(obj, key)) return false;
|
||||
if (!has$1(obj, key)) return false;
|
||||
obj = obj[key];
|
||||
}
|
||||
return !!length;
|
||||
@ -703,7 +703,7 @@
|
||||
// Creates a function that, when passed an object, will traverse that object’s
|
||||
// properties down the given `path`, specified as an array of keys or indices.
|
||||
function property(path) {
|
||||
path = toPath$1(path);
|
||||
path = toPath(path);
|
||||
return function(obj) {
|
||||
return deepGet(obj, path);
|
||||
};
|
||||
@ -747,12 +747,12 @@
|
||||
function iteratee(value, context) {
|
||||
return baseIteratee(value, context, Infinity);
|
||||
}
|
||||
_.iteratee = iteratee;
|
||||
_$1.iteratee = iteratee;
|
||||
|
||||
// The function we call internally to generate a callback. It invokes
|
||||
// `_.iteratee` if overridden, otherwise `baseIteratee`.
|
||||
function cb(value, context, argCount) {
|
||||
if (_.iteratee !== iteratee) return _.iteratee(value, context);
|
||||
if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);
|
||||
return baseIteratee(value, context, argCount);
|
||||
}
|
||||
|
||||
@ -840,7 +840,7 @@
|
||||
|
||||
// By default, Underscore uses ERB-style template delimiters. Change the
|
||||
// following template settings to use alternative delimiters.
|
||||
var templateSettings = _.templateSettings = {
|
||||
var templateSettings = _$1.templateSettings = {
|
||||
evaluate: /<%([\s\S]+?)%>/g,
|
||||
interpolate: /<%=([\s\S]+?)%>/g,
|
||||
escape: /<%-([\s\S]+?)%>/g
|
||||
@ -868,13 +868,20 @@
|
||||
return '\\' + escapes[match];
|
||||
}
|
||||
|
||||
// In order to prevent third-party code injection through
|
||||
// `_.templateSettings.variable`, we test it against the following regular
|
||||
// expression. It is intentionally a bit more liberal than just matching valid
|
||||
// identifiers, but still prevents possible loopholes through defaults or
|
||||
// destructuring assignment.
|
||||
var bareIdentifier = /^\s*(\w|\$)+\s*$/;
|
||||
|
||||
// JavaScript micro-templating, similar to John Resig's implementation.
|
||||
// Underscore templating handles arbitrary delimiters, preserves whitespace,
|
||||
// and correctly escapes quotes within interpolated code.
|
||||
// NB: `oldSettings` only exists for backwards compatibility.
|
||||
function template(text, settings, oldSettings) {
|
||||
if (!settings && oldSettings) settings = oldSettings;
|
||||
settings = defaults({}, settings, _.templateSettings);
|
||||
settings = defaults({}, settings, _$1.templateSettings);
|
||||
|
||||
// Combine delimiters into one regular expression via alternation.
|
||||
var matcher = RegExp([
|
||||
@ -903,8 +910,17 @@
|
||||
});
|
||||
source += "';\n";
|
||||
|
||||
// If a variable is not specified, place data values in local scope.
|
||||
if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
|
||||
var argument = settings.variable;
|
||||
if (argument) {
|
||||
// Insure against third-party code injection. (CVE-2021-23358)
|
||||
if (!bareIdentifier.test(argument)) throw new Error(
|
||||
'variable is not a bare identifier: ' + argument
|
||||
);
|
||||
} else {
|
||||
// If a variable is not specified, place data values in local scope.
|
||||
source = 'with(obj||{}){\n' + source + '}\n';
|
||||
argument = 'obj';
|
||||
}
|
||||
|
||||
source = "var __t,__p='',__j=Array.prototype.join," +
|
||||
"print=function(){__p+=__j.call(arguments,'');};\n" +
|
||||
@ -912,18 +928,17 @@
|
||||
|
||||
var render;
|
||||
try {
|
||||
render = new Function(settings.variable || 'obj', '_', source);
|
||||
render = new Function(argument, '_', source);
|
||||
} catch (e) {
|
||||
e.source = source;
|
||||
throw e;
|
||||
}
|
||||
|
||||
var template = function(data) {
|
||||
return render.call(this, data, _);
|
||||
return render.call(this, data, _$1);
|
||||
};
|
||||
|
||||
// Provide the compiled source as a convenience for precompilation.
|
||||
var argument = settings.variable || 'obj';
|
||||
template.source = 'function(' + argument + '){\n' + source + '}';
|
||||
|
||||
return template;
|
||||
@ -933,7 +948,7 @@
|
||||
// is invoked with its parent as context. Returns the value of the final
|
||||
// child, or `fallback` if any child is undefined.
|
||||
function result(obj, path, fallback) {
|
||||
path = toPath$1(path);
|
||||
path = toPath(path);
|
||||
var length = path.length;
|
||||
if (!length) {
|
||||
return isFunction$1(fallback) ? fallback.call(obj) : fallback;
|
||||
@ -959,7 +974,7 @@
|
||||
|
||||
// Start chaining a wrapped Underscore object.
|
||||
function chain(obj) {
|
||||
var instance = _(obj);
|
||||
var instance = _$1(obj);
|
||||
instance._chain = true;
|
||||
return instance;
|
||||
}
|
||||
@ -993,7 +1008,7 @@
|
||||
return bound;
|
||||
});
|
||||
|
||||
partial.placeholder = _;
|
||||
partial.placeholder = _$1;
|
||||
|
||||
// Create a function bound to a given object (assigning `this`, and arguments,
|
||||
// optionally).
|
||||
@ -1012,7 +1027,7 @@
|
||||
var isArrayLike = createSizePropertyCheck(getLength);
|
||||
|
||||
// Internal implementation of a recursive `flatten` function.
|
||||
function flatten(input, depth, strict, output) {
|
||||
function flatten$1(input, depth, strict, output) {
|
||||
output = output || [];
|
||||
if (!depth && depth !== 0) {
|
||||
depth = Infinity;
|
||||
@ -1025,7 +1040,7 @@
|
||||
if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {
|
||||
// Flatten current level of array or arguments object.
|
||||
if (depth > 1) {
|
||||
flatten(value, depth - 1, strict, output);
|
||||
flatten$1(value, depth - 1, strict, output);
|
||||
idx = output.length;
|
||||
} else {
|
||||
var j = 0, len = value.length;
|
||||
@ -1042,7 +1057,7 @@
|
||||
// are the method names to be bound. Useful for ensuring that all callbacks
|
||||
// defined on an object belong to it.
|
||||
var bindAll = restArguments(function(obj, keys) {
|
||||
keys = flatten(keys, false, false);
|
||||
keys = flatten$1(keys, false, false);
|
||||
var index = keys.length;
|
||||
if (index < 1) throw new Error('bindAll must be passed function names');
|
||||
while (index--) {
|
||||
@ -1057,7 +1072,7 @@
|
||||
var memoize = function(key) {
|
||||
var cache = memoize.cache;
|
||||
var address = '' + (hasher ? hasher.apply(this, arguments) : key);
|
||||
if (!has(cache, address)) cache[address] = func.apply(this, arguments);
|
||||
if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);
|
||||
return cache[address];
|
||||
};
|
||||
memoize.cache = {};
|
||||
@ -1074,7 +1089,7 @@
|
||||
|
||||
// Defers a function, scheduling it to run after the current call stack has
|
||||
// cleared.
|
||||
var defer = partial(delay, _, 1);
|
||||
var defer = partial(delay, _$1, 1);
|
||||
|
||||
// Returns a function, that, when invoked, will only be triggered at most once
|
||||
// during a given window of time. Normally, the throttled function will run
|
||||
@ -1420,7 +1435,7 @@
|
||||
if (isFunction$1(path)) {
|
||||
func = path;
|
||||
} else {
|
||||
path = toPath$1(path);
|
||||
path = toPath(path);
|
||||
contextPath = path.slice(0, -1);
|
||||
path = path[path.length - 1];
|
||||
}
|
||||
@ -1562,7 +1577,7 @@
|
||||
// Groups the object's values by a criterion. Pass either a string attribute
|
||||
// to group by, or a function that returns the criterion.
|
||||
var groupBy = group(function(result, value, key) {
|
||||
if (has(result, key)) result[key].push(value); else result[key] = [value];
|
||||
if (has$1(result, key)) result[key].push(value); else result[key] = [value];
|
||||
});
|
||||
|
||||
// Indexes the object's values by a criterion, similar to `_.groupBy`, but for
|
||||
@ -1575,7 +1590,7 @@
|
||||
// either a string attribute to count by, or a function that returns the
|
||||
// criterion.
|
||||
var countBy = group(function(result, value, key) {
|
||||
if (has(result, key)) result[key]++; else result[key] = 1;
|
||||
if (has$1(result, key)) result[key]++; else result[key] = 1;
|
||||
});
|
||||
|
||||
// Split a collection into two arrays: one whose elements all pass the given
|
||||
@ -1618,7 +1633,7 @@
|
||||
keys = allKeys(obj);
|
||||
} else {
|
||||
iteratee = keyInObj;
|
||||
keys = flatten(keys, false, false);
|
||||
keys = flatten$1(keys, false, false);
|
||||
obj = Object(obj);
|
||||
}
|
||||
for (var i = 0, length = keys.length; i < length; i++) {
|
||||
@ -1636,7 +1651,7 @@
|
||||
iteratee = negate(iteratee);
|
||||
if (keys.length > 1) context = keys[1];
|
||||
} else {
|
||||
keys = map(flatten(keys, false, false), String);
|
||||
keys = map(flatten$1(keys, false, false), String);
|
||||
iteratee = function(value, key) {
|
||||
return !contains(keys, key);
|
||||
};
|
||||
@ -1681,14 +1696,14 @@
|
||||
|
||||
// Flatten out an array, either recursively (by default), or up to `depth`.
|
||||
// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.
|
||||
function flatten$1(array, depth) {
|
||||
return flatten(array, depth, false);
|
||||
function flatten(array, depth) {
|
||||
return flatten$1(array, depth, false);
|
||||
}
|
||||
|
||||
// Take the difference between one array and a number of other arrays.
|
||||
// Only the elements present in just the first array will remain.
|
||||
var difference = restArguments(function(array, rest) {
|
||||
rest = flatten(rest, true, true);
|
||||
rest = flatten$1(rest, true, true);
|
||||
return filter(array, function(value){
|
||||
return !contains(rest, value);
|
||||
});
|
||||
@ -1734,7 +1749,7 @@
|
||||
// Produce an array that contains the union: each distinct element from all of
|
||||
// the passed-in arrays.
|
||||
var union = restArguments(function(arrays) {
|
||||
return uniq(flatten(arrays, true, true));
|
||||
return uniq(flatten$1(arrays, true, true));
|
||||
});
|
||||
|
||||
// Produce an array that contains every item shared between all the
|
||||
@ -1821,26 +1836,26 @@
|
||||
|
||||
// Helper function to continue chaining intermediate results.
|
||||
function chainResult(instance, obj) {
|
||||
return instance._chain ? _(obj).chain() : obj;
|
||||
return instance._chain ? _$1(obj).chain() : obj;
|
||||
}
|
||||
|
||||
// Add your own custom functions to the Underscore object.
|
||||
function mixin(obj) {
|
||||
each(functions(obj), function(name) {
|
||||
var func = _[name] = obj[name];
|
||||
_.prototype[name] = function() {
|
||||
var func = _$1[name] = obj[name];
|
||||
_$1.prototype[name] = function() {
|
||||
var args = [this._wrapped];
|
||||
push.apply(args, arguments);
|
||||
return chainResult(this, func.apply(_, args));
|
||||
return chainResult(this, func.apply(_$1, args));
|
||||
};
|
||||
});
|
||||
return _;
|
||||
return _$1;
|
||||
}
|
||||
|
||||
// Add all mutator `Array` functions to the wrapper.
|
||||
each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
|
||||
var method = ArrayProto[name];
|
||||
_.prototype[name] = function() {
|
||||
_$1.prototype[name] = function() {
|
||||
var obj = this._wrapped;
|
||||
if (obj != null) {
|
||||
method.apply(obj, arguments);
|
||||
@ -1855,7 +1870,7 @@
|
||||
// Add all accessor `Array` functions to the wrapper.
|
||||
each(['concat', 'join', 'slice'], function(name) {
|
||||
var method = ArrayProto[name];
|
||||
_.prototype[name] = function() {
|
||||
_$1.prototype[name] = function() {
|
||||
var obj = this._wrapped;
|
||||
if (obj != null) obj = method.apply(obj, arguments);
|
||||
return chainResult(this, obj);
|
||||
@ -1909,12 +1924,12 @@
|
||||
clone: clone,
|
||||
tap: tap,
|
||||
get: get,
|
||||
has: has$1,
|
||||
has: has,
|
||||
mapObject: mapObject,
|
||||
identity: identity,
|
||||
constant: constant,
|
||||
noop: noop,
|
||||
toPath: toPath,
|
||||
toPath: toPath$1,
|
||||
property: property,
|
||||
propertyOf: propertyOf,
|
||||
matcher: matcher,
|
||||
@ -1997,7 +2012,7 @@
|
||||
tail: rest,
|
||||
drop: rest,
|
||||
compact: compact,
|
||||
flatten: flatten$1,
|
||||
flatten: flatten,
|
||||
without: without,
|
||||
uniq: uniq,
|
||||
unique: uniq,
|
||||
@ -2011,17 +2026,17 @@
|
||||
range: range,
|
||||
chunk: chunk,
|
||||
mixin: mixin,
|
||||
'default': _
|
||||
'default': _$1
|
||||
};
|
||||
|
||||
// Default Export
|
||||
|
||||
// Add all of the Underscore functions to the wrapper object.
|
||||
var _$1 = mixin(allExports);
|
||||
var _ = mixin(allExports);
|
||||
// Legacy Node.js API.
|
||||
_$1._ = _$1;
|
||||
_._ = _;
|
||||
|
||||
return _$1;
|
||||
return _;
|
||||
|
||||
})));
|
||||
//# sourceMappingURL=underscore.js.map
|
||||
//# sourceMappingURL=underscore-umd.js.map
|
8
docs/_static/underscore.js
vendored
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Authentication — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Authentication — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="authentication">
|
||||
<section id="authentication">
|
||||
<h1>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http post">
|
||||
<dt id="post--api-auth-register">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/register</span></code><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-auth-register">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/register</span></span><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>register a user</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/register</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -144,7 +145,7 @@
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"auth_token"</span><span class="p">:</span> <span class="s2">"JSON Web Token"</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Successfully registered."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"successfully registered"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -156,7 +157,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Errors: Valid email must be provided.\n"</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Errors: email: valid email must be provided\n"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"error"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -172,32 +173,32 @@
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> – Successfully registered.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – <ul>
|
||||
<li><p>Invalid payload.</p></li>
|
||||
<li><p>Sorry. That user already exists.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – successfully registered</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul>
|
||||
<li><p>invalid payload</p></li>
|
||||
<li><p>sorry, that user already exists</p></li>
|
||||
<li><dl class="simple">
|
||||
<dt>Errors:</dt><dd><ul>
|
||||
<li><p>3 to 12 characters required for usernanme.</p></li>
|
||||
<li><p>Valid email must be provided.</p></li>
|
||||
<li><p>Password and password confirmation don’t match.</p></li>
|
||||
<li><p>8 characters required for password.</p></li>
|
||||
<li><p>username: 3 to 12 characters required</p></li>
|
||||
<li><p>email: valid email must be provided</p></li>
|
||||
<li><p>password: password and password confirmation don’t match</p></li>
|
||||
<li><p>password: 8 characters required</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – Error. Registration is disabled.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error. Please try again or contact the administrator.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – error, registration is disabled</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error, please try again or contact the administrator</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-auth-login">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/login</span></code><a class="headerlink" href="#post--api-auth-login" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-auth-login">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/login</span></span><a class="headerlink" href="#post--api-auth-login" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>user login</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/login</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -213,7 +214,7 @@
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"auth_token"</span><span class="p">:</span> <span class="s2">"JSON Web Token"</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Successfully logged in."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"successfully logged in"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -225,7 +226,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Invalid credentials."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"invalid credentials"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"error"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -239,18 +240,18 @@
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – Successfully logged in.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – Invalid payload.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – Invalid credentials.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error. Please try again or contact the administrator.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – successfully logged in</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – invalid credentials</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error, please try again or contact the administrator</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-auth-logout">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/auth/logout</span></code><a class="headerlink" href="#get--api-auth-logout" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-auth-logout">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/auth/logout</span></span><a class="headerlink" href="#get--api-auth-logout" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>user logout</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/auth/logout</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -265,7 +266,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Successfully logged out."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"successfully logged out"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -277,7 +278,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Provide a valid auth token."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"provide a valid auth token"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"error"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -285,21 +286,21 @@
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – Successfully logged out.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – Provide a valid auth token.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – successfully logged out</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – provide a valid auth token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-auth-profile">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/auth/profile</span></code><a class="headerlink" href="#get--api-auth-profile" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-auth-profile">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/auth/profile</span></span><a class="headerlink" href="#get--api-auth-profile" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>get authenticated user info</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/auth/profile</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -324,6 +325,44 @@
|
||||
<span class="nt">"nb_sports"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
|
||||
<span class="nt">"nb_workouts"</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span>
|
||||
<span class="nt">"picture"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
||||
<span class="nt">"records"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"AS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"FD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">11</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"LD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="s2">"1:01:00"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"MS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">],</span>
|
||||
<span class="nt">"sports_list"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="mi">1</span><span class="p">,</span>
|
||||
<span class="mi">4</span><span class="p">,</span>
|
||||
@ -342,16 +381,16 @@
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -360,8 +399,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-auth-profile-edit">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/profile/edit</span></code><a class="headerlink" href="#post--api-auth-profile-edit" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-auth-profile-edit">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/profile/edit</span></span><a class="headerlink" href="#post--api-auth-profile-edit" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>edit authenticated user</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/profile/edit</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -386,6 +425,44 @@
|
||||
<span class="nt">"nb_sports"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
|
||||
<span class="nt">"nb_workouts"</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span>
|
||||
<span class="nt">"picture"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
||||
<span class="nt">"records"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"AS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"FD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">11</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"LD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="s2">"1:01:00"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"MS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"sam"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">],</span>
|
||||
<span class="nt">"sports_list"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="mi">1</span><span class="p">,</span>
|
||||
<span class="mi">4</span><span class="p">,</span>
|
||||
@ -397,7 +474,7 @@
|
||||
<span class="nt">"username"</span><span class="p">:</span> <span class="nt">"sam"</span>
|
||||
<span class="nt">"weekm"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"User profile updated."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"user profile updated"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -412,39 +489,36 @@
|
||||
<li><p><strong>birth_date</strong> (<em>string</em>) – user birth date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li>
|
||||
<li><p><strong>password</strong> (<em>string</em>) – user password</p></li>
|
||||
<li><p><strong>password_conf</strong> (<em>string</em>) – user password confirmation</p></li>
|
||||
<li><p><strong>timezone</strong> (<em>string</em>) – user time zone</p></li>
|
||||
<li><p><strong>weekm</strong> (<em>string</em>) – does week start on Monday?</p></li>
|
||||
<li><p><strong>language</strong> (<em>string</em>) – language preferences</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – User profile updated.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – <ul>
|
||||
<li><p>Invalid payload.</p></li>
|
||||
<li><p>Password and password confirmation don’t match.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user profile updated</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul>
|
||||
<li><p>invalid payload</p></li>
|
||||
<li><p>password: password and password confirmation don’t match</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error. Please try again or contact the administrator.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error, please try again or contact the administrator</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-auth-picture">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/picture</span></code><a class="headerlink" href="#post--api-auth-picture" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-auth-picture">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/picture</span></span><a class="headerlink" href="#post--api-auth-picture" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>update authenticated user picture</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/picture</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -456,7 +530,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"User picture updated."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"user picture updated"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -469,35 +543,35 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – User picture updated.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – <ul>
|
||||
<li><p>Invalid payload.</p></li>
|
||||
<li><p>No file part.</p></li>
|
||||
<li><p>No selected file.</p></li>
|
||||
<li><p>File extension not allowed.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user picture updated</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul>
|
||||
<li><p>invalid payload</p></li>
|
||||
<li><p>no file part</p></li>
|
||||
<li><p>no selected file</p></li>
|
||||
<li><p>file extension not allowed</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14">413 Request Entity Too Large</a> – Error during picture update: file size exceeds 1.0MB.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error during picture update.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14">413 Request Entity Too Large</a></span> – error during picture update: file size exceeds 1.0MB</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error during picture update</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http delete">
|
||||
<dt id="delete--api-auth-picture">
|
||||
<code class="sig-name descname"><span class="pre">DELETE</span> </code><code class="sig-name descname"><span class="pre">/api/auth/picture</span></code><a class="headerlink" href="#delete--api-auth-picture" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="delete--api-auth-picture">
|
||||
<span class="sig-name descname"><span class="pre">DELETE</span> </span><span class="sig-name descname"><span class="pre">/api/auth/picture</span></span><a class="headerlink" href="#delete--api-auth-picture" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>delete authenticated user picture</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/auth/picture</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -512,27 +586,27 @@
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a> – picture deleted</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – picture deleted</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error during picture deletion.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error during picture deletion</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-auth-password-reset-request">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/password/reset-request</span></code><a class="headerlink" href="#post--api-auth-password-reset-request" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-auth-password-reset-request">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/password/reset-request</span></span><a class="headerlink" href="#post--api-auth-password-reset-request" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>handle password reset request</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/password/reset-request</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -544,7 +618,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Password reset request processed."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"password reset request processed"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -557,16 +631,16 @@
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – Password reset request processed.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – Invalid payload.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – password reset request processed</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-auth-password-update">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/password/update</span></code><a class="headerlink" href="#post--api-auth-password-update" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-auth-password-update">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/password/update</span></span><a class="headerlink" href="#post--api-auth-password-update" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>update user password</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/password/update</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -578,7 +652,7 @@
|
||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
|
||||
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Password updated."</span><span class="p">,</span>
|
||||
<span class="nt">"message"</span><span class="p">:</span> <span class="s2">"password updated"</span><span class="p">,</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
@ -593,16 +667,16 @@
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – Password updated.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – Invalid payload.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – Invalid token.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error. Please try again or contact the administrator.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – password updated</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – invalid token, please request a new token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error, please try again or contact the administrator</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -617,7 +691,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Configuration — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Configuration — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="configuration">
|
||||
<section id="configuration">
|
||||
<h1>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http get">
|
||||
<dt id="get--api-config">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/config</span></code><a class="headerlink" href="#get--api-config" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-config">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/config</span></span><a class="headerlink" href="#get--api-config" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get Application config</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/config</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -146,7 +147,8 @@
|
||||
<span class="nt">"max_single_file_size"</span><span class="p">:</span> <span class="mi">1048576</span><span class="p">,</span>
|
||||
<span class="nt">"max_zip_file_size"</span><span class="p">:</span> <span class="mi">10485760</span><span class="p">,</span>
|
||||
<span class="nt">"max_users"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="nt">"map_attribution"</span><span class="p">:</span> <span class="s2">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span>
|
||||
<span class="nt">"map_attribution"</span><span class="p">:</span> <span class="nt">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span>
|
||||
<span class="nt">"version"</span><span class="p">:</span> <span class="s2">"0.5.0"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span>
|
||||
<span class="p">}</span>
|
||||
@ -155,16 +157,16 @@
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error on getting configuration.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error on getting configuration</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http patch">
|
||||
<dt id="patch--api-config">
|
||||
<code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/config</span></code><a class="headerlink" href="#patch--api-config" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="patch--api-config">
|
||||
<span class="sig-name descname"><span class="pre">PATCH</span> </span><span class="sig-name descname"><span class="pre">/api/config</span></span><a class="headerlink" href="#patch--api-config" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Update Application config</p>
|
||||
<p>Authenticated user must be an admin</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
@ -205,29 +207,29 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – invalid payload</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – You do not have permissions.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error on updating configuration.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – you do not have permissions</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error when updating configuration</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-ping">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/ping</span></code><a class="headerlink" href="#get--api-ping" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-ping">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/ping</span></span><a class="headerlink" href="#get--api-ping" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>health check endpoint</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/ping</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -247,13 +249,13 @@
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -268,7 +270,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>API documentation — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>API documentation — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,10 +125,10 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="api-documentation">
|
||||
<section id="api-documentation">
|
||||
<h1>API documentation<a class="headerlink" href="#api-documentation" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">Endpoints:</span></p>
|
||||
<p class="caption" role="heading"><span class="caption-text">Endpoints:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="auth.html">Authentication</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
|
||||
@ -138,7 +139,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="workouts.html">Workouts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -153,7 +154,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Records — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Records — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="records">
|
||||
<section id="records">
|
||||
<h1>Records<a class="headerlink" href="#records" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http get">
|
||||
<dt id="get--api-records">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/records</span></code><a class="headerlink" href="#get--api-records" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-records">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/records</span></span><a class="headerlink" href="#get--api-records" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get all records for authenticated user.</p>
|
||||
<dl class="simple">
|
||||
<dt>Following types of records are available:</dt><dd><ul class="simple">
|
||||
@ -218,16 +219,16 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -235,7 +236,7 @@
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -250,7 +251,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Sports — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Sports — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="sports">
|
||||
<section id="sports">
|
||||
<h1>Sports<a class="headerlink" href="#sports" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http get">
|
||||
<dt id="get--api-sports">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/sports</span></code><a class="headerlink" href="#get--api-sports" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-sports">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/sports</span></span><a class="headerlink" href="#get--api-sports" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get all sports</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/sports</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -252,16 +253,16 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -270,8 +271,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-sports-(int-sport_id)">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/sports/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">sport_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-sports-(int-sport_id)">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/sports/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">sport_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get a sport</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/sports/1</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -345,27 +346,27 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – sport not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – sport not found</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http patch">
|
||||
<dt id="patch--api-sports-(int-sport_id)">
|
||||
<code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/sports/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">sport_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="patch--api-sports-(int-sport_id)">
|
||||
<span class="sig-name descname"><span class="pre">PATCH</span> </span><span class="sig-name descname"><span class="pre">/api/sports/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">sport_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Update a sport
|
||||
Authenticated user must be an admin</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
@ -424,28 +425,28 @@ Authenticated user must be an admin</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – sport updated</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – invalid payload</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – sport updated</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – You do not have permissions.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – sport not found</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – you do not have permissions</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – sport not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -460,7 +461,7 @@ Authenticated user must be an admin</p>
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Statistics — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Statistics — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="statistics">
|
||||
<section id="statistics">
|
||||
<h1>Statistics<a class="headerlink" href="#statistics" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http get">
|
||||
<dt id="get--api-stats-(user_name)-by_time">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/stats/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/by_time</span></code><a class="headerlink" href="#get--api-stats-(user_name)-by_time" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-stats-(user_name)-by_time">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/stats/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/by_time</span></span><a class="headerlink" href="#get--api-stats-(user_name)-by_time" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get workouts statistics for a user by time</p>
|
||||
<p><strong>Example requests</strong>:</p>
|
||||
<ul class="simple">
|
||||
@ -222,20 +223,20 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p>User does not exist.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>user does not exist</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -244,8 +245,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-stats-(user_name)-by_sport">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/stats/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/by_sport</span></code><a class="headerlink" href="#get--api-stats-(user_name)-by_sport" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-stats-(user_name)-by_sport">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/stats/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/by_sport</span></span><a class="headerlink" href="#get--api-stats-(user_name)-by_sport" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get workouts statistics for a user by sport</p>
|
||||
<p><strong>Example requests</strong>:</p>
|
||||
<ul class="simple">
|
||||
@ -325,21 +326,21 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p>User does not exist.</p></li>
|
||||
<li><p>Sport does not exist.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>user does not exist</p></li>
|
||||
<li><p>sport does not exist</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -348,8 +349,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-stats-all">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/stats/all</span></code><a class="headerlink" href="#get--api-stats-all" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-stats-all">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/stats/all</span></span><a class="headerlink" href="#get--api-stats-all" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get all application statistics</p>
|
||||
<p><strong>Example requests</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/stats/all</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -378,25 +379,25 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – You do not have permissions.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – you do not have permissions</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -411,7 +412,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Users — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Users — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="users">
|
||||
<section id="users">
|
||||
<h1>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http get">
|
||||
<dt id="get--api-users">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/users</span></code><a class="headerlink" href="#get--api-users" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-users">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/users</span></span><a class="headerlink" href="#get--api-users" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get all users</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<ul class="simple">
|
||||
@ -165,6 +166,44 @@
|
||||
<span class="nt">"nb_sports"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
|
||||
<span class="nt">"nb_workouts"</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span>
|
||||
<span class="nt">"picture"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
||||
<span class="nt">"records"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"AS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"FD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">11</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"LD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="s2">"1:01:00"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"MS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">],</span>
|
||||
<span class="nt">"sports_list"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="mi">1</span><span class="p">,</span>
|
||||
<span class="mi">4</span><span class="p">,</span>
|
||||
@ -188,6 +227,7 @@
|
||||
<span class="nt">"nb_sports"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="nt">"nb_workouts"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="nt">"picture"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
||||
<span class="nt">"records"</span><span class="p">:</span> <span class="p">[],</span>
|
||||
<span class="nt">"sports_list"</span><span class="p">:</span> <span class="p">[],</span>
|
||||
<span class="nt">"timezone"</span><span class="p">:</span> <span class="s2">"Europe/Paris"</span><span class="p">,</span>
|
||||
<span class="nt">"total_distance"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
@ -218,16 +258,16 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -236,8 +276,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-users-(user_name)">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-users-(user_name)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-users-(user_name)">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/users/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-users-(user_name)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get single user details</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/users/admin</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -263,6 +303,44 @@
|
||||
<span class="nt">"nb_sports"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
|
||||
<span class="nt">"nb_workouts"</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span>
|
||||
<span class="nt">"picture"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
||||
<span class="nt">"records"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"AS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"FD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">11</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"LD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="s2">"1:01:00"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"MS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">],</span>
|
||||
<span class="nt">"sports_list"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="mi">1</span><span class="p">,</span>
|
||||
<span class="mi">4</span><span class="p">,</span>
|
||||
@ -287,20 +365,20 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p>User does not exist.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>user does not exist</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
@ -309,8 +387,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-users-(user_name)-picture">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/picture</span></code><a class="headerlink" href="#get--api-users-(user_name)-picture" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-users-(user_name)-picture">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/users/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/picture</span></span><a class="headerlink" href="#get--api-users-(user_name)-picture" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>get user picture</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/users/admin/picture</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -330,9 +408,9 @@
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p>User does not exist.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>user does not exist</p></li>
|
||||
<li><p>No picture.</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
@ -342,8 +420,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http patch">
|
||||
<dt id="patch--api-users-(user_name)">
|
||||
<code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-users-(user_name)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="patch--api-users-(user_name)">
|
||||
<span class="sig-name descname"><span class="pre">PATCH</span> </span><span class="sig-name descname"><span class="pre">/api/users/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-users-(user_name)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Update user to add admin rights</p>
|
||||
<p>Only user with admin rights can modify another user</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
@ -370,6 +448,44 @@
|
||||
<span class="nt">"nb_workouts"</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span>
|
||||
<span class="nt">"nb_sports"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
|
||||
<span class="nt">"picture"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
||||
<span class="nt">"records"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"AS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"FD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">11</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"LD"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="s2">"1:01:00"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nt">"id"</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span>
|
||||
<span class="nt">"record_type"</span><span class="p">:</span> <span class="s2">"MS"</span><span class="p">,</span>
|
||||
<span class="nt">"sport_id"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="nt">"user"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
|
||||
<span class="nt">"value"</span><span class="p">:</span> <span class="mi">18</span><span class="p">,</span>
|
||||
<span class="nt">"workout_date"</span><span class="p">:</span> <span class="s2">"Sun, 07 Jul 2019 08:00:00 GMT"</span><span class="p">,</span>
|
||||
<span class="nt">"workout_id"</span><span class="p">:</span> <span class="s2">"hvYBqYBRa7wwXpaStWR4V2"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">],</span>
|
||||
<span class="nt">"sports_list"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="mi">1</span><span class="p">,</span>
|
||||
<span class="mi">4</span><span class="p">,</span>
|
||||
@ -399,32 +515,32 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – You do not have permissions.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p>User does not exist.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – you do not have permissions</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>user does not exist</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http delete">
|
||||
<dt id="delete--api-users-(user_name)">
|
||||
<code class="sig-name descname"><span class="pre">DELETE</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-users-(user_name)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="delete--api-users-(user_name)">
|
||||
<span class="sig-name descname"><span class="pre">DELETE</span> </span><span class="sig-name descname"><span class="pre">/api/users/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-users-(user_name)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Delete a user account</p>
|
||||
<p>A user can only delete his own account</p>
|
||||
<p>An admin can delete all accounts except his account if he’s the only
|
||||
@ -448,34 +564,34 @@ one admin</p>
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a> – user account deleted</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – user account deleted</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – <ul>
|
||||
<li><p>You do not have permissions.</p></li>
|
||||
<li><p>You can not delete your account, no other user has admin rights.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – <ul>
|
||||
<li><p>you do not have permissions</p></li>
|
||||
<li><p>you can not delete your account, no other user has admin rights</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p>User does not exist.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>user does not exist</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error. Please try again or contact the administrator.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error, please try again or contact the administrator</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -490,7 +606,7 @@ one admin</p>
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Workouts — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Workouts — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,11 +125,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="workouts">
|
||||
<section id="workouts">
|
||||
<h1>Workouts<a class="headerlink" href="#workouts" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts</span></code><a class="headerlink" href="#get--api-workouts" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts</span></span><a class="headerlink" href="#get--api-workouts" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get workouts for the authenticated user.</p>
|
||||
<p><strong>Example requests</strong>:</p>
|
||||
<ul class="simple">
|
||||
@ -266,27 +267,27 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-(string-workout_short_id)">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-(string-workout_short_id)">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get an workout</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -360,28 +361,28 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> – You do not have permissions.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – workout not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a></span> – you do not have permissions</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – workout not found</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-(string-workout_short_id)-gpx">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/gpx</span></code><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-(string-workout_short_id)-gpx">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/gpx</span></span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get gpx file for an workout displayed on map with Leaflet</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -410,32 +411,32 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>workout not found</p></li>
|
||||
<li><p>no gpx file for this workout</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-(string-workout_short_id)-chart_data">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/chart_data</span></code><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-(string-workout_short_id)-chart_data">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/chart_data</span></span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get chart data from an workout gpx file, to display it with Recharts</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -483,32 +484,32 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – <ul>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul>
|
||||
<li><p>workout not found</p></li>
|
||||
<li><p>no gpx file for this workout</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/chart_data/segment/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">segment_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/chart_data/segment/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">segment_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get chart data from an workout gpx file, to display it with Recharts</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart/segment/0</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -557,29 +558,29 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – no gpx file for this workout</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – no gpx file for this workout</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – workout not found</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – workout not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/gpx/segment/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">segment_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/gpx/segment/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">segment_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get gpx file for an workout segment displayed on map with Leaflet</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx/segment/0</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -609,29 +610,29 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – no gpx file for this workout</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – no gpx file for this workout</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – workout not found</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – workout not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-map-(map_id)">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/map/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">map_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-map-(map_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-map-(map_id)">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/map/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">map_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-map-(map_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get map image for workouts with gpx</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/map/fa33f4d996844a5c73ecd1ae24456ab8?1563529507772</span>
|
||||
@ -651,23 +652,23 @@
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – success</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – map does not exist</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – map does not exist</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http get">
|
||||
<dt id="get--api-workouts-map_tile-(s)-(z)-(x)-(y).png">
|
||||
<code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/map_tile/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">s</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">z</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">y</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">.png</span></code><a class="headerlink" href="#get--api-workouts-map_tile-(s)-(z)-(x)-(y).png" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="get--api-workouts-map_tile-(s)-(z)-(x)-(y).png">
|
||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/map_tile/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">s</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">z</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">y</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">.png</span></span><a class="headerlink" href="#get--api-workouts-map_tile-(s)-(z)-(x)-(y).png" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get map tile from tile server.</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/map_tile/c/13/4109/2930.png</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -692,8 +693,8 @@
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-workouts">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/workouts</span></code><a class="headerlink" href="#post--api-workouts" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-workouts">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/workouts</span></span><a class="headerlink" href="#post--api-workouts" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Post an workout with a gpx file</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/workouts/</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -793,35 +794,35 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> – workout created</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – <ul>
|
||||
<li><p>Invalid payload.</p></li>
|
||||
<li><p>No file part.</p></li>
|
||||
<li><p>No selected file.</p></li>
|
||||
<li><p>File extension not allowed.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – workout created</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul>
|
||||
<li><p>invalid payload</p></li>
|
||||
<li><p>no file part</p></li>
|
||||
<li><p>no selected file</p></li>
|
||||
<li><p>file extension not allowed</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14">413 Request Entity Too Large</a> – Error during picture update: file size exceeds 1.0MB.</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14">413 Request Entity Too Large</a></span> – error during picture update: file size exceeds 1.0MB</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http post">
|
||||
<dt id="post--api-workouts-no_gpx">
|
||||
<code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/no_gpx</span></code><a class="headerlink" href="#post--api-workouts-no_gpx" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="post--api-workouts-no_gpx">
|
||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/no_gpx</span></span><a class="headerlink" href="#post--api-workouts-no_gpx" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Post an workout without gpx file</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/workouts/no_gpx</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -925,28 +926,28 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> – workout created</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – invalid payload</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – workout created</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http patch">
|
||||
<dt id="patch--api-workouts-(string-workout_short_id)">
|
||||
<code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="patch--api-workouts-(string-workout_short_id)">
|
||||
<span class="sig-name descname"><span class="pre">PATCH</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Update an workout</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">PATCH</span> <span class="nn">/api/workouts/1</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -1054,29 +1055,29 @@
|
||||
</dd>
|
||||
<dt class="field-odd">Request Headers</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Status Codes</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> – workout updated</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> – invalid payload</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – workout updated</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – workout not found</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – </p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – workout not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – </p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="http delete">
|
||||
<dt id="delete--api-workouts-(string-workout_short_id)">
|
||||
<code class="sig-name descname"><span class="pre">DELETE</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object http" id="delete--api-workouts-(string-workout_short_id)">
|
||||
<span class="sig-name descname"><span class="pre">DELETE</span> </span><span class="sig-name descname"><span class="pre">/api/workouts/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Delete an workout</p>
|
||||
<p><strong>Example request</strong>:</p>
|
||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
||||
@ -1097,26 +1098,26 @@
|
||||
</dd>
|
||||
<dt class="field-even">Request Headers</dt>
|
||||
<dd class="field-even"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> – OAuth 2.0 Bearer Token</p></li>
|
||||
<li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-odd">Status Codes</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a> – workout deleted</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> – <ul>
|
||||
<li><p>Provide a valid auth token.</p></li>
|
||||
<li><p>Signature expired. Please log in again.</p></li>
|
||||
<li><p>Invalid token. Please log in again.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – workout deleted</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
|
||||
<li><p>provide a valid auth token</p></li>
|
||||
<li><p>signature expired, please log in again</p></li>
|
||||
<li><p>invalid token, please log in again</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> – workout not found</p></li>
|
||||
<li><p><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> – Error. Please try again or contact the administrator.</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – workout not found</p></li>
|
||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error, please try again or contact the administrator</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -1131,7 +1132,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Change log — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Change log — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -38,7 +39,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -76,138 +77,148 @@
|
||||
role="menu"
|
||||
aria-labelledby="dLabelLocalToc"><ul>
|
||||
<li><a class="reference internal" href="#">Change log</a><ul>
|
||||
<li><a class="reference internal" href="#version-0-4-9-2021-07-16">Version 0.4.9 (2021/07/16)</a><ul>
|
||||
<li><a class="reference internal" href="#new-features">New Features</a></li>
|
||||
<li><a class="reference internal" href="#version-0-5-0-unreleased">Version 0.5.0 (unreleased)</a><ul>
|
||||
<li><a class="reference internal" href="#issues-closed">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#new-features">New Features</a></li>
|
||||
<li><a class="reference internal" href="#bugs-fixed">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#misc">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#pull-requests">Pull Requests</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-9-2021-07-16">Version 0.4.9 (2021/07/16)</a><ul>
|
||||
<li><a class="reference internal" href="#id1">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id2">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id3">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-8-2021-07-03">Version 0.4.8 (2021/07/03)</a><ul>
|
||||
<li><a class="reference internal" href="#id1">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id2">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id4">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id5">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-7-2021-04-07">Version 0.4.7 (2021/04/07)</a><ul>
|
||||
<li><a class="reference internal" href="#id3">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id4">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id6">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id7">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#misc">Misc</a></li>
|
||||
<li><a class="reference internal" href="#id8">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-6-2021-02-21">Version 0.4.6 (2021/02/21)</a><ul>
|
||||
<li><a class="reference internal" href="#id5">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id6">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id9">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id10">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-5-2021-02-17">Version 0.4.5 (2021/02/17)</a><ul>
|
||||
<li><a class="reference internal" href="#id7">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id8">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id11">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id12">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-4-2021-01-31">Version 0.4.4 (2021/01/31)</a><ul>
|
||||
<li><a class="reference internal" href="#id9">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id10">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id13">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id14">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id11">Misc</a></li>
|
||||
<li><a class="reference internal" href="#id15">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-3-2021-01-10">Version 0.4.3 (2021/01/10)</a><ul>
|
||||
<li><a class="reference internal" href="#id12">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id13">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id14">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id16">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id17">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id18">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-2-2021-01-03">Version 0.4.2 (2021/01/03)</a><ul>
|
||||
<li><a class="reference internal" href="#id15">Misc</a></li>
|
||||
<li><a class="reference internal" href="#id19">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-1-2020-12-31">Version 0.4.1 (2020/12/31)</a><ul>
|
||||
<li><a class="reference internal" href="#id16">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id17">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-0-fittrackee-on-pypi-2020-09-19">Version 0.4.0 - FitTrackee on PyPI (2020/09/19)</a><ul>
|
||||
<li><a class="reference internal" href="#id18">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id19">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-3-0-administration-2020-07-15">Version 0.3.0 - Administration (2020/07/15)</a><ul>
|
||||
<li><a class="reference internal" href="#id20">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id21">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-4-0-fittrackee-on-pypi-2020-09-19">Version 0.4.0 - FitTrackee on PyPI (2020/09/19)</a><ul>
|
||||
<li><a class="reference internal" href="#id22">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id23">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-3-0-administration-2020-07-15">Version 0.3.0 - Administration (2020/07/15)</a><ul>
|
||||
<li><a class="reference internal" href="#id24">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id25">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-2-5-fix-and-improvements-2020-01-31">Version 0.2.5 - Fix and improvements (2020/01/31)</a><ul>
|
||||
<li><a class="reference internal" href="#id22">Misc</a></li>
|
||||
<li><a class="reference internal" href="#id26">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-2-4-minor-fix-2020-01-30">Version 0.2.4 - Minor fix (2020/01/30)</a><ul>
|
||||
<li><a class="reference internal" href="#id23">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id24">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id27">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id28">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-2-3-fittrackee-available-in-french-2019-12-29">Version 0.2.3 - FitTrackee available in French (2019/12/29)</a><ul>
|
||||
<li><a class="reference internal" href="#id25">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id26">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id27">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id29">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id30">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id31">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-2-2-statistics-fix-2019-09-23">Version 0.2.2 - Statistics fix (2019/09/23)</a><ul>
|
||||
<li><a class="reference internal" href="#id28">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id29">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id32">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id33">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-2-1-fix-and-improvements-2019-09-01">Version 0.2.1 - Fix and improvements (2019/09/01)</a><ul>
|
||||
<li><a class="reference internal" href="#id30">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id31">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id32">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id34">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id35">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id36">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id33">Misc</a></li>
|
||||
<li><a class="reference internal" href="#id37">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-2-0-statistics-2019-07-07">Version 0.2.0 - Statistics (2019/07/07)</a><ul>
|
||||
<li><a class="reference internal" href="#id34">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id35">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id38">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id39">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id36">Misc</a></li>
|
||||
<li><a class="reference internal" href="#id40">Misc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-1-1-fix-and-improvements-2019-02-07">Version 0.1.1 - Fix and improvements (2019/02/07)</a><ul>
|
||||
<li><a class="reference internal" href="#id37">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id38">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id39">Bugs Fixed</a></li>
|
||||
<li><a class="reference internal" href="#id41">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id42">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id43">Bugs Fixed</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#version-0-1-0-first-release-2018-07-04">Version 0.1.0 - First release 🎉 (2018-07-04)</a><ul>
|
||||
<li><a class="reference internal" href="#id40">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id41">New Features</a></li>
|
||||
<li><a class="reference internal" href="#id44">Issues Closed</a><ul>
|
||||
<li><a class="reference internal" href="#id45">New Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -257,151 +268,182 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="change-log">
|
||||
<section id="change-log">
|
||||
<h1>Change log<a class="headerlink" href="#change-log" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="version-0-4-9-2021-07-16">
|
||||
<section id="version-0-5-0-unreleased">
|
||||
<h2>Version 0.5.0 (unreleased)<a class="headerlink" href="#version-0-5-0-unreleased" title="Permalink to this headline">¶</a></h2>
|
||||
<section id="issues-closed">
|
||||
<h3>Issues Closed<a class="headerlink" href="#issues-closed" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="new-features">
|
||||
<h4>New Features<a class="headerlink" href="#new-features" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/91">#91</a> - Display elevation chart with min and max altitude of workout</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/18">#18</a> - Better UI</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="bugs-fixed">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#bugs-fixed" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/95">#95</a> - Some workouts seem to be missing on statistics chart</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="misc">
|
||||
<h4>Misc<a class="headerlink" href="#misc" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/104">#104</a> - Switch to AGPLv3 license</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="pull-requests">
|
||||
<h3>Pull Requests<a class="headerlink" href="#pull-requests" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/pull/93">#84/#93</a> - Add elevation data and new sports</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-9-2021-07-16">
|
||||
<h2>Version 0.4.9 (2021/07/16)<a class="headerlink" href="#version-0-4-9-2021-07-16" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="new-features">
|
||||
<h3>New Features<a class="headerlink" href="#new-features" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id1">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id2">
|
||||
<h4>New Features<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/83">#83</a> - allow using configured tile server to generate static maps<br /><strong>Note</strong>: to keep using the default tile server, set environment variable <code class="docutils literal notranslate"><span class="pre">DEFAULT_STATICMAP</span></code> to <code class="docutils literal notranslate"><span class="pre">True</span></code></p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/81">#81</a> - display remaining characters in textarea</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="issues-closed">
|
||||
<h3>Issues Closed<a class="headerlink" href="#issues-closed" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="bugs-fixed">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#bugs-fixed" title="Permalink to this headline">¶</a></h4>
|
||||
</section>
|
||||
<section id="id3">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/82">#82</a> - a user can not modify his birth day</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/80">#80</a> - can not save notes with control characters</p></li>
|
||||
</ul>
|
||||
<p>In this release 4 issue were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-8-2021-07-03">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-8-2021-07-03">
|
||||
<h2>Version 0.4.8 (2021/07/03)<a class="headerlink" href="#version-0-4-8-2021-07-03" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id1">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id2">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id4">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id5">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/79">#79</a> - Fails to start after make rebuild</p></li>
|
||||
</ul>
|
||||
<p>In this release 1 issue was closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-7-2021-04-07">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-7-2021-04-07">
|
||||
<h2>Version 0.4.7 (2021/04/07)<a class="headerlink" href="#version-0-4-7-2021-04-07" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id3">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id4">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id6">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id7">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/75">#75</a> - Workouts on the same day are not displayed in right order</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="misc">
|
||||
<h3>Misc<a class="headerlink" href="#misc" title="Permalink to this headline">¶</a></h3>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id8">
|
||||
<h3>Misc<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Update Python and Javascript dependencies<br /><strong>IMPORTANT</strong>: Due to <a class="reference external" href="https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-3687655465c25a39b968b4f5f6e9170b">SQLAlchemy update (1.4+)</a>, engine URLs starting with <code class="docutils literal notranslate"><span class="pre">postgres://</span></code> are no longer supported. Please update <code class="docutils literal notranslate"><span class="pre">DATABASE_URL</span></code> with <code class="docutils literal notranslate"><span class="pre">postgresql://</span></code>.</p></li>
|
||||
</ul>
|
||||
<p>In this release 1 issue was closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-6-2021-02-21">
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-6-2021-02-21">
|
||||
<h2>Version 0.4.6 (2021/02/21)<a class="headerlink" href="#version-0-4-6-2021-02-21" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id5">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id6">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id9">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id10">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/72">#72</a> - Error message when file exceeding size is incorrect</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/71">#71</a> - max size or max number of files must be greater than 0</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/70">#70</a> - max size for an archive must not be less than uploaded files max size</p></li>
|
||||
</ul>
|
||||
<p>In this release 3 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-5-2021-02-17">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-5-2021-02-17">
|
||||
<h2>Version 0.4.5 (2021/02/17)<a class="headerlink" href="#version-0-4-5-2021-02-17" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id7">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id8">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id11">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id12">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/66">#66</a> - invalid gpx limit used when importing zip archive</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/64">#64</a> - Only 50 workouts per month shown in calendar</p></li>
|
||||
</ul>
|
||||
<p>In this release 2 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-4-2021-01-31">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-4-2021-01-31">
|
||||
<h2>Version 0.4.4 (2021/01/31)<a class="headerlink" href="#version-0-4-4-2021-01-31" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id9">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id10">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id13">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id14">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/62">#62</a> - Error when sending reset password email</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id11">
|
||||
<h3>Misc<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h3>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id15">
|
||||
<h3>Misc<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Refactoring before introducing new features.</p></li>
|
||||
<li><p>Add docker files for evaluation purposes.</p></li>
|
||||
</ul>
|
||||
<p>In this release 1 issue was closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-3-2021-01-10">
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-3-2021-01-10">
|
||||
<h2>Version 0.4.3 (2021/01/10)<a class="headerlink" href="#version-0-4-3-2021-01-10" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id12">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id13">
|
||||
<h4>New Features<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id16">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id17">
|
||||
<h4>New Features<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/58">#58</a> - Standardize terms used for workouts<br /><strong>Note:</strong> Database model, upload directory for workouts and API endpoints are also updated.</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id14">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h4>
|
||||
</section>
|
||||
<section id="id18">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/59">#59</a> - No message displayed on uploading image error</p></li>
|
||||
</ul>
|
||||
<p>In this release 2 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-2-2021-01-03">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-2-2021-01-03">
|
||||
<h2>Version 0.4.2 (2021/01/03)<a class="headerlink" href="#version-0-4-2-2021-01-03" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id15">
|
||||
<h3>Misc<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id19">
|
||||
<h3>Misc<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h3>
|
||||
<p>No new features in this release, only some refactorings before introducing
|
||||
new features.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-1-2020-12-31">
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-1-2020-12-31">
|
||||
<h2>Version 0.4.1 (2020/12/31)<a class="headerlink" href="#version-0-4-1-2020-12-31" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id16">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id17">
|
||||
<h4>New Features<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id20">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id21">
|
||||
<h4>New Features<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/57">#57</a> - Use uuid for activities</p></li>
|
||||
</ul>
|
||||
<p>In this release 1 issue was closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-4-0-fittrackee-on-pypi-2020-09-19">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-4-0-fittrackee-on-pypi-2020-09-19">
|
||||
<h2>Version 0.4.0 - FitTrackee on PyPI (2020/09/19)<a class="headerlink" href="#version-0-4-0-fittrackee-on-pypi-2020-09-19" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This version introduces some major changes:</p>
|
||||
<ul class="simple">
|
||||
@ -409,42 +451,42 @@ new features.</p>
|
||||
<li><p>It’s now possible to change the tile provider for maps. The default tile server is now <strong>OpenStreetMap</strong>’s standard tile layer (replacing <strong>ThunderForest Outdoors</strong>),
|
||||
see <a class="reference external" href="https://samr1.github.io/FitTrackee/installation.html#map-tile-server">Map tile server in documentation</a>.</p></li>
|
||||
</ul>
|
||||
<div class="section" id="id18">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id19">
|
||||
<h4>New Features<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id22">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id23">
|
||||
<h4>New Features<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/54">#54</a> - Tile server can be changed</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/53">#53</a> - Simplify FitTrackee installation</p></li>
|
||||
</ul>
|
||||
<p>In this release 2 issue were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-3-0-administration-2020-07-15">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-3-0-administration-2020-07-15">
|
||||
<h2>Version 0.3.0 - Administration (2020/07/15)<a class="headerlink" href="#version-0-3-0-administration-2020-07-15" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This version introduces some major changes:</p>
|
||||
<ul class="simple">
|
||||
<li><p>FitTrackee administration is now available (see <a class="reference external" href="https://samr1.github.io/FitTrackee/features.html#administration">documentation</a>)<br />⚠️ Warning: some application parameters move from environment variables to database (see <a class="reference external" href="https://samr1.github.io/FitTrackee/installation.html#environment-variables">installation</a>).</p></li>
|
||||
<li><p>in order to send emails, Redis is now a mandatory dependency</p></li>
|
||||
</ul>
|
||||
<div class="section" id="id20">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id21">
|
||||
<h4>New Features<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id24">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id25">
|
||||
<h4>New Features<a class="headerlink" href="#id25" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/50">#50</a> - A user can reset his password</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/17">#17</a> - A user can delete his account</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/15">#15</a> - Complete the administration</p></li>
|
||||
</ul>
|
||||
<p>In this release 3 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-2-5-fix-and-improvements-2020-01-31">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-2-5-fix-and-improvements-2020-01-31">
|
||||
<h2>Version 0.2.5 - Fix and improvements (2020/01/31)<a class="headerlink" href="#version-0-2-5-fix-and-improvements-2020-01-31" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id22">
|
||||
<h3>Misc<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id26">
|
||||
<h3>Misc<a class="headerlink" href="#id26" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This version contains minor fix and improvements on client side:</p>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/commit/4c3fc343d51b9c27d3ebab71df648bcf7d7bae59">4c3fc34</a> - empty user data on logout</p></li>
|
||||
@ -453,61 +495,61 @@ see <a class="reference external" href="https://samr1.github.io/FitTrackee/insta
|
||||
<a class="reference external" href="https://github.com/SamR1/FitTrackee/commit/2e1ee2c7a1456eb2fe0c0255959c695cc7908975">2e1ee2c</a> -
|
||||
add URL interceptors to simplify routes definition</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-2-4-minor-fix-2020-01-30">
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-2-4-minor-fix-2020-01-30">
|
||||
<h2>Version 0.2.4 - Minor fix (2020/01/30)<a class="headerlink" href="#version-0-2-4-minor-fix-2020-01-30" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id23">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id24">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id27">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id27" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id28">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id28" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/47">#47</a> - timezone drop-down is not displayed correctly</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/46">#46</a> - calendar cannot display more than 5 or 6 activities on the same day</p></li>
|
||||
</ul>
|
||||
<p>In this release 2 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-2-3-fittrackee-available-in-french-2019-12-29">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-2-3-fittrackee-available-in-french-2019-12-29">
|
||||
<h2>Version 0.2.3 - FitTrackee available in French (2019/12/29)<a class="headerlink" href="#version-0-2-3-fittrackee-available-in-french-2019-12-29" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id25">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id25" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id26">
|
||||
<h4>New Features<a class="headerlink" href="#id26" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id29">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id29" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id30">
|
||||
<h4>New Features<a class="headerlink" href="#id30" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/43">#43</a> - Display weekend days with a different background color on calendar</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/40">#40</a> - Localize FitTrackee (i18n)</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id27">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id27" title="Permalink to this headline">¶</a></h4>
|
||||
</section>
|
||||
<section id="id31">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id31" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/44">#44</a> - Cannot edit an activity that does not have a gpx file</p></li>
|
||||
</ul>
|
||||
<p>In this release 3 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-2-2-statistics-fix-2019-09-23">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-2-2-statistics-fix-2019-09-23">
|
||||
<h2>Version 0.2.2 - Statistics fix (2019/09/23)<a class="headerlink" href="#version-0-2-2-statistics-fix-2019-09-23" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id28">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id28" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id29">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id29" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id32">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id32" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id33">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id33" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/41">#41</a> - User statistics are incorrect</p></li>
|
||||
</ul>
|
||||
<p>In this release 1 issue was closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-2-1-fix-and-improvements-2019-09-01">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-2-1-fix-and-improvements-2019-09-01">
|
||||
<h2>Version 0.2.1 - Fix and improvements (2019/09/01)<a class="headerlink" href="#version-0-2-1-fix-and-improvements-2019-09-01" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id30">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id30" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id31">
|
||||
<h4>New Features<a class="headerlink" href="#id31" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id34">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id34" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id35">
|
||||
<h4>New Features<a class="headerlink" href="#id35" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/4">#4</a> - Show points on the map when mouse over the chart</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/14">#14</a> - Display segments informations</p></li>
|
||||
@ -517,54 +559,54 @@ add URL interceptors to simplify routes definition</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/33">#33</a> - Add file size limit on file upload</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/37">#37</a> - Display map on activities list</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id32">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id32" title="Permalink to this headline">¶</a></h4>
|
||||
</section>
|
||||
<section id="id36">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id36" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/34">#34</a> - Weather is not displayed anymore</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id33">
|
||||
<h3>Misc<a class="headerlink" href="#id33" title="Permalink to this headline">¶</a></h3>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id37">
|
||||
<h3>Misc<a class="headerlink" href="#id37" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><a class="reference external" href="https://poetry.eustace.io/">Poetry</a></strong> replaces <strong><a class="reference external" href="https://docs.pipenv.org">pipenv</a></strong> for Python packages management</p></li>
|
||||
</ul>
|
||||
<p>In this release 8 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-2-0-statistics-2019-07-07">
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-2-0-statistics-2019-07-07">
|
||||
<h2>Version 0.2.0 - Statistics (2019/07/07)<a class="headerlink" href="#version-0-2-0-statistics-2019-07-07" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id34">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id34" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id35">
|
||||
<h4>New Features<a class="headerlink" href="#id35" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id38">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id38" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id39">
|
||||
<h4>New Features<a class="headerlink" href="#id39" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/Fittrackee/issues/13">#13</a> - Detailed statistics</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id36">
|
||||
<h3>Misc<a class="headerlink" href="#id36" title="Permalink to this headline">¶</a></h3>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id40">
|
||||
<h3>Misc<a class="headerlink" href="#id40" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Update dependencies</p></li>
|
||||
</ul>
|
||||
<p>In this release 1 issue was closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-1-1-fix-and-improvements-2019-02-07">
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-1-1-fix-and-improvements-2019-02-07">
|
||||
<h2>Version 0.1.1 - Fix and improvements (2019/02/07)<a class="headerlink" href="#version-0-1-1-fix-and-improvements-2019-02-07" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id37">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id37" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id38">
|
||||
<h4>New Features<a class="headerlink" href="#id38" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id41">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id41" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id42">
|
||||
<h4>New Features<a class="headerlink" href="#id42" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/25">#25</a> - Display records on calendar</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/22">#22</a> - Add a total on current month statistics</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id39">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id39" title="Permalink to this headline">¶</a></h4>
|
||||
</section>
|
||||
<section id="id43">
|
||||
<h4>Bugs Fixed<a class="headerlink" href="#id43" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/31">#31</a> - Use moving duration for stats</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/29">#29</a> - Pause duration calculation with segments</p></li>
|
||||
@ -573,10 +615,10 @@ add URL interceptors to simplify routes definition</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/24">#24</a> - Some distances are not displayed correctly on current month statistics</p></li>
|
||||
</ul>
|
||||
<p>In this release 7 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="version-0-1-0-first-release-2018-07-04">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="version-0-1-0-first-release-2018-07-04">
|
||||
<h2>Version 0.1.0 - First release 🎉 (2018-07-04)<a class="headerlink" href="#version-0-1-0-first-release-2018-07-04" title="Permalink to this headline">¶</a></h2>
|
||||
<p><strong>Features:</strong></p>
|
||||
<ul class="simple">
|
||||
@ -613,10 +655,10 @@ add URL interceptors to simplify routes definition</p></li>
|
||||
<li><p>no administration for now</p></li>
|
||||
</ul>
|
||||
<p>➡️ more informations: see <a class="reference external" href="https://samr1.github.io/FitTrackee/">documentation</a> and <a class="reference external" href="https://github.com/SamR1/FitTrackee/issues">current issues</a></p>
|
||||
<div class="section" id="id40">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id40" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="id41">
|
||||
<h4>New Features<a class="headerlink" href="#id41" title="Permalink to this headline">¶</a></h4>
|
||||
<section id="id44">
|
||||
<h3>Issues Closed<a class="headerlink" href="#id44" title="Permalink to this headline">¶</a></h3>
|
||||
<section id="id45">
|
||||
<h4>New Features<a class="headerlink" href="#id45" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/11">#11</a> - Timezone support</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/10">#10</a> - Add a note to an activity</p></li>
|
||||
@ -626,10 +668,10 @@ add URL interceptors to simplify routes definition</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/SamR1/FitTrackee/issues/2">#2</a> - Calendar to view activities</p></li>
|
||||
</ul>
|
||||
<p>In this release 6 issues were closed.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -644,7 +686,7 @@ add URL interceptors to simplify routes definition</p></li>
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Features — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Features — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -138,11 +139,11 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="features">
|
||||
<section id="features">
|
||||
<h1>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="list">
|
||||
<section id="list">
|
||||
<h2>List<a class="headerlink" href="#list" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="administration">
|
||||
<section id="administration">
|
||||
<h3>Administration<a class="headerlink" href="#administration" title="Permalink to this headline">¶</a></h3>
|
||||
<p>(<em>new in 0.3.0</em>)</p>
|
||||
<ul>
|
||||
@ -172,24 +173,29 @@
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="account">
|
||||
</section>
|
||||
<section id="account">
|
||||
<h3>Account<a class="headerlink" href="#account" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>A user can create, update and deleted his account</p></li>
|
||||
<li><p>A user can reset his password (<em>new in 0.3.0</em>)</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="workouts">
|
||||
</section>
|
||||
<section id="workouts">
|
||||
<h3>Workouts<a class="headerlink" href="#workouts" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>6 sports are supported:</dt><dd><ul>
|
||||
<dt>11 sports are supported:</dt><dd><ul>
|
||||
<li><p>Cycling (Sport)</p></li>
|
||||
<li><p>Cycling (Transport)</p></li>
|
||||
<li><p>Hiking</p></li>
|
||||
<li><p>Montain Biking</p></li>
|
||||
<li><p>Mountain Biking</p></li>
|
||||
<li><p>Mountain Biking (Electric) (<strong>new in 0.5.0</strong>)</p></li>
|
||||
<li><p>Rowing (<strong>new in 0.5.0</strong>)</p></li>
|
||||
<li><p>Running</p></li>
|
||||
<li><p>Skiing (Alpine) (<strong>new in 0.5.0</strong>)</p></li>
|
||||
<li><p>Skiing (Cross Country) (<strong>new in 0.5.0</strong>)</p></li>
|
||||
<li><p>Trail (<strong>new in 0.5.0</strong>)</p></li>
|
||||
<li><p>Walking</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -216,43 +222,46 @@
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>for now, only the owner of the workout can see it.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="translations">
|
||||
</section>
|
||||
<section id="translations">
|
||||
<h3>Translations<a class="headerlink" href="#translations" title="Permalink to this headline">¶</a></h3>
|
||||
<p>FitTrackee is available in English and French (which can be saved in the user settings).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="dashboard">
|
||||
</section>
|
||||
</section>
|
||||
<section id="dashboard">
|
||||
<h2>Dashboard<a class="headerlink" href="#dashboard" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="figure align-default">
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Dashboard" src="_images/fittrackee_screenshot-01.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="workout-detail">
|
||||
</figure>
|
||||
</section>
|
||||
<section id="workout-detail">
|
||||
<h2>Workout detail<a class="headerlink" href="#workout-detail" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="figure align-default">
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Workout" src="_images/fittrackee_screenshot-02.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="workouts-list">
|
||||
</figure>
|
||||
</section>
|
||||
<section id="workouts-list">
|
||||
<h2>Workouts list<a class="headerlink" href="#workouts-list" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="figure align-default">
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Workouts" src="_images/fittrackee_screenshot-03.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="statistics">
|
||||
</figure>
|
||||
</section>
|
||||
<section id="statistics">
|
||||
<h2>Statistics<a class="headerlink" href="#statistics" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="figure align-default">
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Statistics" src="_images/fittrackee_screenshot-04.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id1">
|
||||
</figure>
|
||||
</section>
|
||||
<section id="id1">
|
||||
<h2>Administration<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="figure align-default">
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Administration" src="_images/fittrackee_screenshot-05.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</figure>
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Sports Administration" src="_images/fittrackee_screenshot-06.png" />
|
||||
</figure>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -267,7 +276,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Index — FitTrackee 0.4.9
|
||||
<title>Index — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -37,7 +37,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -144,18 +144,6 @@
|
||||
<li><a href="installation.html#envvar-MAP_ATTRIBUTION">MAP_ATTRIBUTION</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-PORT">PORT</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REACT_APP_ALLOW_REGISTRATION">REACT_APP_ALLOW_REGISTRATION</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REACT_APP_API_URL">REACT_APP_API_URL</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REACT_APP_GPX_LIMIT_IMPORT">REACT_APP_GPX_LIMIT_IMPORT</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REACT_APP_MAX_SINGLE_FILE_SIZE">REACT_APP_MAX_SINGLE_FILE_SIZE</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REACT_APP_MAX_ZIP_FILE_SIZE">REACT_APP_MAX_ZIP_FILE_SIZE</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REACT_APP_THUNDERFOREST_API_KEY">REACT_APP_THUNDERFOREST_API_KEY</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-REDIS_URL">REDIS_URL</a>
|
||||
</li>
|
||||
@ -166,6 +154,8 @@
|
||||
<li><a href="installation.html#envvar-UI_URL">UI_URL</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-UPLOAD_FOLDER">UPLOAD_FOLDER</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-VUE_APP_API_URL">VUE_APP_API_URL</a>
|
||||
</li>
|
||||
<li><a href="installation.html#envvar-WEATHER_API_KEY">WEATHER_API_KEY</a>
|
||||
</li>
|
||||
@ -189,7 +179,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>HTTP Routing Table — FitTrackee 0.4.9
|
||||
<title>HTTP Routing Table — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -44,7 +44,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -320,7 +320,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>FitTrackee — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>FitTrackee — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -38,7 +39,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -120,7 +121,7 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="fittrackee">
|
||||
<section id="fittrackee">
|
||||
<h1>FitTrackee<a class="headerlink" href="#fittrackee" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="line-block">
|
||||
<div class="line">This web application allows you to track your outdoor activities (workouts)
|
||||
@ -142,11 +143,11 @@ Map</a>.</div>
|
||||
<div class="line"><strong>Still under heavy development (some features may be unstable).</strong></div>
|
||||
<div class="line">(see <a class="reference external" href="https://github.com/SamR1/FitTrackee/issues">issues</a> for more information)</div>
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<figure class="align-default">
|
||||
<img alt="FitTrackee Dashboard" src="_images/fittrackee_screenshot-01.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="table-of-contents">
|
||||
</figure>
|
||||
</section>
|
||||
<section id="table-of-contents">
|
||||
<h1>Table of contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
@ -184,6 +185,7 @@ Map</a>.</div>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Change log</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#version-0-5-0-unreleased">Version 0.5.0 (unreleased)</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#version-0-4-9-2021-07-16">Version 0.4.9 (2021/07/16)</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#version-0-4-8-2021-07-03">Version 0.4.8 (2021/07/03)</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#version-0-4-7-2021-04-07">Version 0.4.7 (2021/04/07)</a></li>
|
||||
@ -207,7 +209,7 @@ Map</a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -222,7 +224,7 @@ Map</a>.</div>
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Installation — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Installation — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -79,7 +80,6 @@
|
||||
<li><a class="reference internal" href="#">Installation</a><ul>
|
||||
<li><a class="reference internal" href="#prerequisites">Prerequisites</a></li>
|
||||
<li><a class="reference internal" href="#environment-variables">Environment variables</a><ul>
|
||||
<li><a class="reference internal" href="#deprecated-variables">Deprecated variables</a></li>
|
||||
<li><a class="reference internal" href="#emails">Emails</a></li>
|
||||
<li><a class="reference internal" href="#map-tile-server">Map tile server</a></li>
|
||||
</ul>
|
||||
@ -105,7 +105,7 @@
|
||||
<li><a class="reference internal" href="#deployment">Deployment</a></li>
|
||||
<li><a class="reference internal" href="#docker">Docker</a><ul>
|
||||
<li><a class="reference internal" href="#id5">Installation</a></li>
|
||||
<li><a class="reference internal" href="#client-development">Client Development</a></li>
|
||||
<li><a class="reference internal" href="#development">Development</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -157,9 +157,9 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="installation">
|
||||
<section id="installation">
|
||||
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1>
|
||||
<p>This application is written in Python (API) and Javascript (client):</p>
|
||||
<p>This application is written in Python (API) and Typescript (client):</p>
|
||||
<ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>API:</dt><dd><ul>
|
||||
@ -174,16 +174,16 @@
|
||||
</li>
|
||||
<li><dl class="simple">
|
||||
<dt>Client:</dt><dd><ul>
|
||||
<li><p>React/Redux</p></li>
|
||||
<li><p>Vue3/Vuex</p></li>
|
||||
<li><p><a class="reference external" href="https://leafletjs.com/">Leaflet</a> to display map</p></li>
|
||||
<li><p><a class="reference external" href="https://github.com/recharts/recharts">Recharts</a> to display charts with elevation and speed</p></li>
|
||||
<li><p><a class="reference external" href="https://www.chartjs.org/">Chart.js</a> to display charts with elevation and speed</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Sports and weather icons are made by <a class="reference external" href="https://www.freepik.com/">Freepik</a> from <a class="reference external" href="https://www.flaticon.com/">www.flaticon.com</a>.</p>
|
||||
<div class="section" id="prerequisites">
|
||||
<section id="prerequisites">
|
||||
<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>PostgreSQL database (10+)</p></li>
|
||||
@ -204,8 +204,8 @@ on Debian and Arch).</div>
|
||||
necessary.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="environment-variables">
|
||||
</section>
|
||||
<section id="environment-variables">
|
||||
<h2>Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
@ -217,8 +217,8 @@ necessary.</div>
|
||||
or the task processing library. They are not all mandatory depending on
|
||||
deployment method.</p>
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-FLASK_APP">
|
||||
<code class="sig-name descname"><span class="pre">FLASK_APP</span></code><a class="headerlink" href="#envvar-FLASK_APP" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-FLASK_APP">
|
||||
<span class="sig-name descname"><span class="pre">FLASK_APP</span></span><a class="headerlink" href="#envvar-FLASK_APP" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="line-block">
|
||||
<div class="line">Name of the module to import at flask run.</div>
|
||||
<div class="line"><code class="docutils literal notranslate"><span class="pre">FLASK_APP</span></code> should contain <code class="docutils literal notranslate"><span class="pre">$(PWD)/fittrackee/__main__.py</span></code> with installation from sources, else <code class="docutils literal notranslate"><span class="pre">fittrackee</span></code>.</div>
|
||||
@ -226,8 +226,8 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-HOST">
|
||||
<code class="sig-name descname"><span class="pre">HOST</span></code><a class="headerlink" href="#envvar-HOST" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-HOST">
|
||||
<span class="sig-name descname"><span class="pre">HOST</span></span><a class="headerlink" href="#envvar-HOST" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p><strong>FitTrackee</strong> host.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
@ -237,8 +237,8 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-PORT">
|
||||
<code class="sig-name descname"><span class="pre">PORT</span></code><a class="headerlink" href="#envvar-PORT" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-PORT">
|
||||
<span class="sig-name descname"><span class="pre">PORT</span></span><a class="headerlink" href="#envvar-PORT" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p><strong>FitTrackee</strong> port.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
@ -248,8 +248,8 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-APP_SETTINGS">
|
||||
<code class="sig-name descname"><span class="pre">APP_SETTINGS</span></code><a class="headerlink" href="#envvar-APP_SETTINGS" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-APP_SETTINGS">
|
||||
<span class="sig-name descname"><span class="pre">APP_SETTINGS</span></span><a class="headerlink" href="#envvar-APP_SETTINGS" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p><strong>FitTrackee</strong> configuration.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
@ -259,14 +259,14 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-APP_SECRET_KEY">
|
||||
<code class="sig-name descname"><span class="pre">APP_SECRET_KEY</span></code><a class="headerlink" href="#envvar-APP_SECRET_KEY" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-APP_SECRET_KEY">
|
||||
<span class="sig-name descname"><span class="pre">APP_SECRET_KEY</span></span><a class="headerlink" href="#envvar-APP_SECRET_KEY" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p><strong>FitTrackee</strong> secret key, must be initialized in production environment.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-APP_WORKERS">
|
||||
<code class="sig-name descname"><span class="pre">APP_WORKERS</span></code><a class="headerlink" href="#envvar-APP_WORKERS" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-APP_WORKERS">
|
||||
<span class="sig-name descname"><span class="pre">APP_WORKERS</span></span><a class="headerlink" href="#envvar-APP_WORKERS" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Number of workers spawned by <strong>Gunicorn</strong>.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
@ -276,8 +276,8 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-APP_LOG">
|
||||
<code class="sig-name descname"><span class="pre">APP_LOG</span></code><a class="headerlink" href="#envvar-APP_LOG" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-APP_LOG">
|
||||
<span class="sig-name descname"><span class="pre">APP_LOG</span></span><a class="headerlink" href="#envvar-APP_LOG" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||
</div>
|
||||
@ -285,8 +285,8 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-UPLOAD_FOLDER">
|
||||
<code class="sig-name descname"><span class="pre">UPLOAD_FOLDER</span></code><a class="headerlink" href="#envvar-UPLOAD_FOLDER" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-UPLOAD_FOLDER">
|
||||
<span class="sig-name descname"><span class="pre">UPLOAD_FOLDER</span></span><a class="headerlink" href="#envvar-UPLOAD_FOLDER" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||
</div>
|
||||
@ -306,8 +306,8 @@ deployment method.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-DATABASE_URL">
|
||||
<code class="sig-name descname"><span class="pre">DATABASE_URL</span></code><a class="headerlink" href="#envvar-DATABASE_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-DATABASE_URL">
|
||||
<span class="sig-name descname"><span class="pre">DATABASE_URL</span></span><a class="headerlink" href="#envvar-DATABASE_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="line-block">
|
||||
<div class="line">Database URL with username and password, must be initialized in production environment.</div>
|
||||
<div class="line">For example in dev environment : <code class="docutils literal notranslate"><span class="pre">postgresql://fittrackee:fittrackee@localhost:5432/fittrackee</span></code></div>
|
||||
@ -322,8 +322,8 @@ engine URL should begin with <cite>postgresql://</cite>.</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-DATABASE_DISABLE_POOLING">
|
||||
<code class="sig-name descname"><span class="pre">DATABASE_DISABLE_POOLING</span></code><a class="headerlink" href="#envvar-DATABASE_DISABLE_POOLING" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-DATABASE_DISABLE_POOLING">
|
||||
<span class="sig-name descname"><span class="pre">DATABASE_DISABLE_POOLING</span></span><a class="headerlink" href="#envvar-DATABASE_DISABLE_POOLING" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||
</div>
|
||||
@ -337,14 +337,14 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-UI_URL">
|
||||
<code class="sig-name descname"><span class="pre">UI_URL</span></code><a class="headerlink" href="#envvar-UI_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-UI_URL">
|
||||
<span class="sig-name descname"><span class="pre">UI_URL</span></span><a class="headerlink" href="#envvar-UI_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p><strong>FitTrackee</strong> URL, needed for links in emails.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-EMAIL_URL">
|
||||
<code class="sig-name descname"><span class="pre">EMAIL_URL</span></code><a class="headerlink" href="#envvar-EMAIL_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-EMAIL_URL">
|
||||
<span class="sig-name descname"><span class="pre">EMAIL_URL</span></span><a class="headerlink" href="#envvar-EMAIL_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.3.0.</span></p>
|
||||
</div>
|
||||
@ -352,8 +352,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-SENDER_EMAIL">
|
||||
<code class="sig-name descname"><span class="pre">SENDER_EMAIL</span></code><a class="headerlink" href="#envvar-SENDER_EMAIL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-SENDER_EMAIL">
|
||||
<span class="sig-name descname"><span class="pre">SENDER_EMAIL</span></span><a class="headerlink" href="#envvar-SENDER_EMAIL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.3.0.</span></p>
|
||||
</div>
|
||||
@ -361,8 +361,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REDIS_URL">
|
||||
<code class="sig-name descname"><span class="pre">REDIS_URL</span></code><a class="headerlink" href="#envvar-REDIS_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-REDIS_URL">
|
||||
<span class="sig-name descname"><span class="pre">REDIS_URL</span></span><a class="headerlink" href="#envvar-REDIS_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.3.0.</span></p>
|
||||
</div>
|
||||
@ -375,8 +375,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-WORKERS_PROCESSES">
|
||||
<code class="sig-name descname"><span class="pre">WORKERS_PROCESSES</span></code><a class="headerlink" href="#envvar-WORKERS_PROCESSES" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-WORKERS_PROCESSES">
|
||||
<span class="sig-name descname"><span class="pre">WORKERS_PROCESSES</span></span><a class="headerlink" href="#envvar-WORKERS_PROCESSES" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.3.0.</span></p>
|
||||
</div>
|
||||
@ -384,8 +384,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-TILE_SERVER_URL">
|
||||
<code class="sig-name descname"><span class="pre">TILE_SERVER_URL</span></code><a class="headerlink" href="#envvar-TILE_SERVER_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-TILE_SERVER_URL">
|
||||
<span class="sig-name descname"><span class="pre">TILE_SERVER_URL</span></span><a class="headerlink" href="#envvar-TILE_SERVER_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||
</div>
|
||||
@ -401,8 +401,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-MAP_ATTRIBUTION">
|
||||
<code class="sig-name descname"><span class="pre">MAP_ATTRIBUTION</span></code><a class="headerlink" href="#envvar-MAP_ATTRIBUTION" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-MAP_ATTRIBUTION">
|
||||
<span class="sig-name descname"><span class="pre">MAP_ATTRIBUTION</span></span><a class="headerlink" href="#envvar-MAP_ATTRIBUTION" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||
</div>
|
||||
@ -415,8 +415,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-DEFAULT_STATICMAP">
|
||||
<span id="envvar-DEFAULT_STATICMAP 🆕"></span><code class="sig-name descname"><span class="pre">DEFAULT_STATICMAP</span> <span class="pre">🆕</span></code><a class="headerlink" href="#envvar-DEFAULT_STATICMAP" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-DEFAULT_STATICMAP">
|
||||
<span id="envvar-DEFAULT_STATICMAP 🆕"></span><span class="sig-name descname"><span class="pre">DEFAULT_STATICMAP</span> <span class="pre">🆕</span></span><a class="headerlink" href="#envvar-DEFAULT_STATICMAP" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.9.</span></p>
|
||||
</div>
|
||||
@ -429,8 +429,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-WEATHER_API_KEY">
|
||||
<code class="sig-name descname"><span class="pre">WEATHER_API_KEY</span></code><a class="headerlink" href="#envvar-WEATHER_API_KEY" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-WEATHER_API_KEY">
|
||||
<span class="sig-name descname"><span class="pre">WEATHER_API_KEY</span></span><a class="headerlink" href="#envvar-WEATHER_API_KEY" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="versionchanged">
|
||||
<p><span class="versionmodified changed">Changed in version 0.4.0: </span>⚠️ replaces <code class="docutils literal notranslate"><span class="pre">WEATHER_API</span></code></p>
|
||||
</div>
|
||||
@ -438,87 +438,12 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REACT_APP_API_URL">
|
||||
<code class="sig-name descname"><span class="pre">REACT_APP_API_URL</span></code><a class="headerlink" href="#envvar-REACT_APP_API_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dt class="sig sig-object std" id="envvar-VUE_APP_API_URL">
|
||||
<span class="sig-name descname"><span class="pre">VUE_APP_API_URL</span></span><a class="headerlink" href="#envvar-VUE_APP_API_URL" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p><strong>FitTrackee</strong> API URL, only needed in dev environment.</p>
|
||||
</dd></dl>
|
||||
|
||||
<div class="section" id="deprecated-variables">
|
||||
<h3>Deprecated variables<a class="headerlink" href="#deprecated-variables" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REACT_APP_GPX_LIMIT_IMPORT">
|
||||
<code class="sig-name descname"><span class="pre">REACT_APP_GPX_LIMIT_IMPORT</span></code><a class="headerlink" href="#envvar-REACT_APP_GPX_LIMIT_IMPORT" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="deprecated">
|
||||
<p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p>
|
||||
</div>
|
||||
<p>Maximum number of gpx file in zip archive.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
<dd class="field-odd"><p>10</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REACT_APP_MAX_SINGLE_FILE_SIZE">
|
||||
<code class="sig-name descname"><span class="pre">REACT_APP_MAX_SINGLE_FILE_SIZE</span></code><a class="headerlink" href="#envvar-REACT_APP_MAX_SINGLE_FILE_SIZE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="deprecated">
|
||||
<p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p>
|
||||
</div>
|
||||
<p>Maximum size of a gpx or picture file.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
<dd class="field-odd"><p>1MB</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REACT_APP_MAX_ZIP_FILE_SIZE">
|
||||
<code class="sig-name descname"><span class="pre">REACT_APP_MAX_ZIP_FILE_SIZE</span></code><a class="headerlink" href="#envvar-REACT_APP_MAX_ZIP_FILE_SIZE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="deprecated">
|
||||
<p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p>
|
||||
</div>
|
||||
<p>Maximum size of a zip archive.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
<dd class="field-odd"><p>10MB</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REACT_APP_ALLOW_REGISTRATION">
|
||||
<code class="sig-name descname"><span class="pre">REACT_APP_ALLOW_REGISTRATION</span></code><a class="headerlink" href="#envvar-REACT_APP_ALLOW_REGISTRATION" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="deprecated">
|
||||
<p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p>
|
||||
</div>
|
||||
<p>Allows users to register.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Default</dt>
|
||||
<dd class="field-odd"><p>true</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="std envvar">
|
||||
<dt id="envvar-REACT_APP_THUNDERFOREST_API_KEY">
|
||||
<code class="sig-name descname"><span class="pre">REACT_APP_THUNDERFOREST_API_KEY</span></code><a class="headerlink" href="#envvar-REACT_APP_THUNDERFOREST_API_KEY" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="deprecated">
|
||||
<p><span class="versionmodified deprecated">Deprecated since version 0.4.0: </span>see <a class="reference external" href="installation.html#envvar-TILE_SERVER_URL">TILE_SERVER_URL</a></p>
|
||||
</div>
|
||||
<p>ThunderForest API key.</p>
|
||||
</dd></dl>
|
||||
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<div class="line-block">
|
||||
<div class="line">Since FitTrackee 0.3.0, some applications parameters are now stored in database.</div>
|
||||
<div class="line">Related environment variables are needed to initialize database when upgrading from version prior 0.3.0.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="emails">
|
||||
<section id="emails">
|
||||
<h3>Emails<a class="headerlink" href="#emails" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.3.0.</span></p>
|
||||
@ -529,8 +454,8 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
||||
<li><p>with SSL: <code class="docutils literal notranslate"><span class="pre">smtp://username:password@smtp.example.com:465/?ssl=True</span></code></p></li>
|
||||
<li><p>with STARTTLS: <code class="docutils literal notranslate"><span class="pre">smtp://username:password@smtp.example.com:587/?tls=True</span></code></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="map-tile-server">
|
||||
</section>
|
||||
<section id="map-tile-server">
|
||||
<h3>Map tile server<a class="headerlink" href="#map-tile-server" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||
@ -548,9 +473,9 @@ The tile server can be changed by updating <code class="docutils literal notrans
|
||||
<div class="line">Check the terms of service of tile provider for map attribution</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="from-pypi">
|
||||
</section>
|
||||
</section>
|
||||
<section id="from-pypi">
|
||||
<h2>From PyPI<a class="headerlink" href="#from-pypi" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
@ -564,7 +489,7 @@ The tile server can be changed by updating <code class="docutils literal notrans
|
||||
<div class="line">Note that FitTrackee is under heavy development, some features may be unstable.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id1">
|
||||
<section id="id1">
|
||||
<h3>Installation<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Create and activate a virtualenv</p></li>
|
||||
@ -620,8 +545,8 @@ $ <span class="nb">source</span> .env
|
||||
<div class="line">To start application and workers with <strong>systemd</strong> service, see <a class="reference external" href="installation.html#deployment">Deployment</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="upgrade">
|
||||
</section>
|
||||
<section id="upgrade">
|
||||
<h3>Upgrade<a class="headerlink" href="#upgrade" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
@ -654,9 +579,9 @@ $ <span class="nb">source</span> .env
|
||||
<ul class="simple">
|
||||
<li><p>Restart the application and task queue workers.</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="from-sources">
|
||||
</section>
|
||||
</section>
|
||||
<section id="from-sources">
|
||||
<h2>From sources<a class="headerlink" href="#from-sources" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
@ -674,9 +599,9 @@ $ poetry config virtualenvs.in-project <span class="nb">true</span>
|
||||
</div>
|
||||
<p>For other OS, see <a class="reference external" href="https://python-poetry.org/docs/#installation">Poetry Documentation</a></p>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<section id="id2">
|
||||
<h3>Installation<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="dev-environment">
|
||||
<section id="dev-environment">
|
||||
<h4>Dev environment<a class="headerlink" href="#dev-environment" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p>Clone this repo:</p></li>
|
||||
@ -688,7 +613,7 @@ $ <span class="nb">cd</span> FitTrackee
|
||||
<ul class="simple">
|
||||
<li><p>Create <strong>.env</strong> from example and update it
|
||||
(see <a class="reference external" href="installation.html#environment-variables">Environment variables</a>).</p></li>
|
||||
<li><p>Install Python virtualenv, React and all related packages and
|
||||
<li><p>Install Python virtualenv, Vue and all related packages and
|
||||
initialize the database:</p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make install-dev
|
||||
@ -709,8 +634,8 @@ $ make install-db
|
||||
</div>
|
||||
<p>Open <a class="reference external" href="http://localhost:3000">http://localhost:3000</a> and log in (the email is <code class="docutils literal notranslate"><span class="pre">admin@example.com</span></code>
|
||||
and the password <code class="docutils literal notranslate"><span class="pre">mpwoadmin</span></code>) or register</p>
|
||||
</div>
|
||||
<div class="section" id="production-environment">
|
||||
</section>
|
||||
<section id="production-environment">
|
||||
<h4>Production environment<a class="headerlink" href="#production-environment" title="Permalink to this headline">¶</a></h4>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
@ -719,11 +644,11 @@ and the password <code class="docutils literal notranslate"><span class="pre">mp
|
||||
</div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Download the last release (for now, it is the release v0.4.9):</p></li>
|
||||
<li><p>Download the last release (for now, it is the release v0.5.0):</p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.4.9.tar.gz
|
||||
$ tar -xzf v0.4.9.tar.gz
|
||||
$ mv FitTrackee-0.4.9 FitTrackee
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.5.0.tar.gz
|
||||
$ tar -xzf v0.5.0.tar.gz
|
||||
$ mv FitTrackee-0.5.0 FitTrackee
|
||||
$ <span class="nb">cd</span> FitTrackee
|
||||
</pre></div>
|
||||
</div>
|
||||
@ -751,9 +676,9 @@ database credentials</strong>):</p></li>
|
||||
<p>Open <a class="reference external" href="http://localhost:5000">http://localhost:5000</a>, log in as admin (the email is
|
||||
<code class="docutils literal notranslate"><span class="pre">admin@example.com</span></code> and the password <code class="docutils literal notranslate"><span class="pre">mpwoadmin</span></code>) and change the
|
||||
password</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
</section>
|
||||
</section>
|
||||
<section id="id3">
|
||||
<h3>Upgrade<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
@ -763,7 +688,7 @@ password</p>
|
||||
<div class="line">- upload directory (see <a class="reference external" href="installation.html#environment-variables">Environment variables</a>)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<section id="id4">
|
||||
<h4>Dev environment<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p>Stop the application and pull the repository:</p></li>
|
||||
@ -791,17 +716,17 @@ $ make upgrade-db
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make run-workers
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="prod-environment">
|
||||
</section>
|
||||
<section id="prod-environment">
|
||||
<h4>Prod environment<a class="headerlink" href="#prod-environment" title="Permalink to this headline">¶</a></h4>
|
||||
<ul class="simple">
|
||||
<li><p>Stop the application</p></li>
|
||||
<li><p>Change to the directory where FitTrackee directory is located</p></li>
|
||||
<li><p>Download the last release (for now, it is the release v0.4.9) and overwrite existing files:</p></li>
|
||||
<li><p>Download the last release (for now, it is the release v0.5.0) and overwrite existing files:</p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.4.9.tar.gz
|
||||
$ tar -xzf v0.4.9.tar.gz
|
||||
$ cp -R FitTrackee-0.4.9/* FitTrackee/
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.5.0.tar.gz
|
||||
$ tar -xzf v0.5.0.tar.gz
|
||||
$ cp -R FitTrackee-0.5.0/* FitTrackee/
|
||||
$ <span class="nb">cd</span> FitTrackee
|
||||
</pre></div>
|
||||
</div>
|
||||
@ -819,10 +744,10 @@ $ make upgrade-db
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make run
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="deployment">
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="deployment">
|
||||
<h2>Deployment<a class="headerlink" href="#deployment" title="Permalink to this headline">¶</a></h2>
|
||||
<p>There are several ways to start <strong>FitTrackee</strong> web application and task queue
|
||||
library.
|
||||
@ -936,10 +861,10 @@ server {
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>If needed, update configuration to handle larger files (see <a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size">client_max_body_size</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="docker">
|
||||
</section>
|
||||
<section id="docker">
|
||||
<h2>Docker<a class="headerlink" href="#docker" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="id5">
|
||||
<section id="id5">
|
||||
<h3>Installation<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.4.</span></p>
|
||||
@ -974,27 +899,33 @@ $ make docker-build docker-run docker-init
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make docker-shell
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="client-development">
|
||||
<h3>Client Development<a class="headerlink" href="#client-development" title="Permalink to this headline">¶</a></h3>
|
||||
</section>
|
||||
<section id="development">
|
||||
<h3>Development<a class="headerlink" href="#development" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="versionadded">
|
||||
<p><span class="versionmodified added">New in version 0.4.10.</span></p>
|
||||
<p><span class="versionmodified added">New in version 0.5.0.</span></p>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>in order to start client with React dev tools, install <cite>fittrackee_client</cite></p></li>
|
||||
<li><p>an additional step is to install <cite>fittrackee_client</cite></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make docker-build-client
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>start React app</p></li>
|
||||
<li><p>to start <strong>FitTrackee</strong> with client dev tools:</p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make docker-serve-client
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Open <a class="reference external" href="http://localhost:3000">http://localhost:3000</a> and log in (the email is <code class="docutils literal notranslate"><span class="pre">admin@example.com</span></code>
|
||||
and the password <code class="docutils literal notranslate"><span class="pre">mpwoadmin</span></code>) or register</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Some environment variables need to be updated like <cite>UI_URL</cite></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -1009,7 +940,7 @@ $ make docker-build docker-run docker-init
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
BIN
docs/objects.inv
@ -4,12 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Search — FitTrackee 0.4.9
|
||||
<title>Search — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
@ -43,7 +43,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -148,7 +148,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Administrator — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Administrator — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -127,9 +128,9 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="administrator">
|
||||
<section id="administrator">
|
||||
<h1>Administrator<a class="headerlink" href="#administrator" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="fittrackee-fails-to-start">
|
||||
<section id="fittrackee-fails-to-start">
|
||||
<h2><cite>FitTrackee fails to start</cite><a class="headerlink" href="#fittrackee-fails-to-start" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Check the database URL in <a class="reference external" href="../installation.html#envvar-DATABASE_URL">Environment variables</a> if the following error is displayed in <strong>gunicorn</strong> logs:</p></li>
|
||||
@ -138,8 +139,8 @@
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>It must start with <cite>postgresql://</cite> (engine URLs starting with <cite>postgres://</cite> are no longer supported).</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -154,7 +155,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Troubleshooting — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Troubleshooting — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,10 +125,10 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="troubleshooting">
|
||||
<section id="troubleshooting">
|
||||
<h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">Endpoints:</span></p>
|
||||
<p class="caption" role="heading"><span class="caption-text">Endpoints:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="administrator.html">Administrator</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="administrator.html#fittrackee-fails-to-start"><cite>FitTrackee fails to start</cite></a></li>
|
||||
@ -136,7 +137,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="user.html">User</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -151,7 +152,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
@ -3,13 +3,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>User — FitTrackee 0.4.9
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>User — FitTrackee 0.5.0
|
||||
documentation</title>
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
|
||||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
@ -39,7 +40,7 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
FitTrackee</a>
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.4.9
|
||||
<span class="navbar-text navbar-version pull-left"><b>0.5.0
|
||||
</b></span>
|
||||
</div>
|
||||
|
||||
@ -124,10 +125,10 @@
|
||||
<div class="row">
|
||||
<div class="body col-md-12 content" role="main">
|
||||
|
||||
<div class="section" id="user">
|
||||
<section id="user">
|
||||
<h1>User<a class="headerlink" href="#user" title="Permalink to this headline">¶</a></h1>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">TODO</span></code></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
@ -142,7 +143,7 @@
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2018 - 2021, SamR1.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.4.<br/>
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.2.0.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
Before Width: | Height: | Size: 506 KiB After Width: | Height: | Size: 535 KiB |
Before Width: | Height: | Size: 395 KiB After Width: | Height: | Size: 367 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 71 KiB |
BIN
docsrc/source/_images/fittrackee_screenshot-06.png
Normal file
After Width: | Height: | Size: 100 KiB |
@ -92,3 +92,9 @@ dl.field-list > dt {
|
||||
height: 65px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 1px solid #cecdcd;
|
||||
margin: 5px 0;
|
||||
}
|
@ -39,12 +39,17 @@ Account
|
||||
|
||||
Workouts
|
||||
^^^^^^^^
|
||||
- 6 sports are supported:
|
||||
- 11 sports are supported:
|
||||
- Cycling (Sport)
|
||||
- Cycling (Transport)
|
||||
- Hiking
|
||||
- Montain Biking
|
||||
- Mountain Biking
|
||||
- Mountain Biking (Electric) (**new in 0.5.0**)
|
||||
- Rowing (**new in 0.5.0**)
|
||||
- Running
|
||||
- Skiing (Alpine) (**new in 0.5.0**)
|
||||
- Skiing (Cross Country) (**new in 0.5.0**)
|
||||
- Trail (**new in 0.5.0**)
|
||||
- Walking
|
||||
- Dashboard with month calendar displaying workouts and record. The week can start on Sunday or Monday (which can be changed in the user settings). The calendar displays up to 100 workouts.
|
||||
- Workout creation by uploading a gpx file. A workout can even be created without gpx (the user must enter date, time, duration and distance)
|
||||
@ -94,3 +99,6 @@ Administration
|
||||
~~~~~~~~~~~~~~
|
||||
.. figure:: _images/fittrackee_screenshot-05.png
|
||||
:alt: FitTrackee Administration
|
||||
|
||||
.. figure:: _images/fittrackee_screenshot-06.png
|
||||
:alt: FitTrackee Sports Administration
|
@ -1,7 +1,7 @@
|
||||
Installation
|
||||
############
|
||||
|
||||
This application is written in Python (API) and Javascript (client):
|
||||
This application is written in Python (API) and Typescript (client):
|
||||
|
||||
- API:
|
||||
- Flask
|
||||
@ -10,9 +10,9 @@ This application is written in Python (API) and Javascript (client):
|
||||
- `python-forecast.io <https://github.com/ZeevG/python-forecast.io>`_ to fetch weather data from `Dark Sky <https://darksky.net>`__ (former forecast.io)
|
||||
- `dramatiq <https://flask-dramatiq.readthedocs.io/en/latest/>`_ for task queue
|
||||
- Client:
|
||||
- React/Redux
|
||||
- Vue3/Vuex
|
||||
- `Leaflet <https://leafletjs.com/>`__ to display map
|
||||
- `Recharts <https://github.com/recharts/recharts>`__ to display charts with elevation and speed
|
||||
- `Chart.js <https://www.chartjs.org/>`__ to display charts with elevation and speed
|
||||
|
||||
Sports and weather icons are made by `Freepik <https://www.freepik.com/>`__ from `www.flaticon.com <https://www.flaticon.com/>`__.
|
||||
|
||||
@ -191,62 +191,12 @@ deployment method.
|
||||
**Dark Sky** API key for weather data (not mandatory).
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_API_URL
|
||||
.. envvar:: VUE_APP_API_URL
|
||||
|
||||
**FitTrackee** API URL, only needed in dev environment.
|
||||
|
||||
|
||||
|
||||
Deprecated variables
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. envvar:: REACT_APP_GPX_LIMIT_IMPORT
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Maximum number of gpx file in zip archive.
|
||||
|
||||
:default: 10
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_MAX_SINGLE_FILE_SIZE
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Maximum size of a gpx or picture file.
|
||||
|
||||
:default: 1MB
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_MAX_ZIP_FILE_SIZE
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Maximum size of a zip archive.
|
||||
|
||||
:default: 10MB
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_ALLOW_REGISTRATION
|
||||
|
||||
.. deprecated:: 0.3.0 now stored in database
|
||||
|
||||
Allows users to register.
|
||||
|
||||
:default: true
|
||||
|
||||
|
||||
.. envvar:: REACT_APP_THUNDERFOREST_API_KEY
|
||||
|
||||
.. deprecated:: 0.4.0 see `TILE_SERVER_URL <installation.html#envvar-TILE_SERVER_URL>`__
|
||||
|
||||
ThunderForest API key.
|
||||
|
||||
.. warning::
|
||||
| Since FitTrackee 0.3.0, some applications parameters are now stored in database.
|
||||
| Related environment variables are needed to initialize database when upgrading from version prior 0.3.0.
|
||||
|
||||
|
||||
Emails
|
||||
^^^^^^
|
||||
.. versionadded:: 0.3.0
|
||||
@ -409,7 +359,7 @@ Dev environment
|
||||
- Create **.env** from example and update it
|
||||
(see `Environment variables <installation.html#environment-variables>`__).
|
||||
|
||||
- Install Python virtualenv, React and all related packages and
|
||||
- Install Python virtualenv, Vue and all related packages and
|
||||
initialize the database:
|
||||
|
||||
.. code:: bash
|
||||
@ -439,13 +389,13 @@ Production environment
|
||||
.. warning::
|
||||
| Note that FitTrackee is under heavy development, some features may be unstable.
|
||||
|
||||
- Download the last release (for now, it is the release v0.4.9):
|
||||
- Download the last release (for now, it is the release v0.5.0):
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.4.9.tar.gz
|
||||
$ tar -xzf v0.4.9.tar.gz
|
||||
$ mv FitTrackee-0.4.9 FitTrackee
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.5.0.tar.gz
|
||||
$ tar -xzf v0.5.0.tar.gz
|
||||
$ mv FitTrackee-0.5.0 FitTrackee
|
||||
$ cd FitTrackee
|
||||
|
||||
- Create **.env** from example and update it
|
||||
@ -520,13 +470,13 @@ Prod environment
|
||||
|
||||
- Change to the directory where FitTrackee directory is located
|
||||
|
||||
- Download the last release (for now, it is the release v0.4.9) and overwrite existing files:
|
||||
- Download the last release (for now, it is the release v0.5.0) and overwrite existing files:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.4.9.tar.gz
|
||||
$ tar -xzf v0.4.9.tar.gz
|
||||
$ cp -R FitTrackee-0.4.9/* FitTrackee/
|
||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.5.0.tar.gz
|
||||
$ tar -xzf v0.5.0.tar.gz
|
||||
$ cp -R FitTrackee-0.5.0/* FitTrackee/
|
||||
$ cd FitTrackee
|
||||
|
||||
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
|
||||
@ -704,19 +654,25 @@ Open http://localhost:8025 to access `MailHog interface <https://github.com/mail
|
||||
$ make docker-shell
|
||||
|
||||
|
||||
Client Development
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
Development
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 0.4.10
|
||||
.. versionadded:: 0.5.0
|
||||
|
||||
- in order to start client with React dev tools, install `fittrackee_client`
|
||||
- an additional step is to install `fittrackee_client`
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ make docker-build-client
|
||||
|
||||
- start React app
|
||||
- to start **FitTrackee** with client dev tools:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ make docker-serve-client
|
||||
|
||||
Open http://localhost:3000 and log in (the email is ``admin@example.com``
|
||||
and the password ``mpwoadmin``) or register
|
||||
|
||||
.. note::
|
||||
Some environment variables need to be updated like `UI_URL`
|
@ -4,4 +4,6 @@ import pytest
|
||||
@pytest.fixture
|
||||
def firefox_options(firefox_options):
|
||||
firefox_options.add_argument('--headless')
|
||||
firefox_options.add_argument('--width=1920')
|
||||
firefox_options.add_argument('--height=1080')
|
||||
return firefox_options
|
||||
|
@ -9,9 +9,7 @@ class TestIndex:
|
||||
def test_navbar_contains_all_links(self, selenium):
|
||||
selenium.get(TEST_URL)
|
||||
|
||||
nav = selenium.find_element_by_tag_name('nav').text
|
||||
nav = selenium.find_element_by_id('nav').text
|
||||
assert "FitTrackee" in nav
|
||||
assert "Dashboard" in nav
|
||||
assert "Login" in nav
|
||||
assert "Register" in nav
|
||||
assert "en" in nav
|
||||
|
@ -7,26 +7,28 @@ class TestLogin:
|
||||
def test_navbar_contains_login(self, selenium):
|
||||
selenium.get(URL)
|
||||
|
||||
nav = selenium.find_element_by_tag_name('nav').text
|
||||
nav = selenium.find_element_by_id('nav').text
|
||||
assert 'Login' in nav
|
||||
|
||||
def test_h1_contains_login(self, selenium):
|
||||
selenium.get(URL)
|
||||
|
||||
title = selenium.find_element_by_tag_name('h1').text
|
||||
assert 'Login' in title
|
||||
|
||||
def test_it_displays_login_form(self, selenium):
|
||||
selenium.get(URL)
|
||||
|
||||
inputs = selenium.find_elements_by_tag_name('input')
|
||||
assert len(inputs) == 3
|
||||
assert inputs[0].get_attribute('name') == 'email'
|
||||
assert len(inputs) == 2
|
||||
assert inputs[0].get_attribute('id') == 'email'
|
||||
assert inputs[0].get_attribute('type') == 'email'
|
||||
assert inputs[1].get_attribute('name') == 'password'
|
||||
assert inputs[1].get_attribute('id') == 'password'
|
||||
assert inputs[1].get_attribute('type') == 'password'
|
||||
assert inputs[2].get_attribute('name') == ''
|
||||
assert inputs[2].get_attribute('type') == 'submit'
|
||||
|
||||
button = selenium.find_element_by_tag_name('button')
|
||||
assert button.get_attribute('type') == 'submit'
|
||||
assert 'Log in' in button.text
|
||||
|
||||
links = selenium.find_elements_by_class_name('links')
|
||||
assert links[0].tag_name == 'a'
|
||||
assert 'Register' in links[0].text
|
||||
assert links[1].tag_name == 'a'
|
||||
assert 'Forgot password?' in links[1].text
|
||||
|
||||
def test_user_can_log_in(self, selenium):
|
||||
user = {
|
||||
|
@ -4,16 +4,14 @@ from .utils import register_valid_user
|
||||
class TestLogout:
|
||||
def test_user_can_log_out(self, selenium):
|
||||
user = register_valid_user(selenium)
|
||||
nav_items = selenium.find_elements_by_class_name('nav-item')
|
||||
user_menu = selenium.find_element_by_class_name('nav-items-user-menu')
|
||||
logout_link = user_menu.find_elements_by_class_name('nav-item')[2]
|
||||
|
||||
nav_items[5].click()
|
||||
logout_link.click()
|
||||
selenium.implicitly_wait(1)
|
||||
|
||||
nav = selenium.find_element_by_tag_name('nav').text
|
||||
nav = selenium.find_element_by_id('nav').text
|
||||
assert 'Register' in nav
|
||||
assert 'Login' in nav
|
||||
assert user['username'] not in nav
|
||||
assert 'Logout' not in nav
|
||||
|
||||
message = selenium.find_element_by_class_name('card-body').text
|
||||
assert 'You are now logged out. Click here to log back in.' in message
|
||||
|
@ -8,13 +8,16 @@ class TestProfile:
|
||||
user = register_valid_user(selenium)
|
||||
|
||||
selenium.get(URL)
|
||||
user_header = selenium.find_element_by_class_name('user-header')
|
||||
assert user['username'] in user_header.text
|
||||
assert '0\nworkouts' in user_header.text
|
||||
assert '0\nkm' in user_header.text
|
||||
assert '0\nsports' in user_header.text
|
||||
|
||||
assert 'Profile' in selenium.find_element_by_tag_name('h1').text
|
||||
assert (
|
||||
user['username']
|
||||
in selenium.find_element_by_class_name('userName').text
|
||||
)
|
||||
assert (
|
||||
user['username']
|
||||
in selenium.find_element_by_class_name('userName').text
|
||||
)
|
||||
user_infos = selenium.find_element_by_id('user-infos')
|
||||
assert 'Registration date' in user_infos.text
|
||||
assert 'First name' in user_infos.text
|
||||
assert 'Last name' in user_infos.text
|
||||
assert 'Birth date' in user_infos.text
|
||||
assert 'Location' in user_infos.text
|
||||
assert 'Bio' in user_infos.text
|
||||
|
@ -15,17 +15,23 @@ class TestRegistration:
|
||||
selenium.implicitly_wait(1)
|
||||
|
||||
inputs = selenium.find_elements_by_tag_name('input')
|
||||
assert len(inputs) == 5
|
||||
assert inputs[0].get_attribute('name') == 'username'
|
||||
assert len(inputs) == 4
|
||||
assert inputs[0].get_attribute('id') == 'username'
|
||||
assert inputs[0].get_attribute('type') == 'text'
|
||||
assert inputs[1].get_attribute('name') == 'email'
|
||||
assert inputs[1].get_attribute('id') == 'email'
|
||||
assert inputs[1].get_attribute('type') == 'email'
|
||||
assert inputs[2].get_attribute('name') == 'password'
|
||||
assert inputs[2].get_attribute('id') == 'password'
|
||||
assert inputs[2].get_attribute('type') == 'password'
|
||||
assert inputs[3].get_attribute('name') == 'password_conf'
|
||||
assert inputs[3].get_attribute('id') == 'confirm-password'
|
||||
assert inputs[3].get_attribute('type') == 'password'
|
||||
assert inputs[4].get_attribute('name') == ''
|
||||
assert inputs[4].get_attribute('type') == 'submit'
|
||||
|
||||
button = selenium.find_element_by_tag_name('button')
|
||||
assert button.get_attribute('type') == 'submit'
|
||||
assert 'Register' in button.text
|
||||
|
||||
link = selenium.find_element_by_class_name('links')
|
||||
assert link.tag_name == 'a'
|
||||
assert 'Login' in link.text
|
||||
|
||||
def test_user_can_register(self, selenium):
|
||||
user = register_valid_user(selenium)
|
||||
@ -44,7 +50,7 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
nav = selenium.find_element_by_tag_name('nav').text
|
||||
nav = selenium.find_element_by_id('nav').text
|
||||
assert 'Register' in nav
|
||||
assert 'Login' in nav
|
||||
|
||||
@ -62,8 +68,8 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
errors = selenium.find_element_by_tag_name('code').text
|
||||
assert 'Sorry. That user already exists.' in errors
|
||||
errors = selenium.find_element_by_class_name('error-message').text
|
||||
assert 'Sorry, that user already exists.' in errors
|
||||
|
||||
def test_user_can_not_register_if_email_is_already_taken(self, selenium):
|
||||
user_name = random_string()
|
||||
@ -77,8 +83,8 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
errors = selenium.find_element_by_tag_name('code').text
|
||||
assert 'Sorry. That user already exists.' in errors
|
||||
errors = selenium.find_element_by_class_name('error-message').text
|
||||
assert 'Sorry, that user already exists.' in errors
|
||||
|
||||
def test_user_can_not_register_if_username_is_too_short(self, selenium):
|
||||
user_name = random_string(2)
|
||||
@ -92,8 +98,8 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
errors = selenium.find_element_by_tag_name('code').text
|
||||
assert '3 to 12 characters required for username.' in errors
|
||||
errors = selenium.find_element_by_class_name('error-message').text
|
||||
assert 'Username: 3 to 12 characters required' in errors
|
||||
|
||||
def test_user_can_not_register_if_username_is_too_long(self, selenium):
|
||||
user_name = random_string(13)
|
||||
@ -107,8 +113,8 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
errors = selenium.find_element_by_tag_name('code').text
|
||||
assert '3 to 12 characters required for username.' in errors
|
||||
errors = selenium.find_element_by_class_name('error-message').text
|
||||
assert 'Username: 3 to 12 characters required' in errors
|
||||
|
||||
def test_it_displays_error_if_passwords_do_not_match(self, selenium):
|
||||
user_name = random_string()
|
||||
@ -122,8 +128,8 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
errors = selenium.find_element_by_tag_name('code').text
|
||||
assert 'Password and password confirmation don\'t match' in errors
|
||||
errors = selenium.find_element_by_class_name('error-message').text
|
||||
assert 'password and password confirmation don\'t match' in errors
|
||||
|
||||
def test_it_displays_error_if_password_is_too_short(self, selenium):
|
||||
user_name = random_string()
|
||||
@ -137,5 +143,5 @@ class TestRegistration:
|
||||
register(selenium, user_infos)
|
||||
|
||||
assert selenium.current_url == URL
|
||||
errors = selenium.find_element_by_tag_name('code').text
|
||||
assert '8 characters required for password.' in errors
|
||||
errors = selenium.find_element_by_class_name('error-message').text
|
||||
assert 'Password: 8 characters required' in errors
|
||||
|
@ -7,32 +7,37 @@ from .utils import TEST_URL, register_valid_user
|
||||
class TestWorkout:
|
||||
def test_user_can_add_workout_without_gpx(self, selenium):
|
||||
register_valid_user(selenium)
|
||||
nav_items = selenium.find_elements_by_class_name('nav-item')
|
||||
app_menu = selenium.find_element_by_class_name('nav-items-app-menu')
|
||||
add_workout_link = app_menu.find_elements_by_class_name('nav-item')[3]
|
||||
|
||||
nav_items[3].click()
|
||||
add_workout_link.click()
|
||||
selenium.implicitly_wait(1)
|
||||
radio_buttons = selenium.find_elements_by_class_name(
|
||||
'add-workout-radio'
|
||||
)
|
||||
radio_buttons[1].click()
|
||||
radio_button = selenium.find_element_by_id('withoutGpx')
|
||||
radio_button.click()
|
||||
|
||||
selenium.find_element_by_name('title').send_keys('Workout title')
|
||||
select = Select(selenium.find_element_by_name('sport_id'))
|
||||
select = Select(selenium.find_element_by_id('sport'))
|
||||
select.select_by_index(1)
|
||||
selenium.find_element_by_name('workout_date').send_keys('2018-12-20')
|
||||
selenium.find_element_by_name('workout_time').send_keys('14:05')
|
||||
selenium.find_element_by_name('duration').send_keys('01:00:00')
|
||||
selenium.find_element_by_name('distance').send_keys('10')
|
||||
selenium.find_element_by_class_name('btn-primary').click()
|
||||
selenium.find_element_by_name('title').send_keys('Workout title')
|
||||
selenium.find_element_by_name('workout-date').send_keys('2018-12-20')
|
||||
selenium.find_element_by_name('workout-time').send_keys('14:05')
|
||||
selenium.find_element_by_name('workout-duration-hour').send_keys('01')
|
||||
selenium.find_element_by_name('workout-duration-minutes').send_keys(
|
||||
'00'
|
||||
)
|
||||
selenium.find_element_by_name('workout-duration-seconds').send_keys(
|
||||
'00'
|
||||
)
|
||||
selenium.find_element_by_name('workout-distance').send_keys('10')
|
||||
|
||||
confirm_button = selenium.find_element_by_class_name('confirm')
|
||||
confirm_button.click()
|
||||
|
||||
WebDriverWait(selenium, 10).until(
|
||||
EC.url_changes(f"{TEST_URL}/workouts/add")
|
||||
)
|
||||
|
||||
workout_details = selenium.find_element_by_class_name(
|
||||
'workout-details'
|
||||
).text
|
||||
workout_details = selenium.find_element_by_id('workout-info').text
|
||||
assert 'Duration: 1:00:00' in workout_details
|
||||
assert 'Distance: 10 km' in workout_details
|
||||
assert 'Average speed: 10 km/h' in workout_details
|
||||
assert 'Max. speed: 10 km/h' in workout_details
|
||||
assert 'Average Speed: 10 km/h' in workout_details
|
||||
assert 'Max. Speed: 10 km/h' in workout_details
|
||||
|
23
e2e/utils.py
@ -18,26 +18,26 @@ def random_string(length=8):
|
||||
def register(selenium, user):
|
||||
selenium.get(f'{TEST_URL}/register')
|
||||
selenium.implicitly_wait(1)
|
||||
username = selenium.find_element_by_name('username')
|
||||
username = selenium.find_element_by_id('username')
|
||||
username.send_keys(user.get('username'))
|
||||
email = selenium.find_element_by_name('email')
|
||||
email = selenium.find_element_by_id('email')
|
||||
email.send_keys(user.get('email'))
|
||||
password = selenium.find_element_by_name('password')
|
||||
password = selenium.find_element_by_id('password')
|
||||
password.send_keys(user.get('password'))
|
||||
password_conf = selenium.find_element_by_name('password_conf')
|
||||
password_conf = selenium.find_element_by_id('confirm-password')
|
||||
password_conf.send_keys(user.get('password_conf'))
|
||||
submit_button = selenium.find_element_by_class_name('btn')
|
||||
submit_button = selenium.find_element_by_tag_name('button')
|
||||
submit_button.click()
|
||||
|
||||
|
||||
def login(selenium, user):
|
||||
selenium.get(f'{TEST_URL}/login')
|
||||
selenium.implicitly_wait(1)
|
||||
email = selenium.find_element_by_name('email')
|
||||
email = selenium.find_element_by_id('email')
|
||||
email.send_keys(user.get('email'))
|
||||
password = selenium.find_element_by_name('password')
|
||||
password = selenium.find_element_by_id('password')
|
||||
password.send_keys(user.get('password'))
|
||||
submit_button = selenium.find_element_by_class_name('btn')
|
||||
submit_button = selenium.find_element_by_tag_name('button')
|
||||
submit_button.click()
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ def register_valid_user(selenium):
|
||||
'password_conf': 'p@ssw0rd',
|
||||
}
|
||||
register(selenium, user)
|
||||
WebDriverWait(selenium, 10).until(EC.url_changes(f"{TEST_URL}/register"))
|
||||
WebDriverWait(selenium, 15).until(EC.url_changes(f"{TEST_URL}/register"))
|
||||
return user
|
||||
|
||||
|
||||
@ -61,13 +61,12 @@ def login_valid_user(selenium, user):
|
||||
|
||||
|
||||
def assert_navbar(selenium, user):
|
||||
nav = selenium.find_element_by_tag_name('nav').text
|
||||
nav = selenium.find_element_by_id('nav').text
|
||||
assert 'Register' not in nav
|
||||
assert 'Login' not in nav
|
||||
assert 'Dashboard' in nav
|
||||
assert 'Workouts' in nav
|
||||
assert 'Statistics' in nav
|
||||
assert 'Add workout' in nav
|
||||
assert 'Add a workout' in nav
|
||||
assert user['username'] in nav
|
||||
assert 'Logout' in nav
|
||||
assert 'en' in nav
|
||||
|
@ -11,6 +11,7 @@ from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
from fittrackee.emails.email import Email
|
||||
|
||||
VERSION = __version__ = '0.5.0'
|
||||
db = SQLAlchemy()
|
||||
bcrypt = Bcrypt()
|
||||
migrate = Migrate()
|
||||
|
@ -44,12 +44,13 @@ def get_application_config() -> Union[Dict, HttpResponse]:
|
||||
"max_zip_file_size": 10485760,
|
||||
"max_users": 0,
|
||||
"map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"
|
||||
"version": "0.5.0"
|
||||
},
|
||||
"status": "success"
|
||||
}
|
||||
|
||||
:statuscode 200: success
|
||||
:statuscode 500: Error on getting configuration.
|
||||
:statuscode 500: error on getting configuration
|
||||
"""
|
||||
|
||||
try:
|
||||
@ -57,7 +58,7 @@ def get_application_config() -> Union[Dict, HttpResponse]:
|
||||
return {'status': 'success', 'data': config.serialize()}
|
||||
except (MultipleResultsFound, NoResultFound) as e:
|
||||
return handle_error_and_return_response(
|
||||
e, message='Error on getting configuration.'
|
||||
e, message='error on getting configuration'
|
||||
)
|
||||
|
||||
|
||||
@ -107,11 +108,11 @@ def update_application_config(auth_user_id: int) -> Union[Dict, HttpResponse]:
|
||||
:statuscode 200: success
|
||||
:statuscode 400: invalid payload
|
||||
:statuscode 401:
|
||||
- Provide a valid auth token.
|
||||
- Signature expired. Please log in again.
|
||||
- Invalid token. Please log in again.
|
||||
:statuscode 403: You do not have permissions.
|
||||
:statuscode 500: Error on updating configuration.
|
||||
- provide a valid auth token
|
||||
- signature expired, please log in again
|
||||
- invalid token, please log in again
|
||||
:statuscode 403: you do not have permissions
|
||||
:statuscode 500: error when updating configuration
|
||||
"""
|
||||
config_data = request.get_json()
|
||||
if not config_data:
|
||||
@ -145,7 +146,7 @@ def update_application_config(auth_user_id: int) -> Union[Dict, HttpResponse]:
|
||||
|
||||
except Exception as e:
|
||||
return handle_error_and_return_response(
|
||||
e, message='Error on updating configuration.'
|
||||
e, message='error when updating configuration'
|
||||
)
|
||||
|
||||
|
||||
|
@ -7,7 +7,7 @@ from sqlalchemy.ext.declarative import DeclarativeMeta
|
||||
from sqlalchemy.orm.mapper import Mapper
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from fittrackee import db
|
||||
from fittrackee import VERSION, db
|
||||
from fittrackee.users.models import User
|
||||
|
||||
BaseModel: DeclarativeMeta = db.Model
|
||||
@ -40,6 +40,7 @@ class AppConfig(BaseModel):
|
||||
'max_zip_file_size': self.max_zip_file_size,
|
||||
'max_users': self.max_users,
|
||||
'map_attribution': self.map_attribution,
|
||||
'version': VERSION,
|
||||
}
|
||||
|
||||
|
||||
|
24
fittrackee/dist/asset-manifest.json
vendored
@ -1,24 +0,0 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "/static/css/main.05f8352a.chunk.css",
|
||||
"main.js": "/static/js/main.d87e6a43.chunk.js",
|
||||
"main.js.map": "/static/js/main.d87e6a43.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.464ec2ca.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.464ec2ca.js.map",
|
||||
"static/js/2.d97c563d.chunk.js": "/static/js/2.d97c563d.chunk.js",
|
||||
"static/js/2.d97c563d.chunk.js.map": "/static/js/2.d97c563d.chunk.js.map",
|
||||
"index.html": "/index.html",
|
||||
"static/css/main.05f8352a.chunk.css.map": "/static/css/main.05f8352a.chunk.css.map",
|
||||
"static/js/2.d97c563d.chunk.js.LICENSE.txt": "/static/js/2.d97c563d.chunk.js.LICENSE.txt",
|
||||
"static/media/en.9e6dbfb0.svg": "/static/media/en.9e6dbfb0.svg",
|
||||
"static/media/fr.d0f9280c.svg": "/static/media/fr.d0f9280c.svg",
|
||||
"static/media/mail-send.619079f0.svg": "/static/media/mail-send.619079f0.svg",
|
||||
"static/media/password.afe6a2a5.svg": "/static/media/password.afe6a2a5.svg"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.464ec2ca.js",
|
||||
"static/js/2.d97c563d.chunk.js",
|
||||
"static/css/main.05f8352a.chunk.css",
|
||||
"static/js/main.d87e6a43.chunk.js"
|
||||
]
|
||||
}
|
BIN
fittrackee/dist/favicon.ico
vendored
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 4.2 KiB |
49
fittrackee/dist/img/bike.svg
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512" xml:space="preserve">
|
||||
<path style="fill:#73D4FF;" d="M512,256c0,6.165-0.219,12.278-0.648,18.338C501.948,407.165,391.22,512,256,512
|
||||
c-85.797,0-161.729-42.203-208.175-106.977c-13.678-19.069-24.795-40.082-32.852-62.558C5.277,315.455,0,286.344,0,256
|
||||
C0,114.615,114.615,0,256,0c99.85,0,186.358,57.166,228.561,140.56C502.115,175.25,512,214.476,512,256z"/>
|
||||
<path style="fill:#249FD3;" d="M512,256c0,6.165-0.219,12.278-0.648,18.338C501.948,407.165,391.22,512,256,512
|
||||
c-85.797,0-161.729-42.203-208.175-106.977c-13.678-19.069-24.795-40.082-32.852-62.558l93.33-230.013l62.694,100.31L272.866,40.354
|
||||
l148.113,163.788l63.582-63.582C502.115,175.25,512,214.476,512,256z"/>
|
||||
<g>
|
||||
<path style="fill:#324A97;" d="M147.074,349.54c-53.983,15.227-110.289-16.304-125.516-70.286s16.304-110.289,70.286-125.516
|
||||
s110.289,16.304,125.516,70.286S201.056,334.314,147.074,349.54z M96.981,171.953c-43.94,12.394-69.604,58.225-57.21,102.165
|
||||
s58.225,69.604,102.165,57.21s69.604-58.225,57.21-102.165S140.921,159.558,96.981,171.953z"/>
|
||||
<path style="fill:#324A97;" d="M407.309,276.136c-53.983,15.227-110.289-16.304-125.516-70.286s16.304-110.289,70.286-125.516
|
||||
s110.289,16.304,125.516,70.286S461.292,260.909,407.309,276.136z M357.216,98.547c-43.94,12.395-69.604,58.225-57.21,102.165
|
||||
s58.225,69.604,102.165,57.21c43.94-12.394,69.604-58.225,57.21-102.165C446.987,111.818,401.156,86.154,357.216,98.547z"/>
|
||||
</g>
|
||||
<path style="fill:#E8509A;" d="M123.193,242.597l29.354-121.287l84.62,89.137L123.193,242.597z M247.875,199.394l-85.089-89.631
|
||||
L283.972,75.58L247.875,199.394z M366.608,16.084c-6.381-10.944-19.674-15.81-31.609-11.546l-28.988,10.339l-22.312,7.953
|
||||
c-2.201,0.781-3.923,2.519-4.677,4.724c-0.766,2.207-0.484,4.647,0.761,6.618l14.28,22.653c-0.306,0.049-0.611,0.099-0.918,0.185
|
||||
l-142.32,40.144L134.69,80.174l-11.149,10.58l16.4,17.274l-34.78,143.731c-0.652,2.654,0.16,5.448,2.135,7.35
|
||||
c1.971,1.889,4.788,2.594,7.417,1.853l138.086-38.95l-0.009-0.034c0.175-0.037,0.359-0.076,0.533-0.114l0.273-0.077
|
||||
c2.55-0.719,4.548-2.697,5.293-5.241L301.849,69.18l71.344,113.157c1.854,2.955,5.39,4.207,8.589,3.304
|
||||
c0.695-0.195,1.371-0.497,2.02-0.902c3.588-2.265,4.657-7.016,2.392-10.605l-88.282-140.05l16.649-5.937l25.605-9.127
|
||||
c4.952-1.79,10.503,0.246,13.154,4.807c1.643,2.818,1.945,6.198,0.832,9.265c-1.114,3.067-3.513,5.452-6.58,6.563l-10.185,3.672
|
||||
c-3.992,1.445-6.067,5.852-4.622,9.845c1.434,3.995,5.861,6.052,9.834,4.625l10.185-3.672c7.371-2.669,13.136-8.412,15.815-15.779
|
||||
C371.272,30.966,370.548,22.862,366.608,16.084z"/>
|
||||
<g>
|
||||
<circle style="fill:#324A97;" cx="119.463" cy="251.643" r="15.768"/>
|
||||
<circle style="fill:#324A97;" cx="379.695" cy="178.239" r="15.768"/>
|
||||
<path style="fill:#324A97;" d="M368.598,38.345c-2.678,7.368-8.444,13.11-15.815,15.779l-10.185,3.672
|
||||
c-3.973,1.427-8.399-0.629-9.834-4.625c-1.445-3.993,0.629-8.399,4.622-9.845l10.185-3.672c3.067-1.111,5.466-3.496,6.58-6.563
|
||||
c1.114-3.067,0.812-6.447-0.832-9.265c-2.651-4.561-8.202-6.596-13.154-4.807l-17.975,6.407c-4.128,1.471-8.64-0.859-9.83-5.077
|
||||
l0,0c-1.072-3.8,0.956-7.786,4.658-9.156l17.98-6.656c11.935-4.263,25.228,0.602,31.609,11.546
|
||||
C370.548,22.862,371.272,30.966,368.598,38.345z"/>
|
||||
<path style="fill:#324A97;" d="M174.094,57.388l-61.025,7.232c-6.381,0.757-10.576,7.036-8.833,13.221l3.608,12.792
|
||||
c1.227,4.348,5.745,6.878,10.093,5.652l60.502-17.065c5.934-1.674,9.387-7.841,7.713-13.775l0,0
|
||||
C184.661,60.157,179.547,56.741,174.094,57.388z"/>
|
||||
</g>
|
||||
<path style="fill:#4E62B1;" d="M511.352,274.338c-3.302,46.686-19.122,89.903-44.126,126.328
|
||||
c-14.137,20.616-31.222,39.048-50.636,54.711c-22.037,17.774-47.083,31.974-74.261,41.702C315.361,506.734,286.292,512,256,512
|
||||
c-45.631,0-88.461-11.933-125.565-32.862c-32.653-18.411-60.855-43.792-82.61-74.115l99.244-57.574l102.285,20.47l50.155-84.637
|
||||
L511.352,274.338z"/>
|
||||
<path style="fill:#36539C;" d="M467.226,400.666c-14.137,20.616-31.222,39.048-50.636,54.711
|
||||
c-22.037,17.774-47.083,31.974-74.261,41.702C315.361,506.734,286.292,512,256,512c-45.631,0-88.461-11.933-125.565-32.862
|
||||
l42.13-67.333l142.618,25.067l76.8-76.79L467.226,400.666z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
BIN
fittrackee/dist/img/icons/android-chrome-192x192.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
fittrackee/dist/img/icons/android-chrome-512x512.png
vendored
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
fittrackee/dist/img/icons/android-chrome-maskable-192x192.png
vendored
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
fittrackee/dist/img/icons/android-chrome-maskable-512x512.png
vendored
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
fittrackee/dist/img/icons/apple-touch-icon-120x120.png
vendored
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
fittrackee/dist/img/icons/apple-touch-icon-152x152.png
vendored
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
fittrackee/dist/img/icons/apple-touch-icon-180x180.png
vendored
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
fittrackee/dist/img/icons/apple-touch-icon-60x60.png
vendored
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
fittrackee/dist/img/icons/apple-touch-icon-76x76.png
vendored
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
fittrackee/dist/img/icons/apple-touch-icon.png
vendored
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
fittrackee/dist/img/icons/favicon-16x16.png
vendored
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
fittrackee/dist/img/icons/favicon-32x32.png
vendored
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
fittrackee/dist/img/icons/msapplication-icon-144x144.png
vendored
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
fittrackee/dist/img/icons/mstile-150x150.png
vendored
Normal file
After Width: | Height: | Size: 20 KiB |
62
fittrackee/dist/img/icons/safari-pinned-tab.svg
vendored
Normal file
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg
|
||||
version="1.1"
|
||||
id="Capa_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16"
|
||||
style="enable-background:new 0 0 16 16;"
|
||||
xml:space="preserve"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<g
|
||||
id="g40"
|
||||
transform="matrix(0.03143434,0,0,0.03143434,0.10918102,0.2844324)"><path
|
||||
style="fill:#b4b4bb"
|
||||
d="m 512,256 c 0,6.165 -0.219,12.278 -0.648,18.338 C 501.948,407.165 391.22,512 256,512 170.203,512 94.271,469.797 47.825,405.023 34.147,385.954 23.03,364.941 14.973,342.465 l 93.33,-230.013 62.694,100.31 L 272.866,40.354 420.979,204.142 484.561,140.56 C 502.115,175.25 512,214.476 512,256 Z"
|
||||
id="path2" />
|
||||
<g
|
||||
id="g8">
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="M 147.074,349.54 C 93.091,364.767 36.785,333.236 21.558,279.254 6.331,225.272 37.862,168.965 91.844,153.738 c 53.982,-15.227 110.289,16.304 125.516,70.286 15.227,53.982 -16.304,110.29 -70.286,125.516 z M 96.981,171.953 c -43.94,12.394 -69.604,58.225 -57.21,102.165 12.394,43.94 58.225,69.604 102.165,57.21 43.94,-12.394 69.604,-58.225 57.21,-102.165 -12.394,-43.94 -58.225,-69.605 -102.165,-57.21 z"
|
||||
id="path4"/>
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="M 407.309,276.136 C 353.326,291.363 297.02,259.832 281.793,205.85 266.566,151.868 298.097,95.561 352.079,80.334 406.061,65.107 462.368,96.638 477.595,150.62 492.822,204.602 461.292,260.909 407.309,276.136 Z M 357.216,98.547 c -43.94,12.395 -69.604,58.225 -57.21,102.165 12.394,43.94 58.225,69.604 102.165,57.21 43.94,-12.394 69.604,-58.225 57.21,-102.165 -12.394,-43.939 -58.225,-69.603 -102.165,-57.21 z"
|
||||
id="path6"/>
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="m 123.193,242.597 29.354,-121.287 84.62,89.137 z M 247.875,199.394 162.786,109.763 283.972,75.58 Z M 366.608,16.084 C 360.227,5.14 346.934,0.274 334.999,4.538 l -28.988,10.339 -22.312,7.953 c -2.201,0.781 -3.923,2.519 -4.677,4.724 -0.766,2.207 -0.484,4.647 0.761,6.618 l 14.28,22.653 c -0.306,0.049 -0.611,0.099 -0.918,0.185 l -142.32,40.144 -16.135,-16.98 -11.149,10.58 16.4,17.274 -34.78,143.731 c -0.652,2.654 0.16,5.448 2.135,7.35 1.971,1.889 4.788,2.594 7.417,1.853 l 138.086,-38.95 -0.009,-0.034 c 0.175,-0.037 0.359,-0.076 0.533,-0.114 l 0.273,-0.077 c 2.55,-0.719 4.548,-2.697 5.293,-5.241 l 42.96,-147.366 71.344,113.157 c 1.854,2.955 5.39,4.207 8.589,3.304 0.695,-0.195 1.371,-0.497 2.02,-0.902 3.588,-2.265 4.657,-7.016 2.392,-10.605 l -88.282,-140.05 16.649,-5.937 25.605,-9.127 c 4.952,-1.79 10.503,0.246 13.154,4.807 1.643,2.818 1.945,6.198 0.832,9.265 -1.114,3.067 -3.513,5.452 -6.58,6.563 l -10.185,3.672 c -3.992,1.445 -6.067,5.852 -4.622,9.845 1.434,3.995 5.861,6.052 9.834,4.625 l 10.185,-3.672 c 7.371,-2.669 13.136,-8.412 15.815,-15.779 2.673,-7.38 1.949,-15.484 -1.991,-22.262 z"
|
||||
id="path10"/>
|
||||
<g
|
||||
id="g20">
|
||||
<circle
|
||||
style="fill:#000000"
|
||||
cx="119.463"
|
||||
cy="251.64301"
|
||||
r="15.768"
|
||||
id="circle12"/>
|
||||
<circle
|
||||
style="fill:#000000"
|
||||
cx="379.69501"
|
||||
cy="178.239"
|
||||
r="15.768"
|
||||
id="circle14"/>
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="m 368.598,38.345 c -2.678,7.368 -8.444,13.11 -15.815,15.779 l -10.185,3.672 c -3.973,1.427 -8.399,-0.629 -9.834,-4.625 -1.445,-3.993 0.629,-8.399 4.622,-9.845 l 10.185,-3.672 c 3.067,-1.111 5.466,-3.496 6.58,-6.563 1.114,-3.067 0.812,-6.447 -0.832,-9.265 -2.651,-4.561 -8.202,-6.596 -13.154,-4.807 l -17.975,6.407 c -4.128,1.471 -8.64,-0.859 -9.83,-5.077 v 0 c -1.072,-3.8 0.956,-7.786 4.658,-9.156 l 17.98,-6.656 c 11.935,-4.263 25.228,0.602 31.609,11.546 3.941,6.779 4.665,14.883 1.991,22.262 z"
|
||||
id="path16"/>
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="m 174.094,57.388 -61.025,7.232 c -6.381,0.757 -10.576,7.036 -8.833,13.221 l 3.608,12.792 c 1.227,4.348 5.745,6.878 10.093,5.652 L 178.439,79.22 c 5.934,-1.674 9.387,-7.841 7.713,-13.775 v 0 c -1.491,-5.288 -6.605,-8.704 -12.058,-8.057 z"
|
||||
id="path18"/>
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="m 511.352,274.338 c -3.302,46.686 -19.122,89.903 -44.126,126.328 -14.137,20.616 -31.222,39.048 -50.636,54.711 -22.037,17.774 -47.083,31.974 -74.261,41.702 C 315.361,506.734 286.292,512 256,512 210.369,512 167.539,500.067 130.435,479.138 97.782,460.727 69.58,435.346 47.825,405.023 l 99.244,-57.574 102.285,20.47 50.155,-84.637 z"
|
||||
id="path22"/></g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.8 KiB |
BIN
fittrackee/dist/img/photo.png
vendored
Before Width: | Height: | Size: 2.9 KiB |
BIN
fittrackee/dist/img/sports/alpine-skiing.png
vendored
Before Width: | Height: | Size: 9.7 KiB |
BIN
fittrackee/dist/img/sports/cross-country-skiing.png
vendored
Before Width: | Height: | Size: 6.5 KiB |
BIN
fittrackee/dist/img/sports/cycling-sport.png
vendored
Before Width: | Height: | Size: 5.4 KiB |
BIN
fittrackee/dist/img/sports/cycling-transport.png
vendored
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 16 KiB |
BIN
fittrackee/dist/img/sports/hiking.png
vendored
Before Width: | Height: | Size: 3.0 KiB |
BIN
fittrackee/dist/img/sports/mountain-biking.png
vendored
Before Width: | Height: | Size: 4.3 KiB |
BIN
fittrackee/dist/img/sports/rowing.png
vendored
Before Width: | Height: | Size: 7.1 KiB |
BIN
fittrackee/dist/img/sports/running.png
vendored
Before Width: | Height: | Size: 3.0 KiB |
BIN
fittrackee/dist/img/sports/trail.png
vendored
Before Width: | Height: | Size: 8.1 KiB |
BIN
fittrackee/dist/img/sports/walking.png
vendored
Before Width: | Height: | Size: 3.5 KiB |
BIN
fittrackee/dist/img/weather/breeze.png
vendored
Before Width: | Height: | Size: 2.1 KiB |
16
fittrackee/dist/img/weather/breeze.svg
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 226.705 226.705" style="enable-background:new 0 0 226.705 226.705;" xml:space="preserve">
|
||||
<g>
|
||||
<path d="M174.178,78.362c-23.999,0-43.523,19.523-43.523,43.521c0,20.026,16.291,36.318,36.316,36.318c4.143,0,7.5-3.358,7.5-7.5
|
||||
c0-4.142-3.357-7.5-7.5-7.5c-11.754,0-21.316-9.564-21.316-21.318c0-15.726,12.796-28.521,28.523-28.521
|
||||
c20.692,0,37.527,16.834,37.527,37.525c0,26.901-21.885,48.787-48.785,48.787H7.5c-4.143,0-7.5,3.358-7.5,7.5
|
||||
c0,4.142,3.357,7.5,7.5,7.5h155.42c35.171,0,63.785-28.615,63.785-63.787C226.705,101.925,203.142,78.362,174.178,78.362z"/>
|
||||
<path d="M7.5,110.35h69.889c23.533,0,42.68-19.146,42.68-42.68c0-19.652-15.989-35.641-35.643-35.641
|
||||
c-16.55,0-30.014,13.464-30.014,30.014c0,14.066,11.443,25.51,25.51,25.51c4.143,0,7.5-3.358,7.5-7.5c0-4.142-3.357-7.5-7.5-7.5
|
||||
c-5.795,0-10.51-4.715-10.51-10.51c0-8.279,6.735-15.014,15.014-15.014c11.383,0,20.643,9.259,20.643,20.641
|
||||
c0,15.263-12.417,27.68-27.68,27.68H7.5c-4.143,0-7.5,3.358-7.5,7.5C0,106.993,3.357,110.35,7.5,110.35z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
fittrackee/dist/img/weather/clear-day.png
vendored
Before Width: | Height: | Size: 1.9 KiB |
30
fittrackee/dist/img/weather/clear-day.svg
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 219.786 219.786" style="enable-background:new 0 0 219.786 219.786;" xml:space="preserve">
|
||||
<g>
|
||||
<path d="M109.881,183.46c-4.142,0-7.5,3.358-7.5,7.5v21.324c0,4.142,3.358,7.5,7.5,7.5c4.143,0,7.5-3.358,7.5-7.5V190.96
|
||||
C117.381,186.817,114.023,183.46,109.881,183.46z"/>
|
||||
<path d="M109.881,36.329c4.143,0,7.5-3.358,7.5-7.5V7.503c0-4.142-3.357-7.5-7.5-7.5c-4.142,0-7.5,3.358-7.5,7.5v21.326
|
||||
C102.381,32.971,105.739,36.329,109.881,36.329z"/>
|
||||
<path d="M47.269,161.909l-15.084,15.076c-2.93,2.928-2.931,7.677-0.003,10.606c1.465,1.465,3.385,2.198,5.305,2.198
|
||||
c1.919,0,3.837-0.732,5.302-2.195l15.084-15.076c2.93-2.928,2.931-7.677,0.003-10.606
|
||||
C54.946,158.982,50.198,158.982,47.269,161.909z"/>
|
||||
<path d="M167.208,60.067c1.919,0,3.838-0.732,5.303-2.196l15.082-15.076c2.929-2.929,2.93-7.677,0.002-10.607
|
||||
c-2.929-2.93-7.677-2.931-10.607-0.001l-15.082,15.076c-2.929,2.928-2.93,7.677-0.002,10.606
|
||||
C163.368,59.335,165.288,60.067,167.208,60.067z"/>
|
||||
<path d="M36.324,109.895c0-4.142-3.358-7.5-7.5-7.5H7.5c-4.142,0-7.5,3.358-7.5,7.5c0,4.142,3.358,7.5,7.5,7.5h21.324
|
||||
C32.966,117.395,36.324,114.037,36.324,109.895z"/>
|
||||
<path d="M212.286,102.395h-21.334c-4.143,0-7.5,3.358-7.5,7.5c0,4.142,3.357,7.5,7.5,7.5h21.334c4.143,0,7.5-3.358,7.5-7.5
|
||||
C219.786,105.754,216.429,102.395,212.286,102.395z"/>
|
||||
<path d="M47.267,57.871c1.464,1.464,3.384,2.196,5.303,2.196c1.919,0,3.839-0.732,5.303-2.196c2.929-2.929,2.929-7.678,0-10.607
|
||||
L42.797,32.188c-2.929-2.929-7.678-2.929-10.606,0c-2.929,2.929-2.929,7.678,0,10.606L47.267,57.871z"/>
|
||||
<path d="M172.52,161.911c-2.929-2.929-7.678-2.93-10.607-0.001c-2.93,2.929-2.93,7.678-0.001,10.606l15.074,15.076
|
||||
c1.465,1.465,3.384,2.197,5.304,2.197c1.919,0,3.839-0.732,5.303-2.196c2.93-2.929,2.93-7.678,0.001-10.606L172.52,161.911z"/>
|
||||
<path d="M109.889,51.518c-32.187,0-58.373,26.188-58.373,58.377c0,32.188,26.186,58.375,58.373,58.375
|
||||
c32.19,0,58.378-26.187,58.378-58.375C168.267,77.706,142.078,51.518,109.889,51.518z M109.889,153.27
|
||||
c-23.916,0-43.373-19.458-43.373-43.375c0-23.918,19.457-43.377,43.373-43.377c23.919,0,43.378,19.459,43.378,43.377
|
||||
C153.267,133.812,133.808,153.27,109.889,153.27z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
BIN
fittrackee/dist/img/weather/clear-night.png
vendored
Before Width: | Height: | Size: 2.5 KiB |
15
fittrackee/dist/img/weather/clear-night.svg
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 168.29 168.29" style="enable-background:new 0 0 168.29 168.29;" xml:space="preserve">
|
||||
<path d="M159.81,127.909c-1.025-2.473-3.289-4.212-5.942-4.565c-24.423-3.241-45.44-19.364-54.848-42.078
|
||||
c-9.409-22.715-5.95-48.978,9.028-68.539c1.628-2.125,1.999-4.957,0.975-7.43c-1.024-2.473-3.289-4.212-5.942-4.565
|
||||
C99.416,0.247,95.69,0,92.005,0C80.957,0,70.152,2.155,59.889,6.406c-20.764,8.601-36.935,24.772-45.533,45.536
|
||||
c-8.597,20.761-8.595,43.628,0.004,64.39c13.074,31.563,43.595,51.957,77.756,51.957c0.001,0,0.001,0,0.001,0
|
||||
c11.051,0,21.872-2.161,32.164-6.424c13.644-5.652,25.592-14.825,34.553-26.528C160.462,133.213,160.834,130.382,159.81,127.909z
|
||||
M118.541,148.008c-8.463,3.505-17.353,5.283-26.424,5.282c-28.073,0-53.155-16.76-63.899-42.698
|
||||
c-7.067-17.061-7.068-35.852-0.004-52.911C35.28,40.62,48.567,27.332,65.629,20.265c7.424-3.075,15.189-4.816,23.126-5.188
|
||||
c-11.761,22.021-13.291,48.521-3.595,71.93c9.694,23.405,29.509,41.059,53.392,48.315
|
||||
C132.687,140.647,125.916,144.953,118.541,148.008z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |