diff --git a/.github/workflows/.tests-javascript.yml b/.github/workflows/.tests-javascript.yml index 8d80c77b..c0813851 100644 --- a/.github/workflows/.tests-javascript.yml +++ b/.github/workflows/.tests-javascript.yml @@ -15,9 +15,9 @@ jobs: if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js 18.x - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "18.x" - name: Install yarn and dependencies diff --git a/.github/workflows/.tests-python.yml b/.github/workflows/.tests-python.yml index 7f37cae2..5b56ba2a 100644 --- a/.github/workflows/.tests-python.yml +++ b/.github/workflows/.tests-python.yml @@ -36,7 +36,7 @@ jobs: matrix: python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Poetry and Dependencies run: | python -m pip install --upgrade pip @@ -79,7 +79,7 @@ jobs: matrix: psql-version: [ "12", "13", "14", "16" ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Poetry and Dependencies run: | python -m pip install --upgrade pip @@ -118,7 +118,7 @@ jobs: EMAIL_URL: "smtp://mailhog:1025" REDIS_URL: "redis://redis:6379" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Poetry and Dependencies run: | python -m pip install --upgrade pip @@ -166,7 +166,7 @@ jobs: HOST: "0.0.0.0" PORT: 5000 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Update pip and install build run: python3 -m pip install --upgrade pip build - name: Create and source virtual environment @@ -220,7 +220,7 @@ jobs: HOST: "0.0.0.0" PORT: 5000 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Update pip and install build run: python3 -m pip install --upgrade pip build - name: Create and source virtual environment diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f0a8b0f..374266a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Change log +## Version 0.7.30 (2024/02/04) + +### Features and enhancements + +* [b748459](https://github.com/SamR1/FitTrackee/commit/b7484598258b4891b5699e8e8512deee7977d517) - Update alert message colors on dark mode + +### Bugs Fixed + +* [PR#481](https://github.com/SamR1/FitTrackee/pull/481) - Handle keyboard navigation on dropdowns +* [3821e37](https://github.com/SamR1/FitTrackee/commit/3821e370228cf14cc73a9c3f17d47178e17e8842) - Make calendar arrows accessible to keyboard navigation +* [PR#488](https://github.com/SamR1/FitTrackee/pull/488) - CLI - fix user creation when user already exists with same email +* [PR#489](https://github.com/SamR1/FitTrackee/pull/489) - Handle keyboard navigation on calendar + +### Translations + +* [PR#482](https://github.com/SamR1/FitTrackee/pull/482) - Translations update (Galician and Spanish) +* [PR#484](https://github.com/SamR1/FitTrackee/pull/484) - Translations update (German) + +Translation status: +- Dutch: 99% +- English: 100% +- French: 100% +- Galician: 100% +- German: 100% +- Italian: 84% +- Norwegian Bokmål: 60% +- Polish: 99% +- Spanish: 100% + +### Misc + +* [aff4d68](https://github.com/SamR1/FitTrackee/commit/aff4d68a913b9aee5a620c4fb7f6049410ad7724) - CI - update actions version + + +Thanks to the contributors: +- @gallegonovato +- @qwerty287 +- @xmgz + + ## Version 0.7.29 (2024/01/06) ### Features and enhancements diff --git a/VERSION b/VERSION index cb80b803..5de328f3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.29 +0.7.30 diff --git a/docs/en/.buildinfo b/docs/en/.buildinfo index eff3bc51..42a6ad73 100644 --- a/docs/en/.buildinfo +++ b/docs/en/.buildinfo @@ -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: b8626cd3b38f41f98aa62cf763f24411 +config: 78ad4e69a7739d6636dff917e6ff3985 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/en/_images/fittrackee_screenshot-01.png b/docs/en/_images/fittrackee_screenshot-01.png index 672dbba4..31b49fe0 100644 Binary files a/docs/en/_images/fittrackee_screenshot-01.png and b/docs/en/_images/fittrackee_screenshot-01.png differ diff --git a/docs/en/_images/fittrackee_screenshot-02.png b/docs/en/_images/fittrackee_screenshot-02.png index 1c04477d..f376ac8e 100644 Binary files a/docs/en/_images/fittrackee_screenshot-02.png and b/docs/en/_images/fittrackee_screenshot-02.png differ diff --git a/docs/en/_images/fittrackee_screenshot-03.png b/docs/en/_images/fittrackee_screenshot-03.png index 8c72444b..01e6ee2d 100644 Binary files a/docs/en/_images/fittrackee_screenshot-03.png and b/docs/en/_images/fittrackee_screenshot-03.png differ diff --git a/docs/en/_images/fittrackee_screenshot-04.png b/docs/en/_images/fittrackee_screenshot-04.png index f5a70151..9559f3e4 100644 Binary files a/docs/en/_images/fittrackee_screenshot-04.png and b/docs/en/_images/fittrackee_screenshot-04.png differ diff --git a/docs/en/_images/fittrackee_screenshot-05.png b/docs/en/_images/fittrackee_screenshot-05.png index c18b97c0..dcfa56da 100644 Binary files a/docs/en/_images/fittrackee_screenshot-05.png and b/docs/en/_images/fittrackee_screenshot-05.png differ diff --git a/docs/en/_images/fittrackee_screenshot-06.png b/docs/en/_images/fittrackee_screenshot-06.png index cd35158e..cfd9d3fa 100644 Binary files a/docs/en/_images/fittrackee_screenshot-06.png and b/docs/en/_images/fittrackee_screenshot-06.png differ diff --git a/docs/en/_images/fittrackee_screenshot-07.png b/docs/en/_images/fittrackee_screenshot-07.png index 1d25d47e..27c5db76 100644 Binary files a/docs/en/_images/fittrackee_screenshot-07.png and b/docs/en/_images/fittrackee_screenshot-07.png differ diff --git a/docs/en/_images/fittrackee_screenshot-08.png b/docs/en/_images/fittrackee_screenshot-08.png index ba39f54c..500a4c9b 100644 Binary files a/docs/en/_images/fittrackee_screenshot-08.png and b/docs/en/_images/fittrackee_screenshot-08.png differ diff --git a/docs/en/_sources/changelog.md.txt b/docs/en/_sources/changelog.md.txt index 0f0a8b0f..374266a6 100644 --- a/docs/en/_sources/changelog.md.txt +++ b/docs/en/_sources/changelog.md.txt @@ -1,5 +1,45 @@ # Change log +## Version 0.7.30 (2024/02/04) + +### Features and enhancements + +* [b748459](https://github.com/SamR1/FitTrackee/commit/b7484598258b4891b5699e8e8512deee7977d517) - Update alert message colors on dark mode + +### Bugs Fixed + +* [PR#481](https://github.com/SamR1/FitTrackee/pull/481) - Handle keyboard navigation on dropdowns +* [3821e37](https://github.com/SamR1/FitTrackee/commit/3821e370228cf14cc73a9c3f17d47178e17e8842) - Make calendar arrows accessible to keyboard navigation +* [PR#488](https://github.com/SamR1/FitTrackee/pull/488) - CLI - fix user creation when user already exists with same email +* [PR#489](https://github.com/SamR1/FitTrackee/pull/489) - Handle keyboard navigation on calendar + +### Translations + +* [PR#482](https://github.com/SamR1/FitTrackee/pull/482) - Translations update (Galician and Spanish) +* [PR#484](https://github.com/SamR1/FitTrackee/pull/484) - Translations update (German) + +Translation status: +- Dutch: 99% +- English: 100% +- French: 100% +- Galician: 100% +- German: 100% +- Italian: 84% +- Norwegian Bokmål: 60% +- Polish: 99% +- Spanish: 100% + +### Misc + +* [aff4d68](https://github.com/SamR1/FitTrackee/commit/aff4d68a913b9aee5a620c4fb7f6049410ad7724) - CI - update actions version + + +Thanks to the contributors: +- @gallegonovato +- @qwerty287 +- @xmgz + + ## Version 0.7.29 (2024/01/06) ### Features and enhancements diff --git a/docs/en/_sources/installation.rst.txt b/docs/en/_sources/installation.rst.txt index ddc83770..6c94828c 100644 --- a/docs/en/_sources/installation.rst.txt +++ b/docs/en/_sources/installation.rst.txt @@ -518,13 +518,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.7.29): +- Download the last release (for now, it is the release v0.7.30): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz - $ tar -xzf v0.7.29.tar.gz - $ mv FitTrackee-0.7.29 FitTrackee + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz + $ tar -xzf v0.7.30.tar.gz + $ mv FitTrackee-0.7.30 FitTrackee $ cd FitTrackee - Create **.env** from example and update it @@ -648,13 +648,13 @@ Prod environment - Change to the directory where FitTrackee directory is located -- Download the last release (for now, it is the release v0.7.29) and overwrite existing files: +- Download the last release (for now, it is the release v0.7.30) and overwrite existing files: .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz - $ tar -xzf v0.7.29.tar.gz - $ cp -R FitTrackee-0.7.29/* FitTrackee/ + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz + $ tar -xzf v0.7.30.tar.gz + $ cp -R FitTrackee-0.7.30/* FitTrackee/ $ cd FitTrackee - Update **.env** if needed (see `Environment variables `__). diff --git a/docs/en/_static/documentation_options.js b/docs/en/_static/documentation_options.js index d8b5a194..adde808e 100644 --- a/docs/en/_static/documentation_options.js +++ b/docs/en/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.7.29', + VERSION: '0.7.30', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/en/_static/scripts/furo.js.map b/docs/en/_static/scripts/furo.js.map index 7b7ddb11..47053022 100644 --- a/docs/en/_static/scripts/furo.js.map +++ b/docs/en/_static/scripts/furo.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader() {\n if (Math.floor(header.getBoundingClientRect().top) == 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader();\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 0.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","floor","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader() {\n if (Math.floor(header.getBoundingClientRect().top) == 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader();\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 0.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","floor","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/en/_static/styles/furo.css.map b/docs/en/_static/styles/furo.css.map index d1dfb109..1924b333 100644 --- a/docs/en/_static/styles/furo.css.map +++ b/docs/en/_static/styles/furo.css.map @@ -1 +1 @@ -{"version":3,"file":"styles/furo.css","mappings":"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0CACE,CAFF,kBACA,CACE,wEACA,CARA,YACA,CAKF,mBAFF,OAII,eACA,CAJF,iCAJE,cAGJ,CANI,oBAEA,CAKF,SAIE,2BADA,UACA,kBAGF,sCACA,CAFF,WACE,WACA,qCACE,gCACA,2EACA,sDAKJ,aACE,mDAII,CAJJ,6CAII,kEACA,iBACE,iDACA,+CACE,aACA,WADA,+BACA,uEANN,YACE,mDAEE,mBADF,0CACE,CADF,qBACE,0DACA,YACE,4DACA,sEANN,YACE,8CACA,kBADA,UACA,2CACE,2EACA,cACE,kEACA,mEANN,yBACE,4DACA,sBACE,+EAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCrEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kEAGA,8CAEA,uDAKA,oCAEA,yDAEE,gEAKF,+CC5FA,0EAGE,CACA,qDCLJ,+DAIE,sCAIA,kEACE,yBACA,2FAMA,gBACA,yGCbF,mBAOA,2MAIA,4HAYA,0DACE,8GAYF,8HAQE,mBAEA,6HAOF,YAGA,mIAME,eACA,CAFF,YAEE,4FAMJ,8BAEE,uBAYA,sCAEE,CAJF,oBAEA,CARA,wCAEA,CAHA,8BACA,CAFA,eACA,CAGA,wCAEA,CAEA,mDAIE,kCACE,6BACA,4CAKJ,kDAIA,eACE,aAGF,8BACE,uDACA,sCACA,cAEA,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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto\n display: block\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #646776; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2962ff;\n --color-brand-content: #2a5adf;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link-underline--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #ffffffcc; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2b8cee;\n --color-brand-content: #368ce2;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n vertical-align: middle\n\n.theme-toggle\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n vertical-align: middle\n height: 1rem\n width: 1rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n float: left\n padding: 1rem 0.5rem\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1rem\n width: 1rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page svg\n color: inherit\n height: 1rem\n width: 1rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n .theme-toggle-header\n display: block\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: var(--header-height)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 3.5rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\n.versionmodified\n font-style: italic\ndiv.versionadded, div.versionchanged, div.deprecated\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > p,\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 0.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(0.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(0.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -257,7 +257,7 @@ "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors", "privacy_policy": null, "privacy_policy_date": null, - "version": "0.7.29", + "version": "0.7.30", "weather_provider": null }, "status": "success" @@ -302,7 +302,7 @@ "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors", "privacy_policy": null, "privacy_policy_date": null, - "version": "0.7.29", + "version": "0.7.30", "weather_provider": null }, "status": "success" @@ -404,7 +404,7 @@
Made with Sphinx and @pradyunsg's @@ -428,7 +428,7 @@
-
+
diff --git a/docs/en/api/index.html b/docs/en/api/index.html index ef6ccbf8..2f7de4f5 100644 --- a/docs/en/api/index.html +++ b/docs/en/api/index.html @@ -5,8 +5,8 @@ - - API documentation - FitTrackee 0.7.29 documentation + + API documentation - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -275,7 +275,7 @@
Made with Sphinx and @pradyunsg's @@ -299,7 +299,7 @@
-
+
diff --git a/docs/en/api/oauth2.html b/docs/en/api/oauth2.html index 6d77ef1d..d33f560d 100644 --- a/docs/en/api/oauth2.html +++ b/docs/en/api/oauth2.html @@ -5,8 +5,8 @@ - - OAuth2 - FitTrackee 0.7.29 documentation + + OAuth2 - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -800,7 +800,7 @@ are supported by FitTrackee)

Made with Sphinx and @pradyunsg's @@ -824,7 +824,7 @@ are supported by FitTrackee)

-
+
diff --git a/docs/en/api/records.html b/docs/en/api/records.html index 3a3ea128..cbe3061c 100644 --- a/docs/en/api/records.html +++ b/docs/en/api/records.html @@ -5,8 +5,8 @@ - - Records - FitTrackee 0.7.29 documentation + + Records - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -377,7 +377,7 @@
Made with Sphinx and @pradyunsg's @@ -401,7 +401,7 @@
-
+
diff --git a/docs/en/api/sports.html b/docs/en/api/sports.html index 827bcfcc..19fb59bb 100644 --- a/docs/en/api/sports.html +++ b/docs/en/api/sports.html @@ -5,8 +5,8 @@ - - Sports - FitTrackee 0.7.29 documentation + + Sports - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -607,7 +607,7 @@
Made with Sphinx and @pradyunsg's @@ -631,7 +631,7 @@
-
+
diff --git a/docs/en/api/stats.html b/docs/en/api/stats.html index 951f0be2..3c0d5c10 100644 --- a/docs/en/api/stats.html +++ b/docs/en/api/stats.html @@ -5,8 +5,8 @@ - - Statistics - FitTrackee 0.7.29 documentation + + Statistics - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -531,7 +531,7 @@
Made with Sphinx and @pradyunsg's @@ -555,7 +555,7 @@
-
+
diff --git a/docs/en/api/users.html b/docs/en/api/users.html index 78a0a364..22f09858 100644 --- a/docs/en/api/users.html +++ b/docs/en/api/users.html @@ -5,8 +5,8 @@ - - Users - FitTrackee 0.7.29 documentation + + Users - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -772,7 +772,7 @@ one admin.

Made with Sphinx and @pradyunsg's @@ -796,7 +796,7 @@ one admin.

-
+
diff --git a/docs/en/api/workouts.html b/docs/en/api/workouts.html index 0581c49f..ec22387b 100644 --- a/docs/en/api/workouts.html +++ b/docs/en/api/workouts.html @@ -5,8 +5,8 @@ - - Workouts - FitTrackee 0.7.29 documentation + + Workouts - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -1304,7 +1304,7 @@ must be provided with ascent)

Made with Sphinx and @pradyunsg's @@ -1328,7 +1328,7 @@ must be provided with ascent)

-
+
diff --git a/docs/en/changelog.html b/docs/en/changelog.html index 966d6979..f3080714 100644 --- a/docs/en/changelog.html +++ b/docs/en/changelog.html @@ -5,8 +5,8 @@ - - Change log - FitTrackee 0.7.29 documentation + + Change log - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
-
@@ -153,7 +153,7 @@
- FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -231,24 +231,73 @@

Change log#

-
-

Version 0.7.29 (2024/01/06)#

+
+

Version 0.7.30 (2024/02/04)#

Features and enhancements#

    -
  • 8aa4cff - Update loader color on dark theme

  • -
  • #478 - Make application name clickable to access dashboard

  • +
  • b748459 - Update alert message colors on dark mode

Bugs Fixed#

    -
  • PR#479 - Minor fixes on UI

  • +
  • PR#481 - Handle keyboard navigation on dropdowns

  • +
  • 3821e37 - Make calendar arrows accessible to keyboard navigation

  • +
  • PR#488 - CLI - fix user creation when user already exists with same email

  • +
  • PR#489 - Handle keyboard navigation on calendar

Translations#

    +
  • PR#482 - Translations update (Galician and Spanish)

  • +
  • PR#484 - Translations update (German)

  • +
+

Translation status:

+
    +
  • Dutch: 99%

  • +
  • English: 100%

  • +
  • French: 100%

  • +
  • Galician: 100%

  • +
  • German: 100%

  • +
  • Italian: 84%

  • +
  • Norwegian Bokmål: 60%

  • +
  • Polish: 99%

  • +
  • Spanish: 100%

  • +
+
+
+

Misc#

+
    +
  • aff4d68 - CI - update actions version

  • +
+

Thanks to the contributors:

+
    +
  • @gallegonovato

  • +
  • @qwerty287

  • +
  • @xmgz

  • +
+
+
+
+

Version 0.7.29 (2024/01/06)#

+
+

Features and enhancements#

+
    +
  • 8aa4cff - Update loader color on dark theme

  • +
  • #478 - Make application name clickable to access dashboard

  • +
+
+
+

Bugs Fixed#

+
    +
  • PR#479 - Minor fixes on UI

  • +
+
+
+

Translations#

+
  • PR#476 - Translations update (Polish)

  • PR#477 - Translations update (Dutch)

@@ -265,8 +314,8 @@
  • Spanish: 100%

  • -
    -

    Misc#

    +
    +

    Misc#

    • PR#475 - Build - use poetry-core instead of poetry

    @@ -280,20 +329,20 @@

    Version 0.7.28 (2023/12/23)#

    -
    -

    Features and enhancements#

    +
    +

    Features and enhancements#

    • PR#474 - Improve links display

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • 6e215aa - fix background color on dark theme when modal is displayed

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#473 - Translations update (Galician, Spanish and German)

    @@ -319,29 +368,29 @@

    Version 0.7.27 (2023/12/20)#

    -
    -

    Features and enhancements#

    +
    +

    Features and enhancements#

    • #113 - add a dark mode

    • PR#464 - Update user preferences display

    • PR#471 - add new sport: “Cycling (Trekking)”

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • PR#469 - change UI display only on login ou user preferences update

    • PR#472 - fix redirection when resetting password

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#468 - Translations update (Galician & Spanish)

    -
    -

    Misc#

    +
    +

    Misc#

    • #456 - Drop PostgreSQL 11 support

    @@ -368,20 +417,20 @@

    Version 0.7.26 (2023/11/19)#

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • #224 - Missing elevation results in incorrect ascent/descent total

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#444 - Translations update (Norwegian Bokmål)

    -
    -

    Misc#

    +
    +

    Misc#

    In addition to dependencies update:

    • PR#449 - Update vue, tooling and chart library

    • @@ -407,8 +456,8 @@

    Version 0.7.25 (2023/10/08)#

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • #441 - Errors after upgrade to 0.7.24

    @@ -416,21 +465,21 @@

    Version 0.7.24 (2023/10/04)#

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • PR#433 - Handle encoded password in EMAIL_URL

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#427 - fix typos and translations + refacto

    • PR#431 - Translations update (Galician)

    -
    -

    Misc#

    +
    +

    Misc#

    • PR#428 - CI - Add PostgreSQL 16

    • 2bcff2e - API - update Flask to 3.0+

    • @@ -457,15 +506,15 @@

    Version 0.7.23 (2023/09/14)#

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • PR#421 - remove darksky from available weather providers in .env

    • PR#426 - Update default tile server (thanks to @astridx)

    -
    -

    Misc#

    +
    +

    Misc#

    • PR#422 - CI - fix e2e tests with packaged version

    @@ -473,15 +522,15 @@

    Version 0.7.22 (2023/08/23)#

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • PR#411 - Fix various typos

    • PR#416 - fix modal navigation and closing

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#410 - Translations update (German)

    • PR#415 - Translations update (Polish)

    • @@ -510,14 +559,14 @@

    Version 0.7.21 (2023/07/30)#

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • #407 - Workout display error when speeds are zero

    -
    -

    Misc#

    +
    +

    Misc#

    • PR#409 - CI - update actions version

    @@ -525,21 +574,21 @@

    Version 0.7.20 (2023/07/22)#

    -
    -

    Features and enhancements#

    +
    +

    Features and enhancements#

    • #400 - Add new sport: open water swimming

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • PR#398 - Fix language dropdown label

    • #402 - handle gpx file without elevation

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#399 - Translations update (Galician)

    • PR#401 - Translations update (Galician and Polish)

    • @@ -568,23 +617,23 @@

    Version 0.7.19 (2023/07/15)#

    -
    -

    Features and enhancements#

    +
    +

    Features and enhancements#

    • PR#380 - Update documentation link

    • #390 - Improve UI

    • #391 - Add new sport: paragliding

    -
    -

    Bugs Fixed#

    +
    +

    Bugs Fixed#

    • #384 - Inconsistent page with between workout with and without GPS data

    • #393 - PIL.Image module has no attribute ANTIALIAS

    -
    -

    Translations#

    +
    +

    Translations#

    • PR#394 - Translations update (Galician)

    • PR#397 - Translations update (Spanish)

    • @@ -597,8 +646,8 @@
    • PR#388 - Minor typo in CONTRIBUTING.md

    -
    -

    Misc#

    +
    +

    Misc#

    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -485,7 +485,7 @@ Can be used if redis is not set (no dramatiq workers running).

    Made with Sphinx and @pradyunsg's @@ -544,7 +544,7 @@ Can be used if redis is not set (no dramatiq workers running).

    -
    +
    diff --git a/docs/en/features.html b/docs/en/features.html index 90699be7..dffa8266 100644 --- a/docs/en/features.html +++ b/docs/en/features.html @@ -5,8 +5,8 @@ - - Features - FitTrackee 0.7.29 documentation + + Features - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -586,7 +586,7 @@ A user with an inactive account cannot log in. (new in 0.6.0).

    Made with Sphinx and @pradyunsg's @@ -645,7 +645,7 @@ A user with an inactive account cannot log in. (new in 0.6.0).

    -
    +
    diff --git a/docs/en/genindex.html b/docs/en/genindex.html index 82fc891b..9cd2dcbe 100644 --- a/docs/en/genindex.html +++ b/docs/en/genindex.html @@ -4,7 +4,7 @@ - Index - FitTrackee 0.7.29 documentation + Index - FitTrackee 0.7.30 documentation @@ -124,7 +124,7 @@
    -
    @@ -151,7 +151,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -302,7 +302,7 @@
    Made with Sphinx and @pradyunsg's @@ -326,7 +326,7 @@
    -
    +
    diff --git a/docs/en/http-routingtable.html b/docs/en/http-routingtable.html index e0ee39ae..a2290c6b 100644 --- a/docs/en/http-routingtable.html +++ b/docs/en/http-routingtable.html @@ -4,7 +4,7 @@ - HTTP Routing Table - FitTrackee 0.7.29 documentation + HTTP Routing Table - FitTrackee 0.7.30 documentation @@ -124,7 +124,7 @@
    -
    @@ -151,7 +151,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -593,7 +593,7 @@
    Made with Sphinx and @pradyunsg's @@ -617,7 +617,7 @@
    -
    +
    diff --git a/docs/en/index.html b/docs/en/index.html index 425afd9d..29ed419c 100644 --- a/docs/en/index.html +++ b/docs/en/index.html @@ -5,8 +5,8 @@ - - FitTrackee 0.7.29 documentation + + FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -289,7 +289,7 @@ Map.
    Made with Sphinx and @pradyunsg's @@ -313,7 +313,7 @@ Map.
    - + diff --git a/docs/en/installation.html b/docs/en/installation.html index 2877e711..472e20d0 100644 --- a/docs/en/installation.html +++ b/docs/en/installation.html @@ -5,8 +5,8 @@ - - Installation - FitTrackee 0.7.29 documentation + + Installation - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -909,11 +909,11 @@ $ make install-db
    -
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz
    -$ tar -xzf v0.7.29.tar.gz
    -$ mv FitTrackee-0.7.29 FitTrackee
    +
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz
    +$ tar -xzf v0.7.30.tar.gz
    +$ mv FitTrackee-0.7.30 FitTrackee
     $ cd FitTrackee
     
    @@ -1037,11 +1037,11 @@ $ source .
    • Stop the application

    • Change to the directory where FitTrackee directory is located

    • -
    • Download the last release (for now, it is the release v0.7.29) and overwrite existing files:

    • +
    • Download the last release (for now, it is the release v0.7.30) and overwrite existing files:

    -
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz
    -$ tar -xzf v0.7.29.tar.gz
    -$ cp -R FitTrackee-0.7.29/* FitTrackee/
    +
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz
    +$ tar -xzf v0.7.30.tar.gz
    +$ cp -R FitTrackee-0.7.30/* FitTrackee/
     $ cd FitTrackee
     
    @@ -1324,7 +1324,7 @@ $ make docker-test-python
    Made with Sphinx and @pradyunsg's @@ -1399,7 +1399,7 @@ $ make docker-test-python
    -
    +
    diff --git a/docs/en/oauth.html b/docs/en/oauth.html index f2b8cde8..81a7b740 100644 --- a/docs/en/oauth.html +++ b/docs/en/oauth.html @@ -5,8 +5,8 @@ - - OAuth 2.0 - FitTrackee 0.7.29 documentation + + OAuth 2.0 - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -369,7 +369,7 @@ It is recommended to use PKCE to provide a better security.

    Made with Sphinx and @pradyunsg's @@ -414,7 +414,7 @@ It is recommended to use PKCE to provide a better security.

    -
    +
    diff --git a/docs/en/objects.inv b/docs/en/objects.inv index 3dfb8b9b..ef6c8737 100644 Binary files a/docs/en/objects.inv and b/docs/en/objects.inv differ diff --git a/docs/en/search.html b/docs/en/search.html index c8ef33eb..f6d258f0 100644 --- a/docs/en/search.html +++ b/docs/en/search.html @@ -4,7 +4,7 @@ - Search - FitTrackee 0.7.29 + <!-- Generated with Sphinx 7.1.2 and Furo 2024.01.29 --><title>Search - FitTrackee 0.7.30 documentation @@ -124,7 +124,7 @@
    -
    @@ -151,7 +151,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -249,7 +249,7 @@
    Made with Sphinx and @pradyunsg's @@ -273,7 +273,7 @@
    -
    +
    diff --git a/docs/en/searchindex.js b/docs/en/searchindex.js index 1429f878..b1aee4c4 100644 --- a/docs/en/searchindex.js +++ b/docs/en/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "titles": ["Authentication and account", "Configuration", "API documentation", "OAuth2", "Records", "Sports", "Statistics", "Users", "Workouts", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "OAuth 2.0", "Third-party tools", "Administrator", "Troubleshooting"], "terms": {"post": [0, 3, 8, 14], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "auth": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "regist": [0, 1, 9, 11, 13], "user": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14], "send": [0, 7, 9, 11, 13], "confirm": [0, 3, 9, 11, 13], "email": [0, 1, 7, 9, 10, 11, 16], "The": [0, 9, 10, 11, 13, 14, 16], "newli": [0, 10, 13], "creat": [0, 3, 8, 9, 11, 13, 14], "i": [0, 1, 3, 8, 9, 10, 11, 12, 13, 14, 17], "inact": [0, 7, 11, 13], "must": [0, 1, 3, 5, 7, 8, 9, 11, 13, 14, 16], "hi": [0, 7, 9, 11], "activ": [0, 5, 7, 9, 10, 11, 12, 13], "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "request": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13], "content": [0, 1, 3, 4, 5, 6, 7, 8, 9], "type": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "applic": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8, 11], "respons": [0, 1, 3, 4, 5, 6, 7, 8], "success": [0, 1, 3, 4, 5, 6, 7, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "statu": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "error": [0, 1, 3, 5, 7, 8, 9, 11, 13, 16], "registr": [0, 1, 9, 10, 11, 13, 14], "400": [0, 1, 3, 5, 7, 8, 9], "bad": [0, 1, 3, 5, 7, 8], "messag": [0, 1, 3, 8, 9, 10, 11, 13], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 16], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16], "n": 0, "object": [0, 1, 5, 7, 8], "usernam": [0, 6, 7, 9, 10, 13], "string": [0, 1, 3, 5, 6, 7, 8, 13, 14], "3": [0, 5, 6, 7, 8, 11, 13], "30": [0, 6], "charact": [0, 9, 13], "requir": [0, 9, 13, 14], "password": [0, 7, 9, 10, 11, 13], "8": [0, 8, 11, 13], "lang": [0, 9], "languag": [0, 7, 9, 11], "prefer": [0, 7, 9], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "fallback": 0, "en": [0, 7], "english": [0, 9, 11], "accepted_polici": 0, "boolean": [0, 1, 3, 7, 10], "true": [0, 1, 3, 5, 7, 9, 13], "accept": 0, "privaci": [0, 1, 9, 11], "polici": [0, 1, 9, 11], "code": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "payload": [0, 1, 3, 5, 7, 8], "sorri": 0, "alreadi": [0, 10], "taken": [0, 11], "you": [0, 1, 5, 6, 7, 8, 11, 12, 13], "agre": [0, 9, 11], "onli": [0, 3, 7, 8, 9, 10, 11, 13, 14], "alphanumer": [0, 9], "underscor": 0, "_": [0, 9], "allow": [0, 1, 8, 9, 10, 11, 12, 13, 14], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "disabl": [0, 9, 10, 11, 13], "500": [0, 1, 5, 7, 8, 9], "intern": [0, 1, 5, 7, 8], "server": [0, 1, 5, 7, 8, 9, 11, 12], "pleas": [0, 1, 3, 4, 5, 6, 7, 8, 9], "try": [0, 5, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "contact": [0, 1, 5, 7, 8, 11], "administr": [0, 1, 5, 7, 8, 14, 17], "after": [0, 3, 9, 11, 13, 14], "auth_token": 0, "web": [0, 12, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "resend": 0, "instruct": [0, 9, 11, 13], "If": [0, 3, 11, 13, 14], "thi": [0, 3, 8, 9, 10, 11, 12, 13], "endpoint": [0, 1, 3, 9, 13, 14], "avail": [0, 4, 10, 11, 13, 14, 15], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 9], "Not": [0, 3, 5, 6, 7, 8], "found": [0, 3, 5, 6, 7, 8, 9], "url": [0, 3, 9, 13, 14, 16], "wa": [0, 9], "login": [0, 9], "an": [0, 1, 3, 5, 7, 9, 11, 13, 14, 16], "can": [0, 7, 9, 10, 11, 12, 13, 14, 16], "log": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16], "successfulli": 0, "401": [0, 1, 3, 4, 5, 6, 7, 8, 9], "unauthor": [0, 1, 3, 4, 5, 6, 7, 8], "credenti": [0, 13], "get": [0, 1, 3, 4, 5, 6, 7, 8, 14], "profil": [0, 3, 9, 14], "info": [0, 9, 11], "scope": [0, 1, 3, 4, 5, 6, 7, 8], "read": [0, 3, 4, 5, 6, 7, 8, 9, 14], "data": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "accepted_privacy_polici": 0, "admin": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 13], "fals": [0, 1, 3, 5, 7, 8, 13], "bio": [0, 7], "null": [0, 1, 5, 7, 8, 9], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 9], "gmt": [0, 3, 4, 7, 8], "date_format": 0, "dd": 0, "mm": 0, "yyyi": 0, "display_asc": 0, "sam": [0, 4, 7, 8], "com": [0, 1, 3, 7, 9, 13, 14], "email_to_confirm": 0, "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "last_nam": [0, 7], "locat": [0, 7, 13], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 10, 11, 13], "pictur": [0, 7, 8, 9], "record": [0, 2, 7, 8, 9, 11], "id": [0, 3, 4, 5, 6, 7, 8, 14], "9": [0, 4, 7, 11, 13], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "valu": [0, 3, 4, 7, 8, 9, 11, 13, 14, 16], "18": [0, 4, 7, 8, 11, 13], "workout_d": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 11, 13], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8, 10, 11, 13], "ha": [0, 4, 7, 8, 9, 11, 12], "43": [0, 4, 7, 8, 9], "97": [0, 4, 7, 8, 9], "11": [0, 4, 7, 11, 13], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8, 13], "m": [0, 4, 6, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 11, 13], "start_elevation_at_zero": 0, "timezon": [0, 7, 8, 9, 11], "europ": [0, 7], "pari": [0, 7], "total_asc": [0, 6], "720": 0, "35": [0, 9], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 9, 13], "27": [0, 3, 7, 11], "use_dark_mod": 0, "use_raw_gpx_spe": 0, "weekm": [0, 6, 7], "header": [0, 1, 3, 4, 5, 6, 7, 8, 14], "author": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13], "2": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13], "0": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "bearer": [0, 1, 3, 4, 5, 6, 7, 8], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expir": [0, 1, 3, 4, 5, 6, 7, 8, 10], "edit": [0, 9, 11], "write": [0, 1, 3, 5, 7, 8, 14], "updat": [0, 1, 5, 7, 8, 9, 11, 13], "first": [0, 3, 11, 14], "name": [0, 3, 7, 9, 13], "last": [0, 9, 13], "biographi": 0, "birth": [0, 9], "date": [0, 6, 8, 9, 11], "format": [0, 6, 8, 9, 11], "y": [0, 6, 8, 13], "d": [0, 6, 8], "support": [0, 3, 9, 11, 13, 14, 16], "default": [0, 3, 6, 7, 8, 9, 11, 13], "date_str": 0, "correspond": [0, 13], "client": [0, 3, 9, 11, 13, 14], "mmm": 0, "do": [0, 1, 5, 6, 7, 8, 13], "local": [0, 9, 12, 13], "e": 0, "fr": [0, 7, 13], "gl": 0, "nl": 0, "de": [0, 13], "nb": 0, "us": [0, 3, 7, 8, 9, 10, 11, 12, 13, 14], "displai": [0, 8, 9, 10, 11, 12, 13, 14, 17], "app": [0, 3, 9, 11, 12, 13, 14], "highest": [0, 4, 11], "ascent": [0, 4, 8, 9, 11], "total": [0, 3, 9, 11], "distanc": [0, 4, 8, 9, 11], "imperi": [0, 9, 11], "unit": [0, 9, 13], "elev": [0, 8, 9, 11, 13], "plot": 0, "start": [0, 6, 8, 9, 11, 13, 17], "zero": [0, 9, 11], "time": [0, 6, 8, 9, 11], "zone": 0, "interfac": [0, 9, 11, 12, 13], "dark": [0, 9, 11], "mode": [0, 9], "browser": [0, 9, 11], "unfilt": 0, "gpx": [0, 3, 8, 9, 11, 12, 13, 15], "calcul": [0, 9, 11], "speed": [0, 4, 8, 9, 11, 13], "doe": [0, 6, 7, 8, 9], "week": [0, 6, 9, 11], "mondai": [0, 6, 11], "don": 0, "t": [0, 9, 16], "match": [0, 8, 9], "sport": [0, 2, 6, 8, 9, 13], "color": [0, 5, 9, 11], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "hexadecim": 0, "when": [0, 1, 9, 10, 11, 13], "ad": [0, 9, 10, 11], "workout": [0, 2, 3, 4, 5, 6, 9, 12, 14, 15, 17], "float": [0, 8], "stop": [0, 9, 11, 13], "threshold": [0, 9, 11], "gpxpy": [0, 9, 11, 13], "exist": [0, 6, 7, 8, 9, 11, 12, 13], "delet": [0, 3, 7, 8, 9, 10, 11], "reset": [0, 7, 9, 10, 11, 13], "given": [0, 3], "204": [0, 3, 7, 8], "paramet": [0, 3, 5, 6, 7, 8, 9, 11, 13, 14], "No": [0, 3, 7, 8, 9, 12], "multipart": [0, 3, 8], "form": [0, 3, 8], "file": [0, 1, 8, 9, 10, 11, 12, 13, 15, 17], "imag": [0, 7, 8, 9, 11, 13, 17], "extens": [0, 8, 13], "jpg": 0, "png": [0, 8, 13], "gif": 0, "part": [0, 8], "select": [0, 8, 11], "413": [0, 8], "entiti": [0, 8], "too": [0, 8], "larg": [0, 8, 11, 13], "dure": [0, 8], "size": [0, 1, 8, 9, 11, 13], "exce": [0, 8, 9], "0mb": [0, 8], "NO": [0, 3, 7, 8], "handl": [0, 9, 11, 13, 16], "process": [0, 9, 10, 13], "patch": [0, 1, 5, 7, 8], "It": [0, 7, 9, 11, 12, 14], "enabl": [0, 1, 7, 11, 13], "chang": [0, 11, 12, 13], "one": [0, 7, 8, 11], "current": [0, 7, 9], "address": [0, 11, 13], "inform": [0, 1, 9, 11, 12, 13], "anoth": [0, 7, 11, 13], "new": [0, 7, 10, 11, 13, 14], "new_password": 0, "miss": [0, 9], "logout": [0, 9], "blacklist": [0, 10], "out": 0, "access": [0, 3, 9, 13, 14], "revok": [0, 3], "malform": 0, "other": [0, 7, 13], "reason": 0, "export": [0, 9, 10, 11, 12, 13], "return": [0, 3, 4, 7, 8, 9, 13], "creation": [0, 9, 11], "in_progress": 0, "byte": 0, "wed": 0, "mar": 0, "2023": [0, 13], "31": [0, 8, 13], "17": [0, 8, 11], "file_nam": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "zip": [0, 1, 8, 9, 11], "file_s": 0, "924": 0, "ongo": 0, "complet": [0, 9], "download": [0, 8, 9, 11, 13, 17], "archiv": [0, 1, 9, 10, 11, 13], "archive_rgjsr3fhr5yp": 0, "x": [0, 8, 9, 13, 14], "gzip": 0, "filenam": 0, "config": [1, 9, 13, 16], "about": [1, 9, 11, 13, 14], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_en": 1, "is_registration_en": 1, "max_single_file_s": 1, "1048576": 1, "max_us": 1, "max_zip_file_s": 1, "10485760": 1, "map_attribut": [1, 13], "copi": [1, 13], "href": [1, 13], "www": [1, 13], "openstreetmap": [1, 9, 13], "org": [1, 13], "copyright": [1, 13], "contributor": [1, 9, 13, 15], "privacy_polici": 1, "privacy_policy_d": 1, "version": [1, 10, 11, 13], "7": [1, 8, 10, 11, 13, 14], "29": [1, 13], "weather_provid": 1, "authent": [1, 2, 3, 4, 5, 7, 8, 14], "instanc": [1, 3, 9, 11, 13, 14], "integ": [1, 3, 5, 6, 7, 8], "max": [1, 7, 8, 9, 10], "number": [1, 7, 8, 9, 10, 11, 13], "singl": [1, 7, 9, 11, 13], "have": [1, 5, 6, 7, 8, 9], "permiss": [1, 5, 6, 7, 8], "ping": 1, "health": 1, "check": [1, 9, 13, 16], "pong": 1, "account": [2, 7, 9, 10, 13, 15], "configur": [2, 9, 11, 13, 14], "oauth2": [2, 14], "statist": 2, "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 10, 11, 13], "page": [3, 7, 8, 9, 11], "fittracke": [3, 10, 11, 13, 14, 15, 17], "parti": [3, 11, 12, 14], "without": [3, 6, 7, 8, 9, 11, 12], "client_descript": 3, "client_id": [3, 14], "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "juli": 3, "2022": 3, "06": [3, 6], "53": [3, 9], "import": [3, 9, 11, 13, 15], "redirect_uri": 3, "callback": [3, 14], "websit": 3, "has_next": 3, "has_prev": 3, "queri": [3, 6, 7, 8], "client_secret": 3, "secret": [3, 13, 14], "client_nam": 3, "client_uri": 3, "arrai": 3, "list": [3, 9, 12, 13], "redirect": [3, 9, 14], "descript": [3, 10, 13], "option": [3, 9, 10, 13, 14], "client_client_id": 3, "NOT": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "all": [3, 4, 5, 6, 7, 8, 9, 11, 13], "associ": 3, "issu": [3, 12, 13], "response_typ": [3, 14], "state": [3, 14], "uniqu": [3, 14], "prevent": [3, 13, 14], "cross": [3, 11, 13, 14], "site": [3, 14], "forgeri": [3, 14], "mandatori": [3, 8, 9, 10, 13, 14], "recommend": [3, 13, 14], "code_challeng": [3, 14], "gener": [3, 9, 10, 11, 13, 14], "from": [3, 6, 8, 9, 11, 12, 14, 15], "verifi": [3, 14], "pkce": [3, 14], "code_challenge_method": [3, 14], "method": [3, 13, 14], "challeng": [3, 14], "s256": [3, 14], "authlib": [3, 13, 14], "librari": [3, 9, 13, 14], "refresh": [3, 9], "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "grant": [3, 14], "authorization_cod": [3, 14], "ar": [3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17], "code_verifi": 3, "follow": [4, 10, 11, 13, 14, 15, 16], "averag": [4, 8, 9, 11], "farthest": [4, 9, 11], "longest": [4, 9, 11], "durat": [4, 8, 9, 11], "maximum": [4, 9, 10, 11], "non": [5, 12], "is_active_for_us": 5, "label": [5, 9], "cycl": [5, 9, 11], "transport": [5, 9, 11], "hike": [5, 9, 11], "mountain": [5, 9, 11], "bike": [5, 8, 9, 11], "run": [5, 9, 10, 11, 13, 14], "walk": [5, 9, 11], "has_workout": 5, "stat": [6, 9], "user_nam": [6, 7], "by_tim": 6, "2018": [6, 8], "2017": [6, 8], "average_spe": 6, "48": 6, "203": 6, "156": [6, 9], "15": [6, 8, 10, 11, 13], "282": [6, 9], "12341": 6, "16": [6, 8, 11], "99": [6, 9], "150": 6, "178": [6, 9], "47": [6, 8, 9], "9960": 6, "95": [6, 9], "46": [6, 9], "78": 6, "613": 6, "1267": 6, "end": [6, 8], "frame": 6, "sundai": [6, 8, 11], "month": [6, 9, 11], "year": [6, 11], "by_sport": 6, "uploads_dir_s": 6, "1000": 6, "regardless": 7, "right": [7, 9, 10, 11, 13, 14], "some": [7, 8, 9, 11, 12, 13, 14], "order_bi": [7, 8], "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": [7, 11], "03": [7, 8], "per_pag": [7, 8], "per": [7, 8, 9, 13], "q": 7, "order": [7, 8, 9, 14], "sort": [7, 8, 11], "asc": [7, 8], "desc": [7, 8], "criteria": [7, 8], "detail": [7, 9, 13, 17], "jpeg": 7, "add": [7, 9, 10, 11, 12], "remov": [7, 9, 10, 11], "modifi": [7, 9, 10, 13], "new_email": 7, "reset_password": 7, "differ": [7, 9, 11], "than": [7, 9, 10], "A": [7, 9, 10, 11, 13, 16], "own": [7, 11, 12], "except": [7, 11, 13, 16], "he": 7, "": [7, 8, 9, 11, 13], "john_do": 7, "your": [7, 11, 12, 13], "02": 8, "least": 8, "ave_spe": 8, "bound": 8, "creation_d": 8, "51": 8, "descent": [8, 9, 11], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 9, 11, 12, 17], "max_alt": 8, "max_spe": 8, "min_alt": 8, "modification_d": 8, "move": [8, 9], "next_workout": 8, "note": [8, 9, 11, 13], "paus": [8, 9], "previous_workout": 8, "mon": 8, "jan": 8, "segment": [8, 9, 11], "titl": [8, 9, 11], "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 9, 11], "ani": [8, 13], "case": [8, 11, 13], "insensit": [8, 13], "distance_from": 8, "minim": [8, 14], "distance_to": 8, "maxim": 8, "duration_from": 8, "h": [8, 11], "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "workout_short_id": 8, "57": [8, 9], "45": 8, "22": 8, "morn": 8, "short": 8, "leaflet": [8, 13], "chart_data": 8, "chart": [8, 9, 11, 13], "j": [8, 9, 13], "279": [8, 9], "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "63": 8, "fri": 8, "44": [8, 9], "7380": 8, "280": [8, 9], "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 13], "tile": [8, 9, 11], "c": [8, 13], "4109": 8, "2930": 8, "subdomain": [8, 9, 13], "zoom": 8, "index": 8, "along": 8, "axi": [8, 9, 11], "xml": 8, "201": [8, 9], "doubl": 8, "quot": 8, "escap": 8, "no_gpx": 8, "uuid": [8, 9], "km": [8, 11], "second": 8, "8aa4cff": 9, "loader": 9, "theme": [9, 11], "478": 9, "make": [9, 13], "clickabl": 9, "dashboard": 9, "pr": 9, "479": 9, "ui": 9, "476": 9, "polish": [9, 11], "477": 9, "dutch": [9, 11], "galician": [9, 11], "german": [9, 11], "italian": [9, 11], "84": 9, "norwegian": [9, 11], "bokm\u00e5l": [9, 11], "60": 9, "spanish": [9, 11], "475": 9, "build": [9, 13], "poetri": [9, 13], "core": 9, "instead": [9, 11], "thank": [9, 15], "traxi": 9, "mariuz": 9, "koen": 9, "474": 9, "link": [9, 13], "6e215aa": 9, "background": 9, "modal": 9, "473": 9, "98": 9, "gallegonovato": 9, "qwerty287": 9, "xmgz": 9, "113": 9, "464": 9, "471": 9, "trekk": [9, 11], "469": 9, "ou": 9, "472": 9, "468": 9, "456": 9, "drop": 9, "postgresql": [9, 13, 16], "85": 9, "61": 9, "davidhenrythoreau": 9, "contain": [9, 11, 13], "databas": [9, 11, 13, 16], "migrat": [9, 10, 13], "see": [9, 11, 12, 13, 14, 16], "upgrad": 9, "224": 9, "result": 9, "incorrect": 9, "444": 9, "In": [9, 11], "addit": [9, 11, 13], "depend": [9, 13], "449": 9, "vue": [9, 13], "tool": [9, 12, 13], "450": 9, "comradekingu": 9, "441": 9, "433": 9, "encod": [9, 13], "427": 9, "typo": 9, "refacto": 9, "431": 9, "428": 9, "ci": 9, "2bcff2e": 9, "flask": [9, 13], "436": 9, "python": [9, 13, 14], "438": 9, "workflow": 9, "421": 9, "darkski": [9, 13], "weather": [9, 11], "env": [9, 13], "426": 9, "astridx": 9, "422": 9, "e2": 9, "test": [9, 13], "packag": [9, 13], "411": 9, "variou": 9, "416": 9, "navig": 9, "410": 9, "415": 9, "417": 9, "418": 9, "bjornclauw": 9, "mariusz": 9, "407": 9, "409": 9, "action": 9, "open": [9, 11, 12, 13], "water": [9, 11], "swim": [9, 11], "398": 9, "dropdown": [9, 11], "402": 9, "399": 9, "406": 9, "56": 9, "380": 9, "390": 9, "391": 9, "paraglid": [9, 11], "384": 9, "inconsist": 9, "between": [9, 11], "gp": [9, 11], "393": 9, "pil": 9, "modul": [9, 13], "attribut": [9, 13], "antialia": 9, "394": 9, "397": 9, "386": 9, "contribut": 9, "md": 9, "388": 9, "395": 9, "cc3fe1c": 9, "42": 9, "dkm": 9, "partial": 9, "now": [9, 10, 11, 13], "yet": [9, 12], "weblat": [9, 11], "longer": [9, 13, 16], "minimum": [9, 11], "351": 9, "370": 9, "371": 9, "375": 9, "thovi98": 9, "376": 9, "1375986": 9, "furo": 9, "377": 9, "init": [9, 13], "354": 9, "374": 9, "docker": 9, "instal": [9, 12], "virtualenv": [9, 13], "87": 9, "36": 9, "366": 9, "369": 9, "host": [9, 13], "367": 9, "358": 9, "filter": [9, 11], "359": 9, "footer": 9, "overlap": 9, "350": 9, "352": 9, "356": 9, "357": 9, "365": 9, "gnu": 9, "ewm": 9, "jat255": 9, "among": 9, "below": [9, 13], "sinc": [9, 13, 14], "servic": [9, 13], "shut": [9, 13], "down": [9, 13], "march": [9, 13], "319": 9, "cli": [9, 10, 11, 13], "329": 9, "sticki": 9, "333": 9, "338": 9, "relev": 9, "328": 9, "altitud": [9, 11], "track": [9, 12], "b29ed7a": 9, "250": 9, "320": 9, "323": 9, "06ba975": 9, "bcc568e": 9, "ea0ac99": 9, "a458f5f": 9, "075aeb9": 9, "60e164d": 9, "318": 9, "lavoi": 9, "mondstern": 9, "314": 9, "fail": [9, 17], "315": 9, "custom": [9, 11, 13], "defin": [9, 11], "review": [9, 11], "upload": [9, 10, 11, 13, 15, 17], "lastli": 9, "mai": [9, 11, 12, 13], "301": [9, 13], "304": 9, "305": 9, "307": 9, "posit": [9, 11], "297": 9, "308": 9, "310": 9, "290": 9, "294": 9, "postgresql10": 9, "265": 9, "implement": [9, 14], "altern": 9, "visualcross": 9, "environ": [9, 10, 16], "variabl": [9, 16], "set": [9, 10, 11, 13, 14, 16], "weather_api_provid": [9, 13], "287": 9, "289": 9, "dperruso": 9, "92": 9, "c88a515": 9, "f96dcef": 9, "278": 9, "270": 9, "nederland": 9, "258": 9, "pars": [9, 13], "area": 9, "271": 9, "273": 9, "274": 9, "parallel": 9, "275": 9, "worker": [9, 10, 13, 16], "entri": [9, 13], "point": [9, 13], "fittrackee_work": [9, 10, 13], "command": [9, 11, 12, 13], "dramatiq": [9, 10, 13], "3c8d9c2": 9, "trail": [9, 11], "comma": [9, 13], "dev": 9, "264": 9, "white": 9, "grai": 9, "266": 9, "260": 9, "261": 9, "should": [9, 13], "limit": [9, 11], "still": [9, 11, 12, 13], "need": [9, 11, 13, 14], "89": 9, "b1536fc": 9, "257": 9, "bodi": [9, 13, 14], "nginx": [9, 11, 13, 14, 16], "112": 9, "244": 9, "virtual": [9, 11], "ride": 9, "246": 9, "247": 9, "microsecond": 9, "252": 9, "242": 9, "241": 9, "strength": 9, "estim": 9, "239": 9, "cb9d02f": 9, "88": 9, "231": 9, "236": 9, "rate": 9, "232": 9, "hidden": [9, 11], "237": 9, "212": 9, "230": 9, "problem": 9, "225": 9, "grammar": 9, "skylan0916": 9, "execut": 9, "lower": 9, "v0": [9, 13], "postgr": [9, 16], "213": 9, "measur": 9, "ft": 9, "mi": 9, "223": 9, "icon": [9, 13], "167": 9, "162": 9, "fmstrat": 9, "210": 9, "could": 9, "staticmap_subdomain": [9, 13], "209": 9, "multipl": 9, "gorgobacka": 9, "And": 9, "detect": 9, "208": 9, "card": 9, "html": 9, "197": 9, "196": 9, "manag": [9, 10, 13], "190": 9, "were": 9, "193": 9, "192": 9, "191": 9, "layout": 9, "includ": 9, "195": 9, "affect": [9, 11], "previous": 9, "cc4287e": 9, "offset": 9, "befor": [9, 13], "introduc": 9, "possibl": [9, 11, 12, 13], "smtp": [9, 13], "reduc": 9, "pre": 9, "requisit": 9, "To": [9, 13, 14], "180": 9, "cannot": [9, 11], "tl": [9, 13], "177": 9, "small": 9, "screen": [9, 11], "175": 9, "173": 9, "171": 9, "correctli": 9, "sent": [9, 11, 13, 14], "155": 9, "106": 9, "169": 9, "161": 9, "160": 9, "sever": [9, 11, 12, 13], "danielsiersleben": 9, "report": 9, "initi": [9, 13], "149": 9, "initialis": [9, 13], "152": 9, "autoescap": 9, "jinja": 9, "templat": 9, "151": 9, "sanit": 9, "input": 9, "serv": [9, 13], "warn": [9, 11], "launch": 9, "w": 9, "script": 9, "entrypoint": 9, "avoid": 9, "product": 9, "dotenv": 9, "146": 9, "145": 9, "model": 9, "140": 9, "fullscreen": 9, "control": [9, 11, 13], "138": 9, "135": 9, "finish": 9, "marker": 9, "134": 9, "wind": [9, 11], "direct": [9, 11], "877fa0f": 9, "calendar": [9, 11], "resolut": 9, "131": 9, "129": 9, "127": [9, 13], "legitim": 9, "uri": 9, "localhost": [9, 13], "123": 9, "121": 9, "snowsho": [9, 11], "116": 9, "better": [9, 14], "button": 9, "graph": 9, "115": 9, "91": 9, "min": 9, "90": 9, "seem": 9, "104": 9, "switch": 9, "agplv3": 9, "licens": [9, 12, 13], "101": 9, "full": [9, 11], "develop": [9, 10, 12], "109": 9, "slow": 9, "movement": 9, "93": 9, "paf38": 9, "83": 9, "static": [9, 11, 13], "keep": [9, 12, 13], "default_staticmap": [9, 13], "81": 9, "remain": 9, "textarea": 9, "82": 9, "dai": [9, 10, 11, 13], "80": [9, 13], "save": [9, 11], "79": 9, "rebuild": 9, "75": 9, "same": [9, 11], "javascript": [9, 13], "due": 9, "sqlalchemi": [9, 13, 16], "engin": [9, 13, 16], "database_url": [9, 13, 16], "72": 9, "exceed": 9, "71": 9, "greater": 9, "70": 9, "less": 9, "66": 9, "64": 9, "shown": [9, 14, 17], "62": 9, "refactor": 9, "evalu": [9, 13], "purpos": [9, 13], "standard": [9, 13], "term": [9, 13], "directori": [9, 11, 13], "also": [9, 10, 11, 12, 13], "59": 9, "major": 9, "becom": 9, "more": [9, 10, 11, 12, 13], "easi": 9, "been": [9, 12], "renam": 9, "layer": [9, 13], "replac": [9, 13], "thunderforest": [9, 13], "outdoor": [9, 11, 12, 13], "54": 9, "simplifi": [9, 14], "redi": [9, 10, 13], "side": 9, "4c3fc34": 9, "empti": [9, 10, 13], "34614d5": 9, "spinner": 9, "load": [9, 16], "b862a77": 9, "2e1ee2c": 9, "interceptor": 9, "rout": [9, 13], "definit": 9, "weekend": 9, "40": 9, "i18n": 9, "41": 9, "show": [9, 10, 13], "mous": 9, "over": 9, "choos": [9, 11], "33": 9, "37": 9, "34": 9, "anymor": 9, "pipenv": 9, "tooltip": [9, 11], "even": [9, 11], "enter": [9, 11], "kei": [9, 11, 13], "search": 9, "owner": [9, 11, 13], "view": [9, 11, 13], "usag": [10, 13], "arg": [10, 13], "help": [10, 13], "exit": [10, 13], "deprec": 10, "next": [10, 11], "fittrackee_set_admin": 10, "fittrackee_upgrade_db": 10, "appli": 10, "relat": [10, 11, 13, 14], "argument": 10, "random": 10, "incomplet": 10, "store": [11, 12, 14], "For": [11, 13, 14], "kind": 11, "encrypt": 11, "With": [11, 13], "street": [11, 12], "electr": 11, "19": 11, "row": 11, "ski": 11, "alpin": 11, "countri": 11, "overridden": 11, "analyz": 11, "wai": [11, 13], "specif": [11, 13], "moment": 11, "which": 11, "up": [11, 12], "metric": 11, "system": [11, 13], "origin": 11, "particular": 11, "visual": [11, 13], "sourc": 11, "arrow": 11, "indic": 11, "come": 11, "period": [11, 13], "recent": 11, "On": [11, 13], "line": [11, 12, 13], "light": 11, "accord": 11, "hide": 11, "exclud": 11, "extrem": 11, "overrid": 11, "appear": 11, "third": [11, 12, 14], "individu": 11, "necessari": [11, 13], "like": [11, 13], "markdown": 11, "syntax": 11, "adapt": [11, 13], "discours": 11, "lock": 11, "via": 11, "french": 11, "releas": [11, 13], "mobil": 12, "them": 12, "android": 12, "exhaust": 12, "runner": 12, "gpl": 12, "v3": 12, "opentrack": 12, "apach": 12, "fitotrack": 12, "under": [12, 13], "heavi": [12, 13], "featur": [12, 13], "unstabl": [12, 13], "document": [12, 13, 14, 16], "troubleshoot": 12, "written": 13, "typescript": 13, "staticmap": 13, "coordin": 13, "task": 13, "queue": 13, "vue3": 13, "vuex": 13, "logo": 13, "made": 13, "freepik": 13, "flaticon": 13, "fork": 13, "awesom": 13, "node": 13, "yarn": 13, "compos": 13, "step": 13, "describ": 13, "linux": 13, "debian": 13, "arch": 13, "o": 13, "encount": 13, "makefil": 13, "thei": [13, 14], "flask_app": 13, "pwd": 13, "__main__": 13, "py": 13, "els": 13, "port": 13, "5000": 13, "app_set": 13, "productionconfig": 13, "app_secret_kei": 13, "strong": 13, "jwt": 13, "app_work": 13, "spawn": 13, "gunicorn": [13, 16], "app_log": 13, "path": [13, 16], "upload_fold": [13, 16], "absolut": [13, 16], "where": 13, "folder": 13, "application_directori": 13, "5432": 13, "begin": 13, "database_disable_pool": 13, "pool": 13, "directli": 13, "ui_url": 13, "email_url": [13, 16], "sender_email": 13, "sender": 13, "redis_url": 13, "workers_process": 13, "api_rate_limit": 13, "300": 13, "minut": 13, "tile_server_url": 13, "23": 13, "b": 13, "osm": 13, "franc": 13, "target": 13, "_blank": 13, "rel": 13, "noopen": 13, "noreferr": 13, "komoot": 13, "otherwis": 13, "weather_api_kei": 13, "weather_api": 13, "vite_app_api_url": 13, "26": 13, "vue_app_api_url": 13, "unencrypt": 13, "25": 13, "ssl": 13, "465": 13, "starttl": 13, "587": 13, "office365": 13, "work": 13, "omit": 13, "old": 13, "notif": 13, "readi": 13, "24": 13, "special": 13, "passwordwith": 13, "40and": 13, "26and": 13, "3f": 13, "apikei": 13, "xxxx": 13, "expect": 13, "osmfr": 13, "fond": 13, "cart": 13, "par": 13, "mention": 13, "legal": 13, "nofollow": 13, "sou": 13, "nbsp": 13, "creativecommon": 13, "sa": 13, "licenc": 13, "cc": 13, "BY": 13, "chosen": 13, "randomli": 13, "base": 13, "ip": 13, "fix": 13, "window": 13, "strategi": 13, "subject": 13, "asset": 13, "notat": 13, "separ": [13, 14], "hour": 13, "mainten": 13, "diagnost": 13, "util": 13, "clear": 13, "enumer": 13, "histor": 13, "hourli": 13, "discontinu": 13, "pip": 13, "WITH": 13, "schema": 13, "privileg": 13, "nano": 13, "ftcli": 13, "db": 13, "systemd": 13, "project": 13, "clone": 13, "repo": 13, "git": 13, "github": 13, "samr1": 13, "cd": 13, "3000": 13, "wget": 13, "tar": 13, "gz": 13, "xzf": 13, "mv": 13, "sql": 13, "backup": 13, "pg_dump": 13, "semant": 13, "backward": 13, "incompat": 13, "u": 13, "changelog": 13, "restart": 13, "pull": 13, "repositori": 13, "overwrit": 13, "cp": 13, "r": 13, "There": 13, "One": 13, "proxi": [13, 14], "pass": 13, "oper": 13, "network": 13, "startlimitintervalsec": 13, "simpl": 13, "alwai": 13, "restartsec": 13, "standardoutput": 13, "syslog": 13, "standarderror": 13, "syslogidentifi": 13, "workingdirectori": 13, "home": 13, "execstart": 13, "venv": 13, "bin": 13, "create_app": 13, "logfil": 13, "wantedbi": 13, "multi": 13, "higher": 13, "timeout": [13, 16], "its": 13, "OF": 13, "listen": 13, "443": 13, "http2": 13, "server_nam": 13, "ssl_certif": 13, "fullchain": 13, "pem": 13, "ssl_certificate_kei": 13, "privkei": 13, "how": 13, "1mb": 13, "larger": [13, 16], "ll": 13, "uncom": 13, "want": 13, "client_max_body_s": [13, 16], "1m": 13, "proxy_pass": 13, "proxy_redirect": 13, "proxy_set_head": [13, 14], "real": 13, "remote_addr": 13, "forward": [13, 14], "proxy_add_x_forwarded_for": 13, "proto": [13, 14], "scheme": [13, 14], "request_uri": 13, "8025": 13, "mailhog": 13, "shell": 13, "insid": 13, "fittrackee_cli": 13, "lint": 13, "fittrackee_ynh": 13, "rest": 14, "whose": 14, "most": 14, "interact": 14, "tab": 14, "exchang": 14, "secur": 14, "3rd": 14, "fittrackee_host": 14, "space": 14, "3aread": 14, "3awrit": 14, "so": 14, "fetch": 14, "behind": 14, "aaron": 14, "parecki": 14, "oauthlib": 14, "session": 14, "strava": 15, "fit": 15, "exc": 16, "nosuchmoduleerror": 16, "plugin": 16, "dialect": 16, "invalidemailurlschem": 16, "increas": 16, "critic": 16}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 1, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 1, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 0, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 0, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 2, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 2, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 1, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 1, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 2, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 1, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 1, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 1, 1, "get--api-ping", "/api/ping"], [4, 1, 1, "get--api-records", "/api/records"], [5, 1, 1, "get--api-sports", "/api/sports"], [5, 1, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 1, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 1, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 1, 1, "get--api-stats-all", "/api/stats/all"], [7, 1, 1, "get--api-users", "/api/users"], [7, 2, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 1, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 2, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [13, 4, 1, "-", "API_RATE_LIMITS"], [13, 4, 1, "-", "APP_LOG"], [13, 4, 1, "-", "APP_SECRET_KEY"], [13, 4, 1, "-", "APP_SETTINGS"], [13, 4, 1, "-", "APP_WORKERS"], [13, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [13, 4, 1, "-", "DATABASE_URL"], [13, 4, 1, "-", "DEFAULT_STATICMAP"], [13, 4, 1, "-", "EMAIL_URL"], [13, 4, 1, "-", "FLASK_APP"], [13, 4, 1, "-", "HOST"], [13, 4, 1, "-", "MAP_ATTRIBUTION"], [13, 4, 1, "-", "PORT"], [13, 4, 1, "-", "REDIS_URL"], [13, 4, 1, "-", "SENDER_EMAIL"], [13, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [13, 4, 1, "-", "TILE_SERVER_URL"], [13, 4, 1, "-", "UI_URL"], [13, 4, 1, "-", "UPLOAD_FOLDER"], [13, 4, 1, "-", "VITE_APP_API_URL"], [13, 4, 1, "-", "WEATHER_API_KEY"], [13, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [13, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 1, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:get", "2": "http:delete", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "get", "HTTP get"], "2": ["http", "delete", "HTTP delete"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "environment variable"]}, "titleterms": {"authent": 0, "account": [0, 11], "configur": 1, "api": [2, 13], "document": [2, 9], "endpoint": 2, "oauth2": [3, 10], "record": 4, "sport": [5, 11], "statist": [6, 9, 11], "user": [7, 10, 11], "workout": [8, 11, 16], "chang": 9, "log": 9, "version": 9, "0": [9, 14], "7": 9, "29": 9, "2024": 9, "01": 9, "06": 9, "featur": [9, 11], "enhanc": 9, "bug": 9, "fix": 9, "translat": [9, 11], "misc": 9, "28": 9, "2023": 9, "12": 9, "23": 9, "27": 9, "20": 9, "26": 9, "11": 9, "19": 9, "25": 9, "10": 9, "08": 9, "24": 9, "04": 9, "09": 9, "14": 9, "22": 9, "21": 9, "07": 9, "30": 9, "15": 9, "18": 9, "17": 9, "03": 9, "16": 9, "05": 9, "13": 9, "02": 9, "2022": 9, "31": 9, "9": 9, "8": 9, "6": 9, "5": 9, "4": 9, "3": 9, "2": [9, 14], "1": 9, "issu": 9, "close": 9, "pull": 9, "request": 9, "secur": 9, "new": 9, "2021": 9, "2020": 9, "fittracke": [9, 12, 16], "pypi": [9, 13], "administr": [9, 11, 16], "improv": 9, "minor": 9, "avail": 9, "french": 9, "2019": 9, "first": 9, "releas": 9, "2018": 9, "command": 10, "line": 10, "interfac": 10, "databas": 10, "ftcli": 10, "db": 10, "drop": 10, "upgrad": [10, 13], "clean": 10, "clean_arch": 10, "clean_token": 10, "creat": 10, "export_arch": 10, "updat": 10, "prefer": 11, "applic": 11, "screenshot": 11, "dashboard": 11, "detail": [11, 16], "list": 11, "tabl": 12, "content": 12, "instal": 13, "prerequisit": 13, "environ": 13, "variabl": 13, "email": 13, "map": [13, 16], "tile": 13, "server": 13, "rate": 13, "limit": 13, "weather": 13, "data": 13, "from": 13, "sourc": 13, "dev": 13, "product": 13, "prod": 13, "deploy": 13, "docker": 13, "develop": 13, "yunohost": 13, "oauth": 14, "scope": 14, "flow": 14, "resourc": 14, "third": 15, "parti": 15, "tool": 15, "fail": 16, "start": 16, "imag": 16, "ar": 16, "displai": 16, "i": 16, "shown": 16, "upload": 16, "download": 16, "file": 16, "troubleshoot": 17}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Authentication and account": [[0, "authentication-and-account"]], "Configuration": [[1, "configuration"]], "API documentation": [[2, "api-documentation"]], "Endpoints:": [[2, null]], "OAuth2": [[3, "oauth2"], [10, "oauth2"]], "Records": [[4, "records"]], "Sports": [[5, "sports"], [11, "sports"]], "Statistics": [[6, "statistics"], [11, "statistics"]], "Users": [[7, "users"], [10, "users"], [11, "users"]], "Workouts": [[8, "workouts"], [11, "workouts"]], "Change log": [[9, "change-log"]], "Version 0.7.29 (2024/01/06)": [[9, "version-0-7-29-2024-01-06"]], "Features and enhancements": [[9, "features-and-enhancements"], [9, "id1"], [9, "id4"], [9, "id21"], [9, "id24"], [9, "id32"], [9, "id35"], [9, "id41"], [9, "id46"], [9, "id48"], [9, "id50"], [9, "id53"], [9, "id64"], [9, "id70"]], "Bugs Fixed": [[9, "bugs-fixed"], [9, "id2"], [9, "id5"], [9, "id8"], [9, "id11"], [9, "id12"], [9, "id15"], [9, "id17"], [9, "id19"], [9, "id22"], [9, "id25"], [9, "id33"], [9, "id36"], [9, "id39"], [9, "id42"], [9, "id54"], [9, "id59"], [9, "id61"], [9, "id65"], [9, "id68"], [9, "id71"], [9, "id73"], [9, "id76"], [9, "id79"], [9, "id81"], [9, "id84"], [9, "id87"], [9, "id90"], [9, "id95"], [9, "id97"], [9, "id99"], [9, "id101"], [9, "id104"], [9, "id106"], [9, "id112"], [9, "id115"], [9, "id117"], [9, "id119"], [9, "id126"], [9, "id131"], [9, "id133"], [9, "id135"], [9, "id138"], [9, "id140"], [9, "id142"], [9, "id146"], [9, "id156"], [9, "id159"], [9, "id161"], [9, "id164"], [9, "id171"]], "Translations": [[9, "translations"], [9, "id3"], [9, "id6"], [9, "id9"], [9, "id13"], [9, "id18"], [9, "id23"], [9, "id26"], [9, "id28"], [9, "id31"], [9, "id34"], [9, "id37"], [9, "id40"], [9, "id43"], [9, "id44"], [9, "id47"], [9, "id49"], [9, "id51"], [9, "id52"], [9, "id55"], [9, "id57"], [9, "id60"], [9, "id62"], [9, "id66"], [9, "id67"], [9, "id69"], [9, "id72"], [9, "id85"], [11, "translations"]], "Misc": [[9, "misc"], [9, "id7"], [9, "id10"], [9, "id14"], [9, "id16"], [9, "id20"], [9, "id27"], [9, "id30"], [9, "id38"], [9, "id45"], [9, "id56"], [9, "id58"], [9, "id74"], [9, "id88"], [9, "id91"], [9, "id108"], [9, "id110"], [9, "id127"], [9, "id136"], [9, "id143"], [9, "id147"], [9, "id154"], [9, "id165"], [9, "id168"]], "Version 0.7.28 (2023/12/23)": [[9, "version-0-7-28-2023-12-23"]], "Version 0.7.27 (2023/12/20)": [[9, "version-0-7-27-2023-12-20"]], "Version 0.7.26 (2023/11/19)": [[9, "version-0-7-26-2023-11-19"]], "Version 0.7.25 (2023/10/08)": [[9, "version-0-7-25-2023-10-08"]], "Version 0.7.24 (2023/10/04)": [[9, "version-0-7-24-2023-10-04"]], "Version 0.7.23 (2023/09/14)": [[9, "version-0-7-23-2023-09-14"]], "Version 0.7.22 (2023/08/23)": [[9, "version-0-7-22-2023-08-23"]], "Version 0.7.21 (2023/07/30)": [[9, "version-0-7-21-2023-07-30"]], "Version 0.7.20 (2023/07/22)": [[9, "version-0-7-20-2023-07-22"]], "Version 0.7.19 (2023/07/15)": [[9, "version-0-7-19-2023-07-15"]], "Documentation": [[9, "documentation"], [9, "id29"], [9, "id63"]], "Version 0.7.18 (2023/06/25)": [[9, "version-0-7-18-2023-06-25"]], "Version 0.7.17 (2023/06/03)": [[9, "version-0-7-17-2023-06-03"]], "Version 0.7.16 (2023/05/29)": [[9, "version-0-7-16-2023-05-29"]], "Version 0.7.15 (2023/04/12)": [[9, "version-0-7-15-2023-04-12"]], "Version 0.7.14 (2023/03/08)": [[9, "version-0-7-14-2023-03-08"]], "Version 0.7.13 (2023/03/05)": [[9, "version-0-7-13-2023-03-05"]], "Version 0.7.12 (2023/02/16)": [[9, "version-0-7-12-2023-02-16"]], "Version 0.7.11 (2022/12/31)": [[9, "version-0-7-11-2022-12-31"]], "Version 0.7.10 (2022/12/21)": [[9, "version-0-7-10-2022-12-21"]], "Version 0.7.9 (2022/12/11)": [[9, "version-0-7-9-2022-12-11"]], "Version 0.7.8 (2022/11/30)": [[9, "version-0-7-8-2022-11-30"]], "Version 0.7.7 (2022/11/27)": [[9, "version-0-7-7-2022-11-27"]], "Version 0.7.6 (2022/11/09)": [[9, "version-0-7-6-2022-11-09"]], "Version 0.7.5 (2022/11/09)": [[9, "version-0-7-5-2022-11-09"]], "Version 0.7.4 (2022/11/05)": [[9, "version-0-7-4-2022-11-05"]], "Version 0.7.3 (2022/11/01)": [[9, "version-0-7-3-2022-11-01"]], "Version 0.7.2 (2022/09/21)": [[9, "version-0-7-2-2022-09-21"]], "Version 0.7.1 (2022/09/21)": [[9, "version-0-7-1-2022-09-21"]], "Version 0.7.0 (2022/09/19)": [[9, "version-0-7-0-2022-09-19"]], "Version 0.6.12 (2022/09/14)": [[9, "version-0-6-12-2022-09-14"]], "Issues Closed": [[9, "issues-closed"], [9, "id75"], [9, "id78"], [9, "id82"], [9, "id86"], [9, "id89"], [9, "id92"], [9, "id94"], [9, "id98"], [9, "id100"], [9, "id102"], [9, "id107"], [9, "id111"], [9, "id114"], [9, "id116"], [9, "id118"], [9, "id120"], [9, "id122"], [9, "id124"], [9, "id129"], [9, "id132"], [9, "id134"], [9, "id137"], [9, "id139"], [9, "id141"], [9, "id144"], [9, "id148"], [9, "id150"], [9, "id152"], [9, "id155"], [9, "id157"], [9, "id160"], [9, "id162"], [9, "id166"], [9, "id169"], [9, "id172"]], "Pull Requests": [[9, "pull-requests"], [9, "id77"], [9, "id80"], [9, "id96"], [9, "id105"], [9, "id109"], [9, "id113"], [9, "id128"]], "Version 0.6.11 (2022/07/27)": [[9, "version-0-6-11-2022-07-27"]], "Features": [[9, "features"], [9, "id83"], [9, "id93"], [9, "id103"], [11, "features"]], "Version 0.6.10 (2022/07/13)": [[9, "version-0-6-10-2022-07-13"]], "Version 0.6.9 (2022/07/03)": [[9, "version-0-6-9-2022-07-03"]], "Version 0.6.8 (2022/06/22)": [[9, "version-0-6-8-2022-06-22"]], "Version 0.6.7 (2022/06/11)": [[9, "version-0-6-7-2022-06-11"]], "Version 0.6.6 (2022/05/29)": [[9, "version-0-6-6-2022-05-29"]], "Version 0.6.5 (2022/04/24)": [[9, "version-0-6-5-2022-04-24"]], "Version 0.6.4 (2022/04/23)": [[9, "version-0-6-4-2022-04-23"]], "Version 0.6.3 (2022/04/09)": [[9, "version-0-6-3-2022-04-09"]], "Version 0.6.2 (2022/04/03)": [[9, "version-0-6-2-2022-04-03"]], "Version 0.6.1 (2022/03/27)": [[9, "version-0-6-1-2022-03-27"]], "Version 0.6.0 (2022/03/27)": [[9, "version-0-6-0-2022-03-27"]], "Version 0.5.7 (2022/02/13)": [[9, "version-0-5-7-2022-02-13"]], "Security": [[9, "security"]], "Version 0.5.6 (2022/02/05)": [[9, "version-0-5-6-2022-02-05"]], "Version 0.5.5 (2022/01/19)": [[9, "version-0-5-5-2022-01-19"]], "New Features": [[9, "new-features"], [9, "id121"], [9, "id123"], [9, "id125"], [9, "id130"], [9, "id145"], [9, "id149"], [9, "id151"], [9, "id153"], [9, "id158"], [9, "id163"], [9, "id167"], [9, "id170"], [9, "id173"]], "Version 0.5.4 (2022/01/01)": [[9, "version-0-5-4-2022-01-01"]], "Version 0.5.3 (2022/01/01)": [[9, "version-0-5-3-2022-01-01"]], "Version 0.5.2 (2021/12/19)": [[9, "version-0-5-2-2021-12-19"]], "Version 0.5.1 (2021/11/30)": [[9, "version-0-5-1-2021-11-30"]], "Version 0.5.0 (2021/11/14)": [[9, "version-0-5-0-2021-11-14"]], "Version 0.4.9 (2021/07/16)": [[9, "version-0-4-9-2021-07-16"]], "Version 0.4.8 (2021/07/03)": [[9, "version-0-4-8-2021-07-03"]], "Version 0.4.7 (2021/04/07)": [[9, "version-0-4-7-2021-04-07"]], "Version 0.4.6 (2021/02/21)": [[9, "version-0-4-6-2021-02-21"]], "Version 0.4.5 (2021/02/17)": [[9, "version-0-4-5-2021-02-17"]], "Version 0.4.4 (2021/01/31)": [[9, "version-0-4-4-2021-01-31"]], "Version 0.4.3 (2021/01/10)": [[9, "version-0-4-3-2021-01-10"]], "Version 0.4.2 (2021/01/03)": [[9, "version-0-4-2-2021-01-03"]], "Version 0.4.1 (2020/12/31)": [[9, "version-0-4-1-2020-12-31"]], "Version 0.4.0 - FitTrackee on PyPI (2020/09/19)": [[9, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.3.0 - Administration (2020/07/15)": [[9, "version-0-3-0-administration-2020-07-15"]], "Version 0.2.5 - Fix and improvements (2020/01/31)": [[9, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.2.4 - Minor fix (2020/01/30)": [[9, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.3 - FitTrackee available in French (2019/12/29)": [[9, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.2 - Statistics fix (2019/09/23)": [[9, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.1 - Fix and improvements (2019/09/01)": [[9, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.0 - Statistics (2019/07/07)": [[9, "version-0-2-0-statistics-2019-07-07"]], "Version 0.1.1 - Fix and improvements (2019/02/07)": [[9, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.1.0 - First release \ud83c\udf89 (2018-07-04)": [[9, "version-0-1-0-first-release-2018-07-04"]], "Command line interface": [[10, "command-line-interface"]], "Database": [[10, "database"]], "ftcli db drop": [[10, "ftcli-db-drop"]], "ftcli db upgrade": [[10, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[10, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[10, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[10, "ftcli-users-clean-tokens"]], "ftcli users create": [[10, "ftcli-users-create"]], "ftcli users export_archives": [[10, "ftcli-users-export-archives"]], "ftcli users update": [[10, "ftcli-users-update"]], "Account & preferences": [[11, "account-preferences"]], "Administration": [[11, "administration"], [11, "id1"]], "Application": [[11, "application"]], "Screenshots": [[11, "screenshots"]], "Dashboard": [[11, "dashboard"]], "Workout detail": [[11, "workout-detail"]], "Workouts list": [[11, "workouts-list"]], "FitTrackee": [[12, "fittrackee"]], "Table of contents": [[12, "table-of-contents"]], "Installation": [[13, "installation"], [13, "id2"], [13, "id6"]], "Prerequisites": [[13, "prerequisites"]], "Environment variables": [[13, "environment-variables"]], "Emails": [[13, "emails"]], "Map tile server": [[13, "map-tile-server"]], "API rate limits": [[13, "api-rate-limits"]], "Weather data": [[13, "weather-data"]], "From PyPI": [[13, "from-pypi"], [13, "id3"]], "From sources": [[13, "from-sources"], [13, "id4"]], "Dev environment": [[13, "dev-environment"], [13, "id5"]], "Production environment": [[13, "production-environment"]], "Upgrade": [[13, "upgrade"]], "Prod environment": [[13, "prod-environment"]], "Deployment": [[13, "deployment"]], "Docker": [[13, "docker"]], "Development": [[13, "development"]], "Yunohost": [[13, "yunohost"]], "OAuth 2.0": [[14, "oauth-2-0"]], "Scopes": [[14, "scopes"]], "Flow": [[14, "flow"]], "Resources": [[14, "resources"]], "Third-party tools": [[15, "third-party-tools"]], "Administrator": [[16, "administrator"]], "FitTrackee fails to start": [[16, "fittrackee-fails-to-start"]], "Map images are not displayed but map is shown in Workout detail": [[16, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Failed to upload or download files": [[16, "failed-to-upload-or-download-files"]], "Troubleshooting": [[17, "troubleshooting"]]}, "indexentries": {"api_rate_limits": [[13, "envvar-API_RATE_LIMITS"]], "app_log": [[13, "envvar-APP_LOG"]], "app_secret_key": [[13, "envvar-APP_SECRET_KEY"]], "app_settings": [[13, "envvar-APP_SETTINGS"]], "app_workers": [[13, "envvar-APP_WORKERS"]], "database_disable_pooling": [[13, "envvar-DATABASE_DISABLE_POOLING"]], "database_url": [[13, "envvar-DATABASE_URL"]], "default_staticmap": [[13, "envvar-DEFAULT_STATICMAP"]], "email_url": [[13, "envvar-EMAIL_URL"]], "flask_app": [[13, "envvar-FLASK_APP"]], "host": [[13, "envvar-HOST"]], "map_attribution": [[13, "envvar-MAP_ATTRIBUTION"]], "port": [[13, "envvar-PORT"]], "redis_url": [[13, "envvar-REDIS_URL"]], "sender_email": [[13, "envvar-SENDER_EMAIL"]], "staticmap_subdomains": [[13, "envvar-STATICMAP_SUBDOMAINS"]], "tile_server_url": [[13, "envvar-TILE_SERVER_URL"]], "ui_url": [[13, "envvar-UI_URL"]], "upload_folder": [[13, "envvar-UPLOAD_FOLDER"]], "vite_app_api_url": [[13, "envvar-VITE_APP_API_URL"]], "weather_api_key": [[13, "envvar-WEATHER_API_KEY"]], "weather_api_provider \ud83c\udd95": [[13, "envvar-WEATHER_API_PROVIDER"]], "workers_processes": [[13, "envvar-WORKERS_PROCESSES"]], "environment variable": [[13, "envvar-API_RATE_LIMITS"], [13, "envvar-APP_LOG"], [13, "envvar-APP_SECRET_KEY"], [13, "envvar-APP_SETTINGS"], [13, "envvar-APP_WORKERS"], [13, "envvar-DATABASE_DISABLE_POOLING"], [13, "envvar-DATABASE_URL"], [13, "envvar-DEFAULT_STATICMAP"], [13, "envvar-EMAIL_URL"], [13, "envvar-FLASK_APP"], [13, "envvar-HOST"], [13, "envvar-MAP_ATTRIBUTION"], [13, "envvar-PORT"], [13, "envvar-REDIS_URL"], [13, "envvar-SENDER_EMAIL"], [13, "envvar-STATICMAP_SUBDOMAINS"], [13, "envvar-TILE_SERVER_URL"], [13, "envvar-UI_URL"], [13, "envvar-UPLOAD_FOLDER"], [13, "envvar-VITE_APP_API_URL"], [13, "envvar-WEATHER_API_KEY"], [13, "envvar-WEATHER_API_PROVIDER"], [13, "envvar-WORKERS_PROCESSES"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "titles": ["Authentication and account", "Configuration", "API documentation", "OAuth2", "Records", "Sports", "Statistics", "Users", "Workouts", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "OAuth 2.0", "Third-party tools", "Administrator", "Troubleshooting"], "terms": {"post": [0, 3, 8, 14], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "auth": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "regist": [0, 1, 9, 11, 13], "user": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14], "send": [0, 7, 9, 11, 13], "confirm": [0, 3, 9, 11, 13], "email": [0, 1, 7, 9, 10, 11, 16], "The": [0, 9, 10, 11, 13, 14, 16], "newli": [0, 10, 13], "creat": [0, 3, 8, 9, 11, 13, 14], "i": [0, 1, 3, 8, 9, 10, 11, 12, 13, 14, 17], "inact": [0, 7, 11, 13], "must": [0, 1, 3, 5, 7, 8, 9, 11, 13, 14, 16], "hi": [0, 7, 9, 11], "activ": [0, 5, 7, 9, 10, 11, 12, 13], "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "request": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13], "content": [0, 1, 3, 4, 5, 6, 7, 8, 9], "type": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "applic": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8, 11], "respons": [0, 1, 3, 4, 5, 6, 7, 8], "success": [0, 1, 3, 4, 5, 6, 7, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "statu": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "error": [0, 1, 3, 5, 7, 8, 9, 11, 13, 16], "registr": [0, 1, 9, 10, 11, 13, 14], "400": [0, 1, 3, 5, 7, 8, 9], "bad": [0, 1, 3, 5, 7, 8], "messag": [0, 1, 3, 8, 9, 10, 11, 13], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 16], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16], "n": 0, "object": [0, 1, 5, 7, 8], "usernam": [0, 6, 7, 9, 10, 13], "string": [0, 1, 3, 5, 6, 7, 8, 13, 14], "3": [0, 5, 6, 7, 8, 11, 13], "30": [0, 1, 6, 13], "charact": [0, 9, 13], "requir": [0, 9, 13, 14], "password": [0, 7, 9, 10, 11, 13], "8": [0, 8, 11, 13], "lang": [0, 9], "languag": [0, 7, 9, 11], "prefer": [0, 7, 9], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "fallback": 0, "en": [0, 7], "english": [0, 9, 11], "accepted_polici": 0, "boolean": [0, 1, 3, 7, 10], "true": [0, 1, 3, 5, 7, 9, 13], "accept": 0, "privaci": [0, 1, 9, 11], "polici": [0, 1, 9, 11], "code": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "payload": [0, 1, 3, 5, 7, 8], "sorri": 0, "alreadi": [0, 9, 10], "taken": [0, 11], "you": [0, 1, 5, 6, 7, 8, 11, 12, 13], "agre": [0, 9, 11], "onli": [0, 3, 7, 8, 9, 10, 11, 13, 14], "alphanumer": [0, 9], "underscor": 0, "_": [0, 9], "allow": [0, 1, 8, 9, 10, 11, 12, 13, 14], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "disabl": [0, 9, 10, 11, 13], "500": [0, 1, 5, 7, 8, 9], "intern": [0, 1, 5, 7, 8], "server": [0, 1, 5, 7, 8, 9, 11, 12], "pleas": [0, 1, 3, 4, 5, 6, 7, 8, 9], "try": [0, 5, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "contact": [0, 1, 5, 7, 8, 11], "administr": [0, 1, 5, 7, 8, 14, 17], "after": [0, 3, 9, 11, 13, 14], "auth_token": 0, "web": [0, 12, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "resend": 0, "instruct": [0, 9, 11, 13], "If": [0, 3, 11, 13, 14], "thi": [0, 3, 8, 9, 10, 11, 12, 13], "endpoint": [0, 1, 3, 9, 13, 14], "avail": [0, 4, 10, 11, 13, 14, 15], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 9], "Not": [0, 3, 5, 6, 7, 8], "found": [0, 3, 5, 6, 7, 8, 9], "url": [0, 3, 9, 13, 14, 16], "wa": [0, 9], "login": [0, 9], "an": [0, 1, 3, 5, 7, 9, 11, 13, 14, 16], "can": [0, 7, 9, 10, 11, 12, 13, 14, 16], "log": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16], "successfulli": 0, "401": [0, 1, 3, 4, 5, 6, 7, 8, 9], "unauthor": [0, 1, 3, 4, 5, 6, 7, 8], "credenti": [0, 13], "get": [0, 1, 3, 4, 5, 6, 7, 8, 14], "profil": [0, 3, 9, 14], "info": [0, 9, 11], "scope": [0, 1, 3, 4, 5, 6, 7, 8], "read": [0, 3, 4, 5, 6, 7, 8, 9, 14], "data": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "accepted_privacy_polici": 0, "admin": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 13], "fals": [0, 1, 3, 5, 7, 8, 13], "bio": [0, 7], "null": [0, 1, 5, 7, 8, 9], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 9], "gmt": [0, 3, 4, 7, 8], "date_format": 0, "dd": 0, "mm": 0, "yyyi": 0, "display_asc": 0, "sam": [0, 4, 7, 8], "com": [0, 1, 3, 7, 9, 13, 14], "email_to_confirm": 0, "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "last_nam": [0, 7], "locat": [0, 7, 13], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 10, 11, 13], "pictur": [0, 7, 8, 9], "record": [0, 2, 7, 8, 9, 11], "id": [0, 3, 4, 5, 6, 7, 8, 14], "9": [0, 4, 7, 11, 13], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "valu": [0, 3, 4, 7, 8, 9, 11, 13, 14, 16], "18": [0, 4, 7, 8, 11, 13], "workout_d": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 11, 13], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8, 10, 11, 13], "ha": [0, 4, 7, 8, 9, 11, 12], "43": [0, 4, 7, 8, 9], "97": [0, 4, 7, 8, 9], "11": [0, 4, 7, 11, 13], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8, 13], "m": [0, 4, 6, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 11, 13], "start_elevation_at_zero": 0, "timezon": [0, 7, 8, 9, 11], "europ": [0, 7], "pari": [0, 7], "total_asc": [0, 6], "720": 0, "35": [0, 9], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 9, 13], "27": [0, 3, 7, 11], "use_dark_mod": 0, "use_raw_gpx_spe": 0, "weekm": [0, 6, 7], "header": [0, 1, 3, 4, 5, 6, 7, 8, 14], "author": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13], "2": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13], "0": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "bearer": [0, 1, 3, 4, 5, 6, 7, 8], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expir": [0, 1, 3, 4, 5, 6, 7, 8, 10], "edit": [0, 9, 11], "write": [0, 1, 3, 5, 7, 8, 14], "updat": [0, 1, 5, 7, 8, 9, 11, 13], "first": [0, 3, 11, 14], "name": [0, 3, 7, 9, 13], "last": [0, 9, 13], "biographi": 0, "birth": [0, 9], "date": [0, 6, 8, 9, 11], "format": [0, 6, 8, 9, 11], "y": [0, 6, 8, 13], "d": [0, 6, 8], "support": [0, 3, 9, 11, 13, 14, 16], "default": [0, 3, 6, 7, 8, 9, 11, 13], "date_str": 0, "correspond": [0, 13], "client": [0, 3, 9, 11, 13, 14], "mmm": 0, "do": [0, 1, 5, 6, 7, 8, 13], "local": [0, 9, 12, 13], "e": 0, "fr": [0, 7, 13], "gl": 0, "nl": 0, "de": [0, 13], "nb": 0, "us": [0, 3, 7, 8, 9, 10, 11, 12, 13, 14], "displai": [0, 8, 9, 10, 11, 12, 13, 14, 17], "app": [0, 3, 9, 11, 12, 13, 14], "highest": [0, 4, 11], "ascent": [0, 4, 8, 9, 11], "total": [0, 3, 9, 11], "distanc": [0, 4, 8, 9, 11], "imperi": [0, 9, 11], "unit": [0, 9, 13], "elev": [0, 8, 9, 11, 13], "plot": 0, "start": [0, 6, 8, 9, 11, 13, 17], "zero": [0, 9, 11], "time": [0, 6, 8, 9, 11], "zone": 0, "interfac": [0, 9, 11, 12, 13], "dark": [0, 9, 11], "mode": [0, 9], "browser": [0, 9, 11], "unfilt": 0, "gpx": [0, 3, 8, 9, 11, 12, 13, 15], "calcul": [0, 9, 11], "speed": [0, 4, 8, 9, 11, 13], "doe": [0, 6, 7, 8, 9], "week": [0, 6, 9, 11], "mondai": [0, 6, 11], "don": 0, "t": [0, 9, 16], "match": [0, 8, 9], "sport": [0, 2, 6, 8, 9, 13], "color": [0, 5, 9, 11], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "hexadecim": 0, "when": [0, 1, 9, 10, 11, 13], "ad": [0, 9, 10, 11], "workout": [0, 2, 3, 4, 5, 6, 9, 12, 14, 15, 17], "float": [0, 8], "stop": [0, 9, 11, 13], "threshold": [0, 9, 11], "gpxpy": [0, 9, 11, 13], "exist": [0, 6, 7, 8, 9, 11, 12, 13], "delet": [0, 3, 7, 8, 9, 10, 11], "reset": [0, 7, 9, 10, 11, 13], "given": [0, 3], "204": [0, 3, 7, 8], "paramet": [0, 3, 5, 6, 7, 8, 9, 11, 13, 14], "No": [0, 3, 7, 8, 9, 12], "multipart": [0, 3, 8], "form": [0, 3, 8], "file": [0, 1, 8, 9, 10, 11, 12, 13, 15, 17], "imag": [0, 7, 8, 9, 11, 13, 17], "extens": [0, 8, 13], "jpg": 0, "png": [0, 8, 13], "gif": 0, "part": [0, 8], "select": [0, 8, 11], "413": [0, 8], "entiti": [0, 8], "too": [0, 8], "larg": [0, 8, 11, 13], "dure": [0, 8], "size": [0, 1, 8, 9, 11, 13], "exce": [0, 8, 9], "0mb": [0, 8], "NO": [0, 3, 7, 8], "handl": [0, 9, 11, 13, 16], "process": [0, 9, 10, 13], "patch": [0, 1, 5, 7, 8], "It": [0, 7, 9, 11, 12, 14], "enabl": [0, 1, 7, 11, 13], "chang": [0, 11, 12, 13], "one": [0, 7, 8, 11], "current": [0, 7, 9], "address": [0, 11, 13], "inform": [0, 1, 9, 11, 12, 13], "anoth": [0, 7, 11, 13], "new": [0, 7, 10, 11, 13, 14], "new_password": 0, "miss": [0, 9], "logout": [0, 9], "blacklist": [0, 10], "out": 0, "access": [0, 3, 9, 13, 14], "revok": [0, 3], "malform": 0, "other": [0, 7, 13], "reason": 0, "export": [0, 9, 10, 11, 12, 13], "return": [0, 3, 4, 7, 8, 9, 13], "creation": [0, 9, 11], "in_progress": 0, "byte": 0, "wed": 0, "mar": 0, "2023": [0, 13], "31": [0, 8, 13], "17": [0, 8, 11], "file_nam": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "zip": [0, 1, 8, 9, 11], "file_s": 0, "924": 0, "ongo": 0, "complet": [0, 9], "download": [0, 8, 9, 11, 13, 17], "archiv": [0, 1, 9, 10, 11, 13], "archive_rgjsr3fhr5yp": 0, "x": [0, 8, 9, 13, 14], "gzip": 0, "filenam": 0, "config": [1, 9, 13, 16], "about": [1, 9, 11, 13, 14], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_en": 1, "is_registration_en": 1, "max_single_file_s": 1, "1048576": 1, "max_us": 1, "max_zip_file_s": 1, "10485760": 1, "map_attribut": [1, 13], "copi": [1, 13], "href": [1, 13], "www": [1, 13], "openstreetmap": [1, 9, 13], "org": [1, 13], "copyright": [1, 13], "contributor": [1, 9, 13, 15], "privacy_polici": 1, "privacy_policy_d": 1, "version": [1, 10, 11, 13], "7": [1, 8, 10, 11, 13, 14], "weather_provid": 1, "authent": [1, 2, 3, 4, 5, 7, 8, 14], "instanc": [1, 3, 9, 11, 13, 14], "integ": [1, 3, 5, 6, 7, 8], "max": [1, 7, 8, 9, 10], "number": [1, 7, 8, 9, 10, 11, 13], "singl": [1, 7, 9, 11, 13], "have": [1, 5, 6, 7, 8, 9], "permiss": [1, 5, 6, 7, 8], "ping": 1, "health": 1, "check": [1, 9, 13, 16], "pong": 1, "account": [2, 7, 9, 10, 13, 15], "configur": [2, 9, 11, 13, 14], "oauth2": [2, 14], "statist": 2, "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 10, 11, 13], "page": [3, 7, 8, 9, 11], "fittracke": [3, 10, 11, 13, 14, 15, 17], "parti": [3, 11, 12, 14], "without": [3, 6, 7, 8, 9, 11, 12], "client_descript": 3, "client_id": [3, 14], "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "juli": 3, "2022": 3, "06": [3, 6], "53": [3, 9], "import": [3, 9, 11, 13, 15], "redirect_uri": 3, "callback": [3, 14], "websit": 3, "has_next": 3, "has_prev": 3, "queri": [3, 6, 7, 8], "client_secret": 3, "secret": [3, 13, 14], "client_nam": 3, "client_uri": 3, "arrai": 3, "list": [3, 9, 12, 13], "redirect": [3, 9, 14], "descript": [3, 10, 13], "option": [3, 9, 10, 13, 14], "client_client_id": 3, "NOT": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "all": [3, 4, 5, 6, 7, 8, 9, 11, 13], "associ": 3, "issu": [3, 12, 13], "response_typ": [3, 14], "state": [3, 14], "uniqu": [3, 14], "prevent": [3, 13, 14], "cross": [3, 11, 13, 14], "site": [3, 14], "forgeri": [3, 14], "mandatori": [3, 8, 9, 10, 13, 14], "recommend": [3, 13, 14], "code_challeng": [3, 14], "gener": [3, 9, 10, 11, 13, 14], "from": [3, 6, 8, 9, 11, 12, 14, 15], "verifi": [3, 14], "pkce": [3, 14], "code_challenge_method": [3, 14], "method": [3, 13, 14], "challeng": [3, 14], "s256": [3, 14], "authlib": [3, 13, 14], "librari": [3, 9, 13, 14], "refresh": [3, 9], "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "grant": [3, 14], "authorization_cod": [3, 14], "ar": [3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17], "code_verifi": 3, "follow": [4, 10, 11, 13, 14, 15, 16], "averag": [4, 8, 9, 11], "farthest": [4, 9, 11], "longest": [4, 9, 11], "durat": [4, 8, 9, 11], "maximum": [4, 9, 10, 11], "non": [5, 12], "is_active_for_us": 5, "label": [5, 9], "cycl": [5, 9, 11], "transport": [5, 9, 11], "hike": [5, 9, 11], "mountain": [5, 9, 11], "bike": [5, 8, 9, 11], "run": [5, 9, 10, 11, 13, 14], "walk": [5, 9, 11], "has_workout": 5, "stat": [6, 9], "user_nam": [6, 7], "by_tim": 6, "2018": [6, 8], "2017": [6, 8], "average_spe": 6, "48": 6, "203": 6, "156": [6, 9], "15": [6, 8, 10, 11, 13], "282": [6, 9], "12341": 6, "16": [6, 8, 11], "99": [6, 9], "150": 6, "178": [6, 9], "47": [6, 8, 9], "9960": 6, "95": [6, 9], "46": [6, 9], "78": 6, "613": 6, "1267": 6, "end": [6, 8], "frame": 6, "sundai": [6, 8, 11], "month": [6, 9, 11], "year": [6, 11], "by_sport": 6, "uploads_dir_s": 6, "1000": 6, "regardless": 7, "right": [7, 9, 10, 11, 13, 14], "some": [7, 8, 9, 11, 12, 13, 14], "order_bi": [7, 8], "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": [7, 11], "03": [7, 8], "per_pag": [7, 8], "per": [7, 8, 9, 13], "q": 7, "order": [7, 8, 9, 14], "sort": [7, 8, 11], "asc": [7, 8], "desc": [7, 8], "criteria": [7, 8], "detail": [7, 9, 13, 17], "jpeg": 7, "add": [7, 9, 10, 11, 12], "remov": [7, 9, 10, 11], "modifi": [7, 9, 10, 13], "new_email": 7, "reset_password": 7, "differ": [7, 9, 11], "than": [7, 9, 10], "A": [7, 9, 10, 11, 13, 16], "own": [7, 11, 12], "except": [7, 11, 13, 16], "he": 7, "": [7, 8, 9, 11, 13], "john_do": 7, "your": [7, 11, 12, 13], "02": 8, "least": 8, "ave_spe": 8, "bound": 8, "creation_d": 8, "51": 8, "descent": [8, 9, 11], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 9, 11, 12, 17], "max_alt": 8, "max_spe": 8, "min_alt": 8, "modification_d": 8, "move": [8, 9], "next_workout": 8, "note": [8, 9, 11, 13], "paus": [8, 9], "previous_workout": 8, "mon": 8, "jan": 8, "segment": [8, 9, 11], "titl": [8, 9, 11], "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 9, 11], "ani": [8, 13], "case": [8, 11, 13], "insensit": [8, 13], "distance_from": 8, "minim": [8, 14], "distance_to": 8, "maxim": 8, "duration_from": 8, "h": [8, 11], "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "workout_short_id": 8, "57": [8, 9], "45": 8, "22": 8, "morn": 8, "short": 8, "leaflet": [8, 13], "chart_data": 8, "chart": [8, 9, 11, 13], "j": [8, 9, 13], "279": [8, 9], "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "63": 8, "fri": 8, "44": [8, 9], "7380": 8, "280": [8, 9], "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 13], "tile": [8, 9, 11], "c": [8, 13], "4109": 8, "2930": 8, "subdomain": [8, 9, 13], "zoom": 8, "index": 8, "along": 8, "axi": [8, 9, 11], "xml": 8, "201": [8, 9], "doubl": 8, "quot": 8, "escap": 8, "no_gpx": 8, "uuid": [8, 9], "km": [8, 11], "second": 8, "b748459": 9, "alert": 9, "pr": 9, "481": 9, "keyboard": 9, "navig": 9, "dropdown": [9, 11], "3821e37": 9, "make": [9, 13], "calendar": [9, 11], "arrow": [9, 11], "488": 9, "cli": [9, 10, 11, 13], "same": [9, 11], "489": 9, "482": 9, "galician": [9, 11], "spanish": [9, 11], "484": 9, "german": [9, 11], "dutch": [9, 11], "italian": [9, 11], "84": 9, "norwegian": [9, 11], "bokm\u00e5l": [9, 11], "60": 9, "polish": [9, 11], "aff4d68": 9, "ci": 9, "action": 9, "thank": [9, 15], "gallegonovato": 9, "qwerty287": 9, "xmgz": 9, "8aa4cff": 9, "loader": 9, "theme": [9, 11], "478": 9, "clickabl": 9, "dashboard": 9, "479": 9, "ui": 9, "476": 9, "477": 9, "475": 9, "build": [9, 13], "poetri": [9, 13], "core": 9, "instead": [9, 11], "traxi": 9, "mariuz": 9, "koen": 9, "474": 9, "link": [9, 13], "6e215aa": 9, "background": 9, "modal": 9, "473": 9, "98": 9, "113": 9, "464": 9, "471": 9, "trekk": [9, 11], "469": 9, "ou": 9, "472": 9, "468": 9, "456": 9, "drop": 9, "postgresql": [9, 13, 16], "85": 9, "61": 9, "davidhenrythoreau": 9, "contain": [9, 11, 13], "databas": [9, 11, 13, 16], "migrat": [9, 10, 13], "see": [9, 11, 12, 13, 14, 16], "upgrad": 9, "224": 9, "result": 9, "incorrect": 9, "444": 9, "In": [9, 11], "addit": [9, 11, 13], "depend": [9, 13], "449": 9, "vue": [9, 13], "tool": [9, 12, 13], "450": 9, "comradekingu": 9, "441": 9, "433": 9, "encod": [9, 13], "427": 9, "typo": 9, "refacto": 9, "431": 9, "428": 9, "2bcff2e": 9, "flask": [9, 13], "436": 9, "python": [9, 13, 14], "438": 9, "workflow": 9, "421": 9, "darkski": [9, 13], "weather": [9, 11], "env": [9, 13], "426": 9, "astridx": 9, "422": 9, "e2": 9, "test": [9, 13], "packag": [9, 13], "411": 9, "variou": 9, "416": 9, "410": 9, "415": 9, "417": 9, "418": 9, "bjornclauw": 9, "mariusz": 9, "407": 9, "409": 9, "open": [9, 11, 12, 13], "water": [9, 11], "swim": [9, 11], "398": 9, "402": 9, "399": 9, "406": 9, "56": 9, "380": 9, "390": 9, "391": 9, "paraglid": [9, 11], "384": 9, "inconsist": 9, "between": [9, 11], "gp": [9, 11], "393": 9, "pil": 9, "modul": [9, 13], "attribut": [9, 13], "antialia": 9, "394": 9, "397": 9, "386": 9, "contribut": 9, "md": 9, "388": 9, "395": 9, "cc3fe1c": 9, "42": 9, "dkm": 9, "partial": 9, "now": [9, 10, 11, 13], "yet": [9, 12], "weblat": [9, 11], "longer": [9, 13, 16], "minimum": [9, 11], "351": 9, "370": 9, "371": 9, "375": 9, "thovi98": 9, "376": 9, "1375986": 9, "furo": 9, "377": 9, "init": [9, 13], "354": 9, "374": 9, "docker": 9, "instal": [9, 12], "virtualenv": [9, 13], "87": 9, "36": 9, "366": 9, "369": 9, "host": [9, 13], "367": 9, "358": 9, "filter": [9, 11], "359": 9, "footer": 9, "overlap": 9, "350": 9, "352": 9, "356": 9, "357": 9, "365": 9, "gnu": 9, "ewm": 9, "jat255": 9, "among": 9, "below": [9, 13], "sinc": [9, 13, 14], "servic": [9, 13], "shut": [9, 13], "down": [9, 13], "march": [9, 13], "319": 9, "329": 9, "sticki": 9, "333": 9, "338": 9, "relev": 9, "328": 9, "altitud": [9, 11], "track": [9, 12], "b29ed7a": 9, "250": 9, "320": 9, "323": 9, "06ba975": 9, "bcc568e": 9, "ea0ac99": 9, "a458f5f": 9, "075aeb9": 9, "60e164d": 9, "318": 9, "lavoi": 9, "mondstern": 9, "314": 9, "fail": [9, 17], "315": 9, "custom": [9, 11, 13], "defin": [9, 11], "review": [9, 11], "upload": [9, 10, 11, 13, 15, 17], "lastli": 9, "mai": [9, 11, 12, 13], "301": [9, 13], "304": 9, "305": 9, "307": 9, "posit": [9, 11], "297": 9, "308": 9, "310": 9, "290": 9, "294": 9, "postgresql10": 9, "265": 9, "implement": [9, 14], "altern": 9, "visualcross": 9, "environ": [9, 10, 16], "variabl": [9, 16], "set": [9, 10, 11, 13, 14, 16], "weather_api_provid": [9, 13], "287": 9, "289": 9, "dperruso": 9, "92": 9, "c88a515": 9, "f96dcef": 9, "278": 9, "270": 9, "nederland": 9, "258": 9, "pars": [9, 13], "area": 9, "271": 9, "273": 9, "274": 9, "parallel": 9, "275": 9, "worker": [9, 10, 13, 16], "entri": [9, 13], "point": [9, 13], "fittrackee_work": [9, 10, 13], "command": [9, 11, 12, 13], "dramatiq": [9, 10, 13], "3c8d9c2": 9, "trail": [9, 11], "comma": [9, 13], "dev": 9, "264": 9, "white": 9, "grai": 9, "266": 9, "260": 9, "261": 9, "should": [9, 13], "limit": [9, 11], "still": [9, 11, 12, 13], "need": [9, 11, 13, 14], "89": 9, "b1536fc": 9, "257": 9, "bodi": [9, 13, 14], "nginx": [9, 11, 13, 14, 16], "112": 9, "244": 9, "virtual": [9, 11], "ride": 9, "246": 9, "247": 9, "microsecond": 9, "252": 9, "242": 9, "241": 9, "strength": 9, "estim": 9, "239": 9, "cb9d02f": 9, "88": 9, "231": 9, "236": 9, "rate": 9, "232": 9, "hidden": [9, 11], "237": 9, "212": 9, "230": 9, "problem": 9, "225": 9, "grammar": 9, "skylan0916": 9, "execut": 9, "lower": 9, "v0": [9, 13], "postgr": [9, 16], "213": 9, "measur": 9, "ft": 9, "mi": 9, "223": 9, "icon": [9, 13], "167": 9, "162": 9, "fmstrat": 9, "210": 9, "could": 9, "staticmap_subdomain": [9, 13], "209": 9, "multipl": 9, "gorgobacka": 9, "And": 9, "detect": 9, "208": 9, "card": 9, "html": 9, "197": 9, "196": 9, "manag": [9, 10, 13], "190": 9, "were": 9, "193": 9, "192": 9, "191": 9, "layout": 9, "includ": 9, "195": 9, "affect": [9, 11], "previous": 9, "cc4287e": 9, "offset": 9, "befor": [9, 13], "introduc": 9, "possibl": [9, 11, 12, 13], "smtp": [9, 13], "reduc": 9, "pre": 9, "requisit": 9, "To": [9, 13, 14], "180": 9, "cannot": [9, 11], "tl": [9, 13], "177": 9, "small": 9, "screen": [9, 11], "175": 9, "173": 9, "171": 9, "correctli": 9, "sent": [9, 11, 13, 14], "155": 9, "106": 9, "169": 9, "161": 9, "160": 9, "sever": [9, 11, 12, 13], "danielsiersleben": 9, "report": 9, "initi": [9, 13], "149": 9, "initialis": [9, 13], "152": 9, "autoescap": 9, "jinja": 9, "templat": 9, "151": 9, "sanit": 9, "input": 9, "serv": [9, 13], "warn": [9, 11], "launch": 9, "w": 9, "script": 9, "entrypoint": 9, "avoid": 9, "product": 9, "dotenv": 9, "146": 9, "145": 9, "model": 9, "140": 9, "fullscreen": 9, "control": [9, 11, 13], "138": 9, "135": 9, "finish": 9, "marker": 9, "134": 9, "wind": [9, 11], "direct": [9, 11], "877fa0f": 9, "resolut": 9, "131": 9, "129": 9, "127": [9, 13], "legitim": 9, "uri": 9, "localhost": [9, 13], "123": 9, "121": 9, "snowsho": [9, 11], "116": 9, "better": [9, 14], "button": 9, "graph": 9, "115": 9, "91": 9, "min": 9, "90": 9, "seem": 9, "104": 9, "switch": 9, "agplv3": 9, "licens": [9, 12, 13], "101": 9, "full": [9, 11], "develop": [9, 10, 12], "109": 9, "slow": 9, "movement": 9, "93": 9, "paf38": 9, "83": 9, "static": [9, 11, 13], "keep": [9, 12, 13], "default_staticmap": [9, 13], "81": 9, "remain": 9, "textarea": 9, "82": 9, "dai": [9, 10, 11, 13], "80": [9, 13], "save": [9, 11], "79": 9, "rebuild": 9, "75": 9, "javascript": [9, 13], "due": 9, "sqlalchemi": [9, 13, 16], "engin": [9, 13, 16], "database_url": [9, 13, 16], "72": 9, "exceed": 9, "71": 9, "greater": 9, "70": 9, "less": 9, "66": 9, "64": 9, "shown": [9, 14, 17], "62": 9, "refactor": 9, "evalu": [9, 13], "purpos": [9, 13], "standard": [9, 13], "term": [9, 13], "directori": [9, 11, 13], "also": [9, 10, 11, 12, 13], "59": 9, "major": 9, "becom": 9, "more": [9, 10, 11, 12, 13], "easi": 9, "been": [9, 12], "renam": 9, "layer": [9, 13], "replac": [9, 13], "thunderforest": [9, 13], "outdoor": [9, 11, 12, 13], "54": 9, "simplifi": [9, 14], "redi": [9, 10, 13], "side": 9, "4c3fc34": 9, "empti": [9, 10, 13], "34614d5": 9, "spinner": 9, "load": [9, 16], "b862a77": 9, "2e1ee2c": 9, "interceptor": 9, "rout": [9, 13], "definit": 9, "weekend": 9, "40": 9, "i18n": 9, "41": 9, "show": [9, 10, 13], "mous": 9, "over": 9, "choos": [9, 11], "33": 9, "37": 9, "34": 9, "anymor": 9, "pipenv": 9, "tooltip": [9, 11], "even": [9, 11], "enter": [9, 11], "kei": [9, 11, 13], "search": 9, "owner": [9, 11, 13], "view": [9, 11, 13], "usag": [10, 13], "arg": [10, 13], "help": [10, 13], "exit": [10, 13], "deprec": 10, "next": [10, 11], "fittrackee_set_admin": 10, "fittrackee_upgrade_db": 10, "appli": 10, "relat": [10, 11, 13, 14], "argument": 10, "random": 10, "incomplet": 10, "store": [11, 12, 14], "For": [11, 13, 14], "kind": 11, "encrypt": 11, "With": [11, 13], "street": [11, 12], "electr": 11, "19": 11, "row": 11, "ski": 11, "alpin": 11, "countri": 11, "overridden": 11, "analyz": 11, "wai": [11, 13], "specif": [11, 13], "moment": 11, "which": 11, "up": [11, 12], "metric": 11, "system": [11, 13], "origin": 11, "particular": 11, "visual": [11, 13], "sourc": 11, "indic": 11, "come": 11, "period": [11, 13], "recent": 11, "On": [11, 13], "line": [11, 12, 13], "light": 11, "accord": 11, "hide": 11, "exclud": 11, "extrem": 11, "overrid": 11, "appear": 11, "third": [11, 12, 14], "individu": 11, "necessari": [11, 13], "like": [11, 13], "markdown": 11, "syntax": 11, "adapt": [11, 13], "discours": 11, "lock": 11, "via": 11, "french": 11, "releas": [11, 13], "mobil": 12, "them": 12, "android": 12, "exhaust": 12, "runner": 12, "gpl": 12, "v3": 12, "opentrack": 12, "apach": 12, "fitotrack": 12, "under": [12, 13], "heavi": [12, 13], "featur": [12, 13], "unstabl": [12, 13], "document": [12, 13, 14, 16], "troubleshoot": 12, "written": 13, "typescript": 13, "staticmap": 13, "coordin": 13, "task": 13, "queue": 13, "vue3": 13, "vuex": 13, "logo": 13, "made": 13, "freepik": 13, "flaticon": 13, "fork": 13, "awesom": 13, "node": 13, "yarn": 13, "compos": 13, "step": 13, "describ": 13, "linux": 13, "debian": 13, "arch": 13, "o": 13, "encount": 13, "makefil": 13, "thei": [13, 14], "flask_app": 13, "pwd": 13, "__main__": 13, "py": 13, "els": 13, "port": 13, "5000": 13, "app_set": 13, "productionconfig": 13, "app_secret_kei": 13, "strong": 13, "jwt": 13, "app_work": 13, "spawn": 13, "gunicorn": [13, 16], "app_log": 13, "path": [13, 16], "upload_fold": [13, 16], "absolut": [13, 16], "where": 13, "folder": 13, "application_directori": 13, "5432": 13, "begin": 13, "database_disable_pool": 13, "pool": 13, "directli": 13, "ui_url": 13, "email_url": [13, 16], "sender_email": 13, "sender": 13, "redis_url": 13, "workers_process": 13, "api_rate_limit": 13, "300": 13, "minut": 13, "tile_server_url": 13, "23": 13, "b": 13, "osm": 13, "franc": 13, "target": 13, "_blank": 13, "rel": 13, "noopen": 13, "noreferr": 13, "komoot": 13, "otherwis": 13, "weather_api_kei": 13, "weather_api": 13, "vite_app_api_url": 13, "26": 13, "vue_app_api_url": 13, "unencrypt": 13, "25": 13, "ssl": 13, "465": 13, "starttl": 13, "587": 13, "office365": 13, "work": 13, "omit": 13, "old": 13, "notif": 13, "readi": 13, "24": 13, "special": 13, "passwordwith": 13, "40and": 13, "26and": 13, "3f": 13, "apikei": 13, "xxxx": 13, "expect": 13, "osmfr": 13, "fond": 13, "cart": 13, "par": 13, "mention": 13, "legal": 13, "nofollow": 13, "sou": 13, "nbsp": 13, "creativecommon": 13, "sa": 13, "licenc": 13, "cc": 13, "BY": 13, "chosen": 13, "randomli": 13, "base": 13, "ip": 13, "fix": 13, "window": 13, "strategi": 13, "subject": 13, "asset": 13, "notat": 13, "separ": [13, 14], "hour": 13, "mainten": 13, "diagnost": 13, "util": 13, "clear": 13, "enumer": 13, "histor": 13, "hourli": 13, "discontinu": 13, "pip": 13, "WITH": 13, "schema": 13, "privileg": 13, "nano": 13, "ftcli": 13, "db": 13, "systemd": 13, "project": 13, "clone": 13, "repo": 13, "git": 13, "github": 13, "samr1": 13, "cd": 13, "3000": 13, "wget": 13, "tar": 13, "gz": 13, "xzf": 13, "mv": 13, "sql": 13, "backup": 13, "pg_dump": 13, "semant": 13, "backward": 13, "incompat": 13, "u": 13, "changelog": 13, "restart": 13, "pull": 13, "repositori": 13, "overwrit": 13, "cp": 13, "r": 13, "There": 13, "One": 13, "proxi": [13, 14], "pass": 13, "oper": 13, "network": 13, "startlimitintervalsec": 13, "simpl": 13, "alwai": 13, "restartsec": 13, "standardoutput": 13, "syslog": 13, "standarderror": 13, "syslogidentifi": 13, "workingdirectori": 13, "home": 13, "execstart": 13, "venv": 13, "bin": 13, "create_app": 13, "logfil": 13, "wantedbi": 13, "multi": 13, "higher": 13, "timeout": [13, 16], "its": 13, "OF": 13, "listen": 13, "443": 13, "http2": 13, "server_nam": 13, "ssl_certif": 13, "fullchain": 13, "pem": 13, "ssl_certificate_kei": 13, "privkei": 13, "how": 13, "1mb": 13, "larger": [13, 16], "ll": 13, "uncom": 13, "want": 13, "client_max_body_s": [13, 16], "1m": 13, "proxy_pass": 13, "proxy_redirect": 13, "proxy_set_head": [13, 14], "real": 13, "remote_addr": 13, "forward": [13, 14], "proxy_add_x_forwarded_for": 13, "proto": [13, 14], "scheme": [13, 14], "request_uri": 13, "8025": 13, "mailhog": 13, "shell": 13, "insid": 13, "fittrackee_cli": 13, "lint": 13, "fittrackee_ynh": 13, "rest": 14, "whose": 14, "most": 14, "interact": 14, "tab": 14, "exchang": 14, "secur": 14, "3rd": 14, "fittrackee_host": 14, "space": 14, "3aread": 14, "3awrit": 14, "so": 14, "fetch": 14, "behind": 14, "aaron": 14, "parecki": 14, "oauthlib": 14, "session": 14, "strava": 15, "fit": 15, "exc": 16, "nosuchmoduleerror": 16, "plugin": 16, "dialect": 16, "invalidemailurlschem": 16, "increas": 16, "critic": 16}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 1, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 1, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 0, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 0, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 2, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 2, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 1, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 1, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 2, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 1, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 1, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 1, 1, "get--api-ping", "/api/ping"], [4, 1, 1, "get--api-records", "/api/records"], [5, 1, 1, "get--api-sports", "/api/sports"], [5, 1, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 1, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 1, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 1, 1, "get--api-stats-all", "/api/stats/all"], [7, 1, 1, "get--api-users", "/api/users"], [7, 2, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 1, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 2, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [13, 4, 1, "-", "API_RATE_LIMITS"], [13, 4, 1, "-", "APP_LOG"], [13, 4, 1, "-", "APP_SECRET_KEY"], [13, 4, 1, "-", "APP_SETTINGS"], [13, 4, 1, "-", "APP_WORKERS"], [13, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [13, 4, 1, "-", "DATABASE_URL"], [13, 4, 1, "-", "DEFAULT_STATICMAP"], [13, 4, 1, "-", "EMAIL_URL"], [13, 4, 1, "-", "FLASK_APP"], [13, 4, 1, "-", "HOST"], [13, 4, 1, "-", "MAP_ATTRIBUTION"], [13, 4, 1, "-", "PORT"], [13, 4, 1, "-", "REDIS_URL"], [13, 4, 1, "-", "SENDER_EMAIL"], [13, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [13, 4, 1, "-", "TILE_SERVER_URL"], [13, 4, 1, "-", "UI_URL"], [13, 4, 1, "-", "UPLOAD_FOLDER"], [13, 4, 1, "-", "VITE_APP_API_URL"], [13, 4, 1, "-", "WEATHER_API_KEY"], [13, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [13, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 1, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:get", "2": "http:delete", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "get", "HTTP get"], "2": ["http", "delete", "HTTP delete"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "environment variable"]}, "titleterms": {"authent": 0, "account": [0, 11], "configur": 1, "api": [2, 13], "document": [2, 9], "endpoint": 2, "oauth2": [3, 10], "record": 4, "sport": [5, 11], "statist": [6, 9, 11], "user": [7, 10, 11], "workout": [8, 11, 16], "chang": 9, "log": 9, "version": 9, "0": [9, 14], "7": 9, "30": 9, "2024": 9, "02": 9, "04": 9, "featur": [9, 11], "enhanc": 9, "bug": 9, "fix": 9, "translat": [9, 11], "misc": 9, "29": 9, "01": 9, "06": 9, "28": 9, "2023": 9, "12": 9, "23": 9, "27": 9, "20": 9, "26": 9, "11": 9, "19": 9, "25": 9, "10": 9, "08": 9, "24": 9, "09": 9, "14": 9, "22": 9, "21": 9, "07": 9, "15": 9, "18": 9, "17": 9, "03": 9, "16": 9, "05": 9, "13": 9, "2022": 9, "31": 9, "9": 9, "8": 9, "6": 9, "5": 9, "4": 9, "3": 9, "2": [9, 14], "1": 9, "issu": 9, "close": 9, "pull": 9, "request": 9, "secur": 9, "new": 9, "2021": 9, "2020": 9, "fittracke": [9, 12, 16], "pypi": [9, 13], "administr": [9, 11, 16], "improv": 9, "minor": 9, "avail": 9, "french": 9, "2019": 9, "first": 9, "releas": 9, "2018": 9, "command": 10, "line": 10, "interfac": 10, "databas": 10, "ftcli": 10, "db": 10, "drop": 10, "upgrad": [10, 13], "clean": 10, "clean_arch": 10, "clean_token": 10, "creat": 10, "export_arch": 10, "updat": 10, "prefer": 11, "applic": 11, "screenshot": 11, "dashboard": 11, "detail": [11, 16], "list": 11, "tabl": 12, "content": 12, "instal": 13, "prerequisit": 13, "environ": 13, "variabl": 13, "email": 13, "map": [13, 16], "tile": 13, "server": 13, "rate": 13, "limit": 13, "weather": 13, "data": 13, "from": 13, "sourc": 13, "dev": 13, "product": 13, "prod": 13, "deploy": 13, "docker": 13, "develop": 13, "yunohost": 13, "oauth": 14, "scope": 14, "flow": 14, "resourc": 14, "third": 15, "parti": 15, "tool": 15, "fail": 16, "start": 16, "imag": 16, "ar": 16, "displai": 16, "i": 16, "shown": 16, "upload": 16, "download": 16, "file": 16, "troubleshoot": 17}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Authentication and account": [[0, "authentication-and-account"]], "Configuration": [[1, "configuration"]], "API documentation": [[2, "api-documentation"]], "Endpoints:": [[2, null]], "OAuth2": [[3, "oauth2"], [10, "oauth2"]], "Records": [[4, "records"]], "Sports": [[5, "sports"], [11, "sports"]], "Statistics": [[6, "statistics"], [11, "statistics"]], "Users": [[7, "users"], [10, "users"], [11, "users"]], "Workouts": [[8, "workouts"], [11, "workouts"]], "Change log": [[9, "change-log"]], "Version 0.7.30 (2024/02/04)": [[9, "version-0-7-30-2024-02-04"]], "Features and enhancements": [[9, "features-and-enhancements"], [9, "id1"], [9, "id5"], [9, "id8"], [9, "id25"], [9, "id28"], [9, "id36"], [9, "id39"], [9, "id45"], [9, "id50"], [9, "id52"], [9, "id54"], [9, "id57"], [9, "id68"], [9, "id74"]], "Bugs Fixed": [[9, "bugs-fixed"], [9, "id2"], [9, "id6"], [9, "id9"], [9, "id12"], [9, "id15"], [9, "id16"], [9, "id19"], [9, "id21"], [9, "id23"], [9, "id26"], [9, "id29"], [9, "id37"], [9, "id40"], [9, "id43"], [9, "id46"], [9, "id58"], [9, "id63"], [9, "id65"], [9, "id69"], [9, "id72"], [9, "id75"], [9, "id77"], [9, "id80"], [9, "id83"], [9, "id85"], [9, "id88"], [9, "id91"], [9, "id94"], [9, "id99"], [9, "id101"], [9, "id103"], [9, "id105"], [9, "id108"], [9, "id110"], [9, "id116"], [9, "id119"], [9, "id121"], [9, "id123"], [9, "id130"], [9, "id135"], [9, "id137"], [9, "id139"], [9, "id142"], [9, "id144"], [9, "id146"], [9, "id150"], [9, "id160"], [9, "id163"], [9, "id165"], [9, "id168"], [9, "id175"]], "Translations": [[9, "translations"], [9, "id3"], [9, "id7"], [9, "id10"], [9, "id13"], [9, "id17"], [9, "id22"], [9, "id27"], [9, "id30"], [9, "id32"], [9, "id35"], [9, "id38"], [9, "id41"], [9, "id44"], [9, "id47"], [9, "id48"], [9, "id51"], [9, "id53"], [9, "id55"], [9, "id56"], [9, "id59"], [9, "id61"], [9, "id64"], [9, "id66"], [9, "id70"], [9, "id71"], [9, "id73"], [9, "id76"], [9, "id89"], [11, "translations"]], "Misc": [[9, "misc"], [9, "id4"], [9, "id11"], [9, "id14"], [9, "id18"], [9, "id20"], [9, "id24"], [9, "id31"], [9, "id34"], [9, "id42"], [9, "id49"], [9, "id60"], [9, "id62"], [9, "id78"], [9, "id92"], [9, "id95"], [9, "id112"], [9, "id114"], [9, "id131"], [9, "id140"], [9, "id147"], [9, "id151"], [9, "id158"], [9, "id169"], [9, "id172"]], "Version 0.7.29 (2024/01/06)": [[9, "version-0-7-29-2024-01-06"]], "Version 0.7.28 (2023/12/23)": [[9, "version-0-7-28-2023-12-23"]], "Version 0.7.27 (2023/12/20)": [[9, "version-0-7-27-2023-12-20"]], "Version 0.7.26 (2023/11/19)": [[9, "version-0-7-26-2023-11-19"]], "Version 0.7.25 (2023/10/08)": [[9, "version-0-7-25-2023-10-08"]], "Version 0.7.24 (2023/10/04)": [[9, "version-0-7-24-2023-10-04"]], "Version 0.7.23 (2023/09/14)": [[9, "version-0-7-23-2023-09-14"]], "Version 0.7.22 (2023/08/23)": [[9, "version-0-7-22-2023-08-23"]], "Version 0.7.21 (2023/07/30)": [[9, "version-0-7-21-2023-07-30"]], "Version 0.7.20 (2023/07/22)": [[9, "version-0-7-20-2023-07-22"]], "Version 0.7.19 (2023/07/15)": [[9, "version-0-7-19-2023-07-15"]], "Documentation": [[9, "documentation"], [9, "id33"], [9, "id67"]], "Version 0.7.18 (2023/06/25)": [[9, "version-0-7-18-2023-06-25"]], "Version 0.7.17 (2023/06/03)": [[9, "version-0-7-17-2023-06-03"]], "Version 0.7.16 (2023/05/29)": [[9, "version-0-7-16-2023-05-29"]], "Version 0.7.15 (2023/04/12)": [[9, "version-0-7-15-2023-04-12"]], "Version 0.7.14 (2023/03/08)": [[9, "version-0-7-14-2023-03-08"]], "Version 0.7.13 (2023/03/05)": [[9, "version-0-7-13-2023-03-05"]], "Version 0.7.12 (2023/02/16)": [[9, "version-0-7-12-2023-02-16"]], "Version 0.7.11 (2022/12/31)": [[9, "version-0-7-11-2022-12-31"]], "Version 0.7.10 (2022/12/21)": [[9, "version-0-7-10-2022-12-21"]], "Version 0.7.9 (2022/12/11)": [[9, "version-0-7-9-2022-12-11"]], "Version 0.7.8 (2022/11/30)": [[9, "version-0-7-8-2022-11-30"]], "Version 0.7.7 (2022/11/27)": [[9, "version-0-7-7-2022-11-27"]], "Version 0.7.6 (2022/11/09)": [[9, "version-0-7-6-2022-11-09"]], "Version 0.7.5 (2022/11/09)": [[9, "version-0-7-5-2022-11-09"]], "Version 0.7.4 (2022/11/05)": [[9, "version-0-7-4-2022-11-05"]], "Version 0.7.3 (2022/11/01)": [[9, "version-0-7-3-2022-11-01"]], "Version 0.7.2 (2022/09/21)": [[9, "version-0-7-2-2022-09-21"]], "Version 0.7.1 (2022/09/21)": [[9, "version-0-7-1-2022-09-21"]], "Version 0.7.0 (2022/09/19)": [[9, "version-0-7-0-2022-09-19"]], "Version 0.6.12 (2022/09/14)": [[9, "version-0-6-12-2022-09-14"]], "Issues Closed": [[9, "issues-closed"], [9, "id79"], [9, "id82"], [9, "id86"], [9, "id90"], [9, "id93"], [9, "id96"], [9, "id98"], [9, "id102"], [9, "id104"], [9, "id106"], [9, "id111"], [9, "id115"], [9, "id118"], [9, "id120"], [9, "id122"], [9, "id124"], [9, "id126"], [9, "id128"], [9, "id133"], [9, "id136"], [9, "id138"], [9, "id141"], [9, "id143"], [9, "id145"], [9, "id148"], [9, "id152"], [9, "id154"], [9, "id156"], [9, "id159"], [9, "id161"], [9, "id164"], [9, "id166"], [9, "id170"], [9, "id173"], [9, "id176"]], "Pull Requests": [[9, "pull-requests"], [9, "id81"], [9, "id84"], [9, "id100"], [9, "id109"], [9, "id113"], [9, "id117"], [9, "id132"]], "Version 0.6.11 (2022/07/27)": [[9, "version-0-6-11-2022-07-27"]], "Features": [[9, "features"], [9, "id87"], [9, "id97"], [9, "id107"], [11, "features"]], "Version 0.6.10 (2022/07/13)": [[9, "version-0-6-10-2022-07-13"]], "Version 0.6.9 (2022/07/03)": [[9, "version-0-6-9-2022-07-03"]], "Version 0.6.8 (2022/06/22)": [[9, "version-0-6-8-2022-06-22"]], "Version 0.6.7 (2022/06/11)": [[9, "version-0-6-7-2022-06-11"]], "Version 0.6.6 (2022/05/29)": [[9, "version-0-6-6-2022-05-29"]], "Version 0.6.5 (2022/04/24)": [[9, "version-0-6-5-2022-04-24"]], "Version 0.6.4 (2022/04/23)": [[9, "version-0-6-4-2022-04-23"]], "Version 0.6.3 (2022/04/09)": [[9, "version-0-6-3-2022-04-09"]], "Version 0.6.2 (2022/04/03)": [[9, "version-0-6-2-2022-04-03"]], "Version 0.6.1 (2022/03/27)": [[9, "version-0-6-1-2022-03-27"]], "Version 0.6.0 (2022/03/27)": [[9, "version-0-6-0-2022-03-27"]], "Version 0.5.7 (2022/02/13)": [[9, "version-0-5-7-2022-02-13"]], "Security": [[9, "security"]], "Version 0.5.6 (2022/02/05)": [[9, "version-0-5-6-2022-02-05"]], "Version 0.5.5 (2022/01/19)": [[9, "version-0-5-5-2022-01-19"]], "New Features": [[9, "new-features"], [9, "id125"], [9, "id127"], [9, "id129"], [9, "id134"], [9, "id149"], [9, "id153"], [9, "id155"], [9, "id157"], [9, "id162"], [9, "id167"], [9, "id171"], [9, "id174"], [9, "id177"]], "Version 0.5.4 (2022/01/01)": [[9, "version-0-5-4-2022-01-01"]], "Version 0.5.3 (2022/01/01)": [[9, "version-0-5-3-2022-01-01"]], "Version 0.5.2 (2021/12/19)": [[9, "version-0-5-2-2021-12-19"]], "Version 0.5.1 (2021/11/30)": [[9, "version-0-5-1-2021-11-30"]], "Version 0.5.0 (2021/11/14)": [[9, "version-0-5-0-2021-11-14"]], "Version 0.4.9 (2021/07/16)": [[9, "version-0-4-9-2021-07-16"]], "Version 0.4.8 (2021/07/03)": [[9, "version-0-4-8-2021-07-03"]], "Version 0.4.7 (2021/04/07)": [[9, "version-0-4-7-2021-04-07"]], "Version 0.4.6 (2021/02/21)": [[9, "version-0-4-6-2021-02-21"]], "Version 0.4.5 (2021/02/17)": [[9, "version-0-4-5-2021-02-17"]], "Version 0.4.4 (2021/01/31)": [[9, "version-0-4-4-2021-01-31"]], "Version 0.4.3 (2021/01/10)": [[9, "version-0-4-3-2021-01-10"]], "Version 0.4.2 (2021/01/03)": [[9, "version-0-4-2-2021-01-03"]], "Version 0.4.1 (2020/12/31)": [[9, "version-0-4-1-2020-12-31"]], "Version 0.4.0 - FitTrackee on PyPI (2020/09/19)": [[9, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.3.0 - Administration (2020/07/15)": [[9, "version-0-3-0-administration-2020-07-15"]], "Version 0.2.5 - Fix and improvements (2020/01/31)": [[9, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.2.4 - Minor fix (2020/01/30)": [[9, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.3 - FitTrackee available in French (2019/12/29)": [[9, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.2 - Statistics fix (2019/09/23)": [[9, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.1 - Fix and improvements (2019/09/01)": [[9, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.0 - Statistics (2019/07/07)": [[9, "version-0-2-0-statistics-2019-07-07"]], "Version 0.1.1 - Fix and improvements (2019/02/07)": [[9, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.1.0 - First release \ud83c\udf89 (2018-07-04)": [[9, "version-0-1-0-first-release-2018-07-04"]], "Command line interface": [[10, "command-line-interface"]], "Database": [[10, "database"]], "ftcli db drop": [[10, "ftcli-db-drop"]], "ftcli db upgrade": [[10, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[10, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[10, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[10, "ftcli-users-clean-tokens"]], "ftcli users create": [[10, "ftcli-users-create"]], "ftcli users export_archives": [[10, "ftcli-users-export-archives"]], "ftcli users update": [[10, "ftcli-users-update"]], "Account & preferences": [[11, "account-preferences"]], "Administration": [[11, "administration"], [11, "id1"]], "Application": [[11, "application"]], "Screenshots": [[11, "screenshots"]], "Dashboard": [[11, "dashboard"]], "Workout detail": [[11, "workout-detail"]], "Workouts list": [[11, "workouts-list"]], "FitTrackee": [[12, "fittrackee"]], "Table of contents": [[12, "table-of-contents"]], "Installation": [[13, "installation"], [13, "id2"], [13, "id6"]], "Prerequisites": [[13, "prerequisites"]], "Environment variables": [[13, "environment-variables"]], "Emails": [[13, "emails"]], "Map tile server": [[13, "map-tile-server"]], "API rate limits": [[13, "api-rate-limits"]], "Weather data": [[13, "weather-data"]], "From PyPI": [[13, "from-pypi"], [13, "id3"]], "From sources": [[13, "from-sources"], [13, "id4"]], "Dev environment": [[13, "dev-environment"], [13, "id5"]], "Production environment": [[13, "production-environment"]], "Upgrade": [[13, "upgrade"]], "Prod environment": [[13, "prod-environment"]], "Deployment": [[13, "deployment"]], "Docker": [[13, "docker"]], "Development": [[13, "development"]], "Yunohost": [[13, "yunohost"]], "OAuth 2.0": [[14, "oauth-2-0"]], "Scopes": [[14, "scopes"]], "Flow": [[14, "flow"]], "Resources": [[14, "resources"]], "Third-party tools": [[15, "third-party-tools"]], "Administrator": [[16, "administrator"]], "FitTrackee fails to start": [[16, "fittrackee-fails-to-start"]], "Map images are not displayed but map is shown in Workout detail": [[16, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Failed to upload or download files": [[16, "failed-to-upload-or-download-files"]], "Troubleshooting": [[17, "troubleshooting"]]}, "indexentries": {"api_rate_limits": [[13, "envvar-API_RATE_LIMITS"]], "app_log": [[13, "envvar-APP_LOG"]], "app_secret_key": [[13, "envvar-APP_SECRET_KEY"]], "app_settings": [[13, "envvar-APP_SETTINGS"]], "app_workers": [[13, "envvar-APP_WORKERS"]], "database_disable_pooling": [[13, "envvar-DATABASE_DISABLE_POOLING"]], "database_url": [[13, "envvar-DATABASE_URL"]], "default_staticmap": [[13, "envvar-DEFAULT_STATICMAP"]], "email_url": [[13, "envvar-EMAIL_URL"]], "flask_app": [[13, "envvar-FLASK_APP"]], "host": [[13, "envvar-HOST"]], "map_attribution": [[13, "envvar-MAP_ATTRIBUTION"]], "port": [[13, "envvar-PORT"]], "redis_url": [[13, "envvar-REDIS_URL"]], "sender_email": [[13, "envvar-SENDER_EMAIL"]], "staticmap_subdomains": [[13, "envvar-STATICMAP_SUBDOMAINS"]], "tile_server_url": [[13, "envvar-TILE_SERVER_URL"]], "ui_url": [[13, "envvar-UI_URL"]], "upload_folder": [[13, "envvar-UPLOAD_FOLDER"]], "vite_app_api_url": [[13, "envvar-VITE_APP_API_URL"]], "weather_api_key": [[13, "envvar-WEATHER_API_KEY"]], "weather_api_provider \ud83c\udd95": [[13, "envvar-WEATHER_API_PROVIDER"]], "workers_processes": [[13, "envvar-WORKERS_PROCESSES"]], "environment variable": [[13, "envvar-API_RATE_LIMITS"], [13, "envvar-APP_LOG"], [13, "envvar-APP_SECRET_KEY"], [13, "envvar-APP_SETTINGS"], [13, "envvar-APP_WORKERS"], [13, "envvar-DATABASE_DISABLE_POOLING"], [13, "envvar-DATABASE_URL"], [13, "envvar-DEFAULT_STATICMAP"], [13, "envvar-EMAIL_URL"], [13, "envvar-FLASK_APP"], [13, "envvar-HOST"], [13, "envvar-MAP_ATTRIBUTION"], [13, "envvar-PORT"], [13, "envvar-REDIS_URL"], [13, "envvar-SENDER_EMAIL"], [13, "envvar-STATICMAP_SUBDOMAINS"], [13, "envvar-TILE_SERVER_URL"], [13, "envvar-UI_URL"], [13, "envvar-UPLOAD_FOLDER"], [13, "envvar-VITE_APP_API_URL"], [13, "envvar-WEATHER_API_KEY"], [13, "envvar-WEATHER_API_PROVIDER"], [13, "envvar-WORKERS_PROCESSES"]]}}) \ No newline at end of file diff --git a/docs/en/third_party_tools.html b/docs/en/third_party_tools.html index c0a3cf3a..6aebf414 100644 --- a/docs/en/third_party_tools.html +++ b/docs/en/third_party_tools.html @@ -5,8 +5,8 @@ - - Third-party tools - FitTrackee 0.7.29 documentation + + Third-party tools - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -267,7 +267,7 @@
    Made with Sphinx and @pradyunsg's @@ -291,7 +291,7 @@
    -
    +
    diff --git a/docs/en/troubleshooting/administrator.html b/docs/en/troubleshooting/administrator.html index 5dd92b8c..e2d1d59c 100644 --- a/docs/en/troubleshooting/administrator.html +++ b/docs/en/troubleshooting/administrator.html @@ -5,8 +5,8 @@ - - Administrator - FitTrackee 0.7.29 documentation + + Administrator - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -292,7 +292,7 @@
    Made with Sphinx and @pradyunsg's @@ -337,7 +337,7 @@
    -
    +
    diff --git a/docs/en/troubleshooting/index.html b/docs/en/troubleshooting/index.html index 68a3cc18..257b2971 100644 --- a/docs/en/troubleshooting/index.html +++ b/docs/en/troubleshooting/index.html @@ -5,8 +5,8 @@ - - Troubleshooting - FitTrackee 0.7.29 documentation + + Troubleshooting - FitTrackee 0.7.30 documentation @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - FitTrackee 0.7.29 + FitTrackee 0.7.30 documentation @@ -272,7 +272,7 @@
    Made with Sphinx and @pradyunsg's @@ -296,7 +296,7 @@
    -
    +
    diff --git a/docs/fr/.buildinfo b/docs/fr/.buildinfo index 6d60d9ac..3d1f2a38 100644 --- a/docs/fr/.buildinfo +++ b/docs/fr/.buildinfo @@ -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: a580a5ddb0aeb025df9c33989c14b705 +config: b1d8e8c0b624c57cc157e7a931fecea0 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/fr/_images/fittrackee_screenshot-01.png b/docs/fr/_images/fittrackee_screenshot-01.png index 672dbba4..31b49fe0 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-01.png and b/docs/fr/_images/fittrackee_screenshot-01.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-02.png b/docs/fr/_images/fittrackee_screenshot-02.png index 1c04477d..f376ac8e 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-02.png and b/docs/fr/_images/fittrackee_screenshot-02.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-03.png b/docs/fr/_images/fittrackee_screenshot-03.png index 8c72444b..01e6ee2d 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-03.png and b/docs/fr/_images/fittrackee_screenshot-03.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-04.png b/docs/fr/_images/fittrackee_screenshot-04.png index f5a70151..9559f3e4 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-04.png and b/docs/fr/_images/fittrackee_screenshot-04.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-05.png b/docs/fr/_images/fittrackee_screenshot-05.png index c18b97c0..dcfa56da 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-05.png and b/docs/fr/_images/fittrackee_screenshot-05.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-06.png b/docs/fr/_images/fittrackee_screenshot-06.png index cd35158e..cfd9d3fa 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-06.png and b/docs/fr/_images/fittrackee_screenshot-06.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-07.png b/docs/fr/_images/fittrackee_screenshot-07.png index 1d25d47e..27c5db76 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-07.png and b/docs/fr/_images/fittrackee_screenshot-07.png differ diff --git a/docs/fr/_images/fittrackee_screenshot-08.png b/docs/fr/_images/fittrackee_screenshot-08.png index ba39f54c..500a4c9b 100644 Binary files a/docs/fr/_images/fittrackee_screenshot-08.png and b/docs/fr/_images/fittrackee_screenshot-08.png differ diff --git a/docs/fr/_sources/changelog.md.txt b/docs/fr/_sources/changelog.md.txt index 0f0a8b0f..374266a6 100644 --- a/docs/fr/_sources/changelog.md.txt +++ b/docs/fr/_sources/changelog.md.txt @@ -1,5 +1,45 @@ # Change log +## Version 0.7.30 (2024/02/04) + +### Features and enhancements + +* [b748459](https://github.com/SamR1/FitTrackee/commit/b7484598258b4891b5699e8e8512deee7977d517) - Update alert message colors on dark mode + +### Bugs Fixed + +* [PR#481](https://github.com/SamR1/FitTrackee/pull/481) - Handle keyboard navigation on dropdowns +* [3821e37](https://github.com/SamR1/FitTrackee/commit/3821e370228cf14cc73a9c3f17d47178e17e8842) - Make calendar arrows accessible to keyboard navigation +* [PR#488](https://github.com/SamR1/FitTrackee/pull/488) - CLI - fix user creation when user already exists with same email +* [PR#489](https://github.com/SamR1/FitTrackee/pull/489) - Handle keyboard navigation on calendar + +### Translations + +* [PR#482](https://github.com/SamR1/FitTrackee/pull/482) - Translations update (Galician and Spanish) +* [PR#484](https://github.com/SamR1/FitTrackee/pull/484) - Translations update (German) + +Translation status: +- Dutch: 99% +- English: 100% +- French: 100% +- Galician: 100% +- German: 100% +- Italian: 84% +- Norwegian Bokmål: 60% +- Polish: 99% +- Spanish: 100% + +### Misc + +* [aff4d68](https://github.com/SamR1/FitTrackee/commit/aff4d68a913b9aee5a620c4fb7f6049410ad7724) - CI - update actions version + + +Thanks to the contributors: +- @gallegonovato +- @qwerty287 +- @xmgz + + ## Version 0.7.29 (2024/01/06) ### Features and enhancements diff --git a/docs/fr/_sources/installation.rst.txt b/docs/fr/_sources/installation.rst.txt index ddc83770..6c94828c 100644 --- a/docs/fr/_sources/installation.rst.txt +++ b/docs/fr/_sources/installation.rst.txt @@ -518,13 +518,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.7.29): +- Download the last release (for now, it is the release v0.7.30): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz - $ tar -xzf v0.7.29.tar.gz - $ mv FitTrackee-0.7.29 FitTrackee + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz + $ tar -xzf v0.7.30.tar.gz + $ mv FitTrackee-0.7.30 FitTrackee $ cd FitTrackee - Create **.env** from example and update it @@ -648,13 +648,13 @@ Prod environment - Change to the directory where FitTrackee directory is located -- Download the last release (for now, it is the release v0.7.29) and overwrite existing files: +- Download the last release (for now, it is the release v0.7.30) and overwrite existing files: .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz - $ tar -xzf v0.7.29.tar.gz - $ cp -R FitTrackee-0.7.29/* FitTrackee/ + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz + $ tar -xzf v0.7.30.tar.gz + $ cp -R FitTrackee-0.7.30/* FitTrackee/ $ cd FitTrackee - Update **.env** if needed (see `Environment variables `__). diff --git a/docs/fr/_static/documentation_options.js b/docs/fr/_static/documentation_options.js index f5e89156..7d638a7e 100644 --- a/docs/fr/_static/documentation_options.js +++ b/docs/fr/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.7.29', + VERSION: '0.7.30', LANGUAGE: 'fr', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/fr/_static/scripts/furo.js.map b/docs/fr/_static/scripts/furo.js.map index 7b7ddb11..47053022 100644 --- a/docs/fr/_static/scripts/furo.js.map +++ b/docs/fr/_static/scripts/furo.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts/furo.js","mappings":";iCAAA,MAQWA,SAWS,IAAX,EAAAC,EACH,EAAAA,EACkB,oBAAXC,OACPA,OACAC,KAbS,EAAF,WACP,OAaJ,SAAUD,GACR,aAMA,IAAIE,EAAW,CAEbC,SAAU,SACVC,aAAc,SAGdC,QAAQ,EACRC,YAAa,SAGbC,OAAQ,EACRC,QAAQ,EAGRC,QAAQ,GA6BNC,EAAY,SAAUC,EAAMC,EAAMC,GAEpC,GAAKA,EAAOC,SAASL,OAArB,CAGA,IAAIM,EAAQ,IAAIC,YAAYL,EAAM,CAChCM,SAAS,EACTC,YAAY,EACZL,OAAQA,IAIVD,EAAKO,cAAcJ,EAVgB,CAWrC,EAOIK,EAAe,SAAUR,GAC3B,IAAIS,EAAW,EACf,GAAIT,EAAKU,aACP,KAAOV,GACLS,GAAYT,EAAKW,UACjBX,EAAOA,EAAKU,aAGhB,OAAOD,GAAY,EAAIA,EAAW,CACpC,EAMIG,EAAe,SAAUC,GACvBA,GACFA,EAASC,MAAK,SAAUC,EAAOC,GAG7B,OAFcR,EAAaO,EAAME,SACnBT,EAAaQ,EAAMC,UACF,EACxB,CACT,GAEJ,EAwCIC,EAAW,SAAUlB,EAAME,EAAUiB,GACvC,IAAIC,EAASpB,EAAKqB,wBACd1B,EAnCU,SAAUO,GAExB,MAA+B,mBAApBA,EAASP,OACX2B,WAAWpB,EAASP,UAItB2B,WAAWpB,EAASP,OAC7B,CA2Be4B,CAAUrB,GACvB,OAAIiB,EAEAK,SAASJ,EAAOD,OAAQ,KACvB/B,EAAOqC,aAAeC,SAASC,gBAAgBC,cAG7CJ,SAASJ,EAAOS,IAAK,KAAOlC,CACrC,EAMImC,EAAa,WACf,OACEC,KAAKC,KAAK5C,EAAOqC,YAAcrC,EAAO6C,cAnCjCF,KAAKG,IACVR,SAASS,KAAKC,aACdV,SAASC,gBAAgBS,aACzBV,SAASS,KAAKE,aACdX,SAASC,gBAAgBU,aACzBX,SAASS,KAAKP,aACdF,SAASC,gBAAgBC,aAkC7B,EAmBIU,EAAY,SAAUzB,EAAUX,GAClC,IAAIqC,EAAO1B,EAASA,EAAS2B,OAAS,GACtC,GAbgB,SAAUC,EAAMvC,GAChC,SAAI4B,MAAgBZ,EAASuB,EAAKxB,QAASf,GAAU,GAEvD,CAUMwC,CAAYH,EAAMrC,GAAW,OAAOqC,EACxC,IAAK,IAAII,EAAI9B,EAAS2B,OAAS,EAAGG,GAAK,EAAGA,IACxC,GAAIzB,EAASL,EAAS8B,GAAG1B,QAASf,GAAW,OAAOW,EAAS8B,EAEjE,EAOIC,EAAmB,SAAUC,EAAK3C,GAEpC,GAAKA,EAAST,QAAWoD,EAAIC,WAA7B,CAGA,IAAIC,EAAKF,EAAIC,WAAWE,QAAQ,MAC3BD,IAGLA,EAAGE,UAAUC,OAAOhD,EAASR,aAG7BkD,EAAiBG,EAAI7C,GAV0B,CAWjD,EAOIiD,EAAa,SAAUC,EAAOlD,GAEhC,GAAKkD,EAAL,CAGA,IAAIL,EAAKK,EAAMP,IAAIG,QAAQ,MACtBD,IAGLA,EAAGE,UAAUC,OAAOhD,EAASX,UAC7B6D,EAAMnC,QAAQgC,UAAUC,OAAOhD,EAASV,cAGxCoD,EAAiBG,EAAI7C,GAGrBJ,EAAU,oBAAqBiD,EAAI,CACjCM,KAAMD,EAAMP,IACZ5B,QAASmC,EAAMnC,QACff,SAAUA,IAjBM,CAmBpB,EAOIoD,EAAiB,SAAUT,EAAK3C,GAElC,GAAKA,EAAST,OAAd,CAGA,IAAIsD,EAAKF,EAAIC,WAAWE,QAAQ,MAC3BD,IAGLA,EAAGE,UAAUM,IAAIrD,EAASR,aAG1B4D,EAAeP,EAAI7C,GAVS,CAW9B,EA6LA,OA1JkB,SAAUsD,EAAUC,GAKpC,IACIC,EAAU7C,EAAU8C,EAASC,EAAS1D,EADtC2D,EAAa,CAUjBA,MAAmB,WAEjBH,EAAWhC,SAASoC,iBAAiBN,GAGrC3C,EAAW,GAGXkD,MAAMC,UAAUC,QAAQC,KAAKR,GAAU,SAAUjB,GAE/C,IAAIxB,EAAUS,SAASyC,eACrBC,mBAAmB3B,EAAK4B,KAAKC,OAAO,KAEjCrD,GAGLJ,EAAS0D,KAAK,CACZ1B,IAAKJ,EACLxB,QAASA,GAEb,IAGAL,EAAaC,EACf,EAKAgD,OAAoB,WAElB,IAAIW,EAASlC,EAAUzB,EAAUX,GAG5BsE,EASDb,GAAWa,EAAOvD,UAAY0C,EAAQ1C,UAG1CkC,EAAWQ,EAASzD,GAzFT,SAAUkD,EAAOlD,GAE9B,GAAKkD,EAAL,CAGA,IAAIL,EAAKK,EAAMP,IAAIG,QAAQ,MACtBD,IAGLA,EAAGE,UAAUM,IAAIrD,EAASX,UAC1B6D,EAAMnC,QAAQgC,UAAUM,IAAIrD,EAASV,cAGrC8D,EAAeP,EAAI7C,GAGnBJ,EAAU,kBAAmBiD,EAAI,CAC/BM,KAAMD,EAAMP,IACZ5B,QAASmC,EAAMnC,QACff,SAAUA,IAjBM,CAmBpB,CAqEIuE,CAASD,EAAQtE,GAGjByD,EAAUa,GAfJb,IACFR,EAAWQ,EAASzD,GACpByD,EAAU,KAchB,GAMIe,EAAgB,SAAUvE,GAExByD,GACFxE,EAAOuF,qBAAqBf,GAI9BA,EAAUxE,EAAOwF,sBAAsBf,EAAWgB,OACpD,EAMIC,EAAgB,SAAU3E,GAExByD,GACFxE,EAAOuF,qBAAqBf,GAI9BA,EAAUxE,EAAOwF,uBAAsB,WACrChE,EAAaC,GACbgD,EAAWgB,QACb,GACF,EAkDA,OA7CAhB,EAAWkB,QAAU,WAEfpB,GACFR,EAAWQ,EAASzD,GAItBd,EAAO4F,oBAAoB,SAAUN,GAAe,GAChDxE,EAASN,QACXR,EAAO4F,oBAAoB,SAAUF,GAAe,GAItDjE,EAAW,KACX6C,EAAW,KACXC,EAAU,KACVC,EAAU,KACV1D,EAAW,IACb,EAOEA,EA3XS,WACX,IAAI+E,EAAS,CAAC,EAOd,OANAlB,MAAMC,UAAUC,QAAQC,KAAKgB,WAAW,SAAUC,GAChD,IAAK,IAAIC,KAAOD,EAAK,CACnB,IAAKA,EAAIE,eAAeD,GAAM,OAC9BH,EAAOG,GAAOD,EAAIC,EACpB,CACF,IACOH,CACT,CAkXeK,CAAOhG,EAAUmE,GAAW,CAAC,GAGxCI,EAAW0B,QAGX1B,EAAWgB,SAGXzF,EAAOoG,iBAAiB,SAAUd,GAAe,GAC7CxE,EAASN,QACXR,EAAOoG,iBAAiB,SAAUV,GAAe,GAS9CjB,CACT,CAOF,CArcW4B,CAAQvG,EAChB,UAFM,SAEN,uBCXDwG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAU1B,KAAK8B,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAGpEK,EAAOD,OACf,CCrBAJ,EAAoBO,EAAKF,IACxB,IAAIG,EAASH,GAAUA,EAAOI,WAC7B,IAAOJ,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoBU,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdR,EAAoBU,EAAI,CAACN,EAASQ,KACjC,IAAI,IAAInB,KAAOmB,EACXZ,EAAoBa,EAAED,EAAYnB,KAASO,EAAoBa,EAAET,EAASX,IAC5EqB,OAAOC,eAAeX,EAASX,EAAK,CAAEuB,YAAY,EAAMC,IAAKL,EAAWnB,IAE1E,ECNDO,EAAoBxG,EAAI,WACvB,GAA0B,iBAAf0H,WAAyB,OAAOA,WAC3C,IACC,OAAOxH,MAAQ,IAAIyH,SAAS,cAAb,EAChB,CAAE,MAAOC,GACR,GAAsB,iBAAX3H,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBuG,EAAoBa,EAAI,CAACrB,EAAK6B,IAAUP,OAAOzC,UAAUqB,eAAenB,KAAKiB,EAAK6B,4CCK9EC,EAAY,KACZC,EAAS,KACTC,EAAgB/H,OAAO6C,aAAeP,SAASC,gBAAgByF,UACnE,MAAMC,EAAmB,GA2EzB,SAASC,IACP,MAAMC,EAAeC,aAAaC,QAAQ,UAAY,OAZxD,IAAkBC,EACH,WADGA,EAaItI,OAAOuI,WAAW,gCAAgCC,QAI/C,SAAjBL,EACO,QACgB,SAAhBA,EACA,OAEA,OAIU,SAAjBA,EACO,OACgB,QAAhBA,EACA,QAEA,SA9BoB,SAATG,GAA4B,SAATA,IACzCG,QAAQC,MAAM,2BAA2BJ,yBACzCA,EAAO,QAGThG,SAASS,KAAK4F,QAAQC,MAAQN,EAC9BF,aAAaS,QAAQ,QAASP,GAC9BG,QAAQK,IAAI,cAAcR,UA0B5B,CAkDA,SAASnC,KART,WAEE,MAAM4C,EAAUzG,SAAS0G,uBAAuB,gBAChDrE,MAAMsE,KAAKF,GAASlE,SAASqE,IAC3BA,EAAI9C,iBAAiB,QAAS8B,EAAe,GAEjD,CAGEiB,GA9CF,WAEE,IAAIC,EAA6B,EAC7BC,GAAU,EAEdrJ,OAAOoG,iBAAiB,UAAU,SAAUuB,GAC1CyB,EAA6BpJ,OAAOsJ,QAE/BD,IACHrJ,OAAOwF,uBAAsB,WAzDnC,IAAuB+D,IA0DDH,EA9GkC,GAAlDzG,KAAK6G,MAAM1B,EAAO7F,wBAAwBQ,KAC5CqF,EAAOjE,UAAUM,IAAI,YAErB2D,EAAOjE,UAAUC,OAAO,YAI5B,SAAmCyF,GAC7BA,EAAYtB,EACd3F,SAASC,gBAAgBsB,UAAUC,OAAO,oBAEtCyF,EAAYxB,EACdzF,SAASC,gBAAgBsB,UAAUM,IAAI,oBAC9BoF,EAAYxB,GACrBzF,SAASC,gBAAgBsB,UAAUC,OAAO,oBAG9CiE,EAAgBwB,CAClB,CAoCEE,CAA0BF,GAlC5B,SAA6BA,GACT,OAAd1B,IAKa,GAAb0B,EACF1B,EAAU6B,SAAS,EAAG,GAGtB/G,KAAKC,KAAK2G,IACV5G,KAAK6G,MAAMlH,SAASC,gBAAgBS,aAAehD,OAAOqC,aAE1DwF,EAAU6B,SAAS,EAAG7B,EAAU7E,cAGhBV,SAASqH,cAAc,mBAc3C,CAKEC,CAAoBL,GAwDdF,GAAU,CACZ,IAEAA,GAAU,EAEd,IACArJ,OAAO6J,QACT,CA6BEC,GA1BkB,OAAdjC,GAKJ,IAAI,IAAJ,CAAY,cAAe,CACzBrH,QAAQ,EACRuJ,WAAW,EACX5J,SAAU,iBACVI,OAAQ,KACN,IAAIyJ,EAAM9H,WAAW+H,iBAAiB3H,SAASC,iBAAiB2H,UAChE,OAAOpC,EAAO7F,wBAAwBkI,OAAS,GAAMH,EAAM,CAAC,GAiBlE,CAcA1H,SAAS8D,iBAAiB,oBAT1B,WACE9D,SAASS,KAAKW,WAAWG,UAAUC,OAAO,SAE1CgE,EAASxF,SAASqH,cAAc,UAChC9B,EAAYvF,SAASqH,cAAc,eAEnCxD,GACF","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader() {\n if (Math.floor(header.getBoundingClientRect().top) == 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader();\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 0.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","floor","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader() {\n if (Math.floor(header.getBoundingClientRect().top) == 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader();\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 0.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","floor","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/fr/_static/styles/furo.css.map b/docs/fr/_static/styles/furo.css.map index d1dfb109..1924b333 100644 --- a/docs/fr/_static/styles/furo.css.map +++ b/docs/fr/_static/styles/furo.css.map @@ -1 +1 @@ -{"version":3,"file":"styles/furo.css","mappings":"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0CACE,CAFF,kBACA,CACE,wEACA,CARA,YACA,CAKF,mBAFF,OAII,eACA,CAJF,iCAJE,cAGJ,CANI,oBAEA,CAKF,SAIE,2BADA,UACA,kBAGF,sCACA,CAFF,WACE,WACA,qCACE,gCACA,2EACA,sDAKJ,aACE,mDAII,CAJJ,6CAII,kEACA,iBACE,iDACA,+CACE,aACA,WADA,+BACA,uEANN,YACE,mDAEE,mBADF,0CACE,CADF,qBACE,0DACA,YACE,4DACA,sEANN,YACE,8CACA,kBADA,UACA,2CACE,2EACA,cACE,kEACA,mEANN,yBACE,4DACA,sBACE,+EAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCrEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kEAGA,8CAEA,uDAKA,oCAEA,yDAEE,gEAKF,+CC5FA,0EAGE,CACA,qDCLJ,+DAIE,sCAIA,kEACE,yBACA,2FAMA,gBACA,yGCbF,mBAOA,2MAIA,4HAYA,0DACE,8GAYF,8HAQE,mBAEA,6HAOF,YAGA,mIAME,eACA,CAFF,YAEE,4FAMJ,8BAEE,uBAYA,sCAEE,CAJF,oBAEA,CARA,wCAEA,CAHA,8BACA,CAFA,eACA,CAGA,wCAEA,CAEA,mDAIE,kCACE,6BACA,4CAKJ,kDAIA,eACE,aAGF,8BACE,uDACA,sCACA,cAEA,+BACA,CAFA,eAEA,wCAEF,YACE,iBACA,mCACA,0DAGF,qBAEE,CAFF,kBAEE,+BAIA,yCAEE,qBADA,gBACA,yBAKF,eACA,CAFF,YACE,CACA,iBACA,qDAEA,mDCvIJ,2FAOE,iCACA,CAEA,eACA,CAHA,kBAEA,CAFA,wBAGA,8BACA,eACE,CAFF,YAEE,0BACA,8CAGA,oBACE,oCAGA,kBACE,8DAEA,iBAEN,UACE,8BAIJ,+CAEE,qDAEF,kDAIE,YAEF,CAFE,YAEF,CCjCE,mFAJA,QACA,UAIE,CADF,iBACE,mCAGA,iDACE,+BAGF,wBAEA,mBAKA,6CAEF,CAHE,mBACA,CAEF,kCAIE,CARA,kBACA,CAFF,eASE,YACA,mBAGF,CAJE,UAIF,wCCjCA,oBDmCE,wBCpCJ,uCACE,8BACA,4CACA,oBAGA,2CCAA,6CAGE,CAPF,uBAIA,CDGA,gDACE,6BCVJ,CAWM,2CAEF,CAJA,kCAEE,CDJF,aCLF,gBDKE,uBCMA,gCAGA,gDAGE,wBAGJ,0BAEA,iBACE,aACF,CADE,UACF,uBACE,aACF,oBACE,YACF,4BACE,6CAMA,CAYF,6DAZE,mCAGE,iCASJ,4BAGE,4DADA,+BACA,CAFA,qBAEA,yBACE,aAEF,wBAHA,SAGA,iHACE,2DAKF,CANA,yCACE,CADF,oCAMA,uSAIA,sGACE,oDChEJ,WAEF,yBACE,QACA,eAEA,gBAEE,uCAGA,CALF,iCAKE,uCAGA,0BACA,CACA,oBACA,iCClBJ,gBACE,KAGF,qBACE,YAGF,CAHE,cAGF,gCAEE,mBACA,iEAEA,oCACA,wCAEA,sBACA,WAEA,CAFA,YAEA,8EAEA,mCAFA,iBAEA,6BAIA,wEAKA,sDAIE,CARF,mDAIA,CAIE,cAEF,8CAIA,oBAFE,iBAEF,8CAGE,eAEF,CAFE,YAEF,OAEE,kBAGJ,CAJI,eACA,CAFF,mBAKF,yCCjDE,oBACA,CAFA,iBAEA,uCAKE,iBACA,qCAGA,mBCZJ,CDWI,gBCXJ,6BAEE,eACA,sBAGA,eAEA,sBACA,oDACA,iGAMA,gBAFE,YAEF,8FAME,iJClBF,YACA,gNAUE,6BAEF,oTAcI,kBACF,gHAIA,qBACE,eACF,qDACE,kBACF,6DACE,4BCxCJ,oBAEF,qCAEI,+CAGF,uBACE,uDAGJ,oBAkBE,mDAhBA,+CAaA,CAbA,oBAaA,0FAEE,CAFF,gGAbA,+BAaA,0BAGA,mQAIA,oNAEE,iBAGJ,CAHI,gBADA,gBAIJ,8CAYI,CAZJ,wCAYI,sVACE,iCAGA,uEAHA,QAGA,qXAKJ,iDAGF,CARM,+CACE,iDAIN,CALI,gBAQN,mHACE,gBAGF,2DACE,0EAOA,0EAKA,6EC/EA,iDACA,gCACA,oDAGA,qBACA,oDCFA,cACA,eAEA,yBAGF,sBAEE,iBACA,sNAWA,iBACE,kBACA,wRAgBA,kBAEA,iOAgBA,uCACE,uEAEA,kBAEF,qUAuBE,iDAIJ,CACA,geCxFF,4BAEE,CAQA,6JACA,iDAIA,sEAGA,mDAOF,iDAGE,4DAIA,8CACA,qDAEE,eAFF,cAEE,oBAEF,uBAFE,kCAGA,eACA,iBACA,mBAIA,mDACA,CAHA,uCAEA,CAJA,0CACA,CAIA,gBAJA,gBACA,oBADA,gBAIA,wBAEJ,gBAGE,6BACA,YAHA,iBAGA,gCACA,iEAEA,6CACA,sDACA,0BADA,wBACA,0BACA,oIAIA,mBAFA,YAEA,qBACA,0CAIE,uBAEF,CAHA,yBACE,CAEF,iDACE,mFAKJ,oCACE,CANE,aAKJ,CACE,qEAIA,YAFA,WAEA,CAHA,aACA,CAEA,gBACE,4BACA,sBADA,aACA,gCAMF,oCACA,yDACA,2CAEA,qBAGE,kBAEA,CACA,mCAIF,CARE,YACA,CAOF,iCAEE,CAPA,oBACA,CAQA,oBACE,uDAEJ,sDAGA,CAHA,cAGA,0BACE,oDAIA,oCACA,4BACA,sBAGA,cAEA,oFAGA,sBAEA,yDACE,CAIA,iBAJA,wBAIA,6CAJA,6CAOA,4BAGJ,CAHI,cAGJ,yCAGA,kBACE,CAIA,iDAEA,CATA,YAEF,CACE,4CAGA,kBAIA,wEAEA,wDAIF,kCAOE,iDACA,CARF,WAIE,sCAGA,CANA,2CACA,CAMA,oEARF,iBACE,CACA,qCAMA,iBAuBE,uBAlBF,YAKA,2DALA,uDAKA,CALA,sBAiBA,4CACE,CALA,gRAIF,YACE,UAEN,uBACE,YACA,mCAOE,+CAGA,8BAGF,+CAGA,4BCjNA,SDiNA,qFCjNA,gDAGA,sCACA,qCACA,sDAIF,CAIE,kDAGA,CAPF,0CAOE,kBAEA,kDAEA,CAHA,eACA,CAFA,YACA,CADA,SAIA,mHAIE,CAGA,6CAFA,oCAeE,CAbF,yBACE,qBAEJ,CAGE,oBACA,CAEA,YAFA,2CACF,CACE,uBAEA,mFAEE,CALJ,oBACE,CAEA,UAEE,gCAGF,sDAEA,yCC7CJ,oCAGA,CD6CE,yXAQE,sCCrDJ,wCAGA,oCACE","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto\n display: block\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #646776; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2962ff;\n --color-brand-content: #2a5adf;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link-underline--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #ffffffcc; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2b8cee;\n --color-brand-content: #368ce2;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n vertical-align: middle\n\n.theme-toggle\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n vertical-align: middle\n height: 1rem\n width: 1rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n float: left\n padding: 1rem 0.5rem\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1rem\n width: 1rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page svg\n color: inherit\n height: 1rem\n width: 1rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n .theme-toggle-header\n display: block\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: var(--header-height)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 3.5rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\n.versionmodified\n font-style: italic\ndiv.versionadded, div.versionchanged, div.deprecated\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > p,\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 0.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(0.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(0.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -257,7 +257,7 @@ "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors", "privacy_policy": null, "privacy_policy_date": null, - "version": "0.7.29", + "version": "0.7.30", "weather_provider": null }, "status": "success" @@ -302,7 +302,7 @@ "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors", "privacy_policy": null, "privacy_policy_date": null, - "version": "0.7.29", + "version": "0.7.30", "weather_provider": null }, "status": "success" @@ -404,7 +404,7 @@
    Made with Sphinx and @pradyunsg's @@ -428,7 +428,7 @@
    -
    +
    diff --git a/docs/fr/api/index.html b/docs/fr/api/index.html index f3dc249b..2839ec60 100644 --- a/docs/fr/api/index.html +++ b/docs/fr/api/index.html @@ -5,8 +5,8 @@ - - Documentation de l’API - Documentation FitTrackee 0.7.29 + + Documentation de l’API - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -275,7 +275,7 @@
    Made with Sphinx and @pradyunsg's @@ -299,7 +299,7 @@
    -
    +
    diff --git a/docs/fr/api/oauth2.html b/docs/fr/api/oauth2.html index 8a609674..18f41722 100644 --- a/docs/fr/api/oauth2.html +++ b/docs/fr/api/oauth2.html @@ -5,8 +5,8 @@ - - OAuth2 - Documentation FitTrackee 0.7.29 + + OAuth2 - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -780,7 +780,7 @@
    Made with Sphinx and @pradyunsg's @@ -804,7 +804,7 @@
    -
    +
    diff --git a/docs/fr/api/records.html b/docs/fr/api/records.html index d3c40c2f..c0eac105 100644 --- a/docs/fr/api/records.html +++ b/docs/fr/api/records.html @@ -5,8 +5,8 @@ - - Records - Documentation FitTrackee 0.7.29 + + Records - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -377,7 +377,7 @@
    Made with Sphinx and @pradyunsg's @@ -401,7 +401,7 @@
    -
    +
    diff --git a/docs/fr/api/sports.html b/docs/fr/api/sports.html index 3feaa5c9..541da406 100644 --- a/docs/fr/api/sports.html +++ b/docs/fr/api/sports.html @@ -5,8 +5,8 @@ - - Sports - Documentation FitTrackee 0.7.29 + + Sports - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -607,7 +607,7 @@
    Made with Sphinx and @pradyunsg's @@ -631,7 +631,7 @@
    -
    +
    diff --git a/docs/fr/api/stats.html b/docs/fr/api/stats.html index 45639958..b7c58541 100644 --- a/docs/fr/api/stats.html +++ b/docs/fr/api/stats.html @@ -5,8 +5,8 @@ - - Statistiques - Documentation FitTrackee 0.7.29 + + Statistiques - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -524,7 +524,7 @@
    Made with Sphinx and @pradyunsg's @@ -548,7 +548,7 @@
    -
    +
    diff --git a/docs/fr/api/users.html b/docs/fr/api/users.html index 6d16cf8c..ccfa8f78 100644 --- a/docs/fr/api/users.html +++ b/docs/fr/api/users.html @@ -5,8 +5,8 @@ - - Utilisateurs - Documentation FitTrackee 0.7.29 + + Utilisateurs - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -766,7 +766,7 @@
    Made with Sphinx and @pradyunsg's @@ -790,7 +790,7 @@
    -
    +
    diff --git a/docs/fr/api/workouts.html b/docs/fr/api/workouts.html index 540806a8..933af9d2 100644 --- a/docs/fr/api/workouts.html +++ b/docs/fr/api/workouts.html @@ -5,8 +5,8 @@ - - Séances - Documentation FitTrackee 0.7.29 + + Séances - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -1292,7 +1292,7 @@
    Made with Sphinx and @pradyunsg's @@ -1316,7 +1316,7 @@
    -
    +
    diff --git a/docs/fr/changelog.html b/docs/fr/changelog.html index 80b7f2f9..ec3c3a0c 100644 --- a/docs/fr/changelog.html +++ b/docs/fr/changelog.html @@ -5,8 +5,8 @@ - - Historique des modifications - Documentation FitTrackee 0.7.29 + + Historique des modifications - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -231,24 +231,73 @@

    Historique des modifications#

    -
    -

    Version 0.7.29 (04/01/2024)#

    +
    +

    Version 0.7.30 (04/02/2024)#

    Fonctionnalités et améliorations#

      -
    • 8aa4cff - Update loader color on dark theme

    • -
    • #478 - Make application name clickable to access dashboard

    • +
    • b748459 - Update alert message colors on dark mode

    Bugs corrigés#

      -
    • PR#479 - Minor fixes on UI

    • +
    • PR#481 - Handle keyboard navigation on dropdowns

    • +
    • 3821e37 - Make calendar arrows accessible to keyboard navigation

    • +
    • PR#488 - CLI - fix user creation when user already exists with same email

    • +
    • PR#489 - Handle keyboard navigation on calendar

    Traductions#

      +
    • PR#482 - Translations update (Galician and Spanish)

    • +
    • PR#484 - Translations update (German)

    • +
    +

    Avancement de la traduction :

    +
      +
    • Néerlandais : 99%

    • +
    • Anglais : 100%

    • +
    • Français : 100%

    • +
    • Galicien : 100%

    • +
    • Allemand : 100%

    • +
    • Italien : 84%

    • +
    • Norvégien (Bokmål) : 60%

    • +
    • Polonais : 99%

    • +
    • Espagnol : 100%

    • +
    +
    +
    +

    Divers#

    +
      +
    • aff4d68 - CI - update actions version

    • +
    +

    Merci aux contributeurs :

    +
      +
    • @gallegonovato

    • +
    • @qwerty287

    • +
    • @xmgz

    • +
    +
    +
    +
    +

    Version 0.7.29 (04/01/2024)#

    +
    +

    Fonctionnalités et améliorations#

    +
      +
    • 8aa4cff - Update loader color on dark theme

    • +
    • #478 - Make application name clickable to access dashboard

    • +
    +
    +
    +

    Bugs corrigés#

    +
      +
    • PR#479 - Minor fixes on UI

    • +
    +
    +
    +

    Traductions#

    +
    • PR#476 - Translations update (Polish)

    • PR#477 - Translations update (Dutch)

    @@ -265,8 +314,8 @@
  • Espagnol : 100%

  • -
    -

    Divers#

    +
    +

    Divers#

    • PR#475 - Build - use poetry-core instead of poetry

    @@ -280,20 +329,20 @@

    Version 0.7.28 (23/12/2023)#

    -
    -

    Fonctionnalités et améliorations#

    +
    +

    Fonctionnalités et améliorations#

    • PR#474 - Improve links display

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • 6e215aa - fix background color on dark theme when modal is displayed

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#473 - Translations update (Galician, Spanish and German)

    @@ -319,29 +368,29 @@

    Version 0.7.27 (20/12/2023)#

    -
    -

    Fonctionnalités et améliorations#

    +
    +

    Fonctionnalités et améliorations#

    • #113 - add a dark mode

    • PR#464 - Update user preferences display

    • PR#471 - add new sport: « Cycling (Trekking) »

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • PR#469 - change UI display only on login ou user preferences update

    • PR#472 - fix redirection when resetting password

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#468 - Translations update (Galician & Spanish)

    -
    -

    Divers#

    +
    +

    Divers#

    • #456 - Drop PostgreSQL 11 support

    @@ -368,20 +417,20 @@

    Version 0.7.26 (19/11/2023)#

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • #224 - Missing elevation results in incorrect ascent/descent total

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#444 - Translations update (Norwegian Bokmål)

    -
    -

    Divers#

    +
    +

    Divers#

    En plus de la mise à jour des dépendances :

    • PR#449 - Update vue, tooling and chart library

    • @@ -407,8 +456,8 @@

    Version 0.7.25 (08/10/2023)#

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • #441 - Errors after upgrade to 0.7.24

    @@ -416,21 +465,21 @@

    Version 0.7.24 (04/10/2023)#

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • PR#433 - Handle encoded password in EMAIL_URL

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#427 - fix typos and translations + refacto

    • PR#431 - Translations update (Galician)

    -
    -

    Divers#

    +
    +

    Divers#

    • PR#428 - CI - Add PostgreSQL 16

    • 2bcff2e - API - update Flask to 3.0+

    • @@ -457,15 +506,15 @@

    Version 0.7.23 (14/09/2023)#

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • PR#421 - remove darksky from available weather providers in .env

    • PR#426 - Update default tile server (thanks to @astridx)

    -
    -

    Divers#

    +
    +

    Divers#

    • PR#422 - CI - fix e2e tests with packaged version

    @@ -473,15 +522,15 @@

    Version 0.7.22 (23/08/2023)#

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • PR#411 - Fix various typos

    • PR#416 - fix modal navigation and closing

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#410 - Translations update (German)

    • PR#415 - Translations update (Polish)

    • @@ -510,14 +559,14 @@

    Version 0.7.21 (30/07/2023)#

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • #407 - Workout display error when speeds are zero

    -
    -

    Divers#

    +
    +

    Divers#

    • PR#409 - CI - update actions version

    @@ -525,21 +574,21 @@

    Version 0.7.20 (22/07/2023)#

    -
    -

    Fonctionnalités et améliorations#

    +
    +

    Fonctionnalités et améliorations#

    • #400 - Add new sport: open water swimming

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • PR#398 - Fix language dropdown label

    • #402 - handle gpx file without elevation

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#399 - Translations update (Galician)

    • PR#401 - Translations update (Galician and Polish)

    • @@ -568,23 +617,23 @@

    Version 0.7.19 (15/07/2023)#

    -
    -

    Fonctionnalités et améliorations#

    +
    +

    Fonctionnalités et améliorations#

    • PR#380 - Update documentation link

    • #390 - Improve UI

    • #391 - Add new sport: paragliding

    -
    -

    Bugs corrigés#

    +
    +

    Bugs corrigés#

    • #384 - Inconsistent page with between workout with and without GPS data

    • #393 - PIL.Image module has no attribute ANTIALIAS

    -
    -

    Traductions#

    +
    +

    Traductions#

    • PR#394 - Translations update (Galician)

    • PR#397 - Translations update (Spanish)

    • @@ -597,8 +646,8 @@
    • PR#388 - Minor typo in CONTRIBUTING.md

    -
    -

    Divers#

    +
    +

    Divers#

    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -484,7 +484,7 @@ Commands:
    Made with Sphinx and @pradyunsg's @@ -543,7 +543,7 @@ Commands:
    -
    +
    diff --git a/docs/fr/features.html b/docs/fr/features.html index c63ba9cb..df9dc1f1 100644 --- a/docs/fr/features.html +++ b/docs/fr/features.html @@ -5,8 +5,8 @@ - - Fonctionnalités - Documentation FitTrackee 0.7.29 + + Fonctionnalités - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -585,7 +585,7 @@
    Made with Sphinx and @pradyunsg's @@ -644,7 +644,7 @@
    -
    +
    diff --git a/docs/fr/genindex.html b/docs/fr/genindex.html index 3775d90e..10b28f20 100644 --- a/docs/fr/genindex.html +++ b/docs/fr/genindex.html @@ -4,7 +4,7 @@ - Index - Documentation FitTrackee 0.7.29 + Index - Documentation FitTrackee 0.7.30 @@ -124,7 +124,7 @@
    -
    @@ -151,7 +151,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -302,7 +302,7 @@
    Made with Sphinx and @pradyunsg's @@ -326,7 +326,7 @@
    -
    +
    diff --git a/docs/fr/http-routingtable.html b/docs/fr/http-routingtable.html index aac1691d..a1b8975a 100644 --- a/docs/fr/http-routingtable.html +++ b/docs/fr/http-routingtable.html @@ -4,7 +4,7 @@ - Table de routage HTTP - Documentation FitTrackee 0.7.29 + Table de routage HTTP - Documentation FitTrackee 0.7.30 @@ -124,7 +124,7 @@
    -
    @@ -151,7 +151,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -593,7 +593,7 @@
    Made with Sphinx and @pradyunsg's @@ -617,7 +617,7 @@
    -
    +
    diff --git a/docs/fr/index.html b/docs/fr/index.html index 0a35d1d0..e3493b5c 100644 --- a/docs/fr/index.html +++ b/docs/fr/index.html @@ -5,8 +5,8 @@ - - Documentation FitTrackee 0.7.29 + + Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -286,7 +286,7 @@
    Made with Sphinx and @pradyunsg's @@ -310,7 +310,7 @@
    -
    +
    diff --git a/docs/fr/installation.html b/docs/fr/installation.html index 90f113e6..1efb6a5b 100644 --- a/docs/fr/installation.html +++ b/docs/fr/installation.html @@ -5,8 +5,8 @@ - - Installation - Documentation FitTrackee 0.7.29 + + Installation - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -898,11 +898,11 @@ $ make install-db
    -
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz
    -$ tar -xzf v0.7.29.tar.gz
    -$ mv FitTrackee-0.7.29 FitTrackee
    +
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz
    +$ tar -xzf v0.7.30.tar.gz
    +$ mv FitTrackee-0.7.30 FitTrackee
     $ cd FitTrackee
     
    @@ -1024,11 +1024,11 @@ $ source .
    • Arrêter l’application

    • Changer pour le répertoire dans lequel FitTrackee est localisé

    • -
    • Télécharger la dernière version (à ce jour, la version v0.7.29) et écraser les fichiers existants :

    • +
    • Télécharger la dernière version (à ce jour, la version v0.7.30) et écraser les fichiers existants :

    -
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.29.tar.gz
    -$ tar -xzf v0.7.29.tar.gz
    -$ cp -R FitTrackee-0.7.29/* FitTrackee/
    +
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.30.tar.gz
    +$ tar -xzf v0.7.30.tar.gz
    +$ cp -R FitTrackee-0.7.30/* FitTrackee/
     $ cd FitTrackee
     
    @@ -1309,7 +1309,7 @@ $ make docker-test-python
    Made with Sphinx and @pradyunsg's @@ -1384,7 +1384,7 @@ $ make docker-test-python
    -
    +
    diff --git a/docs/fr/oauth.html b/docs/fr/oauth.html index af180e03..9a7ce146 100644 --- a/docs/fr/oauth.html +++ b/docs/fr/oauth.html @@ -5,8 +5,8 @@ - - OAuth 2.0 - Documentation FitTrackee 0.7.29 + + OAuth 2.0 - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -360,7 +360,7 @@
    Made with Sphinx and @pradyunsg's @@ -405,7 +405,7 @@
    -
    +
    diff --git a/docs/fr/objects.inv b/docs/fr/objects.inv index c924612a..97f68a33 100644 Binary files a/docs/fr/objects.inv and b/docs/fr/objects.inv differ diff --git a/docs/fr/search.html b/docs/fr/search.html index e564a608..af80e25e 100644 --- a/docs/fr/search.html +++ b/docs/fr/search.html @@ -4,7 +4,7 @@ - Recherche - Documentation FitTrackee 0.7.29 + <!-- Generated with Sphinx 7.1.2 and Furo 2024.01.29 --><title>Recherche - Documentation FitTrackee 0.7.30 @@ -124,7 +124,7 @@
    -
    @@ -151,7 +151,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -249,7 +249,7 @@
    Made with Sphinx and @pradyunsg's @@ -273,7 +273,7 @@
    -
    +
    diff --git a/docs/fr/searchindex.js b/docs/fr/searchindex.js index 1da4ab9b..f1e6d1c9 100644 --- a/docs/fr/searchindex.js +++ b/docs/fr/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "titles": ["Authentification et compte", "Configuration", "Documentation de l\u2019API", "OAuth2", "Records", "Sports", "Statistiques", "Utilisateurs", "S\u00e9ances", "Historique des modifications", "Interface de ligne de commande", "Fonctionnalit\u00e9s", "FitTrackee", "Installation", "OAuth 2.0", "Outils tiers", "Administrateur", "D\u00e9pannage"], "terms": {"post": [0, 3, 8, 14], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "auth": [0, 1, 3, 4, 5, 6, 7, 8], "regist": 0, "enregistr": [0, 10, 11, 14], "utilis": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14], "envoi": [0, 7, 9, 11, 13, 14], "courriel": [0, 7, 9, 11, 16], "confirm": [0, 3, 9, 11, 13], "Le": [0, 9, 11, 13], "nouvel": [0, 7, 10, 11, 13], "cr\u00e9": [0, 3, 8, 9, 10, 11, 13, 14], "inact": [0, 7, 11, 13], "L": [0, 1, 5, 9, 11, 13, 14], "doit": [0, 1, 3, 5, 8, 9, 11, 13, 14, 16], "adress": [0, 1, 7, 10, 11, 13], "\u00e9lectron": [0, 1, 7, 10, 11, 13], "activ": [0, 1, 5, 7, 9, 10, 11, 12, 13], "exempl": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14], "requ\u00eat": [0, 1, 3, 4, 5, 6, 7, 8, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13], "content": [0, 1, 3, 4, 5, 6, 7, 8, 9], "typ": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "appliqu": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8, 11], "r\u00e9pons": [0, 1, 3, 4, 5, 6, 7, 8], "succes": [0, 3, 5, 6, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "success": [0, 1, 3, 4, 5, 6, 7, 8], "status": [0, 1, 3, 4, 5, 6, 7, 8], "erreur": [0, 3, 9, 11, 16], "lor": [0, 10, 11], "400": [0, 1, 3, 5, 7, 8, 9], "bad": [0, 1, 3, 5, 7, 8], "request": [0, 1, 3, 5, 7, 8, 13, 14], "messag": [0, 1, 3, 7, 8, 9, 10, 11, 13, 14], "error": [0, 1, 5, 7, 8, 9, 13], "email": [0, 1, 7, 9, 10, 16], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 13, 16], "must": [0, 1, 7, 9], "be": [0, 1, 7, 9, 13], "provided": [0, 1, 7], "objet": [0, 1, 5, 7, 8], "usernam": [0, 7, 10, 13], "string": [0, 1, 3, 5, 6, 7, 8], "nom": [0, 3, 6, 7, 9, 10, 13], "3": [0, 5, 6, 7, 8, 11, 13], "30": [0, 6], "caracter": [0, 3, 9, 13, 14], "requ": [0, 14], "password": [0, 9, 10, 13], "mot": [0, 7, 10, 11, 13], "pass": [0, 7, 10, 11, 13], "8": [0, 8, 11, 13], "minimum": 0, "lang": [0, 9], "pr\u00e9f\u00e9rent": [0, 7], "langu": [0, 11], "interfac": [0, 9, 11, 12, 13], "si": [0, 3, 7, 8, 9, 10, 11, 13, 14, 16], "non": [0, 3, 5, 8, 9, 12, 13], "fourn": [0, 3, 8, 10, 11, 13, 14, 16], "ser": [0, 9, 10, 11, 13], "anglais": [0, 9, 11], "accepted_policy": 0, "boolean": [0, 1, 3, 7, 10], "tru": [0, 1, 3, 5, 7, 9, 13], "a": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12], "accept": [0, 9, 11], "polit": [0, 1, 9, 11], "confidential": [0, 1, 9, 11], "cod": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "\u00e9tat": [0, 1, 3, 4, 5, 6, 7, 8], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "payload": [0, 1, 3, 5, 7, 8], "sorry": 0, "that": [0, 9], "is": [0, 9, 13], "already": 0, "taken": 0, "you": [0, 1, 5, 6, 7, 8, 13], "agre": 0, "privacy": [0, 9], "policy": [0, 9], "to": [0, 6, 8, 9, 13, 15], "character": [0, 9], "required": 0, "only": [0, 9], "alphanumeric": 0, "and": [0, 9, 10, 13], "the": [0, 5, 7, 8, 9, 13], "underscor": 0, "charact": 0, "_": [0, 9], "allowed": [0, 8], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "registr": [0, 9], "disabled": [0, 10], "500": [0, 1, 5, 7, 8, 9], "internal": [0, 1, 5, 7, 8], "serv": [0, 1, 5, 7, 8, 9, 13], "pleas": [0, 1, 3, 4, 5, 6, 7, 8], "try": [0, 5, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "or": [0, 5, 7, 8, 9], "contact": [0, 1, 5, 7, 8, 11], "administrator": [0, 5, 7, 8], "account": [0, 7, 9], "apres": [0, 3, 9, 11, 13, 14], "inscript": [0, 1, 9, 11, 13], "auth_token": 0, "web": [0, 3, 12, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "successful": 0, "jeton": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13, 14], "resend": 0, "renvoi": [0, 3, 7, 8], "instruct": [0, 9, 11, 13], "d\u00e9sactiv": [0, 9, 10, 11, 13], "point": [0, 1, 3, 9, 11, 13, 14], "acces": [0, 1, 3, 14], "disponibl": [0, 4, 10, 11, 13, 14, 15], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 9], "not": [0, 1, 3, 5, 6, 7, 8, 9, 11, 13], "found": [0, 3, 5, 6, 7, 8, 9], "requested": 0, "url": [0, 3, 9, 13, 14, 16], "was": 0, "login": [0, 9], "connexion": [0, 13], "seul": [0, 3, 7, 8, 9, 11, 13, 14], "dispos": [0, 7], "actif": [0, 10, 11], "peuvent": [0, 9, 11, 12, 13], "connect": [0, 11], "successfully": 0, "logged": 0, "in": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14], "401": [0, 1, 3, 4, 5, 6, 7, 8, 9], "unauthorized": [0, 1, 3, 4, 5, 6, 7, 8], "credential": 0, "get": [0, 1, 3, 4, 5, 6, 7, 8], "profil": [0, 3, 9, 14], "obten": [0, 1, 3, 4, 5, 6, 7, 8, 14], "inform": [0, 1, 7, 9, 11, 12, 13], "authentifi": [0, 1, 3, 4, 5, 7, 8, 11], "scop": [0, 1, 3, 4, 5, 6, 7, 8], "read": [0, 3, 4, 5, 6, 7, 8, 14], "dat": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11], "accepted_privacy_policy": 0, "admin": [0, 1, 4, 5, 6, 7, 8, 10, 13], "fals": [0, 1, 3, 5, 7, 8, 13], "bio": [0, 7], "null": [0, 1, 5, 7, 8, 9], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 9], "gmt": [0, 3, 4, 7, 8], "date_format": 0, "dd": 0, "mm": 0, "yyyy": 0, "display_ascent": 0, "sam": [0, 4, 7, 8, 9], "exampl": [0, 1, 3, 7, 9, 13, 14], "com": [0, 1, 3, 7, 9, 13, 14], "email_to_confirm": 0, "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "languag": [0, 7, 9], "last_nam": [0, 7], "locat": [0, 7, 13], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 10, 11, 13], "pictur": [0, 7, 8, 9], "record": [0, 2, 7, 8, 9, 11], "id": [0, 3, 4, 5, 7, 8], "9": [0, 4, 7, 11, 13], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "user": [0, 4, 6, 7, 8, 9, 13, 14], "valu": [0, 4, 7, 8, 9], "18": [0, 4, 7, 8, 11, 13], "workout_dat": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 11, 13], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8, 10, 11, 13], "ha": [0, 4, 7, 8], "43": [0, 4, 7, 8, 9], "97": [0, 4, 7, 8, 9], "11": [0, 4, 7, 11, 13], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8, 13], "MS": [0, 4, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 11, 13], "start_elevation_at_zero": 0, "timezon": [0, 7, 9], "europ": [0, 7], "paris": [0, 7], "total_ascent": [0, 6], "720": 0, "35": [0, 9], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 9, 13], "27": [0, 3, 7, 11], "use_dark_mod": 0, "use_raw_gpx_speed": 0, "weekm": [0, 6, 7], "En": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12], "t\u00eat": [0, 1, 3, 4, 5, 6, 7, 8, 14], "authoriz": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13], "2": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13], "0": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "bear": [0, 1, 3, 4, 5, 6, 7, 8], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expired": [0, 1, 3, 4, 5, 6, 7, 8], "log": [0, 1, 3, 4, 5, 6, 7, 8, 13, 16], "edit": [0, 9, 11], "modifi": [0, 5, 7, 10, 11, 13], "writ": [0, 1, 3, 5, 7, 8, 14], "updated": [0, 9], "pr\u00e9nom": 0, "famill": 0, "localis": [0, 13], "biograph": 0, "naissanc": 0, "format": [0, 6, 8, 9, 11, 12], "Y": [0, 6, 8], "preferent": [0, 9], "pris": [0, 3, 9, 11, 13, 14], "charg": [0, 3, 9, 11, 13, 14, 17], "valeur": [0, 3, 11, 13, 14, 16], "d\u00e9faut": [0, 3, 7, 8, 9, 11, 13], "date_string": 0, "correspond": [0, 8, 13], "mmm": 0, "do": [0, 1, 5, 6, 7, 8, 9], "local": [0, 9, 12, 13], "e": 0, "fr": [0, 7, 13], "gl": 0, "it": [0, 13], "nl": 0, "nb": 0, "affich": [0, 8, 9, 10, 11, 12, 13, 14, 17], "dan": [0, 1, 8, 9, 10, 11, 12, 13, 14, 17], "d\u00e9nivel": [0, 4, 8, 11], "total": [0, 3, 8, 9, 11], "distanc": [0, 4, 8, 9, 11], "unit": [0, 9, 13], "imp\u00e9rial": [0, 11], "Les": [0, 4, 8, 10, 11, 12, 13, 14, 17], "graphiqu": [0, 9, 11, 13], "altitud": [0, 9, 11], "commencent": 0, "z\u00e9ro": [0, 11], "fuseau": [0, 8, 11], "horair": [0, 8, 11], "them": [0, 9, 11], "sombr": [0, 11], "vrai": 0, "s\u00e9lection": [0, 11], "selon": [0, 11, 13], "navig": [0, 9, 11, 13], "gpx": [0, 3, 8, 9, 11, 12, 13, 15], "filtr": [0, 11], "calcul": [0, 9, 11], "vitess": [0, 4, 8, 9, 11, 13], "La": [0, 9, 11, 13, 14, 16], "semain": [0, 6, 11], "commenc": [0, 6, 9, 11, 13, 16], "lund": [0, 6, 11], "don": [0, 3, 8, 9, 11, 12, 14, 16], "match": 0, "sport": [0, 2, 6, 8, 9, 13], "color": [0, 5, 9], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "couleur": [0, 11], "hexad\u00e9cimal": 0, "ajout": [0, 7, 9, 10, 11, 12, 13, 15], "s\u00e9anc": [0, 2, 6, 9, 12, 14, 15, 17], "float": [0, 8], "seuil": [0, 11], "arr\u00eat": [0, 9, 11, 13], "gpxpy": [0, 9, 11, 13], "hexadecimal": 0, "exist": [0, 6, 7, 8, 9, 11, 12, 13], "delet": [0, 3, 7, 8, 9], "reset": [0, 9, 10], "r\u00e9initialis": [0, 7, 10, 11, 13], "204": [0, 3, 7, 8], "parametr": [0, 3, 5, 6, 7, 8, 9, 11, 14], "identifi": [0, 3, 5, 6, 8, 14], "no": [0, 3, 7, 8, 9], "supprim": [0, 3, 7, 8, 9, 10, 11], "mis": [0, 5, 7, 8, 9, 11, 14], "jour": [0, 1, 5, 7, 8, 9, 10, 11], "imag": [0, 7, 8, 9, 11, 13, 17], "multipart": [0, 3, 8], "form": [0, 3, 8], "fil": [0, 8, 9, 13], "fichi": [0, 1, 8, 9, 10, 11, 12, 13, 15, 17], "extens": [0, 8, 13], "autoris": [0, 1, 3, 8, 13, 14], "jpg": 0, "png": [0, 8, 13], "gif": 0, "part": [0, 8, 9, 11, 12, 14, 15], "selected": [0, 8], "413": [0, 8], "entity": [0, 8], "too": [0, 8], "larg": [0, 8, 13], "during": [0, 8], "updat": [0, 8, 9, 13], "siz": [0, 8, 9, 13], "exceed": [0, 8, 9], "0mb": [0, 8], "trait": [0, 10], "demand": [0, 9, 10, 11, 13], "processed": 0, "patch": [0, 1, 5, 7, 8], "suiv": [0, 4, 10, 11, 13, 14, 15, 16], "modif": [0, 11, 12], "chang": [0, 9, 11, 13], "actuel": 0, "autr": [0, 7, 11, 13], "new_password": 0, "nouveau": [0, 10, 11, 13, 14], "missing": [0, 9], "current": [0, 7, 9], "uniqu": [0, 3, 9, 10, 13, 14], "new": [0, 7, 9, 11], "logout": [0, 9], "d\u00e9connexion": 0, "out": 0, "access": [0, 9], "revoked": 0, "malformed": 0, "for": [0, 1, 8, 9, 13], "other": [0, 7], "reason": 0, "blacklist": 0, "export": [0, 9, 10, 11, 12, 13], "archiv": [0, 1, 9, 10, 11, 13], "Il": [0, 9, 11, 12, 13, 14], "cr\u00e9ation": [0, 9, 11], "in_progress": 0, "errored": 0, "taill": [0, 1, 11, 13], "octet": 0, "lorsqu": [0, 9, 10, 13], "r\u00e9uss": 0, "wed": 0, "mar": [0, 9, 13], "2023": [0, 13], "31": [0, 8, 13], "17": [0, 8, 11], "file_nam": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "zip": [0, 1, 8, 9, 11], "file_siz": 0, "924": 0, "aucun": [0, 8, 11, 12, 13], "ongoing": 0, "completed": 0, "t\u00e9l\u00e9charg": [0, 8, 10, 11, 13, 17], "download": [0, 8, 9, 13], "archive_rgjsr3fhr5yp": 0, "x": [0, 8, 9, 13, 14], "gzip": 0, "config": [1, 9, 13], "about": [1, 9, 13], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_enabled": 1, "is_registration_enabled": 1, "max_single_file_siz": 1, "1048576": 1, "max_user": 1, "max_zip_file_siz": 1, "10485760": 1, "map_attribu": [1, 13], "copy": [1, 13], "href": [1, 13], "www": [1, 13], "openstreetmap": [1, 9, 13], "org": [1, 13], "copyright": [1, 13], "contributor": [1, 13], "privacy_policy": 1, "privacy_policy_dat": 1, "version": [1, 10, 11, 13, 14], "7": [1, 8, 10, 11, 13, 14], "29": [1, 13], "weather_provid": 1, "getting": 1, "mettr": [1, 7, 8, 9, 10, 11, 13], "avoir": [1, 5, 13], "droit": [1, 5, 7, 9, 10, 11, 13, 14], "administr": [1, 5, 7, 10, 13, 14, 17], "instanc": [1, 9, 11, 13], "integ": [1, 3, 5, 6, 7, 8], "nombr": [1, 7, 8, 10, 11, 13], "maximum": [1, 11], "maximal": [1, 4, 8, 9, 10, 11], "inscrir": [1, 9, 11, 13], "hav": [1, 5, 6, 7, 8, 9], "perm": [1, 5, 6, 7, 8], "when": [1, 9], "updating": 1, "ping": 1, "contr\u00f4l": 1, "pong": 1, "authentif": [2, 13, 14], "compt": [2, 7, 8, 9, 10, 13, 15], "configur": [2, 9, 11, 13, 14, 16], "oauth2": [2, 14], "statist": 2, "app": [3, 9, 13, 14], "client": [3, 9, 11, 13, 14], "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 10, 11, 13], "pag": [3, 7, 8, 9], "Ce": 3, "accessibl": [3, 13, 14], "fittracke": [3, 10, 11, 13, 14, 15, 17], "san": [3, 6, 7, 8, 9, 11, 12, 13], "client_descript": 3, "client_id": [3, 14], "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "july": 3, "2022": 3, "06": [3, 6], "53": [3, 9], "nam": [3, 9], "import": [3, 9, 11, 13, 15], "redirect_ur": 3, "callback": [3, 14], "workout": [3, 4, 5, 6, 8, 9, 14], "websit": 3, "has_next": 3, "has_prev": 3, "client_secret": 3, "secret": [3, 13, 14], "created": [3, 8], "client_nam": 3, "client_ur": 3, "array": 3, "list": [3, 9, 10, 12, 13], "redirect": [3, 9, 14], "cha\u00een": [3, 14], "descript": [3, 10, 13], "optionnel": [3, 13], "client_client_id": 3, "trouv": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "enti": 3, "an": [3, 9], "revok": 3, "r\u00e9voqu": 3, "tous": [3, 4, 5, 6, 7, 9, 11, 13], "associ": [3, 10, 11, 14], "cas": [3, 11, 13], "redirig": [3, 14], "ver": [3, 9, 13, 14], "\u00e9mettr": 3, "response_typ": [3, 14], "support": [3, 9, 13, 14, 16], "\u00eatre": [3, 8, 9, 10, 11, 12, 13, 14, 16], "stat": [3, 6, 9, 14], "\u00e9vit": [3, 9], "falsif": [3, 14], "entre": [3, 8, 11, 14], "sit": [3, 14], "cross": [3, 14], "forgery": [3, 14], "csrf": [3, 14], "obligatoir": [3, 8, 9, 10, 13, 14], "recommand": [3, 13, 14], "code_challeng": [3, 14], "g\u00e9ner": [3, 10, 11, 13, 14], "v\u00e9rif": [3, 9, 14, 16], "pkce": [3, 14], "code_challenge_method": [3, 14], "m\u00e9thod": [3, 13, 14], "challeng": [3, 14], "s256": [3, 14], "librair": [3, 13], "authlib": [3, 13, 14], "d\u00e9livr": 3, "rafra\u00eech": 3, "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "authorization_cod": [3, 14], "\u00e9miss": 3, "code_verifi": 3, "moyen": [4, 8, 9, 11, 13], "plus": [4, 9, 10, 11, 12, 13, 16], "\u00e9lev": [4, 11, 13], "dur": [4, 6, 8, 9, 11], "longu": [4, 9, 11], "retourn": 4, "is_active_for_us": 5, "label": [5, 9], "cycling": [5, 9], "transport": [5, 9, 11], "hiking": 5, "mountain": 5, "biking": [5, 8], "running": 5, "walking": 5, "has_workout": 5, "user_nam": [6, 7], "by_tim": 6, "entra\u00een": [6, 8, 11], "from": [6, 8, 9, 13], "2018": [6, 8], "tim": [6, 8], "week": [6, 9], "statistic": [6, 9], "2017": [6, 8], "average_speed": 6, "48": 6, "203": 6, "156": [6, 9], "15": [6, 8, 10, 11, 13], "282": [6, 9], "12341": 6, "16": [6, 8, 11], "99": [6, 9], "150": 6, "178": [6, 9], "47": [6, 8, 9], "9960": 6, "95": [6, 9], "46": [6, 9], "78": 6, "613": 6, "1267": 6, "d\u00e9but": [6, 8], "fin": [6, 8, 9, 13], "p\u00e9riod": [6, 11, 13], "temp": 6, "dimanch": [6, 11], "month": [6, 9], "mois": [6, 9, 11], "year": 6, "ann\u00e9": [6, 11], "default": [6, 8, 9, 13], "by_sport": 6, "all": [6, 13], "tout": [6, 13], "uploads_dir_siz": 6, "1000": 6, "statut": [7, 10], "Ne": 7, "quelqu": [7, 8, 9, 11, 14], "order_by": [7, 8], "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": [7, 11], "03": [7, 8], "per_pag": [7, 8], "max": [7, 8, 9, 10], "q": 7, "order": [7, 8, 9], "ordre": [7, 8], "tri": [7, 8, 11], "asc": [7, 8], "desc": [7, 8], "criter": 7, "peut": [7, 9, 10, 11, 13, 14], "jpeg": 7, "activat": [7, 10], "new_email": 7, "reset_password": 7, "different": [7, 9], "than": [7, 9], "Un": [7, 9, 11, 13], "propr": [7, 11, 12], "sauf": [7, 13], "sien": 7, "john_do": 7, "can": [7, 9, 13, 16], "your": 7, "has": [7, 9], "right": [7, 9], "02": 8, "moin": 8, "ascent": [8, 9], "ave_speed": 8, "bound": 8, "creation_dat": 8, "51": 8, "descent": [8, 9], "durat": [8, 9], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 9, 11, 12], "max_alt": 8, "max_speed": 8, "min_alt": 8, "modification_dat": 8, "moving": [8, 9], "next_workout": 8, "paus": [8, 9], "previous_workout": 8, "Mon": 8, "jan": 8, "segment": [8, 9, 11], "titl": [8, 9], "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 9, 11], "titr": [8, 11], "tient": 8, "majuscul": 8, "minuscul": 8, "distance_from": 8, "minimal": [8, 9, 11, 14], "distance_to": 8, "duration_from": 8, "h": [8, 11], "M": 8, "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "sorting": 8, "criteri": 8, "workout_short_id": 8, "57": [8, 9], "45": 8, "22": 8, "without": [8, 9], "sunday": 8, "morning": 8, "court": 8, "cart": [8, 9, 11, 12, 13, 17], "leaflet": [8, 13], "this": [8, 10, 13], "chart_dat": 8, "r\u00e9cuper": [8, 13, 14], "chart": [8, 9, 13], "js": [8, 13], "elev": [8, 9], "279": [8, 9], "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "speed": [8, 9], "63": 8, "fri": 8, "44": [8, 9], "7380": 8, "280": [8, 9], "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 13], "tuil": [8, 9, 11], "serveur": [8, 9, 11, 12, 16], "4109": 8, "2930": 8, "sous": [8, 13], "domain": [8, 13], "zoom": 8, "index": 8, "axe": [8, 11], "xml": 8, "201": [8, 9], "guillemet": 8, "doubl": 8, "doivent": [8, 13, 14], "\u00e9chapp": [8, 9], "no_gpx": 8, "uuid": [8, 9], "n\u00e9gat": [8, 11], "posit": [8, 9, 11], "km": [8, 11], "second": 8, "8aa4cff": 9, "load": [9, 16], "dark": 9, "478": 9, "mak": [9, 13], "clickabl": 9, "dashboard": 9, "pr": 9, "479": 9, "minor": 9, "fix": [9, 13], "ui": 9, "476": 9, "translat": 9, "polish": 9, "477": 9, "dutch": 9, "avanc": [9, 11], "n\u00e9erland": [9, 11], "galicien": 9, "allemand": [9, 11], "italien": [9, 11], "84": 9, "norv\u00e9gien": [9, 11], "bokm\u00e5l": [9, 11], "60": 9, "polon": [9, 11], "espagnol": [9, 11], "475": 9, "build": [9, 13], "use": 9, "poetry": [9, 13], "cor": 9, "instead": 9, "of": [9, 13, 14], "merc": 9, "contributeur": [9, 15], "traxy": 9, "mariuz": 9, "koen": 9, "474": 9, "improv": 9, "link": 9, "display": 9, "6e215a": 9, "background": 9, "modal": 9, "displayed": 9, "473": 9, "galician": [9, 11], "spanish": 9, "german": 9, "98": 9, "gallegonovato": 9, "qwerty287": 9, "xmgz": 9, "113": 9, "add": 9, "mod": 9, "464": 9, "471": 9, "trekking": [9, 11], "469": 9, "472": 9, "resetting": 9, "468": 9, "456": 9, "drop": 9, "postgresql": [9, 13, 16], "85": 9, "61": 9, "davidhenrythoreau": 9, "Cette": [9, 12, 13], "contient": [9, 11, 13], "migrat": [9, 10, 13], "bas": [9, 11, 13, 16], "voir": [9, 11, 13, 14, 16], "224": 9, "result": 9, "incorrect": 9, "444": 9, "norwegian": 9, "d\u00e9pend": 9, "449": 9, "vu": [9, 13], "tooling": 9, "library": 9, "450": 9, "comradekingu": 9, "441": 9, "after": [9, 13], "upgrad": [9, 13], "433": 9, "handl": 9, "encoded": 9, "427": 9, "typos": 9, "refacto": 9, "431": 9, "428": 9, "ci": 9, "2bcff2e": 9, "flask": [9, 13], "436": 9, "python": [9, 13, 14], "438": 9, "workflow": 9, "421": 9, "remov": 9, "darksky": [9, 13], "avail": 9, "weath": 9, "provider": 9, "env": [9, 13], "426": 9, "til": [9, 13], "thank": 9, "astridx": 9, "422": 9, "e2e": 9, "test": [9, 13], "with": [9, 13], "packaged": 9, "411": 9, "various": 9, "416": 9, "closing": 9, "410": 9, "415": 9, "417": 9, "418": 9, "bjornclauw": 9, "mariusz": 9, "407": 9, "are": 9, "zero": 9, "409": 9, "action": 9, "open": [9, 11, 12], "wat": 9, "swimming": 9, "398": 9, "dropdown": 9, "402": 9, "399": 9, "406": 9, "56": 9, "380": 9, "390": 9, "391": 9, "paragliding": 9, "384": 9, "inconsistent": 9, "between": 9, "gp": [9, 11], "393": 9, "pil": 9, "modul": [9, 13], "attribut": 9, "antiali": 9, "394": 9, "397": 9, "386": 9, "contributing": 9, "md": 9, "388": 9, "typo": 9, "395": 9, "cc3fe1c": 9, "42": 9, "dkm": 9, "partiel": 9, "quant": 9, "encor": [9, 12], "weblat": [9, 11], "mainten": [9, 13], "351": 9, "370": 9, "371": 9, "375": 9, "french": [9, 11], "thovi98": 9, "376": 9, "1375986": 9, "furo": 9, "377": 9, "init": [9, 13], "354": 9, "374": 9, "dock": 9, "install": [9, 12], "virtualenv": [9, 13], "87": 9, "36": 9, "366": 9, "369": 9, "hosted": 9, "367": 9, "358": 9, "filtering": 9, "359": 9, "foot": 9, "overlap": 9, "350": 9, "352": 9, "356": 9, "357": 9, "365": 9, "gnu": 9, "ewm": 9, "jat255": 9, "parm": 9, "dessous": 9, "servic": [9, 13], "319": 9, "cli": [9, 10, 11, 13], "creat": [9, 13], "329": 9, "start": 9, "axis": 9, "at": [9, 13], "sticky": 9, "333": 9, "featur": 9, "filt": 9, "by": [9, 13], "338": 9, "relev": 9, "328": 9, "track": 9, "imperial": 9, "b29ed7": 9, "250": 9, "320": 9, "323": 9, "06ba975": 9, "bcc568e": 9, "ea0ac99": 9, "a458f5f": 9, "075aeb9": 9, "60e164d": 9, "italian": 9, "318": 9, "J": 9, "lavoi": 9, "mondstern": 9, "314": 9, "deleted": 9, "process": [9, 13], "fail": 9, "315": 9, "permet": [9, 10, 11, 12, 14], "Une": [9, 10, 11, 13, 16], "personnalis": [9, 11], "d\u00e9fin": [9, 11, 14, 16], "afin": [9, 14], "puissent": [9, 11], "prendr": [9, 11], "connaiss": [9, 11], "conten": [9, 11, 13], "t\u00e9l\u00e9vers": [9, 11], "enfin": 9, "compl\u00e9mentair": 9, "pouv": 9, "util": [9, 11], "propos": [9, 11], "301": [9, 13], "304": 9, "305": 9, "additional": 9, "307": 9, "quand": 9, "d\u00e9marr": [9, 13, 17], "297": 9, "308": 9, "310": 9, "290": 9, "294": 9, "postgresql10": 9, "265": 9, "implementing": 9, "altern": 9, "visualcrossing": 9, "environment": [9, 13, 16], "variabl": [9, 16], "set": [9, 10, 13], "weather_api_provid": [9, 13], "see": [9, 13], "287": 9, "289": 9, "dperruso": 9, "92": 9, "parameter": 9, "c88a515": 9, "f96dcef": 9, "mountaineering": 9, "278": 9, "270": 9, "nederland": 9, "258": 9, "pars": 9, "271": 9, "creation": 9, "273": 9, "274": 9, "paralleliz": 9, "275": 9, "disabl": 9, "work": [9, 13, 16], "entry": 9, "commend": 9, "lign": [9, 11, 12, 13], "command": [9, 11, 12, 13], "dramatiq": [9, 10, 13], "3c8d9c2": 9, "trailing": 9, "comm": [9, 11, 13], "d\u00e9velopp": [9, 10, 12], "264": 9, "whit": 9, "gray": 9, "266": 9, "260": 9, "checked": 9, "261": 9, "should": 9, "return": [9, 13], "numb": [9, 13], "lim": [9, 13], "n\u00e9cessit": [9, 13, 14], "89": 9, "b1536fc": 9, "257": 9, "body": [9, 13], "nginx": [9, 11, 13, 14, 16], "112": 9, "allow": [9, 13], "244": 9, "virtual": 9, "rid": 9, "246": 9, "247": 9, "microsecond": 9, "252": 9, "242": 9, "241": 9, "strength": 9, "estim": 9, "packag": 9, "239": 9, "cb9d02f": 9, "english": 9, "88": 9, "231": 9, "invalidat": 9, "236": 9, "rat": [9, 13], "limit": [9, 11], "232": 9, "hidden": 9, "237": 9, "212": 9, "230": 9, "databas": [9, 10, 13], "problem": [9, 13], "225": 9, "grammar": 9, "issu": [9, 11], "skylan0916": 9, "derni": [9, 13], "ex\u00e9cut": 9, "inf\u00e9rieur": 9, "diff\u00e9rent": 9, "ex\u00e9cu": [9, 10], "213": 9, "using": 9, "measur": 9, "ft": 9, "mi": 9, "223": 9, "icon": 9, "167": 9, "added": 9, "162": 9, "fmstrat": 9, "210": 9, "could": 9, "requiring": 9, "subdomain": 9, "staticmap_subdomain": [9, 13], "209": 9, "containing": 9, "multipl": 9, "gorgoback": 9, "Et": 9, "detect": 9, "brows": 9, "matching": 9, "if": [9, 13], "208": 9, "card": 9, "html": 9, "changing": 9, "197": 9, "196": 9, "manag": [9, 10], "tool": 9, "190": 9, "193": 9, "deleting": 9, "192": 9, "191": 9, "layout": 9, "nomenclatur": 9, "inclus": 9, "195": 9, "cec": 9, "affect": [9, 11], "pr\u00e9c\u00e9dent": 9, "cc4287e": 9, "offset": 9, "Pas": 9, "refactoris": 9, "avant": [9, 13], "possibl": [9, 11, 12, 13], "fournisseur": [9, 13], "smtp": [9, 13, 16], "cel": [9, 11, 13], "r\u00e9duit": 9, "pr\u00e9requ": 9, "mono": [9, 11], "Pour": [9, 11, 13, 14], "ger": [9, 10, 11, 13, 16], "180": 9, "cannot": 9, "send": 9, "tl": [9, 13], "177": 9, "manqu": 9, "petit": 9, "\u00e9cran": 9, "175": 9, "refreshed": 9, "173": 9, "171": 9, "correctly": 9, "apport": 9, "niveau": 9, "155": 9, "106": 9, "169": 9, "161": 9, "farthest": 9, "160": 9, "plusieur": [9, 11, 12, 13], "danielsiersleben": 9, "rapport": 9, "initialis": [9, 13], "149": 9, "152": 9, "autoespcap": 9, "model": 9, "jinj": 9, "151": 9, "security": 9, "nettoi": 9, "entr\u00e9": [9, 13, 14], "alphanumer": 9, "alert": 9, "worker": [9, 10, 13], "lanc": [9, 13], "script": 9, "product": 9, "dotenv": 9, "146": 9, "filter": 9, "145": 9, "140": 9, "fullscreen": 9, "control": [9, 13], "138": 9, "initial": 9, "135": 9, "finish": 9, "marker": 9, "134": 9, "wind": 9, "direct": [9, 11, 13], "877fa0f": 9, "changed": 9, "calendar": 9, "small": 9, "resolu": 9, "131": 9, "129": 9, "editing": 9, "127": [9, 13], "validat": 9, "legitimat": 9, "uri": 9, "such": 9, "localhost": [9, 13], "123": 9, "121": 9, "activity": 9, "snowsho": 9, "contain": [9, 13], "116": 9, "bet": 9, "button": 9, "graph": 9, "screen": 9, "115": 9, "option": [9, 10, 13], "averag": 9, "91": 9, "min": 9, "90": 9, "som": 9, "seem": 9, "104": 9, "switch": 9, "agplv3": 9, "licens": [9, 12, 13], "101": 9, "full": 9, "development": 9, "109": 9, "stopped": 9, "threshold": 9, "slow": 9, "mov": 9, "93": 9, "paf38": 9, "83": 9, "configured": 9, "generat": 9, "static": 9, "keep": 9, "default_staticmap": [9, 13], "81": 9, "remaining": 9, "textar": 9, "82": 9, "modify": 9, "his": 9, "birth": 9, "day": [9, 10, 13], "80": [9, 13], "sav": 9, "79": 9, "rebuild": 9, "75": 9, "javascript": [9, 13], "Du": 9, "fait": [9, 13], "sqlalchemy": [9, 13, 16], "postgr": [9, 16], "72": 9, "exceeding": 9, "71": 9, "great": 9, "70": 9, "less": 9, "uploaded": [9, 13], "66": 9, "used": 9, "importing": 9, "64": 9, "per": [9, 13], "shown": 9, "62": 9, "sending": 9, "\u00e9valu": [9, 13], "standardiz": 9, "term": 9, "upload": [9, 13, 15], "directory": [9, 13], "endpoint": 9, "also": 9, "59": 9, "uploading": 9, "activit": 9, "introduit": 9, "majeur": 9, "facilit": 9, "dor\u00e9nav": 9, "attent": [9, 13, 16], "lir": 9, "certain": [9, 10, 12, 13], "environ": [9, 10, 16], "renomm": 9, "celui": [9, 13], "remplac": [9, 11, 13], "thunderforest": [9, 13], "outdoor": [9, 13], "54": 9, "simplify": 9, "d\u00e9plac": 9, "red": [9, 10, 13], "complet": 9, "co": 9, "4c3fc34": 9, "empty": 9, "34614d5": 9, "spinn": 9, "loading": 9, "b862a77": 9, "2e1ee2c": 9, "interceptor": 9, "rout": [9, 13], "definit": 9, "down": 9, "mor": 9, "weekend": 9, "40": 9, "localiz": 9, "i18n": 9, "41": 9, "show": [9, 10, 13], "mous": 9, "over": 9, "docu": 9, "choos": 9, "first": 9, "33": 9, "37": 9, "34": 9, "anymor": 9, "pipenv": 9, "gestion": [9, 13], "paquet": [9, 13], "detailed": 9, "tooltip": 9, "standard": [9, 13], "v\u00e9lo": [9, 11], "randon": [9, 11], "vtt": [9, 11], "cours": [9, 11], "pied": [9, 11], "march": [9, 11], "\u00e9gal": [9, 10, 11, 12, 13], "enter": 9, "heur": [9, 11, 13], "suppress": [9, 11], "m\u00e9t\u00e9o": [9, 11], "cl\u00e9": [9, 11, 13], "calendri": [9, 11], "mensuel": [9, 11], "cour": [9, 10, 12, 13], "grand": [9, 11], "recherch": 9, "propri\u00e9tair": [9, 11], "moment": [9, 11], "search": 9, "view": [9, 13], "usag": [10, 13], "arg": [10, 13], "lin": [10, 13], "help": [10, 13], "exit": [10, 13], "d\u00e9sorm": 10, "obsolet": 10, "prochain": [10, 11], "fittrackee_set_admin": 10, "fittrackee_upgrade_db": 10, "fittrackee_work": 10, "vid": [10, 13], "expir": 10, "depuis": [10, 13], "noir": 10, "d\u00e9j\u00e0": 10, "argument": 10, "al\u00e9atoir": [10, 13], "incomplet": 10, "fitracke": 11, "stock": [11, 12, 14], "sportiv": [11, 12], "plein": [11, 12], "air": [11, 12], "plut\u00f4t": 11, "m\u00eam": [11, 13], "r\u00e9pertoir": [11, 13], "chiffr": [11, 13], "Avec": 11, "street": [11, 12], "statiqu": [11, 13], "trac": [11, 13], "virtuel": [11, 13], "electr": 11, "alpin": 11, "nag": 11, "eau": 11, "libr": 11, "parapent": 11, "19": 11, "aviron": 11, "ski": 11, "raquet": 11, "trail": 11, "lieu": 11, "Elle": 11, "except": [11, 16], "analys": [11, 13], "mani": [11, 13], "sp\u00e9cif": 11, "jusqu": 11, "system": [11, 13], "m\u00e9triqu": 11, "differ": 11, "origin": 11, "particuli": 11, "entrer": 11, "relat": 11, "Des": 11, "bouton": 11, "permettent": 11, "visualis": 11, "visual": [11, 13], "crossing": [11, 13], "sourc": 11, "vent": 11, "flech": 11, "indiqu": 11, "infobull": 11, "proven": 11, "masqu": 11, "cf": [11, 12, 13], "comport": 11, "d\u00e9roul": 11, "instant": 11, "r\u00e9cent": 11, "consult": 11, "menu": 11, "nouveaut": 11, "dont": [11, 14], "o\u00f9": [11, 13], "premi": 11, "clair": 11, "chois": [11, 13], "affichag": 11, "cach": 11, "d\u00e9part": 11, "exclur": 11, "extr\u00eam": 11, "exclu": 11, "mati": 11, "appara\u00eetr": 11, "toujour": 11, "tierc": [11, 14], "S": 11, "unitair": 11, "n\u00e9cessair": [11, 13], "volumin": [11, 16], "avert": 11, "suppl\u00e9mentair": 11, "syntax": 11, "markdown": 11, "adapt": [11, 13], "discours": 11, "traduit": 11, "bloqu": 11, "verrouill": 11, "vi": 11, "etat": 11, "publi": [11, 13], "suivr": 12, "conserv": [12, 13], "votr": [12, 13], "mobil": 12, "android": 12, "exhaust": 12, "runn": 12, "up": 12, "gpl": 12, "v3": 12, "opentrack": 12, "apach": 12, "fitotrack": 12, "aid": 12, "fonctionnal": [12, 13], "instabl": [12, 13], "ticket": 12, "outil": [12, 13], "tier": 12, "document": [12, 13, 14, 16], "d\u00e9pannag": 12, "histor": [12, 13], "typescript": 13, "staticmap": 13, "t\u00e2ch": 13, "vue3": 13, "vuex": 13, "logo": 13, "ic\u00f4n": 13, "freepik": 13, "flaticon": 13, "fork": 13, "awesom": 13, "nod": 13, "yarn": 13, "compos": 13, "\u00e9tap": 13, "d\u00e9crivent": 13, "linux": 13, "debian": 13, "arch": 13, "Sur": 13, "exploit": 13, "rencontr": 13, "makefil": 13, "custom": 13, "Elles": 13, "flask_app": 13, "d\u00e9marrag": 13, "pwd": 13, "__main__": 13, "py": 13, "sinon": 13, "host": 13, "h\u00f4t": 13, "port": 13, "5000": 13, "app_setting": 13, "productionconfig": 13, "app_secret_key": 13, "fort": 13, "jwt": 13, "app_worker": 13, "_workers_": 13, "gunicorn": [13, 16], "app_log": 13, "chemin": [13, 16], "upload_fold": [13, 16], "absolu": [13, 16], "application_directory": 13, "database_url": [13, 16], "5432": 13, "database_disable_pooling": 13, "pooling": 13, "ui_url": 13, "lien": 13, "email_url": [13, 16], "chain": 13, "sender_email": 13, "exp\u00e9diteur": 13, "redis_url": 13, "workers_process": 13, "processus": 13, "api_rate_limit": 13, "300": 13, "minut": 13, "tile_server_url": 13, "gard": 13, "23": 13, "n\u00e9cessitent": [13, 14], "df": 13, "Par": [13, 14], "b": 13, "osm": 13, "franc": 13, "attribu": 13, "target": 13, "_blank": 13, "rel": 13, "noopen": 13, "noreferr": 13, "komoot": 13, "insensibl": 13, "cass": 13, "weather_api_key": 13, "weather_ap": 13, "vite_app_api_url": 13, "26": 13, "vue_app_api_url": 13, "25": 13, "ssl": 13, "465": 13, "starttl": 13, "587": 13, "office365": 13, "fonction": [13, 14], "identif": 13, "omis": 13, "ancien": 13, "notif": 13, "pr\u00eat": 13, "laiss": 13, "24": 13, "encod": 13, "sp\u00e9cial": 13, "passwordwith": 13, "40and": 13, "26and": 13, "3f": 13, "apikey": 13, "xxxx": 13, "v\u00e9rifi": [13, 16], "condit": 13, "attendu": 13, "osmfr": 13, "fond": 13, "mention": 13, "legal": 13, "nofollow": 13, "nbsp": 13, "creativecommon": 13, "licenc": 13, "cc": 13, "SA": 13, "ip": 13, "strateg": 13, "pourr": 13, "soum": 13, "asset": 13, "notat": 13, "s\u00e9par": [13, 14], "virgul": 13, "hour": 13, "diagnostic": 13, "utility": 13, "clear": 13, "specific": 13, "key": 13, "enumerat": 13, "detail": 13, "interrompu": 13, "remarqu": 13, "pip": 13, "schem": [13, 14], "owner": 13, "privileg": 13, "copi": 13, "coll": 13, "nano": 13, "ftcli": 13, "db": 13, "systemd": 13, "ouvr": 13, "alor": 13, "projet": 13, "project": 13, "clon": 13, "d\u00e9p\u00f4t": 13, "git": 13, "github": 13, "samr1": 13, "cd": 13, "dev": 13, "run": 13, "3000": 13, "last": 13, "releas": 13, "now": 13, "v0": 13, "wget": 13, "tar": 13, "gz": 13, "xzf": 13, "mv": 13, "sql": 13, "proced": 13, "fair": 13, "sauvegard": 13, "ensembl": 13, "pg_dump": 13, "suivent": 13, "s\u00e9mant": 13, "r\u00e9tro": 13, "compatibl": 13, "stopp": 13, "u": 13, "journal": [13, 16], "red\u00e9marr": 13, "pull": 13, "lequel": 13, "\u00e9cras": 13, "cp": 13, "r": 13, "proxy": [13, 14], "network": 13, "startlimitintervalsec": 13, "simpl": 13, "restart": 13, "alway": 13, "restartsec": 13, "standardoutput": 13, "syslog": 13, "standarderror": 13, "syslogidentifi": 13, "workingdirectory": 13, "hom": 13, "execstart": 13, "venv": 13, "bin": 13, "create_app": 13, "logfil": 13, "wantedby": 13, "mult": 13, "timeout": [13, 16], "fittrackee_worker": 13, "task": 13, "queu": 13, "listen": 13, "443": 13, "http2": 13, "server_nam": 13, "ssl_certificat": 13, "fullchain": 13, "pem": 13, "ssl_certificate_key": 13, "privkey": 13, "paramet": 13, "how": 13, "1mb": 13, "setting": 13, "ll": 13, "need": 13, "uncommenting": 13, "below": 13, "want": 13, "prevent": 13, "checking": 13, "client_max_body_siz": [13, 16], "1m": 13, "proxy_pass": 13, "proxy_redirect": 13, "proxy_set_head": [13, 14], "real": 13, "remote_addr": 13, "forwarded": [13, 14], "proxy_add_x_forwarded_for": 13, "proto": [13, 14], "request_ur": 13, "besoin": 13, "8025": 13, "acced": [13, 14], "mailhog": 13, "stop": 13, "shel": 13, "additionnel": 13, "fittrackee_client": 13, "lint": 13, "check": 13, "fittrackee_ynh": 13, "rest": 14, "plupart": 14, "permettr": 14, "interag": 14, "onglet": 14, "\u00e9chang": 14, "contr": 14, "corp": 14, "assur": 14, "meilleur": 14, "s\u00e9cur": 14, "\u00e9critur": 14, "accord": 14, "lectur": 14, "Ils": 14, "puiss": 14, "fittrackee_host": 14, "espac": 14, "facult": 14, "emp\u00each": 14, "3aread": 14, "3awrit": 14, "sort": 14, "ensuit": 14, "\u0153uvr": 14, "bibliothequ": 14, "derri": 14, "simplified": 14, "aaron": 14, "pareck": 14, "flow": 14, "oauthlib": 14, "session": 14, "gr\u00e2c": 15, "strav": 15, "fit": 15, "exc": 16, "nosuchmoduleerror": 16, "plugin": 16, "dialect": 16, "invalidemailurlschem": 16, "augment": 16, "del": 16, "critical": 16, "d\u00e9tail": 17, "\u00e9chec": 17}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 1, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 1, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 0, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 0, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 2, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 2, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 1, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 1, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 2, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 1, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 1, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 1, 1, "get--api-ping", "/api/ping"], [4, 1, 1, "get--api-records", "/api/records"], [5, 1, 1, "get--api-sports", "/api/sports"], [5, 1, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 1, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 1, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 1, 1, "get--api-stats-all", "/api/stats/all"], [7, 1, 1, "get--api-users", "/api/users"], [7, 2, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 1, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 2, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [13, 4, 1, "-", "API_RATE_LIMITS"], [13, 4, 1, "-", "APP_LOG"], [13, 4, 1, "-", "APP_SECRET_KEY"], [13, 4, 1, "-", "APP_SETTINGS"], [13, 4, 1, "-", "APP_WORKERS"], [13, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [13, 4, 1, "-", "DATABASE_URL"], [13, 4, 1, "-", "DEFAULT_STATICMAP"], [13, 4, 1, "-", "EMAIL_URL"], [13, 4, 1, "-", "FLASK_APP"], [13, 4, 1, "-", "HOST"], [13, 4, 1, "-", "MAP_ATTRIBUTION"], [13, 4, 1, "-", "PORT"], [13, 4, 1, "-", "REDIS_URL"], [13, 4, 1, "-", "SENDER_EMAIL"], [13, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [13, 4, 1, "-", "TILE_SERVER_URL"], [13, 4, 1, "-", "UI_URL"], [13, 4, 1, "-", "UPLOAD_FOLDER"], [13, 4, 1, "-", "VITE_APP_API_URL"], [13, 4, 1, "-", "WEATHER_API_KEY"], [13, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [13, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 1, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:get", "2": "http:delete", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "get", "HTTP get"], "2": ["http", "delete", "HTTP delete"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "variable d'environnement"]}, "titleterms": {"authentif": 0, "compt": [0, 11], "configur": 1, "document": [2, 9], "api": [2, 13], "point": 2, "acces": [2, 13], "oauth2": [3, 10], "record": 4, "sport": [5, 11], "statist": [6, 9, 11], "utilis": [7, 10, 11], "s\u00e9anc": [8, 11, 16], "histor": 9, "modif": 9, "version": 9, "0": [9, 14], "7": 9, "29": 9, "04": 9, "01": 9, "2024": 9, "fonctionnal": [9, 11], "am\u00e9lior": 9, "bug": 9, "corrig": 9, "traduct": [9, 11], "diver": 9, "28": 9, "23": 9, "12": 9, "2023": 9, "27": 9, "20": 9, "26": 9, "19": 9, "11": 9, "25": 9, "08": 9, "10": 9, "24": 9, "14": 9, "09": 9, "22": 9, "21": 9, "30": 9, "07": 9, "15": 9, "18": 9, "06": 9, "17": 9, "03": 9, "16": 9, "05": 9, "13": 9, "02": 9, "31": 9, "2022": 9, "9": 9, "8": 9, "6": 9, "5": 9, "4": 9, "3": 9, "2": [9, 14], "1": 9, "ticket": 9, "ferm": 9, "pull": 9, "request": 9, "s\u00e9cur": 9, "nouvel": 9, "2021": 9, "2020": 9, "fittracke": [9, 12, 16], "pyp": [9, 13], "administr": [9, 11, 16], "correct": 9, "mineur": 9, "disponibl": 9, "franc": 9, "2019": 9, "premi": 9, "2018": 9, "interfac": 10, "lign": 10, "command": 10, "bas": 10, "don": [10, 13], "ftcli": 10, "db": 10, "drop": 10, "upgrad": 10, "clean": 10, "user": 10, "clean_arch": 10, "clean_token": 10, "creat": 10, "export_arch": 10, "updat": 10, "pr\u00e9f\u00e9rent": 11, "appliqu": 11, "captur": 11, "\u00e9cran": 11, "tableau": 11, "bord": 11, "pag": 11, "d\u00e9tail": [11, 16], "list": 11, "tabl": 12, "mati": 12, "install": 13, "pr\u00e9requ": 13, "variabl": 13, "environ": 13, "courriel": 13, "serveur": 13, "tuil": 13, "limit": 13, "m\u00e9t\u00e9o": 13, "a": 13, "part": 13, "sourc": 13, "d\u00e9velopp": 13, "product": 13, "mis": 13, "jour": 13, "d\u00e9ploi": 13, "dock": 13, "yunohost": 13, "oauth": 14, "scop": 14, "flux": 14, "ressourc": 14, "outil": 15, "tier": 15, "d\u00e9marr": 16, "Les": 16, "imag": 16, "cart": 16, "affich": 16, "dan": 16, "\u00e9chec": 16, "charg": 16, "t\u00e9l\u00e9charg": 16, "fichi": 16, "d\u00e9pannag": 17}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Authentification et compte": [[0, "authentication-and-account"]], "Configuration": [[1, "configuration"]], "Documentation de l\u2019API": [[2, "api-documentation"]], "Points d'acc\u00e8s :": [[2, null]], "OAuth2": [[3, "oauth2"], [10, "oauth2"]], "Records": [[4, "records"]], "Sports": [[5, "sports"], [11, "sports"]], "Statistiques": [[6, "statistics"], [11, "statistics"]], "Utilisateurs": [[7, "users"], [10, "users"], [11, "users"]], "S\u00e9ances": [[8, "workouts"], [11, "workouts"]], "Historique des modifications": [[9, "change-log"]], "Version 0.7.29 (04/01/2024)": [[9, "version-0-7-29-2024-01-06"]], "Fonctionnalit\u00e9s et am\u00e9liorations": [[9, "features-and-enhancements"], [9, "id1"], [9, "id4"], [9, "id21"], [9, "id24"], [9, "id32"], [9, "id35"], [9, "id41"], [9, "id46"], [9, "id48"], [9, "id50"], [9, "id53"], [9, "id64"], [9, "id70"]], "Bugs corrig\u00e9s": [[9, "bugs-fixed"], [9, "id2"], [9, "id5"], [9, "id8"], [9, "id11"], [9, "id12"], [9, "id15"], [9, "id17"], [9, "id19"], [9, "id22"], [9, "id25"], [9, "id33"], [9, "id36"], [9, "id39"], [9, "id42"], [9, "id54"], [9, "id59"], [9, "id61"], [9, "id65"], [9, "id68"], [9, "id71"], [9, "id73"], [9, "id76"], [9, "id79"], [9, "id81"], [9, "id84"], [9, "id87"], [9, "id90"], [9, "id95"], [9, "id97"], [9, "id99"], [9, "id101"], [9, "id104"], [9, "id106"], [9, "id112"], [9, "id115"], [9, "id117"], [9, "id119"], [9, "id126"], [9, "id131"], [9, "id133"], [9, "id135"], [9, "id138"], [9, "id140"], [9, "id142"], [9, "id146"], [9, "id156"], [9, "id159"], [9, "id161"], [9, "id164"], [9, "id171"]], "Traductions": [[9, "translations"], [9, "id3"], [9, "id6"], [9, "id9"], [9, "id13"], [9, "id18"], [9, "id23"], [9, "id26"], [9, "id28"], [9, "id31"], [9, "id34"], [9, "id37"], [9, "id40"], [9, "id43"], [9, "id44"], [9, "id47"], [9, "id49"], [9, "id51"], [9, "id52"], [9, "id55"], [9, "id57"], [9, "id60"], [9, "id62"], [9, "id66"], [9, "id67"], [9, "id69"], [9, "id72"], [9, "id85"], [11, "translations"]], "Divers": [[9, "misc"], [9, "id7"], [9, "id10"], [9, "id14"], [9, "id16"], [9, "id20"], [9, "id27"], [9, "id30"], [9, "id38"], [9, "id45"], [9, "id56"], [9, "id58"], [9, "id74"], [9, "id88"], [9, "id91"], [9, "id108"], [9, "id110"], [9, "id127"], [9, "id136"], [9, "id143"], [9, "id147"], [9, "id154"], [9, "id165"], [9, "id168"]], "Version 0.7.28 (23/12/2023)": [[9, "version-0-7-28-2023-12-23"]], "Version 0.7.27 (20/12/2023)": [[9, "version-0-7-27-2023-12-20"]], "Version 0.7.26 (19/11/2023)": [[9, "version-0-7-26-2023-11-19"]], "Version 0.7.25 (08/10/2023)": [[9, "version-0-7-25-2023-10-08"]], "Version 0.7.24 (04/10/2023)": [[9, "version-0-7-24-2023-10-04"]], "Version 0.7.23 (14/09/2023)": [[9, "version-0-7-23-2023-09-14"]], "Version 0.7.22 (23/08/2023)": [[9, "version-0-7-22-2023-08-23"]], "Version 0.7.21 (30/07/2023)": [[9, "version-0-7-21-2023-07-30"]], "Version 0.7.20 (22/07/2023)": [[9, "version-0-7-20-2023-07-22"]], "Version 0.7.19 (15/07/2023)": [[9, "version-0-7-19-2023-07-15"]], "Documentation": [[9, "documentation"], [9, "id29"], [9, "id63"]], "Version 0.7.18 (25/06/2023)": [[9, "version-0-7-18-2023-06-25"]], "Version 0.7.17 (03/06/2023)": [[9, "version-0-7-17-2023-06-03"]], "Version 0.7.16 (29/05/2023)": [[9, "version-0-7-16-2023-05-29"]], "Version 0.7.15 (12/04/2023)": [[9, "version-0-7-15-2023-04-12"]], "Version 0.7.14 (08/03/2023)": [[9, "version-0-7-14-2023-03-08"]], "Version 0.7.13 (05/03/2023)": [[9, "version-0-7-13-2023-03-05"]], "Version 0.7.12 (16/02/2023)": [[9, "version-0-7-12-2023-02-16"]], "Version 0.7.11 (31/12/2022)": [[9, "version-0-7-11-2022-12-31"]], "Version 0.7.10 (21/12/2022)": [[9, "version-0-7-10-2022-12-21"]], "Version 0.7.9 (11/12/2022)": [[9, "version-0-7-9-2022-12-11"]], "Version 0.7.8 (30/11/2022)": [[9, "version-0-7-8-2022-11-30"]], "Version 0.7.7 (27/11/2022)": [[9, "version-0-7-7-2022-11-27"]], "Version 0.7.6 (09/11/2022)": [[9, "version-0-7-6-2022-11-09"]], "Version 0.7.5 (09/11/2022)": [[9, "version-0-7-5-2022-11-09"]], "Version 0.7.4 (05/11/2022)": [[9, "version-0-7-4-2022-11-05"]], "Version 0.7.3 (01/11/2022)": [[9, "version-0-7-3-2022-11-01"]], "Version 0.7.2 (21/09/2022)": [[9, "version-0-7-2-2022-09-21"]], "Version 0.7.1 (21/09/2022)": [[9, "version-0-7-1-2022-09-21"]], "Version 0.7.0 (19/09/2022)": [[9, "version-0-7-0-2022-09-19"]], "Version 0.6.12 (14/09/2022)": [[9, "version-0-6-12-2022-09-14"]], "Tickets Ferm\u00e9s": [[9, "issues-closed"], [9, "id75"], [9, "id78"], [9, "id82"], [9, "id86"], [9, "id89"], [9, "id92"], [9, "id94"], [9, "id98"], [9, "id100"], [9, "id102"], [9, "id107"], [9, "id111"], [9, "id114"], [9, "id116"], [9, "id118"], [9, "id120"], [9, "id122"], [9, "id124"], [9, "id129"], [9, "id132"], [9, "id134"], [9, "id137"], [9, "id139"], [9, "id141"], [9, "id144"], [9, "id148"], [9, "id150"], [9, "id152"], [9, "id155"], [9, "id157"], [9, "id160"], [9, "id162"], [9, "id166"], [9, "id169"], [9, "id172"]], "Pull Requests": [[9, "pull-requests"], [9, "id77"], [9, "id80"], [9, "id96"], [9, "id105"], [9, "id109"], [9, "id113"], [9, "id128"]], "Version 0.6.11 (27/02/2022)": [[9, "version-0-6-11-2022-07-27"]], "Fonctionnalit\u00e9s": [[9, "features"], [9, "id83"], [9, "id93"], [9, "id103"], [11, "features"]], "Version 0.6.10 (13/07/2022)": [[9, "version-0-6-10-2022-07-13"]], "Version 0.6.9 (03/07/2022)": [[9, "version-0-6-9-2022-07-03"]], "Version 0.6.8 (22/06/2022)": [[9, "version-0-6-8-2022-06-22"]], "Version 0.6.7 (11/06/2022)": [[9, "version-0-6-7-2022-06-11"]], "Version 0.6.6 (29/05/2022)": [[9, "version-0-6-6-2022-05-29"]], "Version 0.6.5 (24/04/2022)": [[9, "version-0-6-5-2022-04-24"]], "Version 0.6.4 (23/04/2022)": [[9, "version-0-6-4-2022-04-23"]], "Version 0.6.3 (09/04/2022)": [[9, "version-0-6-3-2022-04-09"]], "Version 0.6.2 (03/04/2022)": [[9, "version-0-6-2-2022-04-03"]], "Version 0.6.1 (27/03/2022)": [[9, "version-0-6-1-2022-03-27"]], "Version 0.6.0 (27/03/2022)": [[9, "version-0-6-0-2022-03-27"]], "Version 0.5.7 (13/02/2022": [[9, "version-0-5-7-2022-02-13"]], "S\u00e9curit\u00e9": [[9, "security"]], "Version 0.5.6 (05/02/2022)": [[9, "version-0-5-6-2022-02-05"]], "Version 0.5.5 (19/01/2022)": [[9, "version-0-5-5-2022-01-19"]], "Nouvelles fonctionnalit\u00e9s": [[9, "new-features"], [9, "id121"], [9, "id123"], [9, "id125"], [9, "id130"], [9, "id145"], [9, "id149"], [9, "id151"], [9, "id153"], [9, "id158"], [9, "id163"], [9, "id167"], [9, "id170"], [9, "id173"]], "Version 0.5.4 (01/01/2022": [[9, "version-0-5-4-2022-01-01"]], "Version 0.5.3 (01/01/2022)": [[9, "version-0-5-3-2022-01-01"]], "Version 0.5.2 (19/12/2021)": [[9, "version-0-5-2-2021-12-19"]], "Version 0.5.1 (30/11/2021)": [[9, "version-0-5-1-2021-11-30"]], "Version 0.5.0 (14/11/2021)": [[9, "version-0-5-0-2021-11-14"]], "Version 0.4.9 (16/07/2021)": [[9, "version-0-4-9-2021-07-16"]], "Version 0.4.8 (03/07/2021)": [[9, "version-0-4-8-2021-07-03"]], "Version 0.4.7 (07/04/2021)": [[9, "version-0-4-7-2021-04-07"]], "Version 0.4.6 (21/02/2021)": [[9, "version-0-4-6-2021-02-21"]], "Version 0.4.5 (17/02/2021)": [[9, "version-0-4-5-2021-02-17"]], "Version 0.4.4 (31/01/2021)": [[9, "version-0-4-4-2021-01-31"]], "Version 0.4.3 (10/01/2021)": [[9, "version-0-4-3-2021-01-10"]], "Version 0.4.2 (03/01/2021)": [[9, "version-0-4-2-2021-01-03"]], "Version 0.4.1 (31/12/2020)": [[9, "version-0-4-1-2020-12-31"]], "Version 0.4.0 - FitTrackee sur PyPI (19/09/2020)": [[9, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.3.0 - Administration (15/07/2020)": [[9, "version-0-3-0-administration-2020-07-15"]], "Version 0.2.5 - Corrections et am\u00e9liorations (31/01/2020)": [[9, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.2.4 - Corrections mineures (30/01/2020)": [[9, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.3 - FitTrackee disponible en Fran\u00e7ais (29/12/2019)": [[9, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.2 - Corrections des statistiques (23/09/2019)": [[9, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.1 - Correction et am\u00e9liorations (01/09/2019)": [[9, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.0 - Statistiques (07/07/2019)": [[9, "version-0-2-0-statistics-2019-07-07"]], "Version 0.1.1 - Corrections et am\u00e9liorations (07/02/2019)": [[9, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.1.0 - Premi\u00e8re version \ud83c\udf89 (04/07/2018)": [[9, "version-0-1-0-first-release-2018-07-04"]], "Interface de ligne de commande": [[10, "command-line-interface"]], "Base de donn\u00e9es": [[10, "database"]], "ftcli db drop": [[10, "ftcli-db-drop"]], "ftcli db upgrade": [[10, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[10, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[10, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[10, "ftcli-users-clean-tokens"]], "ftcli users create": [[10, "ftcli-users-create"]], "ftcli users export_archives": [[10, "ftcli-users-export-archives"]], "ftcli users update": [[10, "ftcli-users-update"]], "Compte et pr\u00e9f\u00e9rences": [[11, "account-preferences"]], "Administration": [[11, "administration"], [11, "id1"]], "Application": [[11, "application"]], "Captures d\u2019\u00e9cran": [[11, "screenshots"]], "Tableau de bord": [[11, "dashboard"]], "Page de d\u00e9tail d\u2019une s\u00e9ance": [[11, "workout-detail"]], "Liste des s\u00e9ances": [[11, "workouts-list"]], "FitTrackee": [[12, "fittrackee"]], "Table des mati\u00e8res": [[12, "table-of-contents"]], "Installation": [[13, "installation"], [13, "id2"], [13, "id6"]], "Pr\u00e9requis": [[13, "prerequisites"]], "Variables d\u2019environnement": [[13, "environment-variables"]], "Courriels": [[13, "emails"]], "Serveur de tuiles": [[13, "map-tile-server"]], "Limitation d\u2019acc\u00e8s \u00e0 l\u2019API": [[13, "api-rate-limits"]], "Donn\u00e9es m\u00e9t\u00e9o": [[13, "weather-data"]], "A partir de PyPI": [[13, "from-pypi"], [13, "id3"]], "A partir des sources": [[13, "from-sources"], [13, "id4"]], "Environnements de d\u00e9veloppement": [[13, "dev-environment"], [13, "id5"]], "Environnements de production": [[13, "production-environment"]], "Mise \u00e0 jour": [[13, "upgrade"]], "Environnement de production": [[13, "prod-environment"]], "D\u00e9ploiement": [[13, "deployment"]], "Docker": [[13, "docker"]], "D\u00e9veloppement": [[13, "development"]], "Yunohost": [[13, "yunohost"]], "OAuth 2.0": [[14, "oauth-2-0"]], "Scopes": [[14, "scopes"]], "Flux": [[14, "flow"]], "Ressources": [[14, "resources"]], "Outils tiers": [[15, "third-party-tools"]], "Administrateur": [[16, "administrator"]], "FitTrackee ne d\u00e9marre pas": [[16, "fittrackee-fails-to-start"]], "Les images de la carte ne sont pas affich\u00e9es mais la carte est affich\u00e9e dans le d\u00e9tail de la s\u00e9ance": [[16, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "\u00c9chec du chargement ou du t\u00e9l\u00e9chargement de fichiers": [[16, "failed-to-upload-or-download-files"]], "D\u00e9pannage": [[17, "troubleshooting"]]}, "indexentries": {"api_rate_limits": [[13, "envvar-API_RATE_LIMITS"]], "app_log": [[13, "envvar-APP_LOG"]], "app_secret_key": [[13, "envvar-APP_SECRET_KEY"]], "app_settings": [[13, "envvar-APP_SETTINGS"]], "app_workers": [[13, "envvar-APP_WORKERS"]], "database_disable_pooling": [[13, "envvar-DATABASE_DISABLE_POOLING"]], "database_url": [[13, "envvar-DATABASE_URL"]], "default_staticmap": [[13, "envvar-DEFAULT_STATICMAP"]], "email_url": [[13, "envvar-EMAIL_URL"]], "flask_app": [[13, "envvar-FLASK_APP"]], "host": [[13, "envvar-HOST"]], "map_attribution": [[13, "envvar-MAP_ATTRIBUTION"]], "port": [[13, "envvar-PORT"]], "redis_url": [[13, "envvar-REDIS_URL"]], "sender_email": [[13, "envvar-SENDER_EMAIL"]], "staticmap_subdomains": [[13, "envvar-STATICMAP_SUBDOMAINS"]], "tile_server_url": [[13, "envvar-TILE_SERVER_URL"]], "ui_url": [[13, "envvar-UI_URL"]], "upload_folder": [[13, "envvar-UPLOAD_FOLDER"]], "vite_app_api_url": [[13, "envvar-VITE_APP_API_URL"]], "weather_api_key": [[13, "envvar-WEATHER_API_KEY"]], "weather_api_provider \ud83c\udd95": [[13, "envvar-WEATHER_API_PROVIDER"]], "workers_processes": [[13, "envvar-WORKERS_PROCESSES"]], "variable d'environnement": [[13, "envvar-API_RATE_LIMITS"], [13, "envvar-APP_LOG"], [13, "envvar-APP_SECRET_KEY"], [13, "envvar-APP_SETTINGS"], [13, "envvar-APP_WORKERS"], [13, "envvar-DATABASE_DISABLE_POOLING"], [13, "envvar-DATABASE_URL"], [13, "envvar-DEFAULT_STATICMAP"], [13, "envvar-EMAIL_URL"], [13, "envvar-FLASK_APP"], [13, "envvar-HOST"], [13, "envvar-MAP_ATTRIBUTION"], [13, "envvar-PORT"], [13, "envvar-REDIS_URL"], [13, "envvar-SENDER_EMAIL"], [13, "envvar-STATICMAP_SUBDOMAINS"], [13, "envvar-TILE_SERVER_URL"], [13, "envvar-UI_URL"], [13, "envvar-UPLOAD_FOLDER"], [13, "envvar-VITE_APP_API_URL"], [13, "envvar-WEATHER_API_KEY"], [13, "envvar-WEATHER_API_PROVIDER"], [13, "envvar-WORKERS_PROCESSES"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "titles": ["Authentification et compte", "Configuration", "Documentation de l\u2019API", "OAuth2", "Records", "Sports", "Statistiques", "Utilisateurs", "S\u00e9ances", "Historique des modifications", "Interface de ligne de commande", "Fonctionnalit\u00e9s", "FitTrackee", "Installation", "OAuth 2.0", "Outils tiers", "Administrateur", "D\u00e9pannage"], "terms": {"post": [0, 3, 8, 14], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "auth": [0, 1, 3, 4, 5, 6, 7, 8], "regist": 0, "enregistr": [0, 10, 11, 14], "utilis": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14], "envoi": [0, 7, 9, 11, 13, 14], "courriel": [0, 7, 9, 11, 16], "confirm": [0, 3, 9, 11, 13], "Le": [0, 9, 11, 13], "nouvel": [0, 7, 10, 11, 13], "cr\u00e9": [0, 3, 8, 9, 10, 11, 13, 14], "inact": [0, 7, 11, 13], "L": [0, 1, 5, 9, 11, 13, 14], "doit": [0, 1, 3, 5, 8, 9, 11, 13, 14, 16], "adress": [0, 1, 7, 10, 11, 13], "\u00e9lectron": [0, 1, 7, 10, 11, 13], "activ": [0, 1, 5, 7, 9, 10, 11, 12, 13], "exempl": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14], "requ\u00eat": [0, 1, 3, 4, 5, 6, 7, 8, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13], "content": [0, 1, 3, 4, 5, 6, 7, 8, 9], "typ": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "appliqu": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8, 11], "r\u00e9pons": [0, 1, 3, 4, 5, 6, 7, 8], "succes": [0, 3, 5, 6, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "success": [0, 1, 3, 4, 5, 6, 7, 8], "status": [0, 1, 3, 4, 5, 6, 7, 8], "erreur": [0, 3, 9, 11, 16], "lor": [0, 10, 11], "400": [0, 1, 3, 5, 7, 8, 9], "bad": [0, 1, 3, 5, 7, 8], "request": [0, 1, 3, 5, 7, 8, 13, 14], "messag": [0, 1, 3, 7, 8, 9, 10, 11, 13, 14], "error": [0, 1, 5, 7, 8, 9, 13], "email": [0, 1, 7, 9, 10, 16], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 13, 16], "must": [0, 1, 7, 9], "be": [0, 1, 7, 9, 13], "provided": [0, 1, 7], "objet": [0, 1, 5, 7, 8], "usernam": [0, 7, 10, 13], "string": [0, 1, 3, 5, 6, 7, 8], "nom": [0, 3, 6, 7, 9, 10, 13], "3": [0, 5, 6, 7, 8, 11, 13], "30": [0, 1, 6, 13], "caracter": [0, 3, 9, 13, 14], "requ": [0, 14], "password": [0, 9, 10, 13], "mot": [0, 7, 10, 11, 13], "pass": [0, 7, 10, 11, 13], "8": [0, 8, 11, 13], "minimum": 0, "lang": [0, 9], "pr\u00e9f\u00e9rent": [0, 7], "langu": [0, 11], "interfac": [0, 9, 11, 12, 13], "si": [0, 3, 7, 8, 9, 10, 11, 13, 14, 16], "non": [0, 3, 5, 8, 9, 12, 13], "fourn": [0, 3, 8, 10, 11, 13, 14, 16], "ser": [0, 9, 10, 11, 13], "anglais": [0, 9, 11], "accepted_policy": 0, "boolean": [0, 1, 3, 7, 10], "tru": [0, 1, 3, 5, 7, 9, 13], "a": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12], "accept": [0, 9, 11], "polit": [0, 1, 9, 11], "confidential": [0, 1, 9, 11], "cod": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "\u00e9tat": [0, 1, 3, 4, 5, 6, 7, 8], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "payload": [0, 1, 3, 5, 7, 8], "sorry": 0, "that": [0, 9], "is": [0, 9], "already": [0, 9], "taken": 0, "you": [0, 1, 5, 6, 7, 8, 13], "agre": 0, "privacy": [0, 9], "policy": [0, 9], "to": [0, 6, 8, 9, 13, 15], "character": [0, 9], "required": 0, "only": [0, 9], "alphanumeric": 0, "and": [0, 9, 10, 13], "the": [0, 5, 7, 8, 9, 13], "underscor": 0, "charact": 0, "_": [0, 9], "allowed": [0, 8], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "registr": [0, 9], "disabled": [0, 10], "500": [0, 1, 5, 7, 8, 9], "internal": [0, 1, 5, 7, 8], "serv": [0, 1, 5, 7, 8, 9, 13], "pleas": [0, 1, 3, 4, 5, 6, 7, 8], "try": [0, 5, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "or": [0, 5, 7, 8, 9], "contact": [0, 1, 5, 7, 8, 11], "administrator": [0, 5, 7, 8], "account": [0, 7, 9], "apres": [0, 3, 9, 11, 13, 14], "inscript": [0, 1, 9, 11, 13], "auth_token": 0, "web": [0, 3, 12, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "successful": 0, "jeton": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13, 14], "resend": 0, "renvoi": [0, 3, 7, 8], "instruct": [0, 9, 11, 13], "d\u00e9sactiv": [0, 9, 10, 11, 13], "point": [0, 1, 3, 9, 11, 13, 14], "acces": [0, 1, 3, 14], "disponibl": [0, 4, 10, 11, 13, 14, 15], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 9], "not": [0, 1, 3, 5, 6, 7, 8, 9, 11, 13], "found": [0, 3, 5, 6, 7, 8, 9], "requested": 0, "url": [0, 3, 9, 13, 14, 16], "was": 0, "login": [0, 9], "connexion": [0, 13], "seul": [0, 3, 7, 8, 9, 11, 13, 14], "dispos": [0, 7], "actif": [0, 10, 11], "peuvent": [0, 9, 11, 12, 13], "connect": [0, 11], "successfully": 0, "logged": 0, "in": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14], "401": [0, 1, 3, 4, 5, 6, 7, 8, 9], "unauthorized": [0, 1, 3, 4, 5, 6, 7, 8], "credential": 0, "get": [0, 1, 3, 4, 5, 6, 7, 8], "profil": [0, 3, 9, 14], "obten": [0, 1, 3, 4, 5, 6, 7, 8, 14], "inform": [0, 1, 7, 9, 11, 12, 13], "authentifi": [0, 1, 3, 4, 5, 7, 8, 11], "scop": [0, 1, 3, 4, 5, 6, 7, 8], "read": [0, 3, 4, 5, 6, 7, 8, 14], "dat": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11], "accepted_privacy_policy": 0, "admin": [0, 1, 4, 5, 6, 7, 8, 10, 13], "fals": [0, 1, 3, 5, 7, 8, 13], "bio": [0, 7], "null": [0, 1, 5, 7, 8, 9], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 9], "gmt": [0, 3, 4, 7, 8], "date_format": 0, "dd": 0, "mm": 0, "yyyy": 0, "display_ascent": 0, "sam": [0, 4, 7, 8, 9], "exampl": [0, 1, 3, 7, 9, 13, 14], "com": [0, 1, 3, 7, 9, 13, 14], "email_to_confirm": 0, "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "languag": [0, 7, 9], "last_nam": [0, 7], "locat": [0, 7, 13], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 10, 11, 13], "pictur": [0, 7, 8, 9], "record": [0, 2, 7, 8, 9, 11], "id": [0, 3, 4, 5, 7, 8], "9": [0, 4, 7, 11, 13], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "user": [0, 4, 6, 7, 8, 9, 13, 14], "valu": [0, 4, 7, 8, 9], "18": [0, 4, 7, 8, 11, 13], "workout_dat": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 11, 13], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8, 10, 11, 13], "ha": [0, 4, 7, 8], "43": [0, 4, 7, 8, 9], "97": [0, 4, 7, 8, 9], "11": [0, 4, 7, 11, 13], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8, 13], "MS": [0, 4, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 11, 13], "start_elevation_at_zero": 0, "timezon": [0, 7, 9], "europ": [0, 7], "paris": [0, 7], "total_ascent": [0, 6], "720": 0, "35": [0, 9], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 9, 13], "27": [0, 3, 7, 11], "use_dark_mod": 0, "use_raw_gpx_speed": 0, "weekm": [0, 6, 7], "En": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12], "t\u00eat": [0, 1, 3, 4, 5, 6, 7, 8, 14], "authoriz": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13], "2": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13], "0": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "bear": [0, 1, 3, 4, 5, 6, 7, 8], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expired": [0, 1, 3, 4, 5, 6, 7, 8], "log": [0, 1, 3, 4, 5, 6, 7, 8, 13, 16], "edit": [0, 9, 11], "modifi": [0, 5, 7, 10, 11, 13], "writ": [0, 1, 3, 5, 7, 8, 14], "updated": [0, 9], "pr\u00e9nom": 0, "famill": 0, "localis": [0, 13], "biograph": 0, "naissanc": 0, "format": [0, 6, 8, 9, 11, 12], "Y": [0, 6, 8], "preferent": [0, 9], "pris": [0, 3, 9, 11, 13, 14], "charg": [0, 3, 9, 11, 13, 14, 17], "valeur": [0, 3, 11, 13, 14, 16], "d\u00e9faut": [0, 3, 7, 8, 9, 11, 13], "date_string": 0, "correspond": [0, 8, 13], "mmm": 0, "do": [0, 1, 5, 6, 7, 8, 9], "local": [0, 9, 12, 13], "e": 0, "fr": [0, 7, 13], "gl": 0, "it": 0, "nl": 0, "nb": 0, "affich": [0, 8, 9, 10, 11, 12, 13, 14, 17], "dan": [0, 1, 8, 9, 10, 11, 12, 13, 14, 17], "d\u00e9nivel": [0, 4, 8, 11], "total": [0, 3, 8, 9, 11], "distanc": [0, 4, 8, 9, 11], "unit": [0, 9, 13], "imp\u00e9rial": [0, 11], "Les": [0, 4, 8, 10, 11, 12, 13, 14, 17], "graphiqu": [0, 9, 11, 13], "altitud": [0, 9, 11], "commencent": 0, "z\u00e9ro": [0, 11], "fuseau": [0, 8, 11], "horair": [0, 8, 11], "them": [0, 9, 11], "sombr": [0, 11], "vrai": 0, "s\u00e9lection": [0, 11], "selon": [0, 11, 13], "navig": [0, 9, 11, 13], "gpx": [0, 3, 8, 9, 11, 12, 13, 15], "filtr": [0, 11], "calcul": [0, 9, 11], "vitess": [0, 4, 8, 9, 11, 13], "La": [0, 9, 11, 13, 14, 16], "semain": [0, 6, 11], "commenc": [0, 6, 9, 11, 13, 16], "lund": [0, 6, 11], "don": [0, 3, 8, 9, 11, 12, 14, 16], "match": 0, "sport": [0, 2, 6, 8, 9, 13], "color": [0, 5, 9], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "couleur": [0, 11], "hexad\u00e9cimal": 0, "ajout": [0, 7, 9, 10, 11, 12, 13, 15], "s\u00e9anc": [0, 2, 6, 9, 12, 14, 15, 17], "float": [0, 8], "seuil": [0, 11], "arr\u00eat": [0, 9, 11, 13], "gpxpy": [0, 9, 11, 13], "hexadecimal": 0, "exist": [0, 6, 7, 8, 9, 11, 12, 13], "delet": [0, 3, 7, 8, 9], "reset": [0, 9, 10], "r\u00e9initialis": [0, 7, 10, 11, 13], "204": [0, 3, 7, 8], "parametr": [0, 3, 5, 6, 7, 8, 9, 11, 14], "identifi": [0, 3, 5, 6, 8, 14], "no": [0, 3, 7, 8, 9], "supprim": [0, 3, 7, 8, 9, 10, 11], "mis": [0, 5, 7, 8, 9, 11, 14], "jour": [0, 1, 5, 7, 8, 9, 10, 11], "imag": [0, 7, 8, 9, 11, 13, 17], "multipart": [0, 3, 8], "form": [0, 3, 8], "fil": [0, 8, 9, 13], "fichi": [0, 1, 8, 9, 10, 11, 12, 13, 15, 17], "extens": [0, 8, 13], "autoris": [0, 1, 3, 8, 13, 14], "jpg": 0, "png": [0, 8, 13], "gif": 0, "part": [0, 8, 9, 11, 12, 14, 15], "selected": [0, 8], "413": [0, 8], "entity": [0, 8], "too": [0, 8], "larg": [0, 8, 13], "during": [0, 8], "updat": [0, 8, 9, 13], "siz": [0, 8, 9, 13], "exceed": [0, 8, 9], "0mb": [0, 8], "trait": [0, 10], "demand": [0, 9, 10, 11, 13], "processed": 0, "patch": [0, 1, 5, 7, 8], "suiv": [0, 4, 10, 11, 13, 14, 15, 16], "modif": [0, 11, 12], "chang": [0, 9, 11, 13], "actuel": 0, "autr": [0, 7, 11, 13], "new_password": 0, "nouveau": [0, 10, 11, 13, 14], "missing": [0, 9], "current": [0, 7, 9], "uniqu": [0, 3, 9, 10, 13, 14], "new": [0, 7, 9, 11], "logout": [0, 9], "d\u00e9connexion": 0, "out": 0, "access": [0, 9], "revoked": 0, "malformed": 0, "for": [0, 1, 8, 9, 13], "other": [0, 7], "reason": 0, "blacklist": 0, "export": [0, 9, 10, 11, 12, 13], "archiv": [0, 1, 9, 10, 11, 13], "Il": [0, 9, 11, 12, 13, 14], "cr\u00e9ation": [0, 9, 11], "in_progress": 0, "errored": 0, "taill": [0, 1, 11, 13], "octet": 0, "lorsqu": [0, 9, 10, 13], "r\u00e9uss": 0, "wed": 0, "mar": [0, 9, 13], "2023": [0, 13], "31": [0, 8, 13], "17": [0, 8, 11], "file_nam": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "zip": [0, 1, 8, 9, 11], "file_siz": 0, "924": 0, "aucun": [0, 8, 11, 12, 13], "ongoing": 0, "completed": 0, "t\u00e9l\u00e9charg": [0, 8, 10, 11, 13, 17], "download": [0, 8, 9], "archive_rgjsr3fhr5yp": 0, "x": [0, 8, 9, 13, 14], "gzip": 0, "config": [1, 9, 13], "about": [1, 9, 13], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_enabled": 1, "is_registration_enabled": 1, "max_single_file_siz": 1, "1048576": 1, "max_user": 1, "max_zip_file_siz": 1, "10485760": 1, "map_attribu": [1, 13], "copy": [1, 13], "href": [1, 13], "www": [1, 13], "openstreetmap": [1, 9, 13], "org": [1, 13], "copyright": [1, 13], "contributor": [1, 13], "privacy_policy": 1, "privacy_policy_dat": 1, "version": [1, 10, 11, 13, 14], "7": [1, 8, 10, 11, 13, 14], "weather_provid": 1, "getting": 1, "mettr": [1, 7, 8, 9, 10, 11, 13], "avoir": [1, 5, 13], "droit": [1, 5, 7, 9, 10, 11, 13, 14], "administr": [1, 5, 7, 10, 13, 14, 17], "instanc": [1, 9, 11, 13], "integ": [1, 3, 5, 6, 7, 8], "nombr": [1, 7, 8, 10, 11, 13], "maximum": [1, 11], "maximal": [1, 4, 8, 9, 10, 11], "inscrir": [1, 9, 11, 13], "hav": [1, 5, 6, 7, 8, 9], "perm": [1, 5, 6, 7, 8], "when": [1, 9], "updating": 1, "ping": 1, "contr\u00f4l": 1, "pong": 1, "authentif": [2, 13, 14], "compt": [2, 7, 8, 9, 10, 13, 15], "configur": [2, 9, 11, 13, 14, 16], "oauth2": [2, 14], "statist": 2, "app": [3, 9, 13, 14], "client": [3, 9, 11, 13, 14], "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 10, 11, 13], "pag": [3, 7, 8, 9], "Ce": 3, "accessibl": [3, 9, 13, 14], "fittracke": [3, 10, 11, 13, 14, 15, 17], "san": [3, 6, 7, 8, 9, 11, 12, 13], "client_descript": 3, "client_id": [3, 14], "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "july": 3, "2022": 3, "06": [3, 6], "53": [3, 9], "nam": [3, 9], "import": [3, 9, 11, 13, 15], "redirect_ur": 3, "callback": [3, 14], "workout": [3, 4, 5, 6, 8, 9, 14], "websit": 3, "has_next": 3, "has_prev": 3, "client_secret": 3, "secret": [3, 13, 14], "created": [3, 8], "client_nam": 3, "client_ur": 3, "array": 3, "list": [3, 9, 10, 12, 13], "redirect": [3, 9, 14], "cha\u00een": [3, 14], "descript": [3, 10, 13], "optionnel": [3, 13], "client_client_id": 3, "trouv": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "enti": 3, "an": [3, 9], "revok": 3, "r\u00e9voqu": 3, "tous": [3, 4, 5, 6, 7, 9, 11, 13], "associ": [3, 10, 11, 14], "cas": [3, 11, 13], "redirig": [3, 14], "ver": [3, 9, 13, 14], "\u00e9mettr": 3, "response_typ": [3, 14], "support": [3, 9, 13, 14, 16], "\u00eatre": [3, 8, 9, 10, 11, 12, 13, 14, 16], "stat": [3, 6, 9, 14], "\u00e9vit": [3, 9], "falsif": [3, 14], "entre": [3, 8, 11, 14], "sit": [3, 14], "cross": [3, 14], "forgery": [3, 14], "csrf": [3, 14], "obligatoir": [3, 8, 9, 10, 13, 14], "recommand": [3, 13, 14], "code_challeng": [3, 14], "g\u00e9ner": [3, 10, 11, 13, 14], "v\u00e9rif": [3, 9, 14, 16], "pkce": [3, 14], "code_challenge_method": [3, 14], "m\u00e9thod": [3, 13, 14], "challeng": [3, 14], "s256": [3, 14], "librair": [3, 13], "authlib": [3, 13, 14], "d\u00e9livr": 3, "rafra\u00eech": 3, "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "authorization_cod": [3, 14], "\u00e9miss": 3, "code_verifi": 3, "moyen": [4, 8, 9, 11, 13], "plus": [4, 9, 10, 11, 12, 13, 16], "\u00e9lev": [4, 11, 13], "dur": [4, 6, 8, 9, 11], "longu": [4, 9, 11], "retourn": 4, "is_active_for_us": 5, "label": [5, 9], "cycling": [5, 9], "transport": [5, 9, 11], "hiking": 5, "mountain": 5, "biking": [5, 8], "running": 5, "walking": 5, "has_workout": 5, "user_nam": [6, 7], "by_tim": 6, "entra\u00een": [6, 8, 11], "from": [6, 8, 9, 13], "2018": [6, 8], "tim": [6, 8], "week": [6, 9], "statistic": [6, 9], "2017": [6, 8], "average_speed": 6, "48": 6, "203": 6, "156": [6, 9], "15": [6, 8, 10, 11, 13], "282": [6, 9], "12341": 6, "16": [6, 8, 11], "99": [6, 9], "150": 6, "178": [6, 9], "47": [6, 8, 9], "9960": 6, "95": [6, 9], "46": [6, 9], "78": 6, "613": 6, "1267": 6, "d\u00e9but": [6, 8], "fin": [6, 8, 9, 13], "p\u00e9riod": [6, 11, 13], "temp": 6, "dimanch": [6, 11], "month": [6, 9], "mois": [6, 9, 11], "year": 6, "ann\u00e9": [6, 11], "default": [6, 8, 9, 13], "by_sport": 6, "all": [6, 13], "tout": [6, 13], "uploads_dir_siz": 6, "1000": 6, "statut": [7, 10], "Ne": 7, "quelqu": [7, 8, 9, 11, 14], "order_by": [7, 8], "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": [7, 11], "03": [7, 8], "per_pag": [7, 8], "max": [7, 8, 9, 10], "q": 7, "order": [7, 8, 9], "ordre": [7, 8], "tri": [7, 8, 11], "asc": [7, 8], "desc": [7, 8], "criter": 7, "peut": [7, 9, 10, 11, 13, 14], "jpeg": 7, "activat": [7, 10], "new_email": 7, "reset_password": 7, "different": [7, 9], "than": [7, 9], "Un": [7, 9, 11, 13], "propr": [7, 11, 12], "sauf": [7, 13], "sien": 7, "john_do": 7, "can": [7, 9, 13, 16], "your": 7, "has": [7, 9], "right": [7, 9], "02": 8, "moin": 8, "ascent": [8, 9], "ave_speed": 8, "bound": 8, "creation_dat": 8, "51": 8, "descent": [8, 9], "durat": [8, 9], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 9, 11, 12], "max_alt": 8, "max_speed": 8, "min_alt": 8, "modification_dat": 8, "moving": [8, 9], "next_workout": 8, "paus": [8, 9], "previous_workout": 8, "Mon": 8, "jan": 8, "segment": [8, 9, 11], "titl": [8, 9], "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 9, 11], "titr": [8, 11], "tient": 8, "majuscul": 8, "minuscul": 8, "distance_from": 8, "minimal": [8, 9, 11, 14], "distance_to": 8, "duration_from": 8, "h": [8, 11], "M": 8, "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "sorting": 8, "criteri": 8, "workout_short_id": 8, "57": [8, 9], "45": 8, "22": 8, "without": [8, 9], "sunday": 8, "morning": 8, "court": 8, "cart": [8, 9, 11, 12, 13, 17], "leaflet": [8, 13], "this": [8, 10, 13], "chart_dat": 8, "r\u00e9cuper": [8, 13, 14], "chart": [8, 9, 13], "js": [8, 13], "elev": [8, 9], "279": [8, 9], "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "speed": [8, 9], "63": 8, "fri": 8, "44": [8, 9], "7380": 8, "280": [8, 9], "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 13], "tuil": [8, 9, 11], "serveur": [8, 9, 11, 12, 16], "4109": 8, "2930": 8, "sous": [8, 13], "domain": [8, 13], "zoom": 8, "index": 8, "axe": [8, 11], "xml": 8, "201": [8, 9], "guillemet": 8, "doubl": 8, "doivent": [8, 13, 14], "\u00e9chapp": [8, 9], "no_gpx": 8, "uuid": [8, 9], "n\u00e9gat": [8, 11], "posit": [8, 9, 11], "km": [8, 11], "second": 8, "b748459": 9, "alert": 9, "dark": 9, "mod": 9, "pr": 9, "481": 9, "handl": 9, "keyboard": 9, "dropdown": 9, "3821e37": 9, "mak": [9, 13], "calendar": 9, "arrow": 9, "488": 9, "cli": [9, 10, 11, 13], "fix": [9, 13], "creation": 9, "with": [9, 13], "489": 9, "482": 9, "translat": 9, "galician": [9, 11], "spanish": 9, "484": 9, "german": 9, "avanc": [9, 11], "n\u00e9erland": [9, 11], "galicien": 9, "allemand": [9, 11], "italien": [9, 11], "84": 9, "norv\u00e9gien": [9, 11], "bokm\u00e5l": [9, 11], "60": 9, "polon": [9, 11], "espagnol": [9, 11], "aff4d68": 9, "ci": 9, "action": 9, "merc": 9, "contributeur": [9, 15], "gallegonovato": 9, "qwerty287": 9, "xmgz": 9, "8aa4cff": 9, "load": [9, 16], "478": 9, "clickabl": 9, "dashboard": 9, "479": 9, "minor": 9, "ui": 9, "476": 9, "polish": 9, "477": 9, "dutch": 9, "475": 9, "build": [9, 13], "use": 9, "poetry": [9, 13], "cor": 9, "instead": 9, "of": [9, 13, 14], "traxy": 9, "mariuz": 9, "koen": 9, "474": 9, "improv": 9, "link": 9, "display": 9, "6e215a": 9, "background": 9, "modal": 9, "displayed": 9, "473": 9, "98": 9, "113": 9, "add": 9, "464": 9, "471": 9, "trekking": [9, 11], "469": 9, "472": 9, "resetting": 9, "468": 9, "456": 9, "drop": 9, "postgresql": [9, 13, 16], "85": 9, "61": 9, "davidhenrythoreau": 9, "Cette": [9, 12, 13], "contient": [9, 11, 13], "migrat": [9, 10, 13], "bas": [9, 11, 13, 16], "voir": [9, 11, 13, 14, 16], "224": 9, "result": 9, "incorrect": 9, "444": 9, "norwegian": 9, "d\u00e9pend": 9, "449": 9, "vu": [9, 13], "tooling": 9, "library": 9, "450": 9, "comradekingu": 9, "441": 9, "after": [9, 13], "upgrad": [9, 13], "433": 9, "encoded": 9, "427": 9, "typos": 9, "refacto": 9, "431": 9, "428": 9, "2bcff2e": 9, "flask": [9, 13], "436": 9, "python": [9, 13, 14], "438": 9, "workflow": 9, "421": 9, "remov": 9, "darksky": [9, 13], "avail": 9, "weath": 9, "provider": 9, "env": [9, 13], "426": 9, "til": [9, 13], "thank": 9, "astridx": 9, "422": 9, "e2e": 9, "test": [9, 13], "packaged": 9, "411": 9, "various": 9, "416": 9, "closing": 9, "410": 9, "415": 9, "417": 9, "418": 9, "bjornclauw": 9, "mariusz": 9, "407": 9, "are": 9, "zero": 9, "409": 9, "open": [9, 11, 12], "wat": 9, "swimming": 9, "398": 9, "402": 9, "399": 9, "406": 9, "56": 9, "380": 9, "390": 9, "391": 9, "paragliding": 9, "384": 9, "inconsistent": 9, "between": 9, "gp": [9, 11], "393": 9, "pil": 9, "modul": [9, 13], "attribut": 9, "antiali": 9, "394": 9, "397": 9, "386": 9, "contributing": 9, "md": 9, "388": 9, "typo": 9, "395": 9, "cc3fe1c": 9, "42": 9, "dkm": 9, "partiel": 9, "quant": 9, "encor": [9, 12], "weblat": [9, 11], "mainten": [9, 13], "351": 9, "370": 9, "371": 9, "375": 9, "french": [9, 11], "thovi98": 9, "376": 9, "1375986": 9, "furo": 9, "377": 9, "init": [9, 13], "354": 9, "374": 9, "dock": 9, "install": [9, 12], "virtualenv": [9, 13], "87": 9, "36": 9, "366": 9, "369": 9, "hosted": 9, "367": 9, "358": 9, "filtering": 9, "359": 9, "foot": 9, "overlap": 9, "350": 9, "352": 9, "356": 9, "357": 9, "365": 9, "gnu": 9, "ewm": 9, "jat255": 9, "parm": 9, "dessous": 9, "servic": [9, 13], "319": 9, "creat": [9, 13], "329": 9, "start": 9, "axis": 9, "at": [9, 13], "sticky": 9, "333": 9, "featur": 9, "filt": 9, "by": [9, 13], "338": 9, "relev": 9, "328": 9, "track": 9, "imperial": 9, "b29ed7": 9, "250": 9, "320": 9, "323": 9, "06ba975": 9, "bcc568e": 9, "ea0ac99": 9, "a458f5f": 9, "075aeb9": 9, "60e164d": 9, "italian": 9, "318": 9, "J": 9, "lavoi": 9, "mondstern": 9, "314": 9, "deleted": 9, "process": [9, 13], "fail": 9, "315": 9, "permet": [9, 10, 11, 12, 14], "Une": [9, 10, 11, 13, 16], "personnalis": [9, 11], "d\u00e9fin": [9, 11, 14, 16], "afin": [9, 14], "puissent": [9, 11], "prendr": [9, 11], "connaiss": [9, 11], "conten": [9, 11, 13], "t\u00e9l\u00e9vers": [9, 11], "enfin": 9, "compl\u00e9mentair": 9, "pouv": 9, "util": [9, 11], "propos": [9, 11], "301": [9, 13], "304": 9, "305": 9, "additional": 9, "307": 9, "quand": 9, "d\u00e9marr": [9, 13, 17], "297": 9, "308": 9, "310": 9, "290": 9, "294": 9, "postgresql10": 9, "265": 9, "implementing": 9, "altern": 9, "visualcrossing": 9, "environment": [9, 13, 16], "variabl": [9, 16], "set": [9, 10, 13], "weather_api_provid": [9, 13], "see": [9, 13], "287": 9, "289": 9, "dperruso": 9, "92": 9, "parameter": 9, "c88a515": 9, "f96dcef": 9, "mountaineering": 9, "278": 9, "270": 9, "nederland": 9, "258": 9, "pars": 9, "271": 9, "273": 9, "274": 9, "paralleliz": 9, "275": 9, "disabl": 9, "work": [9, 13, 16], "entry": 9, "commend": 9, "lign": [9, 11, 12, 13], "command": [9, 11, 12, 13], "dramatiq": [9, 10, 13], "3c8d9c2": 9, "trailing": 9, "comm": [9, 11, 13], "d\u00e9velopp": [9, 10, 12], "264": 9, "whit": 9, "gray": 9, "266": 9, "260": 9, "checked": 9, "261": 9, "should": 9, "return": [9, 13], "numb": [9, 13], "lim": [9, 13], "n\u00e9cessit": [9, 13, 14], "89": 9, "b1536fc": 9, "257": 9, "body": [9, 13], "nginx": [9, 11, 13, 14, 16], "112": 9, "allow": [9, 13], "244": 9, "virtual": 9, "rid": 9, "246": 9, "247": 9, "microsecond": 9, "252": 9, "242": 9, "241": 9, "strength": 9, "estim": 9, "packag": 9, "239": 9, "cb9d02f": 9, "english": 9, "88": 9, "231": 9, "invalidat": 9, "236": 9, "rat": [9, 13], "limit": [9, 11], "232": 9, "hidden": 9, "237": 9, "212": 9, "230": 9, "databas": [9, 10, 13], "problem": [9, 13], "225": 9, "grammar": 9, "issu": [9, 11], "skylan0916": 9, "derni": [9, 13], "ex\u00e9cut": 9, "inf\u00e9rieur": 9, "diff\u00e9rent": 9, "ex\u00e9cu": [9, 10], "213": 9, "using": 9, "measur": 9, "ft": 9, "mi": 9, "223": 9, "icon": 9, "167": 9, "added": 9, "162": 9, "fmstrat": 9, "210": 9, "could": 9, "requiring": 9, "subdomain": 9, "staticmap_subdomain": [9, 13], "209": 9, "containing": 9, "multipl": 9, "gorgoback": 9, "Et": 9, "detect": 9, "brows": 9, "matching": 9, "if": [9, 13], "208": 9, "card": 9, "html": 9, "changing": 9, "197": 9, "196": 9, "manag": [9, 10], "tool": 9, "190": 9, "193": 9, "deleting": 9, "192": 9, "191": 9, "layout": 9, "nomenclatur": 9, "inclus": 9, "195": 9, "cec": 9, "affect": [9, 11], "pr\u00e9c\u00e9dent": 9, "cc4287e": 9, "offset": 9, "Pas": 9, "refactoris": 9, "avant": [9, 13], "possibl": [9, 11, 12, 13], "fournisseur": [9, 13], "smtp": [9, 13, 16], "cel": [9, 11, 13], "r\u00e9duit": 9, "pr\u00e9requ": 9, "mono": [9, 11], "Pour": [9, 11, 13, 14], "ger": [9, 10, 11, 13, 16], "180": 9, "cannot": 9, "send": 9, "tl": [9, 13], "177": 9, "manqu": 9, "petit": 9, "\u00e9cran": 9, "175": 9, "refreshed": 9, "173": 9, "171": 9, "correctly": 9, "apport": 9, "niveau": 9, "155": 9, "106": 9, "169": 9, "161": 9, "farthest": 9, "160": 9, "plusieur": [9, 11, 12, 13], "danielsiersleben": 9, "rapport": 9, "initialis": [9, 13], "149": 9, "152": 9, "autoespcap": 9, "model": 9, "jinj": 9, "151": 9, "security": 9, "nettoi": 9, "entr\u00e9": [9, 13, 14], "alphanumer": 9, "worker": [9, 10, 13], "lanc": [9, 13], "script": 9, "product": 9, "dotenv": 9, "146": 9, "filter": 9, "145": 9, "140": 9, "fullscreen": 9, "control": [9, 13], "138": 9, "initial": 9, "135": 9, "finish": 9, "marker": 9, "134": 9, "wind": 9, "direct": [9, 11, 13], "877fa0f": 9, "changed": 9, "small": 9, "resolu": 9, "131": 9, "129": 9, "editing": 9, "127": [9, 13], "validat": 9, "legitimat": 9, "uri": 9, "such": 9, "localhost": [9, 13], "123": 9, "121": 9, "activity": 9, "snowsho": 9, "contain": [9, 13], "116": 9, "bet": 9, "button": 9, "graph": 9, "screen": 9, "115": 9, "option": [9, 10, 13], "averag": 9, "91": 9, "min": 9, "90": 9, "som": 9, "seem": 9, "104": 9, "switch": 9, "agplv3": 9, "licens": [9, 12, 13], "101": 9, "full": 9, "development": 9, "109": 9, "stopped": 9, "threshold": 9, "slow": 9, "mov": 9, "93": 9, "paf38": 9, "83": 9, "configured": 9, "generat": 9, "static": 9, "keep": 9, "default_staticmap": [9, 13], "81": 9, "remaining": 9, "textar": 9, "82": 9, "modify": 9, "his": 9, "birth": 9, "day": [9, 10, 13], "80": [9, 13], "sav": 9, "79": 9, "rebuild": 9, "75": 9, "javascript": [9, 13], "Du": 9, "fait": [9, 13], "sqlalchemy": [9, 13, 16], "postgr": [9, 16], "72": 9, "exceeding": 9, "71": 9, "great": 9, "70": 9, "less": 9, "uploaded": [9, 13], "66": 9, "used": 9, "importing": 9, "64": 9, "per": [9, 13], "shown": 9, "62": 9, "sending": 9, "\u00e9valu": [9, 13], "standardiz": 9, "term": 9, "upload": [9, 13, 15], "directory": [9, 13], "endpoint": 9, "also": 9, "59": 9, "uploading": 9, "activit": 9, "introduit": 9, "majeur": 9, "facilit": 9, "dor\u00e9nav": 9, "attent": [9, 13, 16], "lir": 9, "certain": [9, 10, 12, 13], "environ": [9, 10, 16], "renomm": 9, "celui": [9, 13], "remplac": [9, 11, 13], "thunderforest": [9, 13], "outdoor": [9, 13], "54": 9, "simplify": 9, "d\u00e9plac": 9, "red": [9, 10, 13], "complet": 9, "co": 9, "4c3fc34": 9, "empty": 9, "34614d5": 9, "spinn": 9, "loading": 9, "b862a77": 9, "2e1ee2c": 9, "interceptor": 9, "rout": [9, 13], "definit": 9, "down": 9, "mor": 9, "weekend": 9, "40": 9, "localiz": 9, "i18n": 9, "41": 9, "show": [9, 10, 13], "mous": 9, "over": 9, "docu": 9, "choos": 9, "first": 9, "33": 9, "37": 9, "34": 9, "anymor": 9, "pipenv": 9, "gestion": [9, 13], "paquet": [9, 13], "detailed": 9, "tooltip": 9, "standard": [9, 13], "v\u00e9lo": [9, 11], "randon": [9, 11], "vtt": [9, 11], "cours": [9, 11], "pied": [9, 11], "march": [9, 11], "\u00e9gal": [9, 10, 11, 12, 13], "enter": 9, "heur": [9, 11, 13], "suppress": [9, 11], "m\u00e9t\u00e9o": [9, 11], "cl\u00e9": [9, 11, 13], "calendri": [9, 11], "mensuel": [9, 11], "cour": [9, 10, 12, 13], "grand": [9, 11], "recherch": 9, "propri\u00e9tair": [9, 11], "moment": [9, 11], "search": 9, "view": [9, 13], "usag": [10, 13], "arg": [10, 13], "lin": [10, 13], "help": [10, 13], "exit": [10, 13], "d\u00e9sorm": 10, "obsolet": 10, "prochain": [10, 11], "fittrackee_set_admin": 10, "fittrackee_upgrade_db": 10, "fittrackee_work": 10, "vid": [10, 13], "expir": 10, "depuis": [10, 13], "noir": 10, "d\u00e9j\u00e0": 10, "argument": 10, "al\u00e9atoir": [10, 13], "incomplet": 10, "fitracke": 11, "stock": [11, 12, 14], "sportiv": [11, 12], "plein": [11, 12], "air": [11, 12], "plut\u00f4t": 11, "m\u00eam": [11, 13], "r\u00e9pertoir": [11, 13], "chiffr": [11, 13], "Avec": 11, "street": [11, 12], "statiqu": [11, 13], "trac": [11, 13], "virtuel": [11, 13], "electr": 11, "alpin": 11, "nag": 11, "eau": 11, "libr": 11, "parapent": 11, "19": 11, "aviron": 11, "ski": 11, "raquet": 11, "trail": 11, "lieu": 11, "Elle": 11, "except": [11, 16], "analys": [11, 13], "mani": [11, 13], "sp\u00e9cif": 11, "jusqu": 11, "system": [11, 13], "m\u00e9triqu": 11, "differ": 11, "origin": 11, "particuli": 11, "entrer": 11, "relat": 11, "Des": 11, "bouton": 11, "permettent": 11, "visualis": 11, "visual": [11, 13], "crossing": [11, 13], "sourc": 11, "vent": 11, "flech": 11, "indiqu": 11, "infobull": 11, "proven": 11, "masqu": 11, "cf": [11, 12, 13], "comport": 11, "d\u00e9roul": 11, "instant": 11, "r\u00e9cent": 11, "consult": 11, "menu": 11, "nouveaut": 11, "dont": [11, 14], "o\u00f9": [11, 13], "premi": 11, "clair": 11, "chois": [11, 13], "affichag": 11, "cach": 11, "d\u00e9part": 11, "exclur": 11, "extr\u00eam": 11, "exclu": 11, "mati": 11, "appara\u00eetr": 11, "toujour": 11, "tierc": [11, 14], "S": 11, "unitair": 11, "n\u00e9cessair": [11, 13], "volumin": [11, 16], "avert": 11, "suppl\u00e9mentair": 11, "syntax": 11, "markdown": 11, "adapt": [11, 13], "discours": 11, "traduit": 11, "bloqu": 11, "verrouill": 11, "vi": 11, "etat": 11, "publi": [11, 13], "suivr": 12, "conserv": [12, 13], "votr": [12, 13], "mobil": 12, "android": 12, "exhaust": 12, "runn": 12, "up": 12, "gpl": 12, "v3": 12, "opentrack": 12, "apach": 12, "fitotrack": 12, "aid": 12, "fonctionnal": [12, 13], "instabl": [12, 13], "ticket": 12, "outil": [12, 13], "tier": 12, "document": [12, 13, 14, 16], "d\u00e9pannag": 12, "histor": [12, 13], "typescript": 13, "staticmap": 13, "t\u00e2ch": 13, "vue3": 13, "vuex": 13, "logo": 13, "ic\u00f4n": 13, "freepik": 13, "flaticon": 13, "fork": 13, "awesom": 13, "nod": 13, "yarn": 13, "compos": 13, "\u00e9tap": 13, "d\u00e9crivent": 13, "linux": 13, "debian": 13, "arch": 13, "Sur": 13, "exploit": 13, "rencontr": 13, "makefil": 13, "custom": 13, "Elles": 13, "flask_app": 13, "d\u00e9marrag": 13, "pwd": 13, "__main__": 13, "py": 13, "sinon": 13, "host": 13, "h\u00f4t": 13, "port": 13, "5000": 13, "app_setting": 13, "productionconfig": 13, "app_secret_key": 13, "fort": 13, "jwt": 13, "app_worker": 13, "_workers_": 13, "gunicorn": [13, 16], "app_log": 13, "chemin": [13, 16], "upload_fold": [13, 16], "absolu": [13, 16], "application_directory": 13, "database_url": [13, 16], "5432": 13, "database_disable_pooling": 13, "pooling": 13, "ui_url": 13, "lien": 13, "email_url": [13, 16], "chain": 13, "sender_email": 13, "exp\u00e9diteur": 13, "redis_url": 13, "workers_process": 13, "processus": 13, "api_rate_limit": 13, "300": 13, "minut": 13, "tile_server_url": 13, "gard": 13, "23": 13, "n\u00e9cessitent": [13, 14], "df": 13, "Par": [13, 14], "b": 13, "osm": 13, "franc": 13, "attribu": 13, "target": 13, "_blank": 13, "rel": 13, "noopen": 13, "noreferr": 13, "komoot": 13, "insensibl": 13, "cass": 13, "weather_api_key": 13, "weather_ap": 13, "vite_app_api_url": 13, "26": 13, "vue_app_api_url": 13, "25": 13, "ssl": 13, "465": 13, "starttl": 13, "587": 13, "office365": 13, "fonction": [13, 14], "identif": 13, "omis": 13, "ancien": 13, "notif": 13, "pr\u00eat": 13, "laiss": 13, "24": 13, "encod": 13, "sp\u00e9cial": 13, "passwordwith": 13, "40and": 13, "26and": 13, "3f": 13, "apikey": 13, "xxxx": 13, "v\u00e9rifi": [13, 16], "condit": 13, "attendu": 13, "osmfr": 13, "fond": 13, "mention": 13, "legal": 13, "nofollow": 13, "nbsp": 13, "creativecommon": 13, "licenc": 13, "cc": 13, "SA": 13, "ip": 13, "strateg": 13, "pourr": 13, "soum": 13, "asset": 13, "notat": 13, "s\u00e9par": [13, 14], "virgul": 13, "hour": 13, "diagnostic": 13, "utility": 13, "clear": 13, "specific": 13, "key": 13, "enumerat": 13, "detail": 13, "interrompu": 13, "remarqu": 13, "pip": 13, "schem": [13, 14], "owner": 13, "privileg": 13, "copi": 13, "coll": 13, "nano": 13, "ftcli": 13, "db": 13, "systemd": 13, "ouvr": 13, "alor": 13, "projet": 13, "project": 13, "clon": 13, "d\u00e9p\u00f4t": 13, "git": 13, "github": 13, "samr1": 13, "cd": 13, "dev": 13, "run": 13, "3000": 13, "v0": 13, "wget": 13, "tar": 13, "gz": 13, "xzf": 13, "mv": 13, "sql": 13, "proced": 13, "fair": 13, "sauvegard": 13, "ensembl": 13, "pg_dump": 13, "suivent": 13, "s\u00e9mant": 13, "r\u00e9tro": 13, "compatibl": 13, "stopp": 13, "u": 13, "journal": [13, 16], "red\u00e9marr": 13, "pull": 13, "lequel": 13, "\u00e9cras": 13, "cp": 13, "r": 13, "proxy": [13, 14], "network": 13, "startlimitintervalsec": 13, "simpl": 13, "restart": 13, "alway": 13, "restartsec": 13, "standardoutput": 13, "syslog": 13, "standarderror": 13, "syslogidentifi": 13, "workingdirectory": 13, "hom": 13, "execstart": 13, "venv": 13, "bin": 13, "create_app": 13, "logfil": 13, "wantedby": 13, "mult": 13, "timeout": [13, 16], "fittrackee_worker": 13, "task": 13, "queu": 13, "listen": 13, "443": 13, "http2": 13, "server_nam": 13, "ssl_certificat": 13, "fullchain": 13, "pem": 13, "ssl_certificate_key": 13, "privkey": 13, "paramet": 13, "how": 13, "1mb": 13, "setting": 13, "ll": 13, "need": 13, "uncommenting": 13, "below": 13, "want": 13, "prevent": 13, "checking": 13, "client_max_body_siz": [13, 16], "1m": 13, "proxy_pass": 13, "proxy_redirect": 13, "proxy_set_head": [13, 14], "real": 13, "remote_addr": 13, "forwarded": [13, 14], "proxy_add_x_forwarded_for": 13, "proto": [13, 14], "request_ur": 13, "besoin": 13, "8025": 13, "acced": [13, 14], "mailhog": 13, "stop": 13, "shel": 13, "additionnel": 13, "fittrackee_client": 13, "lint": 13, "check": 13, "fittrackee_ynh": 13, "rest": 14, "plupart": 14, "permettr": 14, "interag": 14, "onglet": 14, "\u00e9chang": 14, "contr": 14, "corp": 14, "assur": 14, "meilleur": 14, "s\u00e9cur": 14, "\u00e9critur": 14, "accord": 14, "lectur": 14, "Ils": 14, "puiss": 14, "fittrackee_host": 14, "espac": 14, "facult": 14, "emp\u00each": 14, "3aread": 14, "3awrit": 14, "sort": 14, "ensuit": 14, "\u0153uvr": 14, "bibliothequ": 14, "derri": 14, "simplified": 14, "aaron": 14, "pareck": 14, "flow": 14, "oauthlib": 14, "session": 14, "gr\u00e2c": 15, "strav": 15, "fit": 15, "exc": 16, "nosuchmoduleerror": 16, "plugin": 16, "dialect": 16, "invalidemailurlschem": 16, "augment": 16, "del": 16, "critical": 16, "d\u00e9tail": 17, "\u00e9chec": 17}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 1, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 1, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 0, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 0, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 2, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 2, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 1, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 1, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 2, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 1, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 1, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 1, 1, "get--api-ping", "/api/ping"], [4, 1, 1, "get--api-records", "/api/records"], [5, 1, 1, "get--api-sports", "/api/sports"], [5, 1, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 1, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 1, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 1, 1, "get--api-stats-all", "/api/stats/all"], [7, 1, 1, "get--api-users", "/api/users"], [7, 2, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 1, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 2, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [13, 4, 1, "-", "API_RATE_LIMITS"], [13, 4, 1, "-", "APP_LOG"], [13, 4, 1, "-", "APP_SECRET_KEY"], [13, 4, 1, "-", "APP_SETTINGS"], [13, 4, 1, "-", "APP_WORKERS"], [13, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [13, 4, 1, "-", "DATABASE_URL"], [13, 4, 1, "-", "DEFAULT_STATICMAP"], [13, 4, 1, "-", "EMAIL_URL"], [13, 4, 1, "-", "FLASK_APP"], [13, 4, 1, "-", "HOST"], [13, 4, 1, "-", "MAP_ATTRIBUTION"], [13, 4, 1, "-", "PORT"], [13, 4, 1, "-", "REDIS_URL"], [13, 4, 1, "-", "SENDER_EMAIL"], [13, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [13, 4, 1, "-", "TILE_SERVER_URL"], [13, 4, 1, "-", "UI_URL"], [13, 4, 1, "-", "UPLOAD_FOLDER"], [13, 4, 1, "-", "VITE_APP_API_URL"], [13, 4, 1, "-", "WEATHER_API_KEY"], [13, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [13, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 1, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:get", "2": "http:delete", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "get", "HTTP get"], "2": ["http", "delete", "HTTP delete"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "variable d'environnement"]}, "titleterms": {"authentif": 0, "compt": [0, 11], "configur": 1, "document": [2, 9], "api": [2, 13], "point": 2, "acces": [2, 13], "oauth2": [3, 10], "record": 4, "sport": [5, 11], "statist": [6, 9, 11], "utilis": [7, 10, 11], "s\u00e9anc": [8, 11, 16], "histor": 9, "modif": 9, "version": 9, "0": [9, 14], "7": 9, "30": 9, "04": 9, "02": 9, "2024": 9, "fonctionnal": [9, 11], "am\u00e9lior": 9, "bug": 9, "corrig": 9, "traduct": [9, 11], "diver": 9, "29": 9, "01": 9, "28": 9, "23": 9, "12": 9, "2023": 9, "27": 9, "20": 9, "26": 9, "19": 9, "11": 9, "25": 9, "08": 9, "10": 9, "24": 9, "14": 9, "09": 9, "22": 9, "21": 9, "07": 9, "15": 9, "18": 9, "06": 9, "17": 9, "03": 9, "16": 9, "05": 9, "13": 9, "31": 9, "2022": 9, "9": 9, "8": 9, "6": 9, "5": 9, "4": 9, "3": 9, "2": [9, 14], "1": 9, "ticket": 9, "ferm": 9, "pull": 9, "request": 9, "s\u00e9cur": 9, "nouvel": 9, "2021": 9, "2020": 9, "fittracke": [9, 12, 16], "pyp": [9, 13], "administr": [9, 11, 16], "correct": 9, "mineur": 9, "disponibl": 9, "franc": 9, "2019": 9, "premi": 9, "2018": 9, "interfac": 10, "lign": 10, "command": 10, "bas": 10, "don": [10, 13], "ftcli": 10, "db": 10, "drop": 10, "upgrad": 10, "clean": 10, "user": 10, "clean_arch": 10, "clean_token": 10, "creat": 10, "export_arch": 10, "updat": 10, "pr\u00e9f\u00e9rent": 11, "appliqu": 11, "captur": 11, "\u00e9cran": 11, "tableau": 11, "bord": 11, "pag": 11, "d\u00e9tail": [11, 16], "list": 11, "tabl": 12, "mati": 12, "install": 13, "pr\u00e9requ": 13, "variabl": 13, "environ": 13, "courriel": 13, "serveur": 13, "tuil": 13, "limit": 13, "m\u00e9t\u00e9o": 13, "a": 13, "part": 13, "sourc": 13, "d\u00e9velopp": 13, "product": 13, "mis": 13, "jour": 13, "d\u00e9ploi": 13, "dock": 13, "yunohost": 13, "oauth": 14, "scop": 14, "flux": 14, "ressourc": 14, "outil": 15, "tier": 15, "d\u00e9marr": 16, "Les": 16, "imag": 16, "cart": 16, "affich": 16, "dan": 16, "\u00e9chec": 16, "charg": 16, "t\u00e9l\u00e9charg": 16, "fichi": 16, "d\u00e9pannag": 17}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Authentification et compte": [[0, "authentication-and-account"]], "Configuration": [[1, "configuration"]], "Documentation de l\u2019API": [[2, "api-documentation"]], "Points d'acc\u00e8s :": [[2, null]], "OAuth2": [[3, "oauth2"], [10, "oauth2"]], "Records": [[4, "records"]], "Sports": [[5, "sports"], [11, "sports"]], "Statistiques": [[6, "statistics"], [11, "statistics"]], "Utilisateurs": [[7, "users"], [10, "users"], [11, "users"]], "S\u00e9ances": [[8, "workouts"], [11, "workouts"]], "Historique des modifications": [[9, "change-log"]], "Version 0.7.30 (04/02/2024)": [[9, "version-0-7-30-2024-02-04"]], "Fonctionnalit\u00e9s et am\u00e9liorations": [[9, "features-and-enhancements"], [9, "id1"], [9, "id5"], [9, "id8"], [9, "id25"], [9, "id28"], [9, "id36"], [9, "id39"], [9, "id45"], [9, "id50"], [9, "id52"], [9, "id54"], [9, "id57"], [9, "id68"], [9, "id74"]], "Bugs corrig\u00e9s": [[9, "bugs-fixed"], [9, "id2"], [9, "id6"], [9, "id9"], [9, "id12"], [9, "id15"], [9, "id16"], [9, "id19"], [9, "id21"], [9, "id23"], [9, "id26"], [9, "id29"], [9, "id37"], [9, "id40"], [9, "id43"], [9, "id46"], [9, "id58"], [9, "id63"], [9, "id65"], [9, "id69"], [9, "id72"], [9, "id75"], [9, "id77"], [9, "id80"], [9, "id83"], [9, "id85"], [9, "id88"], [9, "id91"], [9, "id94"], [9, "id99"], [9, "id101"], [9, "id103"], [9, "id105"], [9, "id108"], [9, "id110"], [9, "id116"], [9, "id119"], [9, "id121"], [9, "id123"], [9, "id130"], [9, "id135"], [9, "id137"], [9, "id139"], [9, "id142"], [9, "id144"], [9, "id146"], [9, "id150"], [9, "id160"], [9, "id163"], [9, "id165"], [9, "id168"], [9, "id175"]], "Traductions": [[9, "translations"], [9, "id3"], [9, "id7"], [9, "id10"], [9, "id13"], [9, "id17"], [9, "id22"], [9, "id27"], [9, "id30"], [9, "id32"], [9, "id35"], [9, "id38"], [9, "id41"], [9, "id44"], [9, "id47"], [9, "id48"], [9, "id51"], [9, "id53"], [9, "id55"], [9, "id56"], [9, "id59"], [9, "id61"], [9, "id64"], [9, "id66"], [9, "id70"], [9, "id71"], [9, "id73"], [9, "id76"], [9, "id89"], [11, "translations"]], "Divers": [[9, "misc"], [9, "id4"], [9, "id11"], [9, "id14"], [9, "id18"], [9, "id20"], [9, "id24"], [9, "id31"], [9, "id34"], [9, "id42"], [9, "id49"], [9, "id60"], [9, "id62"], [9, "id78"], [9, "id92"], [9, "id95"], [9, "id112"], [9, "id114"], [9, "id131"], [9, "id140"], [9, "id147"], [9, "id151"], [9, "id158"], [9, "id169"], [9, "id172"]], "Version 0.7.29 (04/01/2024)": [[9, "version-0-7-29-2024-01-06"]], "Version 0.7.28 (23/12/2023)": [[9, "version-0-7-28-2023-12-23"]], "Version 0.7.27 (20/12/2023)": [[9, "version-0-7-27-2023-12-20"]], "Version 0.7.26 (19/11/2023)": [[9, "version-0-7-26-2023-11-19"]], "Version 0.7.25 (08/10/2023)": [[9, "version-0-7-25-2023-10-08"]], "Version 0.7.24 (04/10/2023)": [[9, "version-0-7-24-2023-10-04"]], "Version 0.7.23 (14/09/2023)": [[9, "version-0-7-23-2023-09-14"]], "Version 0.7.22 (23/08/2023)": [[9, "version-0-7-22-2023-08-23"]], "Version 0.7.21 (30/07/2023)": [[9, "version-0-7-21-2023-07-30"]], "Version 0.7.20 (22/07/2023)": [[9, "version-0-7-20-2023-07-22"]], "Version 0.7.19 (15/07/2023)": [[9, "version-0-7-19-2023-07-15"]], "Documentation": [[9, "documentation"], [9, "id33"], [9, "id67"]], "Version 0.7.18 (25/06/2023)": [[9, "version-0-7-18-2023-06-25"]], "Version 0.7.17 (03/06/2023)": [[9, "version-0-7-17-2023-06-03"]], "Version 0.7.16 (29/05/2023)": [[9, "version-0-7-16-2023-05-29"]], "Version 0.7.15 (12/04/2023)": [[9, "version-0-7-15-2023-04-12"]], "Version 0.7.14 (08/03/2023)": [[9, "version-0-7-14-2023-03-08"]], "Version 0.7.13 (05/03/2023)": [[9, "version-0-7-13-2023-03-05"]], "Version 0.7.12 (16/02/2023)": [[9, "version-0-7-12-2023-02-16"]], "Version 0.7.11 (31/12/2022)": [[9, "version-0-7-11-2022-12-31"]], "Version 0.7.10 (21/12/2022)": [[9, "version-0-7-10-2022-12-21"]], "Version 0.7.9 (11/12/2022)": [[9, "version-0-7-9-2022-12-11"]], "Version 0.7.8 (30/11/2022)": [[9, "version-0-7-8-2022-11-30"]], "Version 0.7.7 (27/11/2022)": [[9, "version-0-7-7-2022-11-27"]], "Version 0.7.6 (09/11/2022)": [[9, "version-0-7-6-2022-11-09"]], "Version 0.7.5 (09/11/2022)": [[9, "version-0-7-5-2022-11-09"]], "Version 0.7.4 (05/11/2022)": [[9, "version-0-7-4-2022-11-05"]], "Version 0.7.3 (01/11/2022)": [[9, "version-0-7-3-2022-11-01"]], "Version 0.7.2 (21/09/2022)": [[9, "version-0-7-2-2022-09-21"]], "Version 0.7.1 (21/09/2022)": [[9, "version-0-7-1-2022-09-21"]], "Version 0.7.0 (19/09/2022)": [[9, "version-0-7-0-2022-09-19"]], "Version 0.6.12 (14/09/2022)": [[9, "version-0-6-12-2022-09-14"]], "Tickets Ferm\u00e9s": [[9, "issues-closed"], [9, "id79"], [9, "id82"], [9, "id86"], [9, "id90"], [9, "id93"], [9, "id96"], [9, "id98"], [9, "id102"], [9, "id104"], [9, "id106"], [9, "id111"], [9, "id115"], [9, "id118"], [9, "id120"], [9, "id122"], [9, "id124"], [9, "id126"], [9, "id128"], [9, "id133"], [9, "id136"], [9, "id138"], [9, "id141"], [9, "id143"], [9, "id145"], [9, "id148"], [9, "id152"], [9, "id154"], [9, "id156"], [9, "id159"], [9, "id161"], [9, "id164"], [9, "id166"], [9, "id170"], [9, "id173"], [9, "id176"]], "Pull Requests": [[9, "pull-requests"], [9, "id81"], [9, "id84"], [9, "id100"], [9, "id109"], [9, "id113"], [9, "id117"], [9, "id132"]], "Version 0.6.11 (27/02/2022)": [[9, "version-0-6-11-2022-07-27"]], "Fonctionnalit\u00e9s": [[9, "features"], [9, "id87"], [9, "id97"], [9, "id107"], [11, "features"]], "Version 0.6.10 (13/07/2022)": [[9, "version-0-6-10-2022-07-13"]], "Version 0.6.9 (03/07/2022)": [[9, "version-0-6-9-2022-07-03"]], "Version 0.6.8 (22/06/2022)": [[9, "version-0-6-8-2022-06-22"]], "Version 0.6.7 (11/06/2022)": [[9, "version-0-6-7-2022-06-11"]], "Version 0.6.6 (29/05/2022)": [[9, "version-0-6-6-2022-05-29"]], "Version 0.6.5 (24/04/2022)": [[9, "version-0-6-5-2022-04-24"]], "Version 0.6.4 (23/04/2022)": [[9, "version-0-6-4-2022-04-23"]], "Version 0.6.3 (09/04/2022)": [[9, "version-0-6-3-2022-04-09"]], "Version 0.6.2 (03/04/2022)": [[9, "version-0-6-2-2022-04-03"]], "Version 0.6.1 (27/03/2022)": [[9, "version-0-6-1-2022-03-27"]], "Version 0.6.0 (27/03/2022)": [[9, "version-0-6-0-2022-03-27"]], "Version 0.5.7 (13/02/2022": [[9, "version-0-5-7-2022-02-13"]], "S\u00e9curit\u00e9": [[9, "security"]], "Version 0.5.6 (05/02/2022)": [[9, "version-0-5-6-2022-02-05"]], "Version 0.5.5 (19/01/2022)": [[9, "version-0-5-5-2022-01-19"]], "Nouvelles fonctionnalit\u00e9s": [[9, "new-features"], [9, "id125"], [9, "id127"], [9, "id129"], [9, "id134"], [9, "id149"], [9, "id153"], [9, "id155"], [9, "id157"], [9, "id162"], [9, "id167"], [9, "id171"], [9, "id174"], [9, "id177"]], "Version 0.5.4 (01/01/2022": [[9, "version-0-5-4-2022-01-01"]], "Version 0.5.3 (01/01/2022)": [[9, "version-0-5-3-2022-01-01"]], "Version 0.5.2 (19/12/2021)": [[9, "version-0-5-2-2021-12-19"]], "Version 0.5.1 (30/11/2021)": [[9, "version-0-5-1-2021-11-30"]], "Version 0.5.0 (14/11/2021)": [[9, "version-0-5-0-2021-11-14"]], "Version 0.4.9 (16/07/2021)": [[9, "version-0-4-9-2021-07-16"]], "Version 0.4.8 (03/07/2021)": [[9, "version-0-4-8-2021-07-03"]], "Version 0.4.7 (07/04/2021)": [[9, "version-0-4-7-2021-04-07"]], "Version 0.4.6 (21/02/2021)": [[9, "version-0-4-6-2021-02-21"]], "Version 0.4.5 (17/02/2021)": [[9, "version-0-4-5-2021-02-17"]], "Version 0.4.4 (31/01/2021)": [[9, "version-0-4-4-2021-01-31"]], "Version 0.4.3 (10/01/2021)": [[9, "version-0-4-3-2021-01-10"]], "Version 0.4.2 (03/01/2021)": [[9, "version-0-4-2-2021-01-03"]], "Version 0.4.1 (31/12/2020)": [[9, "version-0-4-1-2020-12-31"]], "Version 0.4.0 - FitTrackee sur PyPI (19/09/2020)": [[9, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.3.0 - Administration (15/07/2020)": [[9, "version-0-3-0-administration-2020-07-15"]], "Version 0.2.5 - Corrections et am\u00e9liorations (31/01/2020)": [[9, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.2.4 - Corrections mineures (30/01/2020)": [[9, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.3 - FitTrackee disponible en Fran\u00e7ais (29/12/2019)": [[9, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.2 - Corrections des statistiques (23/09/2019)": [[9, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.1 - Correction et am\u00e9liorations (01/09/2019)": [[9, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.0 - Statistiques (07/07/2019)": [[9, "version-0-2-0-statistics-2019-07-07"]], "Version 0.1.1 - Corrections et am\u00e9liorations (07/02/2019)": [[9, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.1.0 - Premi\u00e8re version \ud83c\udf89 (04/07/2018)": [[9, "version-0-1-0-first-release-2018-07-04"]], "Interface de ligne de commande": [[10, "command-line-interface"]], "Base de donn\u00e9es": [[10, "database"]], "ftcli db drop": [[10, "ftcli-db-drop"]], "ftcli db upgrade": [[10, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[10, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[10, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[10, "ftcli-users-clean-tokens"]], "ftcli users create": [[10, "ftcli-users-create"]], "ftcli users export_archives": [[10, "ftcli-users-export-archives"]], "ftcli users update": [[10, "ftcli-users-update"]], "Compte et pr\u00e9f\u00e9rences": [[11, "account-preferences"]], "Administration": [[11, "administration"], [11, "id1"]], "Application": [[11, "application"]], "Captures d\u2019\u00e9cran": [[11, "screenshots"]], "Tableau de bord": [[11, "dashboard"]], "Page de d\u00e9tail d\u2019une s\u00e9ance": [[11, "workout-detail"]], "Liste des s\u00e9ances": [[11, "workouts-list"]], "FitTrackee": [[12, "fittrackee"]], "Table des mati\u00e8res": [[12, "table-of-contents"]], "Installation": [[13, "installation"], [13, "id2"], [13, "id6"]], "Pr\u00e9requis": [[13, "prerequisites"]], "Variables d\u2019environnement": [[13, "environment-variables"]], "Courriels": [[13, "emails"]], "Serveur de tuiles": [[13, "map-tile-server"]], "Limitation d\u2019acc\u00e8s \u00e0 l\u2019API": [[13, "api-rate-limits"]], "Donn\u00e9es m\u00e9t\u00e9o": [[13, "weather-data"]], "A partir de PyPI": [[13, "from-pypi"], [13, "id3"]], "A partir des sources": [[13, "from-sources"], [13, "id4"]], "Environnements de d\u00e9veloppement": [[13, "dev-environment"], [13, "id5"]], "Environnements de production": [[13, "production-environment"]], "Mise \u00e0 jour": [[13, "upgrade"]], "Environnement de production": [[13, "prod-environment"]], "D\u00e9ploiement": [[13, "deployment"]], "Docker": [[13, "docker"]], "D\u00e9veloppement": [[13, "development"]], "Yunohost": [[13, "yunohost"]], "OAuth 2.0": [[14, "oauth-2-0"]], "Scopes": [[14, "scopes"]], "Flux": [[14, "flow"]], "Ressources": [[14, "resources"]], "Outils tiers": [[15, "third-party-tools"]], "Administrateur": [[16, "administrator"]], "FitTrackee ne d\u00e9marre pas": [[16, "fittrackee-fails-to-start"]], "Les images de la carte ne sont pas affich\u00e9es mais la carte est affich\u00e9e dans le d\u00e9tail de la s\u00e9ance": [[16, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "\u00c9chec du chargement ou du t\u00e9l\u00e9chargement de fichiers": [[16, "failed-to-upload-or-download-files"]], "D\u00e9pannage": [[17, "troubleshooting"]]}, "indexentries": {"api_rate_limits": [[13, "envvar-API_RATE_LIMITS"]], "app_log": [[13, "envvar-APP_LOG"]], "app_secret_key": [[13, "envvar-APP_SECRET_KEY"]], "app_settings": [[13, "envvar-APP_SETTINGS"]], "app_workers": [[13, "envvar-APP_WORKERS"]], "database_disable_pooling": [[13, "envvar-DATABASE_DISABLE_POOLING"]], "database_url": [[13, "envvar-DATABASE_URL"]], "default_staticmap": [[13, "envvar-DEFAULT_STATICMAP"]], "email_url": [[13, "envvar-EMAIL_URL"]], "flask_app": [[13, "envvar-FLASK_APP"]], "host": [[13, "envvar-HOST"]], "map_attribution": [[13, "envvar-MAP_ATTRIBUTION"]], "port": [[13, "envvar-PORT"]], "redis_url": [[13, "envvar-REDIS_URL"]], "sender_email": [[13, "envvar-SENDER_EMAIL"]], "staticmap_subdomains": [[13, "envvar-STATICMAP_SUBDOMAINS"]], "tile_server_url": [[13, "envvar-TILE_SERVER_URL"]], "ui_url": [[13, "envvar-UI_URL"]], "upload_folder": [[13, "envvar-UPLOAD_FOLDER"]], "vite_app_api_url": [[13, "envvar-VITE_APP_API_URL"]], "weather_api_key": [[13, "envvar-WEATHER_API_KEY"]], "weather_api_provider \ud83c\udd95": [[13, "envvar-WEATHER_API_PROVIDER"]], "workers_processes": [[13, "envvar-WORKERS_PROCESSES"]], "variable d'environnement": [[13, "envvar-API_RATE_LIMITS"], [13, "envvar-APP_LOG"], [13, "envvar-APP_SECRET_KEY"], [13, "envvar-APP_SETTINGS"], [13, "envvar-APP_WORKERS"], [13, "envvar-DATABASE_DISABLE_POOLING"], [13, "envvar-DATABASE_URL"], [13, "envvar-DEFAULT_STATICMAP"], [13, "envvar-EMAIL_URL"], [13, "envvar-FLASK_APP"], [13, "envvar-HOST"], [13, "envvar-MAP_ATTRIBUTION"], [13, "envvar-PORT"], [13, "envvar-REDIS_URL"], [13, "envvar-SENDER_EMAIL"], [13, "envvar-STATICMAP_SUBDOMAINS"], [13, "envvar-TILE_SERVER_URL"], [13, "envvar-UI_URL"], [13, "envvar-UPLOAD_FOLDER"], [13, "envvar-VITE_APP_API_URL"], [13, "envvar-WEATHER_API_KEY"], [13, "envvar-WEATHER_API_PROVIDER"], [13, "envvar-WORKERS_PROCESSES"]]}}) \ No newline at end of file diff --git a/docs/fr/third_party_tools.html b/docs/fr/third_party_tools.html index 99a47f37..dda8139c 100644 --- a/docs/fr/third_party_tools.html +++ b/docs/fr/third_party_tools.html @@ -5,8 +5,8 @@ - - Outils tiers - Documentation FitTrackee 0.7.29 + + Outils tiers - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -267,7 +267,7 @@
    Made with Sphinx and @pradyunsg's @@ -291,7 +291,7 @@
    -
    +
    diff --git a/docs/fr/troubleshooting/administrator.html b/docs/fr/troubleshooting/administrator.html index 6287416b..ef624c56 100644 --- a/docs/fr/troubleshooting/administrator.html +++ b/docs/fr/troubleshooting/administrator.html @@ -5,8 +5,8 @@ - - Administrateur - Documentation FitTrackee 0.7.29 + + Administrateur - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -292,7 +292,7 @@
    Made with Sphinx and @pradyunsg's @@ -337,7 +337,7 @@
    -
    +
    diff --git a/docs/fr/troubleshooting/index.html b/docs/fr/troubleshooting/index.html index 31bd5cbd..820852dc 100644 --- a/docs/fr/troubleshooting/index.html +++ b/docs/fr/troubleshooting/index.html @@ -5,8 +5,8 @@ - - Dépannage - Documentation FitTrackee 0.7.29 + + Dépannage - Documentation FitTrackee 0.7.30 @@ -126,7 +126,7 @@
    -
    @@ -153,7 +153,7 @@
    - Documentation FitTrackee 0.7.29 + Documentation FitTrackee 0.7.30 @@ -272,7 +272,7 @@
    Made with Sphinx and @pradyunsg's @@ -296,7 +296,7 @@
    -
    +
    diff --git a/docsrc/gettext/.doctrees/api/auth.doctree b/docsrc/gettext/.doctrees/api/auth.doctree index eba767e0..75ffe132 100644 Binary files a/docsrc/gettext/.doctrees/api/auth.doctree and b/docsrc/gettext/.doctrees/api/auth.doctree differ diff --git a/docsrc/gettext/.doctrees/api/configuration.doctree b/docsrc/gettext/.doctrees/api/configuration.doctree index c44f6e03..bb5ec964 100644 Binary files a/docsrc/gettext/.doctrees/api/configuration.doctree and b/docsrc/gettext/.doctrees/api/configuration.doctree differ diff --git a/docsrc/gettext/.doctrees/api/index.doctree b/docsrc/gettext/.doctrees/api/index.doctree index 23054abf..b0345355 100644 Binary files a/docsrc/gettext/.doctrees/api/index.doctree and b/docsrc/gettext/.doctrees/api/index.doctree differ diff --git a/docsrc/gettext/.doctrees/api/oauth2.doctree b/docsrc/gettext/.doctrees/api/oauth2.doctree index 24f04b1a..73043f8e 100644 Binary files a/docsrc/gettext/.doctrees/api/oauth2.doctree and b/docsrc/gettext/.doctrees/api/oauth2.doctree differ diff --git a/docsrc/gettext/.doctrees/api/records.doctree b/docsrc/gettext/.doctrees/api/records.doctree index efd9d05e..634191a8 100644 Binary files a/docsrc/gettext/.doctrees/api/records.doctree and b/docsrc/gettext/.doctrees/api/records.doctree differ diff --git a/docsrc/gettext/.doctrees/api/sports.doctree b/docsrc/gettext/.doctrees/api/sports.doctree index 51aab3fa..db570448 100644 Binary files a/docsrc/gettext/.doctrees/api/sports.doctree and b/docsrc/gettext/.doctrees/api/sports.doctree differ diff --git a/docsrc/gettext/.doctrees/api/stats.doctree b/docsrc/gettext/.doctrees/api/stats.doctree index f6b34d44..d80a2869 100644 Binary files a/docsrc/gettext/.doctrees/api/stats.doctree and b/docsrc/gettext/.doctrees/api/stats.doctree differ diff --git a/docsrc/gettext/.doctrees/api/users.doctree b/docsrc/gettext/.doctrees/api/users.doctree index 0151a6dd..a8fa7ae5 100644 Binary files a/docsrc/gettext/.doctrees/api/users.doctree and b/docsrc/gettext/.doctrees/api/users.doctree differ diff --git a/docsrc/gettext/.doctrees/api/workouts.doctree b/docsrc/gettext/.doctrees/api/workouts.doctree index 29c97daa..781af456 100644 Binary files a/docsrc/gettext/.doctrees/api/workouts.doctree and b/docsrc/gettext/.doctrees/api/workouts.doctree differ diff --git a/docsrc/gettext/.doctrees/changelog.doctree b/docsrc/gettext/.doctrees/changelog.doctree index d6ffd0cd..7b38d5b6 100644 Binary files a/docsrc/gettext/.doctrees/changelog.doctree and b/docsrc/gettext/.doctrees/changelog.doctree differ diff --git a/docsrc/gettext/.doctrees/cli.doctree b/docsrc/gettext/.doctrees/cli.doctree index fb569bb0..ec6ee291 100644 Binary files a/docsrc/gettext/.doctrees/cli.doctree and b/docsrc/gettext/.doctrees/cli.doctree differ diff --git a/docsrc/gettext/.doctrees/environment.pickle b/docsrc/gettext/.doctrees/environment.pickle index 999d8eee..36f7dff3 100644 Binary files a/docsrc/gettext/.doctrees/environment.pickle and b/docsrc/gettext/.doctrees/environment.pickle differ diff --git a/docsrc/gettext/.doctrees/features.doctree b/docsrc/gettext/.doctrees/features.doctree index 37ad4f79..a196675e 100644 Binary files a/docsrc/gettext/.doctrees/features.doctree and b/docsrc/gettext/.doctrees/features.doctree differ diff --git a/docsrc/gettext/.doctrees/index.doctree b/docsrc/gettext/.doctrees/index.doctree index 058fa25f..20933ec3 100644 Binary files a/docsrc/gettext/.doctrees/index.doctree and b/docsrc/gettext/.doctrees/index.doctree differ diff --git a/docsrc/gettext/.doctrees/installation.doctree b/docsrc/gettext/.doctrees/installation.doctree index 53765459..39d536fd 100644 Binary files a/docsrc/gettext/.doctrees/installation.doctree and b/docsrc/gettext/.doctrees/installation.doctree differ diff --git a/docsrc/gettext/.doctrees/oauth.doctree b/docsrc/gettext/.doctrees/oauth.doctree index 39b95664..d96bb421 100644 Binary files a/docsrc/gettext/.doctrees/oauth.doctree and b/docsrc/gettext/.doctrees/oauth.doctree differ diff --git a/docsrc/gettext/.doctrees/third_party_tools.doctree b/docsrc/gettext/.doctrees/third_party_tools.doctree index a0f7647b..3d14fc7d 100644 Binary files a/docsrc/gettext/.doctrees/third_party_tools.doctree and b/docsrc/gettext/.doctrees/third_party_tools.doctree differ diff --git a/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree b/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree index 37a8a6f5..520c12a5 100644 Binary files a/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree and b/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree differ diff --git a/docsrc/gettext/.doctrees/troubleshooting/index.doctree b/docsrc/gettext/.doctrees/troubleshooting/index.doctree index a09053a6..9f4bcd51 100644 Binary files a/docsrc/gettext/.doctrees/troubleshooting/index.doctree and b/docsrc/gettext/.doctrees/troubleshooting/index.doctree differ diff --git a/docsrc/gettext/docs.pot b/docsrc/gettext/docs.pot index ce4c29b7..c392c086 100644 --- a/docsrc/gettext/docs.pot +++ b/docsrc/gettext/docs.pot @@ -6,10 +6,10 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: FitTrackee 0.7.29\n" +"Project-Id-Version: FitTrackee 0.7.30\n" "\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-06 16:44+0100\n" +"POT-Creation-Date: 2024-02-04 14:50+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1428,2215 +1428,2269 @@ msgid "Change log" msgstr "" #: ../source/changelog.md:3 -msgid "Version 0.7.29 (2024/01/06)" +msgid "Version 0.7.30 (2024/02/04)" msgstr "" #: ../source/changelog.md:5 -#: ../source/changelog.md:43 -#: ../source/changelog.md:75 -#: ../source/changelog.md:248 -#: ../source/changelog.md:287 -#: ../source/changelog.md:400 -#: ../source/changelog.md:448 -#: ../source/changelog.md:521 +#: ../source/changelog.md:45 +#: ../source/changelog.md:83 +#: ../source/changelog.md:115 +#: ../source/changelog.md:288 +#: ../source/changelog.md:327 +#: ../source/changelog.md:440 +#: ../source/changelog.md:488 #: ../source/changelog.md:561 -#: ../source/changelog.md:582 -#: ../source/changelog.md:597 -#: ../source/changelog.md:621 -#: ../source/changelog.md:684 +#: ../source/changelog.md:601 +#: ../source/changelog.md:622 +#: ../source/changelog.md:637 +#: ../source/changelog.md:661 #: ../source/changelog.md:724 +#: ../source/changelog.md:764 msgid "Features and enhancements" msgstr "" #: ../source/changelog.md:7 -msgid "8aa4cff - Update loader color on dark theme" +msgid "b748459 - Update alert message colors on dark mode" msgstr "" -#: ../source/changelog.md:8 -msgid "#478 - Make application name clickable to access dashboard" -msgstr "" - -#: ../source/changelog.md:10 -#: ../source/changelog.md:47 -#: ../source/changelog.md:81 -#: ../source/changelog.md:116 -#: ../source/changelog.md:151 -#: ../source/changelog.md:158 -#: ../source/changelog.md:192 -#: ../source/changelog.md:204 -#: ../source/changelog.md:236 -#: ../source/changelog.md:253 -#: ../source/changelog.md:294 -#: ../source/changelog.md:405 -#: ../source/changelog.md:455 -#: ../source/changelog.md:501 -#: ../source/changelog.md:527 -#: ../source/changelog.md:625 -#: ../source/changelog.md:653 -#: ../source/changelog.md:664 -#: ../source/changelog.md:691 -#: ../source/changelog.md:712 -#: ../source/changelog.md:730 -#: ../source/changelog.md:746 -#: ../source/changelog.md:767 -#: ../source/changelog.md:789 -#: ../source/changelog.md:796 -#: ../source/changelog.md:816 -#: ../source/changelog.md:838 +#: ../source/changelog.md:9 +#: ../source/changelog.md:50 +#: ../source/changelog.md:87 +#: ../source/changelog.md:121 +#: ../source/changelog.md:156 +#: ../source/changelog.md:191 +#: ../source/changelog.md:198 +#: ../source/changelog.md:232 +#: ../source/changelog.md:244 +#: ../source/changelog.md:276 +#: ../source/changelog.md:293 +#: ../source/changelog.md:334 +#: ../source/changelog.md:445 +#: ../source/changelog.md:495 +#: ../source/changelog.md:541 +#: ../source/changelog.md:567 +#: ../source/changelog.md:665 +#: ../source/changelog.md:693 +#: ../source/changelog.md:704 +#: ../source/changelog.md:731 +#: ../source/changelog.md:752 +#: ../source/changelog.md:770 +#: ../source/changelog.md:786 +#: ../source/changelog.md:807 +#: ../source/changelog.md:829 +#: ../source/changelog.md:836 #: ../source/changelog.md:856 -#: ../source/changelog.md:891 -#: ../source/changelog.md:902 -#: ../source/changelog.md:913 -#: ../source/changelog.md:925 -#: ../source/changelog.md:945 -#: ../source/changelog.md:951 -#: ../source/changelog.md:1003 -#: ../source/changelog.md:1027 -#: ../source/changelog.md:1038 -#: ../source/changelog.md:1049 -#: ../source/changelog.md:1094 -#: ../source/changelog.md:1127 -#: ../source/changelog.md:1139 -#: ../source/changelog.md:1150 -#: ../source/changelog.md:1166 +#: ../source/changelog.md:878 +#: ../source/changelog.md:896 +#: ../source/changelog.md:931 +#: ../source/changelog.md:942 +#: ../source/changelog.md:953 +#: ../source/changelog.md:965 +#: ../source/changelog.md:985 +#: ../source/changelog.md:991 +#: ../source/changelog.md:1043 +#: ../source/changelog.md:1067 +#: ../source/changelog.md:1078 +#: ../source/changelog.md:1089 +#: ../source/changelog.md:1134 +#: ../source/changelog.md:1167 #: ../source/changelog.md:1179 -#: ../source/changelog.md:1191 -#: ../source/changelog.md:1212 -#: ../source/changelog.md:1290 -#: ../source/changelog.md:1307 -#: ../source/changelog.md:1318 -#: ../source/changelog.md:1338 -#: ../source/changelog.md:1373 +#: ../source/changelog.md:1190 +#: ../source/changelog.md:1206 +#: ../source/changelog.md:1219 +#: ../source/changelog.md:1231 +#: ../source/changelog.md:1252 +#: ../source/changelog.md:1330 +#: ../source/changelog.md:1347 +#: ../source/changelog.md:1358 +#: ../source/changelog.md:1378 +#: ../source/changelog.md:1413 msgid "Bugs Fixed" msgstr "" +#: ../source/changelog.md:11 +msgid "PR#481 - Handle keyboard navigation on dropdowns" +msgstr "" + #: ../source/changelog.md:12 -msgid "PR#479 - Minor fixes on UI" +msgid "3821e37 - Make calendar arrows accessible to keyboard navigation" +msgstr "" + +#: ../source/changelog.md:13 +msgid "PR#488 - CLI - fix user creation when user already exists with same email" msgstr "" #: ../source/changelog.md:14 -#: ../source/changelog.md:51 -#: ../source/changelog.md:86 -#: ../source/changelog.md:121 -#: ../source/changelog.md:162 -#: ../source/changelog.md:210 -#: ../source/changelog.md:259 -#: ../source/changelog.md:300 -#: ../source/changelog.md:344 -#: ../source/changelog.md:381 -#: ../source/changelog.md:410 -#: ../source/changelog.md:460 -#: ../source/changelog.md:505 -#: ../source/changelog.md:534 -#: ../source/changelog.md:549 -#: ../source/changelog.md:566 -#: ../source/changelog.md:586 -#: ../source/changelog.md:601 -#: ../source/changelog.md:614 -#: ../source/changelog.md:629 -#: ../source/changelog.md:642 -#: ../source/changelog.md:657 -#: ../source/changelog.md:671 -#: ../source/changelog.md:696 -#: ../source/changelog.md:705 -#: ../source/changelog.md:716 -#: ../source/changelog.md:735 -#: ../source/changelog.md:821 +msgid "PR#489 - Handle keyboard navigation on calendar" +msgstr "" + +#: ../source/changelog.md:16 +#: ../source/changelog.md:54 +#: ../source/changelog.md:91 +#: ../source/changelog.md:126 +#: ../source/changelog.md:161 +#: ../source/changelog.md:202 +#: ../source/changelog.md:250 +#: ../source/changelog.md:299 +#: ../source/changelog.md:340 +#: ../source/changelog.md:384 +#: ../source/changelog.md:421 +#: ../source/changelog.md:450 +#: ../source/changelog.md:500 +#: ../source/changelog.md:545 +#: ../source/changelog.md:574 +#: ../source/changelog.md:589 +#: ../source/changelog.md:606 +#: ../source/changelog.md:626 +#: ../source/changelog.md:641 +#: ../source/changelog.md:654 +#: ../source/changelog.md:669 +#: ../source/changelog.md:682 +#: ../source/changelog.md:697 +#: ../source/changelog.md:711 +#: ../source/changelog.md:736 +#: ../source/changelog.md:745 +#: ../source/changelog.md:756 +#: ../source/changelog.md:775 +#: ../source/changelog.md:861 #: ../source/features.rst:203 msgid "Translations" msgstr "" -#: ../source/changelog.md:16 -msgid "PR#476 - Translations update (Polish)" -msgstr "" - -#: ../source/changelog.md:17 -msgid "PR#477 - Translations update (Dutch)" +#: ../source/changelog.md:18 +msgid "PR#482 - Translations update (Galician and Spanish)" msgstr "" #: ../source/changelog.md:19 -#: ../source/changelog.md:56 -#: ../source/changelog.md:95 -#: ../source/changelog.md:134 -#: ../source/changelog.md:175 -#: ../source/changelog.md:217 -#: ../source/changelog.md:266 -#: ../source/changelog.md:318 -#: ../source/changelog.md:365 -#: ../source/changelog.md:386 -#: ../source/changelog.md:418 -#: ../source/changelog.md:470 -msgid "Translation status:" -msgstr "" - -#: ../source/changelog.md:20 -#: ../source/changelog.md:135 -#: ../source/changelog.md:176 -#: ../source/changelog.md:218 -#: ../source/changelog.md:366 -msgid "Dutch: 100%" +msgid "PR#484 - Translations update (German)" msgstr "" #: ../source/changelog.md:21 -#: ../source/changelog.md:58 -#: ../source/changelog.md:97 -#: ../source/changelog.md:136 -#: ../source/changelog.md:177 -#: ../source/changelog.md:219 -#: ../source/changelog.md:268 -#: ../source/changelog.md:320 -#: ../source/changelog.md:367 -#: ../source/changelog.md:388 -#: ../source/changelog.md:420 -#: ../source/changelog.md:472 -msgid "English: 100%" +#: ../source/changelog.md:59 +#: ../source/changelog.md:96 +#: ../source/changelog.md:135 +#: ../source/changelog.md:174 +#: ../source/changelog.md:215 +#: ../source/changelog.md:257 +#: ../source/changelog.md:306 +#: ../source/changelog.md:358 +#: ../source/changelog.md:405 +#: ../source/changelog.md:426 +#: ../source/changelog.md:458 +#: ../source/changelog.md:510 +msgid "Translation status:" msgstr "" #: ../source/changelog.md:22 -#: ../source/changelog.md:59 -#: ../source/changelog.md:98 -#: ../source/changelog.md:137 -#: ../source/changelog.md:178 -#: ../source/changelog.md:220 -#: ../source/changelog.md:269 -#: ../source/changelog.md:321 -#: ../source/changelog.md:368 -#: ../source/changelog.md:389 -#: ../source/changelog.md:421 -#: ../source/changelog.md:473 -msgid "French: 100%" -msgstr "" - -#: ../source/changelog.md:23 -#: ../source/changelog.md:60 -#: ../source/changelog.md:138 -#: ../source/changelog.md:179 -#: ../source/changelog.md:221 -#: ../source/changelog.md:270 -#: ../source/changelog.md:369 -#: ../source/changelog.md:390 -#: ../source/changelog.md:474 -msgid "Galician: 100%" -msgstr "" - -#: ../source/changelog.md:24 -#: ../source/changelog.md:61 -#: ../source/changelog.md:139 -#: ../source/changelog.md:180 -#: ../source/changelog.md:222 -#: ../source/changelog.md:370 -#: ../source/changelog.md:475 -msgid "German: 100%" -msgstr "" - -#: ../source/changelog.md:25 -#: ../source/changelog.md:62 -msgid "Italian: 84%" -msgstr "" - -#: ../source/changelog.md:26 -#: ../source/changelog.md:63 -msgid "Norwegian Bokmål: 60%" -msgstr "" - -#: ../source/changelog.md:27 -#: ../source/changelog.md:142 -#: ../source/changelog.md:183 -#: ../source/changelog.md:225 -msgid "Polish: 100%" -msgstr "" - -#: ../source/changelog.md:28 -#: ../source/changelog.md:65 -#: ../source/changelog.md:143 -#: ../source/changelog.md:184 -#: ../source/changelog.md:226 -#: ../source/changelog.md:275 -#: ../source/changelog.md:327 -#: ../source/changelog.md:374 -#: ../source/changelog.md:395 +#: ../source/changelog.md:136 #: ../source/changelog.md:427 -#: ../source/changelog.md:478 -msgid "Spanish: 100%" -msgstr "" - -#: ../source/changelog.md:30 -#: ../source/changelog.md:90 -#: ../source/changelog.md:126 -#: ../source/changelog.md:167 -#: ../source/changelog.md:197 -#: ../source/changelog.md:241 -#: ../source/changelog.md:312 -#: ../source/changelog.md:359 -#: ../source/changelog.md:480 -#: ../source/changelog.md:553 -#: ../source/changelog.md:633 -#: ../source/changelog.md:646 -#: ../source/changelog.md:752 -#: ../source/changelog.md:844 -#: ../source/changelog.md:865 -#: ../source/changelog.md:973 -#: ../source/changelog.md:989 -#: ../source/changelog.md:1098 -#: ../source/changelog.md:1154 -#: ../source/changelog.md:1195 -#: ../source/changelog.md:1221 -#: ../source/changelog.md:1276 -#: ../source/changelog.md:1342 -#: ../source/changelog.md:1357 -msgid "Misc" -msgstr "" - -#: ../source/changelog.md:32 -msgid "PR#475 - Build - use poetry-core instead of poetry" -msgstr "" - -#: ../source/changelog.md:35 -#: ../source/changelog.md:67 -#: ../source/changelog.md:106 -#: ../source/changelog.md:145 -#: ../source/changelog.md:186 -#: ../source/changelog.md:228 -#: ../source/changelog.md:277 -#: ../source/changelog.md:329 -#: ../source/changelog.md:431 -#: ../source/changelog.md:485 -#: ../source/changelog.md:540 -#: ../source/changelog.md:572 -#: ../source/changelog.md:829 -#: ../source/changelog.md:1112 -msgid "Thanks to the contributors:" -msgstr "" - -#: ../source/changelog.md:36 -msgid "@traxys" -msgstr "" - -#: ../source/changelog.md:37 -msgid "Mariuz" -msgstr "" - -#: ../source/changelog.md:38 -msgid "Koen" -msgstr "" - -#: ../source/changelog.md:41 -msgid "Version 0.7.28 (2023/12/23)" -msgstr "" - -#: ../source/changelog.md:45 -msgid "PR#474 - Improve links display" -msgstr "" - -#: ../source/changelog.md:49 -msgid "6e215aa - fix background color on dark theme when modal is displayed" -msgstr "" - -#: ../source/changelog.md:53 -msgid "PR#473 - Translations update (Galician, Spanish and German)" -msgstr "" - -#: ../source/changelog.md:57 -#: ../source/changelog.md:471 -msgid "Dutch: 98%" -msgstr "" - -#: ../source/changelog.md:64 -msgid "Polish: 98%" -msgstr "" - -#: ../source/changelog.md:68 -#: ../source/changelog.md:108 -#: ../source/changelog.md:278 -#: ../source/changelog.md:331 -#: ../source/changelog.md:433 -#: ../source/changelog.md:489 -msgid "@gallegonovato" -msgstr "" - -#: ../source/changelog.md:69 -#: ../source/changelog.md:230 -#: ../source/changelog.md:490 -#: ../source/changelog.md:542 -#: ../source/changelog.md:575 -msgid "@qwerty287" -msgstr "" - -#: ../source/changelog.md:70 -#: ../source/changelog.md:109 -#: ../source/changelog.md:187 -#: ../source/changelog.md:279 -#: ../source/changelog.md:332 -#: ../source/changelog.md:436 -#: ../source/changelog.md:491 -msgid "@xmgz" -msgstr "" - -#: ../source/changelog.md:73 -msgid "Version 0.7.27 (2023/12/20)" -msgstr "" - -#: ../source/changelog.md:77 -msgid "#113 - add a dark mode" -msgstr "" - -#: ../source/changelog.md:78 -msgid "PR#464 - Update user preferences display" -msgstr "" - -#: ../source/changelog.md:79 -msgid "PR#471 - add new sport: \"Cycling (Trekking)\"" -msgstr "" - -#: ../source/changelog.md:83 -msgid "PR#469 - change UI display only on login ou user preferences update" -msgstr "" - -#: ../source/changelog.md:84 -msgid "PR#472 - fix redirection when resetting password" -msgstr "" - -#: ../source/changelog.md:88 -msgid "PR#468 - Translations update (Galician & Spanish)" -msgstr "" - -#: ../source/changelog.md:92 -msgid "#456 - Drop PostgreSQL 11 support" -msgstr "" - -#: ../source/changelog.md:96 -#: ../source/changelog.md:387 -#: ../source/changelog.md:419 +#: ../source/changelog.md:459 msgid "Dutch: 99%" msgstr "" +#: ../source/changelog.md:23 +#: ../source/changelog.md:61 +#: ../source/changelog.md:98 +#: ../source/changelog.md:137 +#: ../source/changelog.md:176 +#: ../source/changelog.md:217 +#: ../source/changelog.md:259 +#: ../source/changelog.md:308 +#: ../source/changelog.md:360 +#: ../source/changelog.md:407 +#: ../source/changelog.md:428 +#: ../source/changelog.md:460 +#: ../source/changelog.md:512 +msgid "English: 100%" +msgstr "" + +#: ../source/changelog.md:24 +#: ../source/changelog.md:62 #: ../source/changelog.md:99 -#: ../source/changelog.md:422 -msgid "Galician: 99%" +#: ../source/changelog.md:138 +#: ../source/changelog.md:177 +#: ../source/changelog.md:218 +#: ../source/changelog.md:260 +#: ../source/changelog.md:309 +#: ../source/changelog.md:361 +#: ../source/changelog.md:408 +#: ../source/changelog.md:429 +#: ../source/changelog.md:461 +#: ../source/changelog.md:513 +msgid "French: 100%" msgstr "" +#: ../source/changelog.md:25 +#: ../source/changelog.md:63 #: ../source/changelog.md:100 -#: ../source/changelog.md:391 -#: ../source/changelog.md:423 -msgid "German: 99%" +#: ../source/changelog.md:178 +#: ../source/changelog.md:219 +#: ../source/changelog.md:261 +#: ../source/changelog.md:310 +#: ../source/changelog.md:409 +#: ../source/changelog.md:430 +#: ../source/changelog.md:514 +msgid "Galician: 100%" msgstr "" +#: ../source/changelog.md:26 +#: ../source/changelog.md:64 #: ../source/changelog.md:101 -#: ../source/changelog.md:140 -#: ../source/changelog.md:181 -#: ../source/changelog.md:223 -#: ../source/changelog.md:272 -#: ../source/changelog.md:324 -msgid "Italian: 85%" +#: ../source/changelog.md:179 +#: ../source/changelog.md:220 +#: ../source/changelog.md:262 +#: ../source/changelog.md:410 +#: ../source/changelog.md:515 +msgid "German: 100%" msgstr "" +#: ../source/changelog.md:27 +#: ../source/changelog.md:65 #: ../source/changelog.md:102 -#: ../source/changelog.md:141 -msgid "Norwegian Bokmål: 61%" +msgid "Italian: 84%" msgstr "" +#: ../source/changelog.md:28 +#: ../source/changelog.md:66 #: ../source/changelog.md:103 +msgid "Norwegian Bokmål: 60%" +msgstr "" + +#: ../source/changelog.md:29 +#: ../source/changelog.md:143 msgid "Polish: 99%" msgstr "" -#: ../source/changelog.md:104 -msgid "Spanish: 99%" +#: ../source/changelog.md:30 +#: ../source/changelog.md:68 +#: ../source/changelog.md:105 +#: ../source/changelog.md:183 +#: ../source/changelog.md:224 +#: ../source/changelog.md:266 +#: ../source/changelog.md:315 +#: ../source/changelog.md:367 +#: ../source/changelog.md:414 +#: ../source/changelog.md:435 +#: ../source/changelog.md:467 +#: ../source/changelog.md:518 +msgid "Spanish: 100%" msgstr "" +#: ../source/changelog.md:32 +#: ../source/changelog.md:70 +#: ../source/changelog.md:130 +#: ../source/changelog.md:166 +#: ../source/changelog.md:207 +#: ../source/changelog.md:237 +#: ../source/changelog.md:281 +#: ../source/changelog.md:352 +#: ../source/changelog.md:399 +#: ../source/changelog.md:520 +#: ../source/changelog.md:593 +#: ../source/changelog.md:673 +#: ../source/changelog.md:686 +#: ../source/changelog.md:792 +#: ../source/changelog.md:884 +#: ../source/changelog.md:905 +#: ../source/changelog.md:1013 +#: ../source/changelog.md:1029 +#: ../source/changelog.md:1138 +#: ../source/changelog.md:1194 +#: ../source/changelog.md:1235 +#: ../source/changelog.md:1261 +#: ../source/changelog.md:1316 +#: ../source/changelog.md:1382 +#: ../source/changelog.md:1397 +msgid "Misc" +msgstr "" + +#: ../source/changelog.md:34 +msgid "aff4d68 - CI - update actions version" +msgstr "" + +#: ../source/changelog.md:37 +#: ../source/changelog.md:75 #: ../source/changelog.md:107 -msgid "@DavidHenryThoreau" +#: ../source/changelog.md:146 +#: ../source/changelog.md:185 +#: ../source/changelog.md:226 +#: ../source/changelog.md:268 +#: ../source/changelog.md:317 +#: ../source/changelog.md:369 +#: ../source/changelog.md:471 +#: ../source/changelog.md:525 +#: ../source/changelog.md:580 +#: ../source/changelog.md:612 +#: ../source/changelog.md:869 +#: ../source/changelog.md:1152 +msgid "Thanks to the contributors:" msgstr "" -#: ../source/changelog.md:111 -#: ../source/changelog.md:282 -#: ../source/changelog.md:334 -#: ../source/changelog.md:438 -#: ../source/changelog.md:496 -#: ../source/changelog.md:544 -#: ../source/changelog.md:592 -#: ../source/changelog.md:606 -#: ../source/changelog.md:700 -#: ../source/changelog.md:739 -msgid "Note: This release contains database migration (see upgrade instructions in documentation)" +#: ../source/changelog.md:38 +#: ../source/changelog.md:108 +#: ../source/changelog.md:148 +#: ../source/changelog.md:318 +#: ../source/changelog.md:371 +#: ../source/changelog.md:473 +#: ../source/changelog.md:529 +msgid "@gallegonovato" msgstr "" -#: ../source/changelog.md:114 -msgid "Version 0.7.26 (2023/11/19)" +#: ../source/changelog.md:39 +#: ../source/changelog.md:109 +#: ../source/changelog.md:270 +#: ../source/changelog.md:530 +#: ../source/changelog.md:582 +#: ../source/changelog.md:615 +msgid "@qwerty287" +msgstr "" + +#: ../source/changelog.md:40 +#: ../source/changelog.md:110 +#: ../source/changelog.md:149 +#: ../source/changelog.md:227 +#: ../source/changelog.md:319 +#: ../source/changelog.md:372 +#: ../source/changelog.md:476 +#: ../source/changelog.md:531 +msgid "@xmgz" +msgstr "" + +#: ../source/changelog.md:43 +msgid "Version 0.7.29 (2024/01/06)" +msgstr "" + +#: ../source/changelog.md:47 +msgid "8aa4cff - Update loader color on dark theme" +msgstr "" + +#: ../source/changelog.md:48 +msgid "#478 - Make application name clickable to access dashboard" +msgstr "" + +#: ../source/changelog.md:52 +msgid "PR#479 - Minor fixes on UI" +msgstr "" + +#: ../source/changelog.md:56 +msgid "PR#476 - Translations update (Polish)" +msgstr "" + +#: ../source/changelog.md:57 +msgid "PR#477 - Translations update (Dutch)" +msgstr "" + +#: ../source/changelog.md:60 +#: ../source/changelog.md:175 +#: ../source/changelog.md:216 +#: ../source/changelog.md:258 +#: ../source/changelog.md:406 +msgid "Dutch: 100%" +msgstr "" + +#: ../source/changelog.md:67 +#: ../source/changelog.md:182 +#: ../source/changelog.md:223 +#: ../source/changelog.md:265 +msgid "Polish: 100%" +msgstr "" + +#: ../source/changelog.md:72 +msgid "PR#475 - Build - use poetry-core instead of poetry" +msgstr "" + +#: ../source/changelog.md:76 +msgid "@traxys" +msgstr "" + +#: ../source/changelog.md:77 +msgid "Mariuz" +msgstr "" + +#: ../source/changelog.md:78 +msgid "Koen" +msgstr "" + +#: ../source/changelog.md:81 +msgid "Version 0.7.28 (2023/12/23)" +msgstr "" + +#: ../source/changelog.md:85 +msgid "PR#474 - Improve links display" +msgstr "" + +#: ../source/changelog.md:89 +msgid "6e215aa - fix background color on dark theme when modal is displayed" +msgstr "" + +#: ../source/changelog.md:93 +msgid "PR#473 - Translations update (Galician, Spanish and German)" +msgstr "" + +#: ../source/changelog.md:97 +#: ../source/changelog.md:511 +msgid "Dutch: 98%" +msgstr "" + +#: ../source/changelog.md:104 +msgid "Polish: 98%" +msgstr "" + +#: ../source/changelog.md:113 +msgid "Version 0.7.27 (2023/12/20)" +msgstr "" + +#: ../source/changelog.md:117 +msgid "#113 - add a dark mode" msgstr "" #: ../source/changelog.md:118 -msgid "#224 - Missing elevation results in incorrect ascent/descent total" +msgid "PR#464 - Update user preferences display" +msgstr "" + +#: ../source/changelog.md:119 +msgid "PR#471 - add new sport: \"Cycling (Trekking)\"" msgstr "" #: ../source/changelog.md:123 -msgid "PR#444 - Translations update (Norwegian Bokmål)" +msgid "PR#469 - change UI display only on login ou user preferences update" +msgstr "" + +#: ../source/changelog.md:124 +msgid "PR#472 - fix redirection when resetting password" msgstr "" #: ../source/changelog.md:128 +msgid "PR#468 - Translations update (Galician & Spanish)" +msgstr "" + +#: ../source/changelog.md:132 +msgid "#456 - Drop PostgreSQL 11 support" +msgstr "" + +#: ../source/changelog.md:139 +#: ../source/changelog.md:462 +msgid "Galician: 99%" +msgstr "" + +#: ../source/changelog.md:140 +#: ../source/changelog.md:431 +#: ../source/changelog.md:463 +msgid "German: 99%" +msgstr "" + +#: ../source/changelog.md:141 +#: ../source/changelog.md:180 +#: ../source/changelog.md:221 +#: ../source/changelog.md:263 +#: ../source/changelog.md:312 +#: ../source/changelog.md:364 +msgid "Italian: 85%" +msgstr "" + +#: ../source/changelog.md:142 +#: ../source/changelog.md:181 +msgid "Norwegian Bokmål: 61%" +msgstr "" + +#: ../source/changelog.md:144 +msgid "Spanish: 99%" +msgstr "" + +#: ../source/changelog.md:147 +msgid "@DavidHenryThoreau" +msgstr "" + +#: ../source/changelog.md:151 +#: ../source/changelog.md:322 +#: ../source/changelog.md:374 +#: ../source/changelog.md:478 +#: ../source/changelog.md:536 +#: ../source/changelog.md:584 +#: ../source/changelog.md:632 +#: ../source/changelog.md:646 +#: ../source/changelog.md:740 +#: ../source/changelog.md:779 +msgid "Note: This release contains database migration (see upgrade instructions in documentation)" +msgstr "" + +#: ../source/changelog.md:154 +msgid "Version 0.7.26 (2023/11/19)" +msgstr "" + +#: ../source/changelog.md:158 +msgid "#224 - Missing elevation results in incorrect ascent/descent total" +msgstr "" + +#: ../source/changelog.md:163 +msgid "PR#444 - Translations update (Norwegian Bokmål)" +msgstr "" + +#: ../source/changelog.md:168 msgid "In addition to dependencies update:" msgstr "" -#: ../source/changelog.md:130 +#: ../source/changelog.md:170 msgid "PR#449 - Update vue, tooling and chart library" msgstr "" -#: ../source/changelog.md:131 +#: ../source/changelog.md:171 msgid "PR#450 - Update gpxpy to 1.6.1" msgstr "" -#: ../source/changelog.md:146 -#: ../source/changelog.md:487 +#: ../source/changelog.md:186 +#: ../source/changelog.md:527 msgid "@comradekingu" msgstr "" -#: ../source/changelog.md:149 +#: ../source/changelog.md:189 msgid "Version 0.7.25 (2023/10/08)" msgstr "" -#: ../source/changelog.md:153 +#: ../source/changelog.md:193 msgid "#441 - Errors after upgrade to 0.7.24" msgstr "" -#: ../source/changelog.md:156 +#: ../source/changelog.md:196 msgid "Version 0.7.24 (2023/10/04)" msgstr "" -#: ../source/changelog.md:160 +#: ../source/changelog.md:200 msgid "PR#433 - Handle encoded password in EMAIL_URL" msgstr "" -#: ../source/changelog.md:164 +#: ../source/changelog.md:204 msgid "PR#427 - fix typos and translations + refacto" msgstr "" -#: ../source/changelog.md:165 +#: ../source/changelog.md:205 msgid "PR#431 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:169 +#: ../source/changelog.md:209 msgid "PR#428 - CI - Add PostgreSQL 16" msgstr "" -#: ../source/changelog.md:170 +#: ../source/changelog.md:210 msgid "2bcff2e - API - update Flask to 3.0+" msgstr "" -#: ../source/changelog.md:171 +#: ../source/changelog.md:211 msgid "PR#436 - CI - Add Python 3.12" msgstr "" -#: ../source/changelog.md:172 +#: ../source/changelog.md:212 msgid "PR#438 - CI - update workflows" msgstr "" -#: ../source/changelog.md:182 -#: ../source/changelog.md:224 -#: ../source/changelog.md:273 -#: ../source/changelog.md:325 -#: ../source/changelog.md:477 +#: ../source/changelog.md:222 +#: ../source/changelog.md:264 +#: ../source/changelog.md:313 +#: ../source/changelog.md:365 +#: ../source/changelog.md:517 msgid "Norwegian Bokmål: 35%" msgstr "" -#: ../source/changelog.md:190 +#: ../source/changelog.md:230 msgid "Version 0.7.23 (2023/09/14)" msgstr "" -#: ../source/changelog.md:194 +#: ../source/changelog.md:234 msgid "PR#421 - remove darksky from available weather providers in .env" msgstr "" -#: ../source/changelog.md:195 +#: ../source/changelog.md:235 msgid "PR#426 - Update default tile server (thanks to @astridx)" msgstr "" -#: ../source/changelog.md:199 +#: ../source/changelog.md:239 msgid "PR#422 - CI - fix e2e tests with packaged version" msgstr "" -#: ../source/changelog.md:202 +#: ../source/changelog.md:242 msgid "Version 0.7.22 (2023/08/23)" msgstr "" -#: ../source/changelog.md:206 +#: ../source/changelog.md:246 msgid "PR#411 - Fix various typos" msgstr "" -#: ../source/changelog.md:207 +#: ../source/changelog.md:247 msgid "PR#416 - fix modal navigation and closing" msgstr "" -#: ../source/changelog.md:212 +#: ../source/changelog.md:252 msgid "PR#410 - Translations update (German)" msgstr "" -#: ../source/changelog.md:213 +#: ../source/changelog.md:253 msgid "PR#415 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:214 +#: ../source/changelog.md:254 msgid "PR#417 - Translations update (Polish)" msgstr "" -#: ../source/changelog.md:215 +#: ../source/changelog.md:255 msgid "PR#418 - Translations update (Dutch)" msgstr "" -#: ../source/changelog.md:229 -#: ../source/changelog.md:432 -#: ../source/changelog.md:486 -#: ../source/changelog.md:541 -#: ../source/changelog.md:573 +#: ../source/changelog.md:269 +#: ../source/changelog.md:472 +#: ../source/changelog.md:526 +#: ../source/changelog.md:581 +#: ../source/changelog.md:613 msgid "@bjornclauw" msgstr "" -#: ../source/changelog.md:231 -#: ../source/changelog.md:280 +#: ../source/changelog.md:271 +#: ../source/changelog.md:320 msgid "Mariusz" msgstr "" -#: ../source/changelog.md:234 +#: ../source/changelog.md:274 msgid "Version 0.7.21 (2023/07/30)" msgstr "" -#: ../source/changelog.md:238 +#: ../source/changelog.md:278 msgid "#407 - Workout display error when speeds are zero" msgstr "" -#: ../source/changelog.md:243 +#: ../source/changelog.md:283 msgid "PR#409 - CI - update actions version" msgstr "" -#: ../source/changelog.md:246 +#: ../source/changelog.md:286 msgid "Version 0.7.20 (2023/07/22)" msgstr "" -#: ../source/changelog.md:250 +#: ../source/changelog.md:290 msgid "#400 - Add new sport: open water swimming" msgstr "" -#: ../source/changelog.md:255 +#: ../source/changelog.md:295 msgid "PR#398 - Fix language dropdown label" msgstr "" -#: ../source/changelog.md:256 +#: ../source/changelog.md:296 msgid "#402 - handle gpx file without elevation" msgstr "" -#: ../source/changelog.md:261 +#: ../source/changelog.md:301 msgid "PR#399 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:262 +#: ../source/changelog.md:302 msgid "PR#401 - Translations update (Galician and Polish)" msgstr "" -#: ../source/changelog.md:263 +#: ../source/changelog.md:303 msgid "PR#406 - Translations update (Galician and Spanish)" msgstr "" -#: ../source/changelog.md:267 -#: ../source/changelog.md:319 +#: ../source/changelog.md:307 +#: ../source/changelog.md:359 msgid "Dutch: 97%" msgstr "" -#: ../source/changelog.md:271 -#: ../source/changelog.md:323 +#: ../source/changelog.md:311 +#: ../source/changelog.md:363 msgid "German: 97%" msgstr "" -#: ../source/changelog.md:274 +#: ../source/changelog.md:314 msgid "Polish: 56%" msgstr "" -#: ../source/changelog.md:285 +#: ../source/changelog.md:325 msgid "Version 0.7.19 (2023/07/15)" msgstr "" -#: ../source/changelog.md:289 +#: ../source/changelog.md:329 msgid "PR#380 - Update documentation link" msgstr "" -#: ../source/changelog.md:290 +#: ../source/changelog.md:330 msgid "#390 - Improve UI" msgstr "" -#: ../source/changelog.md:291 +#: ../source/changelog.md:331 msgid "#391 - Add new sport: paragliding" msgstr "" -#: ../source/changelog.md:296 +#: ../source/changelog.md:336 msgid "#384 - Inconsistent page with between workout with and without GPS data" msgstr "" -#: ../source/changelog.md:297 +#: ../source/changelog.md:337 msgid "#393 - PIL.Image module has no attribute ANTIALIAS" msgstr "" -#: ../source/changelog.md:302 +#: ../source/changelog.md:342 msgid "PR#394 - Translations update (Galician)" msgstr "" -#: ../source/changelog.md:303 +#: ../source/changelog.md:343 msgid "PR#397 - Translations update (Spanish)" msgstr "" -#: ../source/changelog.md:306 -#: ../source/changelog.md:353 -#: ../source/changelog.md:675 +#: ../source/changelog.md:346 +#: ../source/changelog.md:393 +#: ../source/changelog.md:715 msgid "Documentation" msgstr "" -#: ../source/changelog.md:308 +#: ../source/changelog.md:348 msgid "PR#386 - Minor fix in CONTRIBUTING.md" msgstr "" -#: ../source/changelog.md:309 +#: ../source/changelog.md:349 msgid "PR#388 - Minor typo in CONTRIBUTING.md" msgstr "" -#: ../source/changelog.md:314 +#: ../source/changelog.md:354 msgid "#395 - CI - test a packaged version of FitTrackee" msgstr "" -#: ../source/changelog.md:315 +#: ../source/changelog.md:355 msgid "cc3fe1c CI - update python and postgresql default versions" msgstr "" -#: ../source/changelog.md:322 +#: ../source/changelog.md:362 msgid "Galician: 98%" msgstr "" -#: ../source/changelog.md:326 +#: ../source/changelog.md:366 msgid "Polish: 42%" msgstr "" -#: ../source/changelog.md:330 +#: ../source/changelog.md:370 msgid "@dkm" msgstr "" -#: ../source/changelog.md:337 +#: ../source/changelog.md:377 msgid "Version 0.7.18 (2023/06/25)" msgstr "" -#: ../source/changelog.md:339 +#: ../source/changelog.md:379 msgid "Polish is available in FitTrackee interface (partially translated).
    Documentation is now translated in French (note: documentation translations are not yet available on Weblate)." msgstr "" -#: ../source/changelog.md:342 +#: ../source/changelog.md:382 msgid "Important: Python 3.7 is no longer supported, the minimum version is now Python 3.8.1." msgstr "" -#: ../source/changelog.md:346 +#: ../source/changelog.md:386 msgid "#351 - [Translation Request] Polish" msgstr "" -#: ../source/changelog.md:347 +#: ../source/changelog.md:387 msgid "PR#370 - Translations update (Dutch, thanks to @bjornclauw)" msgstr "" -#: ../source/changelog.md:348 +#: ../source/changelog.md:388 msgid "PR#371 - Translations update (Polish, thanks to Mariusz on Weblate)" msgstr "" -#: ../source/changelog.md:349 +#: ../source/changelog.md:389 msgid "PR#375 - Translations update (French, thanks to @Thovi98)" msgstr "" -#: ../source/changelog.md:350 +#: ../source/changelog.md:390 msgid "PR#376 - Translations update (German, thanks to @qwerty287)" msgstr "" -#: ../source/changelog.md:355 +#: ../source/changelog.md:395 msgid "1375986 - Change documentation theme for Furo" msgstr "" -#: ../source/changelog.md:356 +#: ../source/changelog.md:396 msgid "#377 - Init documentation translation" msgstr "" -#: ../source/changelog.md:361 +#: ../source/changelog.md:401 msgid "#354 - Drop support for Python 3.7" msgstr "" -#: ../source/changelog.md:362 +#: ../source/changelog.md:402 msgid "PR#374 - Docker - install fittrackee in a virtualenv" msgstr "" -#: ../source/changelog.md:371 -#: ../source/changelog.md:392 -#: ../source/changelog.md:424 -#: ../source/changelog.md:476 +#: ../source/changelog.md:411 +#: ../source/changelog.md:432 +#: ../source/changelog.md:464 +#: ../source/changelog.md:516 msgid "Italian: 87%" msgstr "" -#: ../source/changelog.md:372 -#: ../source/changelog.md:393 -#: ../source/changelog.md:425 +#: ../source/changelog.md:412 +#: ../source/changelog.md:433 +#: ../source/changelog.md:465 msgid "Norwegian Bokmål: 36%" msgstr "" -#: ../source/changelog.md:373 +#: ../source/changelog.md:413 msgid "Polish: 43%" msgstr "" -#: ../source/changelog.md:376 +#: ../source/changelog.md:416 msgid "Thanks to all contributors." msgstr "" -#: ../source/changelog.md:379 +#: ../source/changelog.md:419 msgid "Version 0.7.17 (2023/06/03)" msgstr "" -#: ../source/changelog.md:383 +#: ../source/changelog.md:423 msgid "PR#366, PR#369 - Translations update from Hosted Weblate (Galician, thanks to @xmgz)" msgstr "" -#: ../source/changelog.md:384 +#: ../source/changelog.md:424 msgid "PR#367 - Translations update (Spanish, French)" msgstr "" -#: ../source/changelog.md:394 -#: ../source/changelog.md:426 +#: ../source/changelog.md:434 +#: ../source/changelog.md:466 msgid "Polish: 3%" msgstr "" -#: ../source/changelog.md:398 +#: ../source/changelog.md:438 msgid "Version 0.7.16 (2023/05/29)" msgstr "" -#: ../source/changelog.md:402 +#: ../source/changelog.md:442 msgid "PR#358 - Add user preference for filtering of GPX speed data" msgstr "" -#: ../source/changelog.md:407 +#: ../source/changelog.md:447 msgid "#359 - Footer overlaps content on user preferences page" msgstr "" -#: ../source/changelog.md:412 +#: ../source/changelog.md:452 msgid "PR#350 - Translations update from Hosted Weblate (Galician)" msgstr "" -#: ../source/changelog.md:413 +#: ../source/changelog.md:453 msgid "PR#352 - Translations update from Hosted Weblate (Dutch)" msgstr "" -#: ../source/changelog.md:414 +#: ../source/changelog.md:454 msgid "PR#356 - Init Polish translation files" msgstr "" -#: ../source/changelog.md:415 +#: ../source/changelog.md:455 msgid "PR#357 - Translations update from Hosted Weblate (Polish)" msgstr "" -#: ../source/changelog.md:416 +#: ../source/changelog.md:456 msgid "PR#365 - Translations update from Hosted Weblate (Spanish)" msgstr "" -#: ../source/changelog.md:429 +#: ../source/changelog.md:469 msgid "Note: Polish is not yet available in FitTrackee interface." msgstr "" -#: ../source/changelog.md:434 +#: ../source/changelog.md:474 msgid "@gnu-ewm" msgstr "" -#: ../source/changelog.md:435 -#: ../source/changelog.md:488 -#: ../source/changelog.md:574 +#: ../source/changelog.md:475 +#: ../source/changelog.md:528 +#: ../source/changelog.md:614 msgid "@jat255" msgstr "" -#: ../source/changelog.md:441 +#: ../source/changelog.md:481 msgid "Version 0.7.15 (2023/04/12)" msgstr "" -#: ../source/changelog.md:443 +#: ../source/changelog.md:483 msgid "Among enhancements and fixes, FitTrackee is now available in Galician, Spanish and partially in Norwegian Bokmål (see translation status below)." msgstr "" -#: ../source/changelog.md:445 +#: ../source/changelog.md:485 msgid "Note: DarkSky API support is removed, since the service shut down on March 31, 2023." msgstr "" -#: ../source/changelog.md:450 +#: ../source/changelog.md:490 msgid "#319 - Add cli to create users" msgstr "" -#: ../source/changelog.md:451 +#: ../source/changelog.md:491 msgid "#329 - Make \"start elevation axis at zero\" sticky" msgstr "" -#: ../source/changelog.md:452 +#: ../source/changelog.md:492 msgid "#333 - Feature request: filter workouts by title" msgstr "" -#: ../source/changelog.md:453 +#: ../source/changelog.md:493 msgid "#338 - Display relevant error message when