Merge branch 'master' into dev
							
								
								
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						| @@ -1,5 +1,23 @@ | |||||||
| # Change log | # Change log | ||||||
|  |  | ||||||
|  | ## Version 0.6.8 (2022/06/22) | ||||||
|  |  | ||||||
|  | ### Issues Closed | ||||||
|  |  | ||||||
|  | #### Bugs Fixed | ||||||
|  |  | ||||||
|  | * [#193](https://github.com/SamR1/FitTrackee/issues/193) - Allow deleting a workout when files are missing | ||||||
|  | * [#192](https://github.com/SamR1/FitTrackee/issues/192) - Returns 404 instead of 500 when map file not found | ||||||
|  | * [#191](https://github.com/SamR1/FitTrackee/issues/191) - Layout issue on Workouts page | ||||||
|  |  | ||||||
|  | ### Misc | ||||||
|  |  | ||||||
|  | * change gpx and map file naming (included in [PR#195](https://github.com/SamR1/FitTrackee/pull/195))   | ||||||
|  |   Note: it does not affect previously imported files | ||||||
|  | * [cc4287e](https://github.com/SamR1/FitTrackee/commit/cc4287ed327faaba268a0c689841d16a7aecc3fb) - Fix docker env file | ||||||
|  |  | ||||||
|  | In this release 3 issues was closed.   | ||||||
|  |  | ||||||
| ## Version 0.6.7 (2022/06/11) | ## Version 0.6.7 (2022/06/11) | ||||||
|  |  | ||||||
| ### Issues Closed | ### Issues Closed | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| # Sphinx build info version 1 | # 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. | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||||||
| config: e7f46ba7f0469b1929d2349b0c52c449 | config: 99edd56615e14d7cc3e745b909626969 | ||||||
| tags: 645f666f9bcd5a90fca523b33c5a78b7 | tags: 645f666f9bcd5a90fca523b33c5a78b7 | ||||||
|   | |||||||
| Before Width: | Height: | Size: 539 KiB After Width: | Height: | Size: 540 KiB | 
| Before Width: | Height: | Size: 368 KiB After Width: | Height: | Size: 369 KiB | 
| Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 202 KiB | 
| Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 70 KiB | 
| Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB | 
| Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB | 
| @@ -1,5 +1,23 @@ | |||||||
| # Change log | # Change log | ||||||
|  |  | ||||||
|  | ## Version 0.6.8 (2022/06/22) | ||||||
|  |  | ||||||
|  | ### Issues Closed | ||||||
|  |  | ||||||
|  | #### Bugs Fixed | ||||||
|  |  | ||||||
|  | * [#193](https://github.com/SamR1/FitTrackee/issues/193) - Allow deleting a workout when files are missing | ||||||
|  | * [#192](https://github.com/SamR1/FitTrackee/issues/192) - Returns 404 instead of 500 when map file not found | ||||||
|  | * [#191](https://github.com/SamR1/FitTrackee/issues/191) - Layout issue on Workouts page | ||||||
|  |  | ||||||
|  | ### Misc | ||||||
|  |  | ||||||
|  | * change gpx and map file naming (included in [PR#195](https://github.com/SamR1/FitTrackee/pull/195))   | ||||||
|  |   Note: it does not affect previously imported files | ||||||
|  | * [cc4287e](https://github.com/SamR1/FitTrackee/commit/cc4287ed327faaba268a0c689841d16a7aecc3fb) - Fix docker env file | ||||||
|  |  | ||||||
|  | In this release 3 issues was closed.   | ||||||
|  |  | ||||||
| ## Version 0.6.7 (2022/06/11) | ## Version 0.6.7 (2022/06/11) | ||||||
|  |  | ||||||
| ### Issues Closed | ### Issues Closed | ||||||
|   | |||||||
| @@ -395,13 +395,13 @@ Production environment | |||||||
| .. warning:: | .. warning:: | ||||||
|     | Note that FitTrackee is under heavy development, some features may be unstable. |     | Note that FitTrackee is under heavy development, some features may be unstable. | ||||||
|  |  | ||||||
| -  Download the last release (for now, it is the release v0.6.7): | -  Download the last release (for now, it is the release v0.6.8): | ||||||
|  |  | ||||||
| .. code:: bash | .. code:: bash | ||||||
|  |  | ||||||
|    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.7.tar.gz |    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.8.tar.gz | ||||||
|    $ tar -xzf v0.6.7.tar.gz |    $ tar -xzf v0.6.8.tar.gz | ||||||
|    $ mv FitTrackee-0.6.7 FitTrackee |    $ mv FitTrackee-0.6.8 FitTrackee | ||||||
|    $ cd FitTrackee |    $ cd FitTrackee | ||||||
|  |  | ||||||
| -  Create **.env** from example and update it | -  Create **.env** from example and update it | ||||||
| @@ -521,13 +521,13 @@ Prod environment | |||||||
|  |  | ||||||
| - Change to the directory where FitTrackee directory is located | - Change to the directory where FitTrackee directory is located | ||||||
|  |  | ||||||
| - Download the last release (for now, it is the release v0.6.7) and overwrite existing files: | - Download the last release (for now, it is the release v0.6.8) and overwrite existing files: | ||||||
|  |  | ||||||
| .. code:: bash | .. code:: bash | ||||||
|  |  | ||||||
|    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.7.tar.gz |    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.8.tar.gz | ||||||
|    $ tar -xzf v0.6.7.tar.gz |    $ tar -xzf v0.6.8.tar.gz | ||||||
|    $ cp -R FitTrackee-0.6.7/* FitTrackee/ |    $ cp -R FitTrackee-0.6.8/* FitTrackee/ | ||||||
|    $ cd FitTrackee |    $ cd FitTrackee | ||||||
|  |  | ||||||
| - Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__). | - Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__). | ||||||
|   | |||||||
							
								
								
									
										134
									
								
								docs/_static/_sphinx_javascript_frameworks_compat.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,134 @@ | |||||||
|  | /* | ||||||
|  |  * _sphinx_javascript_frameworks_compat.js | ||||||
|  |  * ~~~~~~~~~~ | ||||||
|  |  * | ||||||
|  |  * Compatability shim for jQuery and underscores.js. | ||||||
|  |  * | ||||||
|  |  * WILL BE REMOVED IN Sphinx 6.0 | ||||||
|  |  * xref RemovedInSphinx60Warning | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * select a different prefix for underscore | ||||||
|  |  */ | ||||||
|  | $u = _.noConflict(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * small helper function to urldecode strings | ||||||
|  |  * | ||||||
|  |  * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL | ||||||
|  |  */ | ||||||
|  | jQuery.urldecode = function(x) { | ||||||
|  |     if (!x) { | ||||||
|  |         return x | ||||||
|  |     } | ||||||
|  |     return decodeURIComponent(x.replace(/\+/g, ' ')); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * small helper function to urlencode strings | ||||||
|  |  */ | ||||||
|  | jQuery.urlencode = encodeURIComponent; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * This function returns the parsed url parameters of the | ||||||
|  |  * current request. Multiple values per key are supported, | ||||||
|  |  * it will always return arrays of strings for the value parts. | ||||||
|  |  */ | ||||||
|  | jQuery.getQueryParameters = function(s) { | ||||||
|  |     if (typeof s === 'undefined') | ||||||
|  |         s = document.location.search; | ||||||
|  |     var parts = s.substr(s.indexOf('?') + 1).split('&'); | ||||||
|  |     var result = {}; | ||||||
|  |     for (var i = 0; i < parts.length; i++) { | ||||||
|  |         var tmp = parts[i].split('=', 2); | ||||||
|  |         var key = jQuery.urldecode(tmp[0]); | ||||||
|  |         var value = jQuery.urldecode(tmp[1]); | ||||||
|  |         if (key in result) | ||||||
|  |             result[key].push(value); | ||||||
|  |         else | ||||||
|  |             result[key] = [value]; | ||||||
|  |     } | ||||||
|  |     return result; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * highlight a given string on a jquery object by wrapping it in | ||||||
|  |  * span elements with the given class name. | ||||||
|  |  */ | ||||||
|  | jQuery.fn.highlightText = function(text, className) { | ||||||
|  |     function highlight(node, addItems) { | ||||||
|  |         if (node.nodeType === 3) { | ||||||
|  |             var val = node.nodeValue; | ||||||
|  |             var pos = val.toLowerCase().indexOf(text); | ||||||
|  |             if (pos >= 0 && | ||||||
|  |                 !jQuery(node.parentNode).hasClass(className) && | ||||||
|  |                 !jQuery(node.parentNode).hasClass("nohighlight")) { | ||||||
|  |                 var span; | ||||||
|  |                 var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); | ||||||
|  |                 if (isInSVG) { | ||||||
|  |                     span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | ||||||
|  |                 } else { | ||||||
|  |                     span = document.createElement("span"); | ||||||
|  |                     span.className = className; | ||||||
|  |                 } | ||||||
|  |                 span.appendChild(document.createTextNode(val.substr(pos, text.length))); | ||||||
|  |                 node.parentNode.insertBefore(span, node.parentNode.insertBefore( | ||||||
|  |                     document.createTextNode(val.substr(pos + text.length)), | ||||||
|  |                     node.nextSibling)); | ||||||
|  |                 node.nodeValue = val.substr(0, pos); | ||||||
|  |                 if (isInSVG) { | ||||||
|  |                     var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); | ||||||
|  |                     var bbox = node.parentElement.getBBox(); | ||||||
|  |                     rect.x.baseVal.value = bbox.x; | ||||||
|  |                     rect.y.baseVal.value = bbox.y; | ||||||
|  |                     rect.width.baseVal.value = bbox.width; | ||||||
|  |                     rect.height.baseVal.value = bbox.height; | ||||||
|  |                     rect.setAttribute('class', className); | ||||||
|  |                     addItems.push({ | ||||||
|  |                         "parent": node.parentNode, | ||||||
|  |                         "target": rect}); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         else if (!jQuery(node).is("button, select, textarea")) { | ||||||
|  |             jQuery.each(node.childNodes, function() { | ||||||
|  |                 highlight(this, addItems); | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     var addItems = []; | ||||||
|  |     var result = this.each(function() { | ||||||
|  |         highlight(this, addItems); | ||||||
|  |     }); | ||||||
|  |     for (var i = 0; i < addItems.length; ++i) { | ||||||
|  |         jQuery(addItems[i].parent).before(addItems[i].target); | ||||||
|  |     } | ||||||
|  |     return result; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * backward compatibility for jQuery.browser | ||||||
|  |  * This will be supported until firefox bug is fixed. | ||||||
|  |  */ | ||||||
|  | if (!jQuery.browser) { | ||||||
|  |     jQuery.uaMatch = function(ua) { | ||||||
|  |         ua = ua.toLowerCase(); | ||||||
|  |  | ||||||
|  |         var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || | ||||||
|  |             /(webkit)[ \/]([\w.]+)/.exec(ua) || | ||||||
|  |             /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || | ||||||
|  |             /(msie) ([\w.]+)/.exec(ua) || | ||||||
|  |             ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || | ||||||
|  |             []; | ||||||
|  |  | ||||||
|  |         return { | ||||||
|  |             browser: match[ 1 ] || "", | ||||||
|  |             version: match[ 2 ] || "0" | ||||||
|  |         }; | ||||||
|  |     }; | ||||||
|  |     jQuery.browser = {}; | ||||||
|  |     jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; | ||||||
|  | } | ||||||
							
								
								
									
										54
									
								
								docs/_static/basic.css
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -222,7 +222,7 @@ table.modindextable td { | |||||||
| /* -- general body styles --------------------------------------------------- */ | /* -- general body styles --------------------------------------------------- */ | ||||||
|  |  | ||||||
| div.body { | div.body { | ||||||
|     min-width: 450px; |     min-width: 360px; | ||||||
|     max-width: 800px; |     max-width: 800px; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -237,16 +237,6 @@ a.headerlink { | |||||||
|     visibility: hidden; |     visibility: hidden; | ||||||
| } | } | ||||||
|  |  | ||||||
| a.brackets:before, |  | ||||||
| span.brackets > a:before{ |  | ||||||
|     content: "["; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| a.brackets:after, |  | ||||||
| span.brackets > a:after { |  | ||||||
|     content: "]"; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| h1:hover > a.headerlink, | h1:hover > a.headerlink, | ||||||
| h2:hover > a.headerlink, | h2:hover > a.headerlink, | ||||||
| h3:hover > a.headerlink, | h3:hover > a.headerlink, | ||||||
| @@ -334,12 +324,16 @@ aside.sidebar { | |||||||
| p.sidebar-title { | p.sidebar-title { | ||||||
|     font-weight: bold; |     font-weight: bold; | ||||||
| } | } | ||||||
|  | nav.contents, | ||||||
|  | aside.topic, | ||||||
|  |  | ||||||
| div.admonition, div.topic, blockquote { | div.admonition, div.topic, blockquote { | ||||||
|     clear: left; |     clear: left; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* -- topics ---------------------------------------------------------------- */ | /* -- topics ---------------------------------------------------------------- */ | ||||||
|  | nav.contents, | ||||||
|  | aside.topic, | ||||||
|  |  | ||||||
| div.topic { | div.topic { | ||||||
|     border: 1px solid #ccc; |     border: 1px solid #ccc; | ||||||
| @@ -379,6 +373,9 @@ div.body p.centered { | |||||||
|  |  | ||||||
| div.sidebar > :last-child, | div.sidebar > :last-child, | ||||||
| aside.sidebar > :last-child, | aside.sidebar > :last-child, | ||||||
|  | nav.contents > :last-child, | ||||||
|  | aside.topic > :last-child, | ||||||
|  |  | ||||||
| div.topic > :last-child, | div.topic > :last-child, | ||||||
| div.admonition > :last-child { | div.admonition > :last-child { | ||||||
|     margin-bottom: 0; |     margin-bottom: 0; | ||||||
| @@ -386,6 +383,9 @@ div.admonition > :last-child { | |||||||
|  |  | ||||||
| div.sidebar::after, | div.sidebar::after, | ||||||
| aside.sidebar::after, | aside.sidebar::after, | ||||||
|  | nav.contents::after, | ||||||
|  | aside.topic::after, | ||||||
|  |  | ||||||
| div.topic::after, | div.topic::after, | ||||||
| div.admonition::after, | div.admonition::after, | ||||||
| blockquote::after { | blockquote::after { | ||||||
| @@ -428,10 +428,6 @@ table.docutils td, table.docutils th { | |||||||
|     border-bottom: 1px solid #aaa; |     border-bottom: 1px solid #aaa; | ||||||
| } | } | ||||||
|  |  | ||||||
| table.footnote td, table.footnote th { |  | ||||||
|     border: 0 !important; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| th { | th { | ||||||
|     text-align: left; |     text-align: left; | ||||||
|     padding-right: 5px; |     padding-right: 5px; | ||||||
| @@ -615,6 +611,7 @@ ul.simple p { | |||||||
|     margin-bottom: 0; |     margin-bottom: 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* Docutils 0.17 and older (footnotes & citations) */ | ||||||
| dl.footnote > dt, | dl.footnote > dt, | ||||||
| dl.citation > dt { | dl.citation > dt { | ||||||
|     float: left; |     float: left; | ||||||
| @@ -632,6 +629,33 @@ dl.citation > dd:after { | |||||||
|     clear: both; |     clear: both; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* Docutils 0.18+ (footnotes & citations) */ | ||||||
|  | aside.footnote > span, | ||||||
|  | div.citation > span { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | aside.footnote > span:last-of-type, | ||||||
|  | div.citation > span:last-of-type { | ||||||
|  |   padding-right: 0.5em; | ||||||
|  | } | ||||||
|  | aside.footnote > p { | ||||||
|  |   margin-left: 2em; | ||||||
|  | } | ||||||
|  | div.citation > p { | ||||||
|  |   margin-left: 4em; | ||||||
|  | } | ||||||
|  | aside.footnote > p:last-of-type, | ||||||
|  | div.citation > p:last-of-type { | ||||||
|  |     margin-bottom: 0em; | ||||||
|  | } | ||||||
|  | aside.footnote > p:last-of-type:after, | ||||||
|  | div.citation > p:last-of-type:after { | ||||||
|  |     content: ""; | ||||||
|  |     clear: both; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Footnotes & citations ends */ | ||||||
|  |  | ||||||
| dl.field-list { | dl.field-list { | ||||||
|     display: grid; |     display: grid; | ||||||
|     grid-template-columns: fit-content(30%) auto; |     grid-template-columns: fit-content(30%) auto; | ||||||
|   | |||||||
							
								
								
									
										434
									
								
								docs/_static/doctools.js
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -2,357 +2,263 @@ | |||||||
|  * doctools.js |  * doctools.js | ||||||
|  * ~~~~~~~~~~~ |  * ~~~~~~~~~~~ | ||||||
|  * |  * | ||||||
|  * Sphinx JavaScript utilities for all documentation. |  * Base JavaScript utilities for all Sphinx HTML documentation. | ||||||
|  * |  * | ||||||
|  * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. |  * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. | ||||||
|  * :license: BSD, see LICENSE for details. |  * :license: BSD, see LICENSE for details. | ||||||
|  * |  * | ||||||
|  */ |  */ | ||||||
|  | "use strict"; | ||||||
|  |  | ||||||
| /** | const _ready = (callback) => { | ||||||
|  * select a different prefix for underscore |   if (document.readyState !== "loading") { | ||||||
|  */ |     callback(); | ||||||
| $u = _.noConflict(); |   } else { | ||||||
|  |     document.addEventListener("DOMContentLoaded", callback); | ||||||
| /** |  | ||||||
|  * make the code below compatible with browsers without |  | ||||||
|  * an installed firebug like debugger |  | ||||||
| if (!window.console || !console.firebug) { |  | ||||||
|   var names = ["log", "debug", "info", "warn", "error", "assert", "dir", |  | ||||||
|     "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", |  | ||||||
|     "profile", "profileEnd"]; |  | ||||||
|   window.console = {}; |  | ||||||
|   for (var i = 0; i < names.length; ++i) |  | ||||||
|     window.console[names[i]] = function() {}; |  | ||||||
| } |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * small helper function to urldecode strings |  | ||||||
|  * |  | ||||||
|  * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL |  | ||||||
|  */ |  | ||||||
| jQuery.urldecode = function(x) { |  | ||||||
|   if (!x) { |  | ||||||
|     return x |  | ||||||
|   } |   } | ||||||
|   return decodeURIComponent(x.replace(/\+/g, ' ')); |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * small helper function to urlencode strings |  * highlight a given string on a node by wrapping it in | ||||||
|  */ |  | ||||||
| jQuery.urlencode = encodeURIComponent; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * This function returns the parsed url parameters of the |  | ||||||
|  * current request. Multiple values per key are supported, |  | ||||||
|  * it will always return arrays of strings for the value parts. |  | ||||||
|  */ |  | ||||||
| jQuery.getQueryParameters = function(s) { |  | ||||||
|   if (typeof s === 'undefined') |  | ||||||
|     s = document.location.search; |  | ||||||
|   var parts = s.substr(s.indexOf('?') + 1).split('&'); |  | ||||||
|   var result = {}; |  | ||||||
|   for (var i = 0; i < parts.length; i++) { |  | ||||||
|     var tmp = parts[i].split('=', 2); |  | ||||||
|     var key = jQuery.urldecode(tmp[0]); |  | ||||||
|     var value = jQuery.urldecode(tmp[1]); |  | ||||||
|     if (key in result) |  | ||||||
|       result[key].push(value); |  | ||||||
|     else |  | ||||||
|       result[key] = [value]; |  | ||||||
|   } |  | ||||||
|   return result; |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * highlight a given string on a jquery object by wrapping it in |  | ||||||
|  * span elements with the given class name. |  * span elements with the given class name. | ||||||
|  */ |  */ | ||||||
| jQuery.fn.highlightText = function(text, className) { | const _highlight = (node, addItems, text, className) => { | ||||||
|   function highlight(node, addItems) { |   if (node.nodeType === Node.TEXT_NODE) { | ||||||
|     if (node.nodeType === 3) { |     const val = node.nodeValue; | ||||||
|       var val = node.nodeValue; |     const parent = node.parentNode; | ||||||
|       var pos = val.toLowerCase().indexOf(text); |     const pos = val.toLowerCase().indexOf(text); | ||||||
|       if (pos >= 0 && |     if ( | ||||||
|           !jQuery(node.parentNode).hasClass(className) && |       pos >= 0 && | ||||||
|           !jQuery(node.parentNode).hasClass("nohighlight")) { |       !parent.classList.contains(className) && | ||||||
|         var span; |       !parent.classList.contains("nohighlight") | ||||||
|         var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); |     ) { | ||||||
|  |       let span; | ||||||
|  |  | ||||||
|  |       const closestNode = parent.closest("body, svg, foreignObject"); | ||||||
|  |       const isInSVG = closestNode && closestNode.matches("svg"); | ||||||
|       if (isInSVG) { |       if (isInSVG) { | ||||||
|         span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); |         span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | ||||||
|       } else { |       } else { | ||||||
|         span = document.createElement("span"); |         span = document.createElement("span"); | ||||||
|           span.className = className; |         span.classList.add(className); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       span.appendChild(document.createTextNode(val.substr(pos, text.length))); |       span.appendChild(document.createTextNode(val.substr(pos, text.length))); | ||||||
|         node.parentNode.insertBefore(span, node.parentNode.insertBefore( |       parent.insertBefore( | ||||||
|  |         span, | ||||||
|  |         parent.insertBefore( | ||||||
|           document.createTextNode(val.substr(pos + text.length)), |           document.createTextNode(val.substr(pos + text.length)), | ||||||
|           node.nextSibling)); |           node.nextSibling | ||||||
|  |         ) | ||||||
|  |       ); | ||||||
|       node.nodeValue = val.substr(0, pos); |       node.nodeValue = val.substr(0, pos); | ||||||
|  |  | ||||||
|       if (isInSVG) { |       if (isInSVG) { | ||||||
|           var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); |         const rect = document.createElementNS( | ||||||
|           var bbox = node.parentElement.getBBox(); |           "http://www.w3.org/2000/svg", | ||||||
|  |           "rect" | ||||||
|  |         ); | ||||||
|  |         const bbox = parent.getBBox(); | ||||||
|         rect.x.baseVal.value = bbox.x; |         rect.x.baseVal.value = bbox.x; | ||||||
|         rect.y.baseVal.value = bbox.y; |         rect.y.baseVal.value = bbox.y; | ||||||
|         rect.width.baseVal.value = bbox.width; |         rect.width.baseVal.value = bbox.width; | ||||||
|         rect.height.baseVal.value = bbox.height; |         rect.height.baseVal.value = bbox.height; | ||||||
|           rect.setAttribute('class', className); |         rect.setAttribute("class", className); | ||||||
|           addItems.push({ |         addItems.push({ parent: parent, target: rect }); | ||||||
|               "parent": node.parentNode, |  | ||||||
|               "target": rect}); |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |   } else if (node.matches && !node.matches("button, select, textarea")) { | ||||||
|  |     node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); | ||||||
|   } |   } | ||||||
|     else if (!jQuery(node).is("button, select, textarea")) { |  | ||||||
|       jQuery.each(node.childNodes, function() { |  | ||||||
|         highlight(this, addItems); |  | ||||||
|       }); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   var addItems = []; |  | ||||||
|   var result = this.each(function() { |  | ||||||
|     highlight(this, addItems); |  | ||||||
|   }); |  | ||||||
|   for (var i = 0; i < addItems.length; ++i) { |  | ||||||
|     jQuery(addItems[i].parent).before(addItems[i].target); |  | ||||||
|   } |  | ||||||
|   return result; |  | ||||||
| }; | }; | ||||||
|  | const _highlightText = (thisNode, text, className) => { | ||||||
| /* |   let addItems = []; | ||||||
|  * backward compatibility for jQuery.browser |   _highlight(thisNode, addItems, text, className); | ||||||
|  * This will be supported until firefox bug is fixed. |   addItems.forEach((obj) => | ||||||
|  */ |     obj.parent.insertAdjacentElement("beforebegin", obj.target) | ||||||
| if (!jQuery.browser) { |   ); | ||||||
|   jQuery.uaMatch = function(ua) { | }; | ||||||
|     ua = ua.toLowerCase(); |  | ||||||
|  |  | ||||||
|     var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || |  | ||||||
|       /(webkit)[ \/]([\w.]+)/.exec(ua) || |  | ||||||
|       /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || |  | ||||||
|       /(msie) ([\w.]+)/.exec(ua) || |  | ||||||
|       ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || |  | ||||||
|       []; |  | ||||||
|  |  | ||||||
|     return { |  | ||||||
|       browser: match[ 1 ] || "", |  | ||||||
|       version: match[ 2 ] || "0" |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
|   jQuery.browser = {}; |  | ||||||
|   jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Small JavaScript module for the documentation. |  * Small JavaScript module for the documentation. | ||||||
|  */ |  */ | ||||||
| var Documentation = { | const Documentation = { | ||||||
|  |   init: () => { | ||||||
|   init : function() { |     Documentation.highlightSearchWords(); | ||||||
|     this.fixFirefoxAnchorBug(); |     Documentation.initDomainIndexTable(); | ||||||
|     this.highlightSearchWords(); |     Documentation.initOnKeyListeners(); | ||||||
|     this.initIndexTable(); |  | ||||||
|     this.initOnKeyListeners(); |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * i18n support |    * i18n support | ||||||
|    */ |    */ | ||||||
|   TRANSLATIONS : {}, |   TRANSLATIONS: {}, | ||||||
|   PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, |   PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), | ||||||
|   LOCALE : 'unknown', |   LOCALE: "unknown", | ||||||
|  |  | ||||||
|   // gettext and ngettext don't access this so that the functions |   // gettext and ngettext don't access this so that the functions | ||||||
|   // can safely bound to a different name (_ = Documentation.gettext) |   // can safely bound to a different name (_ = Documentation.gettext) | ||||||
|   gettext : function(string) { |   gettext: (string) => { | ||||||
|     var translated = Documentation.TRANSLATIONS[string]; |     const translated = Documentation.TRANSLATIONS[string]; | ||||||
|     if (typeof translated === 'undefined') |     switch (typeof translated) { | ||||||
|       return string; |       case "undefined": | ||||||
|     return (typeof translated === 'string') ? translated : translated[0]; |         return string; // no translation | ||||||
|  |       case "string": | ||||||
|  |         return translated; // translation exists | ||||||
|  |       default: | ||||||
|  |         return translated[0]; // (singular, plural) translation tuple exists | ||||||
|  |     } | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   ngettext : function(singular, plural, n) { |   ngettext: (singular, plural, n) => { | ||||||
|     var translated = Documentation.TRANSLATIONS[singular]; |     const translated = Documentation.TRANSLATIONS[singular]; | ||||||
|     if (typeof translated === 'undefined') |     if (typeof translated !== "undefined") | ||||||
|       return (n == 1) ? singular : plural; |       return translated[Documentation.PLURAL_EXPR(n)]; | ||||||
|     return translated[Documentation.PLURALEXPR(n)]; |     return n === 1 ? singular : plural; | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   addTranslations : function(catalog) { |   addTranslations: (catalog) => { | ||||||
|     for (var key in catalog.messages) |     Object.assign(Documentation.TRANSLATIONS, catalog.messages); | ||||||
|       this.TRANSLATIONS[key] = catalog.messages[key]; |     Documentation.PLURAL_EXPR = new Function( | ||||||
|     this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); |       "n", | ||||||
|     this.LOCALE = catalog.locale; |       `return (${catalog.plural_expr})` | ||||||
|   }, |     ); | ||||||
|  |     Documentation.LOCALE = catalog.locale; | ||||||
|   /** |  | ||||||
|    * add context elements like header anchor links |  | ||||||
|    */ |  | ||||||
|   addContextElements : function() { |  | ||||||
|     $('div[id] > :header:first').each(function() { |  | ||||||
|       $('<a class="headerlink">\u00B6</a>'). |  | ||||||
|       attr('href', '#' + this.id). |  | ||||||
|       attr('title', _('Permalink to this headline')). |  | ||||||
|       appendTo(this); |  | ||||||
|     }); |  | ||||||
|     $('dt[id]').each(function() { |  | ||||||
|       $('<a class="headerlink">\u00B6</a>'). |  | ||||||
|       attr('href', '#' + this.id). |  | ||||||
|       attr('title', _('Permalink to this definition')). |  | ||||||
|       appendTo(this); |  | ||||||
|     }); |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * workaround a firefox stupidity |  | ||||||
|    * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 |  | ||||||
|    */ |  | ||||||
|   fixFirefoxAnchorBug : function() { |  | ||||||
|     if (document.location.hash && $.browser.mozilla) |  | ||||||
|       window.setTimeout(function() { |  | ||||||
|         document.location.href += ''; |  | ||||||
|       }, 10); |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * highlight the search words provided in the url in the text |    * highlight the search words provided in the url in the text | ||||||
|    */ |    */ | ||||||
|   highlightSearchWords : function() { |   highlightSearchWords: () => { | ||||||
|     var params = $.getQueryParameters(); |     const highlight = | ||||||
|     var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; |       new URLSearchParams(window.location.search).get("highlight") || ""; | ||||||
|     if (terms.length) { |     const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); | ||||||
|       var body = $('div.body'); |     if (terms.length === 0) return; // nothing to do | ||||||
|       if (!body.length) { |  | ||||||
|         body = $('body'); |  | ||||||
|       } |  | ||||||
|       window.setTimeout(function() { |  | ||||||
|         $.each(terms, function() { |  | ||||||
|           body.highlightText(this.toLowerCase(), 'highlighted'); |  | ||||||
|         }); |  | ||||||
|       }, 10); |  | ||||||
|       $('<p class="highlight-link"><a href="javascript:Documentation.' + |  | ||||||
|         'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>') |  | ||||||
|           .appendTo($('#searchbox')); |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   /** |     // There should never be more than one element matching "div.body" | ||||||
|    * init the domain index toggle buttons |     const divBody = document.querySelectorAll("div.body"); | ||||||
|    */ |     const body = divBody.length ? divBody[0] : document.querySelector("body"); | ||||||
|   initIndexTable : function() { |     window.setTimeout(() => { | ||||||
|     var togglers = $('img.toggler').click(function() { |       terms.forEach((term) => _highlightText(body, term, "highlighted")); | ||||||
|       var src = $(this).attr('src'); |     }, 10); | ||||||
|       var idnum = $(this).attr('id').substr(7); |  | ||||||
|       $('tr.cg-' + idnum).toggle(); |     const searchBox = document.getElementById("searchbox"); | ||||||
|       if (src.substr(-9) === 'minus.png') |     if (searchBox === null) return; | ||||||
|         $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); |     searchBox.appendChild( | ||||||
|       else |       document | ||||||
|         $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); |         .createRange() | ||||||
|     }).css('display', ''); |         .createContextualFragment( | ||||||
|     if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { |           '<p class="highlight-link">' + | ||||||
|         togglers.click(); |             '<a href="javascript:Documentation.hideSearchWords()">' + | ||||||
|     } |             Documentation.gettext("Hide Search Matches") + | ||||||
|  |             "</a></p>" | ||||||
|  |         ) | ||||||
|  |     ); | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * helper function to hide the search marks again |    * helper function to hide the search marks again | ||||||
|    */ |    */ | ||||||
|   hideSearchWords : function() { |   hideSearchWords: () => { | ||||||
|     $('#searchbox .highlight-link').fadeOut(300); |     document | ||||||
|     $('span.highlighted').removeClass('highlighted'); |       .querySelectorAll("#searchbox .highlight-link") | ||||||
|     var url = new URL(window.location); |       .forEach((el) => el.remove()); | ||||||
|     url.searchParams.delete('highlight'); |     document | ||||||
|     window.history.replaceState({}, '', url); |       .querySelectorAll("span.highlighted") | ||||||
|  |       .forEach((el) => el.classList.remove("highlighted")); | ||||||
|  |     const url = new URL(window.location); | ||||||
|  |     url.searchParams.delete("highlight"); | ||||||
|  |     window.history.replaceState({}, "", url); | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * helper function to focus on search bar |    * helper function to focus on search bar | ||||||
|    */ |    */ | ||||||
|   focusSearchBar : function() { |   focusSearchBar: () => { | ||||||
|     $('input[name=q]').first().focus(); |     document.querySelectorAll("input[name=q]")[0]?.focus(); | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * make the url absolute |    * Initialise the domain index toggle buttons | ||||||
|    */ |    */ | ||||||
|   makeURL : function(relativeURL) { |   initDomainIndexTable: () => { | ||||||
|     return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; |     const toggler = (el) => { | ||||||
|  |       const idNumber = el.id.substr(7); | ||||||
|  |       const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); | ||||||
|  |       if (el.src.substr(-9) === "minus.png") { | ||||||
|  |         el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; | ||||||
|  |         toggledRows.forEach((el) => (el.style.display = "none")); | ||||||
|  |       } else { | ||||||
|  |         el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; | ||||||
|  |         toggledRows.forEach((el) => (el.style.display = "")); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     const togglerElements = document.querySelectorAll("img.toggler"); | ||||||
|  |     togglerElements.forEach((el) => | ||||||
|  |       el.addEventListener("click", (event) => toggler(event.currentTarget)) | ||||||
|  |     ); | ||||||
|  |     togglerElements.forEach((el) => (el.style.display = "")); | ||||||
|  |     if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   initOnKeyListeners: () => { | ||||||
|    * get the current relative url |  | ||||||
|    */ |  | ||||||
|   getCurrentURL : function() { |  | ||||||
|     var path = document.location.pathname; |  | ||||||
|     var parts = path.split(/\//); |  | ||||||
|     $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { |  | ||||||
|       if (this === '..') |  | ||||||
|         parts.pop(); |  | ||||||
|     }); |  | ||||||
|     var url = parts.join('/'); |  | ||||||
|     return path.substring(url.lastIndexOf('/') + 1, path.length - 1); |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   initOnKeyListeners: function() { |  | ||||||
|     // only install a listener if it is really needed |     // only install a listener if it is really needed | ||||||
|     if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && |     if ( | ||||||
|         !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) |       !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && | ||||||
|  |       !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS | ||||||
|  |     ) | ||||||
|       return; |       return; | ||||||
|  |  | ||||||
|     $(document).keydown(function(event) { |     const blacklistedElements = new Set([ | ||||||
|       var activeElementType = document.activeElement.tagName; |       "TEXTAREA", | ||||||
|       // don't navigate when in search box, textarea, dropdown or button |       "INPUT", | ||||||
|       if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' |       "SELECT", | ||||||
|           && activeElementType !== 'BUTTON') { |       "BUTTON", | ||||||
|         if (event.altKey || event.ctrlKey || event.metaKey) |     ]); | ||||||
|           return; |     document.addEventListener("keydown", (event) => { | ||||||
|  |       if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements | ||||||
|  |       if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys | ||||||
|  |  | ||||||
|       if (!event.shiftKey) { |       if (!event.shiftKey) { | ||||||
|         switch (event.key) { |         switch (event.key) { | ||||||
|               case 'ArrowLeft': |           case "ArrowLeft": | ||||||
|                 if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) |             if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | ||||||
|                   break; |  | ||||||
|                 var prevHref = $('link[rel="prev"]').prop('href'); |             const prevLink = document.querySelector('link[rel="prev"]'); | ||||||
|                 if (prevHref) { |             if (prevLink && prevLink.href) { | ||||||
|                   window.location.href = prevHref; |               window.location.href = prevLink.href; | ||||||
|                   return false; |               event.preventDefault(); | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
|               case 'ArrowRight': |           case "ArrowRight": | ||||||
|                 if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) |             if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | ||||||
|                   break; |  | ||||||
|                 var nextHref = $('link[rel="next"]').prop('href'); |             const nextLink = document.querySelector('link[rel="next"]'); | ||||||
|                 if (nextHref) { |             if (nextLink && nextLink.href) { | ||||||
|                   window.location.href = nextHref; |               window.location.href = nextLink.href; | ||||||
|                   return false; |               event.preventDefault(); | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
|               case 'Escape': |           case "Escape": | ||||||
|                 if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) |             if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; | ||||||
|                   break; |  | ||||||
|             Documentation.hideSearchWords(); |             Documentation.hideSearchWords(); | ||||||
|                 return false; |             event.preventDefault(); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       // some keyboard layouts may need Shift to get / |       // some keyboard layouts may need Shift to get / | ||||||
|       switch (event.key) { |       switch (event.key) { | ||||||
|           case '/': |         case "/": | ||||||
|             if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) |           if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; | ||||||
|               break; |  | ||||||
|           Documentation.focusSearchBar(); |           Documentation.focusSearchBar(); | ||||||
|             return false; |           event.preventDefault(); | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   } |   }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| // quick alias for translations | // quick alias for translations | ||||||
| _ = Documentation.gettext; | const _ = Documentation.gettext; | ||||||
|  |  | ||||||
| $(document).ready(function() { | _ready(Documentation.init); | ||||||
|   Documentation.init(); |  | ||||||
| }); |  | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								docs/_static/documentation_options.js
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,7 +1,7 @@ | |||||||
| var DOCUMENTATION_OPTIONS = { | var DOCUMENTATION_OPTIONS = { | ||||||
|     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), |     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), | ||||||
|     VERSION: '0.6.7', |     VERSION: '0.6.8', | ||||||
|     LANGUAGE: 'None', |     LANGUAGE: 'en', | ||||||
|     COLLAPSE_INDEX: false, |     COLLAPSE_INDEX: false, | ||||||
|     BUILDER: 'html', |     BUILDER: 'html', | ||||||
|     FILE_SUFFIX: '.html', |     FILE_SUFFIX: '.html', | ||||||
| @@ -10,5 +10,5 @@ var DOCUMENTATION_OPTIONS = { | |||||||
|     SOURCELINK_SUFFIX: '.txt', |     SOURCELINK_SUFFIX: '.txt', | ||||||
|     NAVIGATION_WITH_KEYS: false, |     NAVIGATION_WITH_KEYS: false, | ||||||
|     SHOW_SEARCH_SUMMARY: true, |     SHOW_SEARCH_SUMMARY: true, | ||||||
|     ENABLE_SEARCH_SHORTCUTS: true, |     ENABLE_SEARCH_SHORTCUTS: false, | ||||||
| }; | }; | ||||||
| @@ -1,15 +1,15 @@ | |||||||
| /*! | /*! | ||||||
|  * jQuery JavaScript Library v3.5.1 |  * jQuery JavaScript Library v3.6.0 | ||||||
|  * https://jquery.com/
 |  * https://jquery.com/
 | ||||||
|  * |  * | ||||||
|  * Includes Sizzle.js |  * Includes Sizzle.js | ||||||
|  * https://sizzlejs.com/
 |  * https://sizzlejs.com/
 | ||||||
|  * |  * | ||||||
|  * Copyright JS Foundation and other contributors |  * Copyright OpenJS Foundation and other contributors | ||||||
|  * Released under the MIT license |  * Released under the MIT license | ||||||
|  * https://jquery.org/license
 |  * https://jquery.org/license
 | ||||||
|  * |  * | ||||||
|  * Date: 2020-05-04T22:49Z |  * Date: 2021-03-02T17:08Z | ||||||
|  */ |  */ | ||||||
| ( function( global, factory ) { | ( function( global, factory ) { | ||||||
| 
 | 
 | ||||||
| @@ -80,7 +80,11 @@ var isFunction = function isFunction( obj ) { | |||||||
| 		// In some browsers, typeof returns "function" for HTML <object> elements
 | 		// In some browsers, typeof returns "function" for HTML <object> elements
 | ||||||
| 		// (i.e., `typeof document.createElement( "object" ) === "function"`).
 | 		// (i.e., `typeof document.createElement( "object" ) === "function"`).
 | ||||||
| 		// We don't want to classify *any* DOM node as a function.
 | 		// We don't want to classify *any* DOM node as a function.
 | ||||||
|       return typeof obj === "function" && typeof obj.nodeType !== "number"; | 		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
 | ||||||
|  | 		// Plus for old WebKit, typeof returns "function" for HTML collections
 | ||||||
|  | 		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
 | ||||||
|  | 		return typeof obj === "function" && typeof obj.nodeType !== "number" && | ||||||
|  | 			typeof obj.item !== "function"; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -147,7 +151,7 @@ function toType( obj ) { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| var | var | ||||||
| 	version = "3.5.1", | 	version = "3.6.0", | ||||||
| 
 | 
 | ||||||
| 	// Define a local copy of jQuery
 | 	// Define a local copy of jQuery
 | ||||||
| 	jQuery = function( selector, context ) { | 	jQuery = function( selector, context ) { | ||||||
| @@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) { | |||||||
| 
 | 
 | ||||||
| // Populate the class2type map
 | // Populate the class2type map
 | ||||||
| jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), | jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), | ||||||
| function( _i, name ) { | 	function( _i, name ) { | ||||||
| 		class2type[ "[object " + name + "]" ] = name.toLowerCase(); | 		class2type[ "[object " + name + "]" ] = name.toLowerCase(); | ||||||
| } ); | 	} ); | ||||||
| 
 | 
 | ||||||
| function isArrayLike( obj ) { | function isArrayLike( obj ) { | ||||||
| 
 | 
 | ||||||
| @@ -518,14 +522,14 @@ function isArrayLike( obj ) { | |||||||
| } | } | ||||||
| var Sizzle = | var Sizzle = | ||||||
| /*! | /*! | ||||||
|  * Sizzle CSS Selector Engine v2.3.5 |  * Sizzle CSS Selector Engine v2.3.6 | ||||||
|  * https://sizzlejs.com/
 |  * https://sizzlejs.com/
 | ||||||
|  * |  * | ||||||
|  * Copyright JS Foundation and other contributors |  * Copyright JS Foundation and other contributors | ||||||
|  * Released under the MIT license |  * Released under the MIT license | ||||||
|  * https://js.foundation/
 |  * https://js.foundation/
 | ||||||
|  * |  * | ||||||
|  * Date: 2020-03-14 |  * Date: 2021-02-16 | ||||||
|  */ |  */ | ||||||
| ( function( window ) { | ( function( window ) { | ||||||
| var i, | var i, | ||||||
| @@ -1108,8 +1112,8 @@ support = Sizzle.support = {}; | |||||||
|  * @returns {Boolean} True iff elem is a non-HTML XML node |  * @returns {Boolean} True iff elem is a non-HTML XML node | ||||||
|  */ |  */ | ||||||
| isXML = Sizzle.isXML = function( elem ) { | isXML = Sizzle.isXML = function( elem ) { | ||||||
| 	var namespace = elem.namespaceURI, | 	var namespace = elem && elem.namespaceURI, | ||||||
| 		docElem = ( elem.ownerDocument || elem ).documentElement; | 		docElem = elem && ( elem.ownerDocument || elem ).documentElement; | ||||||
| 
 | 
 | ||||||
| 	// Support: IE <=8
 | 	// Support: IE <=8
 | ||||||
| 	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
 | 	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
 | ||||||
| @@ -3026,7 +3030,7 @@ function nodeName( elem, name ) { | |||||||
| 
 | 
 | ||||||
| 	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); | 	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); | ||||||
| 
 | 
 | ||||||
| }; | } | ||||||
| var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); | var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -3997,8 +4001,8 @@ jQuery.extend( { | |||||||
| 			resolveContexts = Array( i ), | 			resolveContexts = Array( i ), | ||||||
| 			resolveValues = slice.call( arguments ), | 			resolveValues = slice.call( arguments ), | ||||||
| 
 | 
 | ||||||
| 			// the master Deferred
 | 			// the primary Deferred
 | ||||||
| 			master = jQuery.Deferred(), | 			primary = jQuery.Deferred(), | ||||||
| 
 | 
 | ||||||
| 			// subordinate callback factory
 | 			// subordinate callback factory
 | ||||||
| 			updateFunc = function( i ) { | 			updateFunc = function( i ) { | ||||||
| @@ -4006,30 +4010,30 @@ jQuery.extend( { | |||||||
| 					resolveContexts[ i ] = this; | 					resolveContexts[ i ] = this; | ||||||
| 					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; | 					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; | ||||||
| 					if ( !( --remaining ) ) { | 					if ( !( --remaining ) ) { | ||||||
| 						master.resolveWith( resolveContexts, resolveValues ); | 						primary.resolveWith( resolveContexts, resolveValues ); | ||||||
| 					} | 					} | ||||||
| 				}; | 				}; | ||||||
| 			}; | 			}; | ||||||
| 
 | 
 | ||||||
| 		// Single- and empty arguments are adopted like Promise.resolve
 | 		// Single- and empty arguments are adopted like Promise.resolve
 | ||||||
| 		if ( remaining <= 1 ) { | 		if ( remaining <= 1 ) { | ||||||
| 			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, | 			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, | ||||||
| 				!remaining ); | 				!remaining ); | ||||||
| 
 | 
 | ||||||
| 			// Use .then() to unwrap secondary thenables (cf. gh-3000)
 | 			// Use .then() to unwrap secondary thenables (cf. gh-3000)
 | ||||||
| 			if ( master.state() === "pending" || | 			if ( primary.state() === "pending" || | ||||||
| 				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { | 				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { | ||||||
| 
 | 
 | ||||||
| 				return master.then(); | 				return primary.then(); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		// Multiple arguments are aggregated like Promise.all array elements
 | 		// Multiple arguments are aggregated like Promise.all array elements
 | ||||||
| 		while ( i-- ) { | 		while ( i-- ) { | ||||||
| 			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); | 			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return master.promise(); | 		return primary.promise(); | ||||||
| 	} | 	} | ||||||
| } ); | } ); | ||||||
| 
 | 
 | ||||||
| @@ -5089,10 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| var | var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; | ||||||
| 	rkeyEvent = /^key/, |  | ||||||
| 	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, |  | ||||||
| 	rtypenamespace = /^([^.]*)(?:\.(.+)|)/; |  | ||||||
| 
 | 
 | ||||||
| function returnTrue() { | function returnTrue() { | ||||||
| 	return true; | 	return true; | ||||||
| @@ -5656,7 +5657,13 @@ function leverageNative( el, type, expectSync ) { | |||||||
| 						// Cancel the outer synthetic event
 | 						// Cancel the outer synthetic event
 | ||||||
| 						event.stopImmediatePropagation(); | 						event.stopImmediatePropagation(); | ||||||
| 						event.preventDefault(); | 						event.preventDefault(); | ||||||
| 						return result.value; | 
 | ||||||
|  | 						// Support: Chrome 86+
 | ||||||
|  | 						// In Chrome, if an element having a focusout handler is blurred by
 | ||||||
|  | 						// clicking outside of it, it invokes the handler synchronously. If
 | ||||||
|  | 						// that handler calls `.remove()` on the element, the data is cleared,
 | ||||||
|  | 						// leaving `result` undefined. We need to guard against this.
 | ||||||
|  | 						return result && result.value; | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 				// If this is an inner synthetic event for an event with a bubbling surrogate
 | 				// If this is an inner synthetic event for an event with a bubbling surrogate
 | ||||||
| @@ -5821,34 +5828,7 @@ jQuery.each( { | |||||||
| 	targetTouches: true, | 	targetTouches: true, | ||||||
| 	toElement: true, | 	toElement: true, | ||||||
| 	touches: true, | 	touches: true, | ||||||
| 
 | 	which: true | ||||||
| 	which: function( event ) { |  | ||||||
| 		var button = event.button; |  | ||||||
| 
 |  | ||||||
| 		// Add which for key events
 |  | ||||||
| 		if ( event.which == null && rkeyEvent.test( event.type ) ) { |  | ||||||
| 			return event.charCode != null ? event.charCode : event.keyCode; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// Add which for click: 1 === left; 2 === middle; 3 === right
 |  | ||||||
| 		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { |  | ||||||
| 			if ( button & 1 ) { |  | ||||||
| 				return 1; |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			if ( button & 2 ) { |  | ||||||
| 				return 3; |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			if ( button & 4 ) { |  | ||||||
| 				return 2; |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			return 0; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		return event.which; |  | ||||||
| 	} |  | ||||||
| }, jQuery.event.addProp ); | }, jQuery.event.addProp ); | ||||||
| 
 | 
 | ||||||
| jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { | jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { | ||||||
| @@ -5874,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp | |||||||
| 			return true; | 			return true; | ||||||
| 		}, | 		}, | ||||||
| 
 | 
 | ||||||
|  | 		// Suppress native focus or blur as it's already being fired
 | ||||||
|  | 		// in leverageNative.
 | ||||||
|  | 		_default: function() { | ||||||
|  | 			return true; | ||||||
|  | 		}, | ||||||
|  | 
 | ||||||
| 		delegateType: delegateType | 		delegateType: delegateType | ||||||
| 	}; | 	}; | ||||||
| } ); | } ); | ||||||
| @@ -6541,6 +6527,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | |||||||
| 		// set in CSS while `offset*` properties report correct values.
 | 		// set in CSS while `offset*` properties report correct values.
 | ||||||
| 		// Behavior in IE 9 is more subtle than in newer versions & it passes
 | 		// Behavior in IE 9 is more subtle than in newer versions & it passes
 | ||||||
| 		// some versions of this test; make sure not to make it pass there!
 | 		// some versions of this test; make sure not to make it pass there!
 | ||||||
|  | 		//
 | ||||||
|  | 		// Support: Firefox 70+
 | ||||||
|  | 		// Only Firefox includes border widths
 | ||||||
|  | 		// in computed dimensions. (gh-4529)
 | ||||||
| 		reliableTrDimensions: function() { | 		reliableTrDimensions: function() { | ||||||
| 			var table, tr, trChild, trStyle; | 			var table, tr, trChild, trStyle; | ||||||
| 			if ( reliableTrDimensionsVal == null ) { | 			if ( reliableTrDimensionsVal == null ) { | ||||||
| @@ -6548,17 +6538,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | |||||||
| 				tr = document.createElement( "tr" ); | 				tr = document.createElement( "tr" ); | ||||||
| 				trChild = document.createElement( "div" ); | 				trChild = document.createElement( "div" ); | ||||||
| 
 | 
 | ||||||
| 				table.style.cssText = "position:absolute;left:-11111px"; | 				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; | ||||||
|  | 				tr.style.cssText = "border:1px solid"; | ||||||
|  | 
 | ||||||
|  | 				// Support: Chrome 86+
 | ||||||
|  | 				// Height set through cssText does not get applied.
 | ||||||
|  | 				// Computed height then comes back as 0.
 | ||||||
| 				tr.style.height = "1px"; | 				tr.style.height = "1px"; | ||||||
| 				trChild.style.height = "9px"; | 				trChild.style.height = "9px"; | ||||||
| 
 | 
 | ||||||
|  | 				// Support: Android 8 Chrome 86+
 | ||||||
|  | 				// In our bodyBackground.html iframe,
 | ||||||
|  | 				// display for all div elements is set to "inline",
 | ||||||
|  | 				// which causes a problem only in Android 8 Chrome 86.
 | ||||||
|  | 				// Ensuring the div is display: block
 | ||||||
|  | 				// gets around this issue.
 | ||||||
|  | 				trChild.style.display = "block"; | ||||||
|  | 
 | ||||||
| 				documentElement | 				documentElement | ||||||
| 					.appendChild( table ) | 					.appendChild( table ) | ||||||
| 					.appendChild( tr ) | 					.appendChild( tr ) | ||||||
| 					.appendChild( trChild ); | 					.appendChild( trChild ); | ||||||
| 
 | 
 | ||||||
| 				trStyle = window.getComputedStyle( tr ); | 				trStyle = window.getComputedStyle( tr ); | ||||||
| 				reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; | 				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + | ||||||
|  | 					parseInt( trStyle.borderTopWidth, 10 ) + | ||||||
|  | 					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; | ||||||
| 
 | 
 | ||||||
| 				documentElement.removeChild( table ); | 				documentElement.removeChild( table ); | ||||||
| 			} | 			} | ||||||
| @@ -7761,6 +7766,7 @@ jQuery.fn.extend( { | |||||||
| 					anim.stop( true ); | 					anim.stop( true ); | ||||||
| 				} | 				} | ||||||
| 			}; | 			}; | ||||||
|  | 
 | ||||||
| 		doAnimation.finish = doAnimation; | 		doAnimation.finish = doAnimation; | ||||||
| 
 | 
 | ||||||
| 		return empty || optall.queue === false ? | 		return empty || optall.queue === false ? | ||||||
| @@ -8707,9 +8713,7 @@ jQuery.extend( jQuery.event, { | |||||||
| 				special.bindType || type; | 				special.bindType || type; | ||||||
| 
 | 
 | ||||||
| 			// jQuery handler
 | 			// jQuery handler
 | ||||||
| 			handle = ( | 			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && | ||||||
| 					dataPriv.get( cur, "events" ) || Object.create( null ) |  | ||||||
| 				)[ event.type ] && |  | ||||||
| 				dataPriv.get( cur, "handle" ); | 				dataPriv.get( cur, "handle" ); | ||||||
| 			if ( handle ) { | 			if ( handle ) { | ||||||
| 				handle.apply( cur, data ); | 				handle.apply( cur, data ); | ||||||
| @@ -8856,7 +8860,7 @@ var rquery = ( /\?/ ); | |||||||
| 
 | 
 | ||||||
| // Cross-browser xml parsing
 | // Cross-browser xml parsing
 | ||||||
| jQuery.parseXML = function( data ) { | jQuery.parseXML = function( data ) { | ||||||
| 	var xml; | 	var xml, parserErrorElem; | ||||||
| 	if ( !data || typeof data !== "string" ) { | 	if ( !data || typeof data !== "string" ) { | ||||||
| 		return null; | 		return null; | ||||||
| 	} | 	} | ||||||
| @@ -8865,12 +8869,17 @@ jQuery.parseXML = function( data ) { | |||||||
| 	// IE throws on parseFromString with invalid input.
 | 	// IE throws on parseFromString with invalid input.
 | ||||||
| 	try { | 	try { | ||||||
| 		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); | 		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); | ||||||
| 	} catch ( e ) { | 	} catch ( e ) {} | ||||||
| 		xml = undefined; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { | 	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; | ||||||
| 		jQuery.error( "Invalid XML: " + data ); | 	if ( !xml || parserErrorElem ) { | ||||||
|  | 		jQuery.error( "Invalid XML: " + ( | ||||||
|  | 			parserErrorElem ? | ||||||
|  | 				jQuery.map( parserErrorElem.childNodes, function( el ) { | ||||||
|  | 					return el.textContent; | ||||||
|  | 				} ).join( "\n" ) : | ||||||
|  | 				data | ||||||
|  | 		) ); | ||||||
| 	} | 	} | ||||||
| 	return xml; | 	return xml; | ||||||
| }; | }; | ||||||
| @@ -8971,16 +8980,14 @@ jQuery.fn.extend( { | |||||||
| 			// Can add propHook for "elements" to filter or add form elements
 | 			// Can add propHook for "elements" to filter or add form elements
 | ||||||
| 			var elements = jQuery.prop( this, "elements" ); | 			var elements = jQuery.prop( this, "elements" ); | ||||||
| 			return elements ? jQuery.makeArray( elements ) : this; | 			return elements ? jQuery.makeArray( elements ) : this; | ||||||
| 		} ) | 		} ).filter( function() { | ||||||
| 		.filter( function() { |  | ||||||
| 			var type = this.type; | 			var type = this.type; | ||||||
| 
 | 
 | ||||||
| 			// Use .is( ":disabled" ) so that fieldset[disabled] works
 | 			// Use .is( ":disabled" ) so that fieldset[disabled] works
 | ||||||
| 			return this.name && !jQuery( this ).is( ":disabled" ) && | 			return this.name && !jQuery( this ).is( ":disabled" ) && | ||||||
| 				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && | 				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && | ||||||
| 				( this.checked || !rcheckableType.test( type ) ); | 				( this.checked || !rcheckableType.test( type ) ); | ||||||
| 		} ) | 		} ).map( function( _i, elem ) { | ||||||
| 		.map( function( _i, elem ) { |  | ||||||
| 			var val = jQuery( this ).val(); | 			var val = jQuery( this ).val(); | ||||||
| 
 | 
 | ||||||
| 			if ( val == null ) { | 			if ( val == null ) { | ||||||
| @@ -9033,7 +9040,8 @@ var | |||||||
| 
 | 
 | ||||||
| 	// Anchor tag for parsing the document origin
 | 	// Anchor tag for parsing the document origin
 | ||||||
| 	originAnchor = document.createElement( "a" ); | 	originAnchor = document.createElement( "a" ); | ||||||
| 	originAnchor.href = location.href; | 
 | ||||||
|  | originAnchor.href = location.href; | ||||||
| 
 | 
 | ||||||
| // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
 | // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
 | ||||||
| function addToPrefiltersOrTransports( structure ) { | function addToPrefiltersOrTransports( structure ) { | ||||||
| @@ -9727,8 +9735,10 @@ jQuery.extend( { | |||||||
| 				response = ajaxHandleResponses( s, jqXHR, responses ); | 				response = ajaxHandleResponses( s, jqXHR, responses ); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			// Use a noop converter for missing script
 | 			// Use a noop converter for missing script but not if jsonp
 | ||||||
| 			if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { | 			if ( !isSuccess && | ||||||
|  | 				jQuery.inArray( "script", s.dataTypes ) > -1 && | ||||||
|  | 				jQuery.inArray( "json", s.dataTypes ) < 0 ) { | ||||||
| 				s.converters[ "text script" ] = function() {}; | 				s.converters[ "text script" ] = function() {}; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| @@ -10466,12 +10476,6 @@ jQuery.offset = { | |||||||
| 			options.using.call( elem, props ); | 			options.using.call( elem, props ); | ||||||
| 
 | 
 | ||||||
| 		} else { | 		} else { | ||||||
| 			if ( typeof props.top === "number" ) { |  | ||||||
| 				props.top += "px"; |  | ||||||
| 			} |  | ||||||
| 			if ( typeof props.left === "number" ) { |  | ||||||
| 				props.left += "px"; |  | ||||||
| 			} |  | ||||||
| 			curElem.css( props ); | 			curElem.css( props ); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -10640,8 +10644,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) { | |||||||
| 
 | 
 | ||||||
| // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
 | // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
 | ||||||
| jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { | jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { | ||||||
| 	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, | 	jQuery.each( { | ||||||
| 		function( defaultExtra, funcName ) { | 		padding: "inner" + name, | ||||||
|  | 		content: type, | ||||||
|  | 		"": "outer" + name | ||||||
|  | 	}, function( defaultExtra, funcName ) { | ||||||
| 
 | 
 | ||||||
| 		// Margin is only for outerHeight, outerWidth
 | 		// Margin is only for outerHeight, outerWidth
 | ||||||
| 		jQuery.fn[ funcName ] = function( margin, value ) { | 		jQuery.fn[ funcName ] = function( margin, value ) { | ||||||
| @@ -10726,7 +10733,8 @@ jQuery.fn.extend( { | |||||||
| 	} | 	} | ||||||
| } ); | } ); | ||||||
| 
 | 
 | ||||||
| jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + | jQuery.each( | ||||||
|  | 	( "blur focus focusin focusout resize scroll click dblclick " + | ||||||
| 	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + | 	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + | ||||||
| 	"change select submit keydown keypress keyup contextmenu" ).split( " " ), | 	"change select submit keydown keypress keyup contextmenu" ).split( " " ), | ||||||
| 	function( _i, name ) { | 	function( _i, name ) { | ||||||
| @@ -10737,7 +10745,8 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + | |||||||
| 				this.on( name, null, data, fn ) : | 				this.on( name, null, data, fn ) : | ||||||
| 				this.trigger( name ); | 				this.trigger( name ); | ||||||
| 		}; | 		}; | ||||||
| 	} ); | 	} | ||||||
|  | ); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
							
								
								
									
										4
									
								
								docs/_static/jquery.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										100
									
								
								docs/_static/language_data.js
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -10,7 +10,7 @@ | |||||||
|  * |  * | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; | var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; | ||||||
|  |  | ||||||
|  |  | ||||||
| /* Non-minified version is copied as a separate JS file, is available */ | /* Non-minified version is copied as a separate JS file, is available */ | ||||||
| @@ -197,101 +197,3 @@ var Stemmer = function() { | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| var splitChars = (function() { |  | ||||||
|     var result = {}; |  | ||||||
|     var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, |  | ||||||
|          1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, |  | ||||||
|          2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, |  | ||||||
|          2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, |  | ||||||
|          3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, |  | ||||||
|          3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, |  | ||||||
|          4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, |  | ||||||
|          8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, |  | ||||||
|          11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, |  | ||||||
|          43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; |  | ||||||
|     var i, j, start, end; |  | ||||||
|     for (i = 0; i < singles.length; i++) { |  | ||||||
|         result[singles[i]] = true; |  | ||||||
|     } |  | ||||||
|     var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], |  | ||||||
|          [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], |  | ||||||
|          [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], |  | ||||||
|          [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], |  | ||||||
|          [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], |  | ||||||
|          [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], |  | ||||||
|          [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], |  | ||||||
|          [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], |  | ||||||
|          [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], |  | ||||||
|          [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], |  | ||||||
|          [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], |  | ||||||
|          [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], |  | ||||||
|          [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], |  | ||||||
|          [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], |  | ||||||
|          [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], |  | ||||||
|          [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], |  | ||||||
|          [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], |  | ||||||
|          [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], |  | ||||||
|          [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], |  | ||||||
|          [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], |  | ||||||
|          [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], |  | ||||||
|          [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], |  | ||||||
|          [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], |  | ||||||
|          [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], |  | ||||||
|          [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], |  | ||||||
|          [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], |  | ||||||
|          [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], |  | ||||||
|          [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], |  | ||||||
|          [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], |  | ||||||
|          [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], |  | ||||||
|          [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], |  | ||||||
|          [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], |  | ||||||
|          [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], |  | ||||||
|          [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], |  | ||||||
|          [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], |  | ||||||
|          [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], |  | ||||||
|          [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], |  | ||||||
|          [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], |  | ||||||
|          [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], |  | ||||||
|          [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], |  | ||||||
|          [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], |  | ||||||
|          [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], |  | ||||||
|          [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], |  | ||||||
|          [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], |  | ||||||
|          [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], |  | ||||||
|          [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], |  | ||||||
|          [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], |  | ||||||
|          [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], |  | ||||||
|          [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; |  | ||||||
|     for (i = 0; i < ranges.length; i++) { |  | ||||||
|         start = ranges[i][0]; |  | ||||||
|         end = ranges[i][1]; |  | ||||||
|         for (j = start; j <= end; j++) { |  | ||||||
|             result[j] = true; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     return result; |  | ||||||
| })(); |  | ||||||
|  |  | ||||||
| function splitQuery(query) { |  | ||||||
|     var result = []; |  | ||||||
|     var start = -1; |  | ||||||
|     for (var i = 0; i < query.length; i++) { |  | ||||||
|         if (splitChars[query.charCodeAt(i)]) { |  | ||||||
|             if (start !== -1) { |  | ||||||
|                 result.push(query.slice(start, i)); |  | ||||||
|                 start = -1; |  | ||||||
|             } |  | ||||||
|         } else if (start === -1) { |  | ||||||
|             start = i; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     if (start !== -1) { |  | ||||||
|         result.push(query.slice(start)); |  | ||||||
|     } |  | ||||||
|     return result; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										746
									
								
								docs/_static/searchtools.js
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -8,18 +8,20 @@ | |||||||
|  * :license: BSD, see LICENSE for details. |  * :license: BSD, see LICENSE for details. | ||||||
|  * |  * | ||||||
|  */ |  */ | ||||||
|  | "use strict"; | ||||||
|  |  | ||||||
| if (!Scorer) { | /** | ||||||
|   /** |  | ||||||
|  * Simple result scoring code. |  * Simple result scoring code. | ||||||
|  */ |  */ | ||||||
|  | if (typeof Scorer === "undefined") { | ||||||
|   var Scorer = { |   var Scorer = { | ||||||
|     // Implement the following function to further tweak the score for each result |     // Implement the following function to further tweak the score for each result | ||||||
|     // The function takes a result array [filename, title, anchor, descr, score] |     // The function takes a result array [docname, title, anchor, descr, score, filename] | ||||||
|     // and returns the new score. |     // and returns the new score. | ||||||
|     /* |     /* | ||||||
|     score: function(result) { |     score: result => { | ||||||
|       return result[4]; |       const [docname, title, anchor, descr, score, filename] = result | ||||||
|  |       return score | ||||||
|     }, |     }, | ||||||
|     */ |     */ | ||||||
|  |  | ||||||
| @@ -28,9 +30,11 @@ if (!Scorer) { | |||||||
|     // or matches in the last dotted part of the object name |     // or matches in the last dotted part of the object name | ||||||
|     objPartialMatch: 6, |     objPartialMatch: 6, | ||||||
|     // Additive scores depending on the priority of the object |     // Additive scores depending on the priority of the object | ||||||
|     objPrio: {0:  15,   // used to be importantResults |     objPrio: { | ||||||
|  |       0: 15, // used to be importantResults | ||||||
|       1: 5, // used to be objectResults |       1: 5, // used to be objectResults | ||||||
|               2: -5},  // used to be unimportantResults |       2: -5, // used to be unimportantResults | ||||||
|  |     }, | ||||||
|     //  Used when the priority is not in the mapping. |     //  Used when the priority is not in the mapping. | ||||||
|     objPrioDefault: 0, |     objPrioDefault: 0, | ||||||
|  |  | ||||||
| @@ -39,452 +43,455 @@ if (!Scorer) { | |||||||
|     partialTitle: 7, |     partialTitle: 7, | ||||||
|     // query found in terms |     // query found in terms | ||||||
|     term: 5, |     term: 5, | ||||||
|     partialTerm: 2 |     partialTerm: 2, | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
| if (!splitQuery) { | const _removeChildren = (element) => { | ||||||
|   function splitQuery(query) { |   while (element && element.lastChild) element.removeChild(element.lastChild); | ||||||
|     return query.split(/\s+/); | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping | ||||||
|  |  */ | ||||||
|  | const _escapeRegExp = (string) => | ||||||
|  |   string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string | ||||||
|  |  | ||||||
|  | const _displayItem = (item, highlightTerms, searchTerms) => { | ||||||
|  |   const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; | ||||||
|  |   const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; | ||||||
|  |   const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; | ||||||
|  |   const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; | ||||||
|  |   const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; | ||||||
|  |  | ||||||
|  |   const [docName, title, anchor, descr] = item; | ||||||
|  |  | ||||||
|  |   let listItem = document.createElement("li"); | ||||||
|  |   let requestUrl; | ||||||
|  |   let linkUrl; | ||||||
|  |   if (docBuilder === "dirhtml") { | ||||||
|  |     // dirhtml builder | ||||||
|  |     let dirname = docName + "/"; | ||||||
|  |     if (dirname.match(/\/index\/$/)) | ||||||
|  |       dirname = dirname.substring(0, dirname.length - 6); | ||||||
|  |     else if (dirname === "index/") dirname = ""; | ||||||
|  |     requestUrl = docUrlRoot + dirname; | ||||||
|  |     linkUrl = requestUrl; | ||||||
|  |   } else { | ||||||
|  |     // normal html builders | ||||||
|  |     requestUrl = docUrlRoot + docName + docFileSuffix; | ||||||
|  |     linkUrl = docName + docLinkSuffix; | ||||||
|   } |   } | ||||||
|  |   const params = new URLSearchParams(); | ||||||
|  |   params.set("highlight", [...highlightTerms].join(" ")); | ||||||
|  |   let linkEl = listItem.appendChild(document.createElement("a")); | ||||||
|  |   linkEl.href = linkUrl + "?" + params.toString() + anchor; | ||||||
|  |   linkEl.innerHTML = title; | ||||||
|  |   if (descr) | ||||||
|  |     listItem.appendChild(document.createElement("span")).innerText = | ||||||
|  |       " (" + descr + ")"; | ||||||
|  |   else if (showSearchSummary) | ||||||
|  |     fetch(requestUrl) | ||||||
|  |       .then((responseData) => responseData.text()) | ||||||
|  |       .then((data) => { | ||||||
|  |         if (data) | ||||||
|  |           listItem.appendChild( | ||||||
|  |             Search.makeSearchSummary(data, searchTerms, highlightTerms) | ||||||
|  |           ); | ||||||
|  |       }); | ||||||
|  |   Search.output.appendChild(listItem); | ||||||
|  | }; | ||||||
|  | const _finishSearch = (resultCount) => { | ||||||
|  |   Search.stopPulse(); | ||||||
|  |   Search.title.innerText = _("Search Results"); | ||||||
|  |   if (!resultCount) | ||||||
|  |     Search.status.innerText = Documentation.gettext( | ||||||
|  |       "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." | ||||||
|  |     ); | ||||||
|  |   else | ||||||
|  |     Search.status.innerText = _( | ||||||
|  |       `Search finished, found ${resultCount} page(s) matching the search query.` | ||||||
|  |     ); | ||||||
|  | }; | ||||||
|  | const _displayNextItem = ( | ||||||
|  |   results, | ||||||
|  |   resultCount, | ||||||
|  |   highlightTerms, | ||||||
|  |   searchTerms | ||||||
|  | ) => { | ||||||
|  |   // results left, load the summary and display it | ||||||
|  |   // this is intended to be dynamic (don't sub resultsCount) | ||||||
|  |   if (results.length) { | ||||||
|  |     _displayItem(results.pop(), highlightTerms, searchTerms); | ||||||
|  |     setTimeout( | ||||||
|  |       () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), | ||||||
|  |       5 | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  |   // search finished, update title and status message | ||||||
|  |   else _finishSearch(resultCount); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Default splitQuery function. Can be overridden in ``sphinx.search`` with a | ||||||
|  |  * custom function per language. | ||||||
|  |  * | ||||||
|  |  * The regular expression works by splitting the string on consecutive characters | ||||||
|  |  * that are not Unicode letters, numbers, underscores, or emoji characters. | ||||||
|  |  * This is the same as ``\W+`` in Python, preserving the surrogate pair area. | ||||||
|  |  */ | ||||||
|  | if (typeof splitQuery === "undefined") { | ||||||
|  |   var splitQuery = (query) => query | ||||||
|  |       .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) | ||||||
|  |       .filter(term => term)  // remove remaining empty strings | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Search Module |  * Search Module | ||||||
|  */ |  */ | ||||||
| var Search = { | const Search = { | ||||||
|  |   _index: null, | ||||||
|  |   _queued_query: null, | ||||||
|  |   _pulse_status: -1, | ||||||
|  |  | ||||||
|   _index : null, |   htmlToText: (htmlString) => { | ||||||
|   _queued_query : null, |     const htmlElement = document | ||||||
|   _pulse_status : -1, |       .createRange() | ||||||
|  |       .createContextualFragment(htmlString); | ||||||
|   htmlToText : function(htmlString) { |     _removeChildren(htmlElement.querySelectorAll(".headerlink")); | ||||||
|       var virtualDocument = document.implementation.createHTMLDocument('virtual'); |     const docContent = htmlElement.querySelector('[role="main"]'); | ||||||
|       var htmlElement = $(htmlString, virtualDocument); |     if (docContent !== undefined) return docContent.textContent; | ||||||
|       htmlElement.find('.headerlink').remove(); |     console.warn( | ||||||
|       docContent = htmlElement.find('[role=main]')[0]; |       "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." | ||||||
|       if(docContent === undefined) { |     ); | ||||||
|           console.warn("Content block not found. Sphinx search tries to obtain it " + |  | ||||||
|                        "via '[role=main]'. Could you check your theme or template."); |  | ||||||
|     return ""; |     return ""; | ||||||
|       } |  | ||||||
|       return docContent.textContent || docContent.innerText; |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   init : function() { |   init: () => { | ||||||
|       var params = $.getQueryParameters(); |     const query = new URLSearchParams(window.location.search).get("q"); | ||||||
|       if (params.q) { |     document | ||||||
|           var query = params.q[0]; |       .querySelectorAll('input[name="q"]') | ||||||
|           $('input[name="q"]')[0].value = query; |       .forEach((el) => (el.value = query)); | ||||||
|           this.performSearch(query); |     if (query) Search.performSearch(query); | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   loadIndex: (url) => | ||||||
|  |     (document.body.appendChild(document.createElement("script")).src = url), | ||||||
|  |  | ||||||
|  |   setIndex: (index) => { | ||||||
|  |     Search._index = index; | ||||||
|  |     if (Search._queued_query !== null) { | ||||||
|  |       const query = Search._queued_query; | ||||||
|  |       Search._queued_query = null; | ||||||
|  |       Search.query(query); | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   loadIndex : function(url) { |   hasIndex: () => Search._index !== null, | ||||||
|     $.ajax({type: "GET", url: url, data: null, |  | ||||||
|             dataType: "script", cache: true, |  | ||||||
|             complete: function(jqxhr, textstatus) { |  | ||||||
|               if (textstatus != "success") { |  | ||||||
|                 document.getElementById("searchindexloader").src = url; |  | ||||||
|               } |  | ||||||
|             }}); |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   setIndex : function(index) { |   deferQuery: (query) => (Search._queued_query = query), | ||||||
|     var q; |  | ||||||
|     this._index = index; |  | ||||||
|     if ((q = this._queued_query) !== null) { |  | ||||||
|       this._queued_query = null; |  | ||||||
|       Search.query(q); |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   hasIndex : function() { |   stopPulse: () => (Search._pulse_status = -1), | ||||||
|       return this._index !== null; |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   deferQuery : function(query) { |   startPulse: () => { | ||||||
|       this._queued_query = query; |     if (Search._pulse_status >= 0) return; | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   stopPulse : function() { |     const pulse = () => { | ||||||
|       this._pulse_status = 0; |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   startPulse : function() { |  | ||||||
|     if (this._pulse_status >= 0) |  | ||||||
|         return; |  | ||||||
|     function pulse() { |  | ||||||
|       var i; |  | ||||||
|       Search._pulse_status = (Search._pulse_status + 1) % 4; |       Search._pulse_status = (Search._pulse_status + 1) % 4; | ||||||
|       var dotString = ''; |       Search.dots.innerText = ".".repeat(Search._pulse_status); | ||||||
|       for (i = 0; i < Search._pulse_status; i++) |       if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); | ||||||
|         dotString += '.'; |     }; | ||||||
|       Search.dots.text(dotString); |  | ||||||
|       if (Search._pulse_status > -1) |  | ||||||
|         window.setTimeout(pulse, 500); |  | ||||||
|     } |  | ||||||
|     pulse(); |     pulse(); | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * perform a search for something (or wait until index is loaded) |    * perform a search for something (or wait until index is loaded) | ||||||
|    */ |    */ | ||||||
|   performSearch : function(query) { |   performSearch: (query) => { | ||||||
|     // create the required interface elements |     // create the required interface elements | ||||||
|     this.out = $('#search-results'); |     const searchText = document.createElement("h2"); | ||||||
|     this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out); |     searchText.textContent = _("Searching"); | ||||||
|     this.dots = $('<span></span>').appendTo(this.title); |     const searchSummary = document.createElement("p"); | ||||||
|     this.status = $('<p class="search-summary"> </p>').appendTo(this.out); |     searchSummary.classList.add("search-summary"); | ||||||
|     this.output = $('<ul class="search"/>').appendTo(this.out); |     searchSummary.innerText = ""; | ||||||
|  |     const searchList = document.createElement("ul"); | ||||||
|  |     searchList.classList.add("search"); | ||||||
|  |  | ||||||
|     $('#search-progress').text(_('Preparing search...')); |     const out = document.getElementById("search-results"); | ||||||
|     this.startPulse(); |     Search.title = out.appendChild(searchText); | ||||||
|  |     Search.dots = Search.title.appendChild(document.createElement("span")); | ||||||
|  |     Search.status = out.appendChild(searchSummary); | ||||||
|  |     Search.output = out.appendChild(searchList); | ||||||
|  |  | ||||||
|  |     const searchProgress = document.getElementById("search-progress"); | ||||||
|  |     // Some themes don't use the search progress node | ||||||
|  |     if (searchProgress) { | ||||||
|  |       searchProgress.innerText = _("Preparing search..."); | ||||||
|  |     } | ||||||
|  |     Search.startPulse(); | ||||||
|  |  | ||||||
|     // index already loaded, the browser was quick! |     // index already loaded, the browser was quick! | ||||||
|     if (this.hasIndex()) |     if (Search.hasIndex()) Search.query(query); | ||||||
|       this.query(query); |     else Search.deferQuery(query); | ||||||
|     else |  | ||||||
|       this.deferQuery(query); |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * execute search (requires search index to be loaded) |    * execute search (requires search index to be loaded) | ||||||
|    */ |    */ | ||||||
|   query : function(query) { |   query: (query) => { | ||||||
|     var i; |     // stem the search terms and add them to the correct list | ||||||
|  |     const stemmer = new Stemmer(); | ||||||
|  |     const searchTerms = new Set(); | ||||||
|  |     const excludedTerms = new Set(); | ||||||
|  |     const highlightTerms = new Set(); | ||||||
|  |     const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); | ||||||
|  |     splitQuery(query.trim()).forEach((queryTerm) => { | ||||||
|  |       const queryTermLower = queryTerm.toLowerCase(); | ||||||
|  |  | ||||||
|     // stem the searchterms and add them to the correct list |       // maybe skip this "word" | ||||||
|     var stemmer = new Stemmer(); |       // stopwords array is from language_data.js | ||||||
|     var searchterms = []; |       if ( | ||||||
|     var excluded = []; |         stopwords.indexOf(queryTermLower) !== -1 || | ||||||
|     var hlterms = []; |         queryTerm.match(/^\d+$/) | ||||||
|     var tmp = splitQuery(query); |       ) | ||||||
|     var objectterms = []; |         return; | ||||||
|     for (i = 0; i < tmp.length; i++) { |  | ||||||
|       if (tmp[i] !== "") { |  | ||||||
|           objectterms.push(tmp[i].toLowerCase()); |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|       if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") { |  | ||||||
|         // skip this "word" |  | ||||||
|         continue; |  | ||||||
|       } |  | ||||||
|       // stem the word |       // stem the word | ||||||
|       var word = stemmer.stemWord(tmp[i].toLowerCase()); |       let word = stemmer.stemWord(queryTermLower); | ||||||
|       var toAppend; |  | ||||||
|       // select the correct list |       // select the correct list | ||||||
|       if (word[0] == '-') { |       if (word[0] === "-") excludedTerms.add(word.substr(1)); | ||||||
|         toAppend = excluded; |  | ||||||
|         word = word.substr(1); |  | ||||||
|       } |  | ||||||
|       else { |       else { | ||||||
|         toAppend = searchterms; |         searchTerms.add(word); | ||||||
|         hlterms.push(tmp[i].toLowerCase()); |         highlightTerms.add(queryTermLower); | ||||||
|       } |       } | ||||||
|       // only add if not already in the list |     }); | ||||||
|       if (!$u.contains(toAppend, word)) |  | ||||||
|         toAppend.push(word); |  | ||||||
|     } |  | ||||||
|     var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" ")); |  | ||||||
|  |  | ||||||
|     // console.debug('SEARCH: searching for:'); |     // console.debug("SEARCH: searching for:"); | ||||||
|     // console.info('required: ', searchterms); |     // console.info("required: ", [...searchTerms]); | ||||||
|     // console.info('excluded: ', excluded); |     // console.info("excluded: ", [...excludedTerms]); | ||||||
|  |  | ||||||
|     // prepare search |     // array of [docname, title, anchor, descr, score, filename] | ||||||
|     var terms = this._index.terms; |     let results = []; | ||||||
|     var titleterms = this._index.titleterms; |     _removeChildren(document.getElementById("search-progress")); | ||||||
|  |  | ||||||
|     // array of [filename, title, anchor, descr, score] |  | ||||||
|     var results = []; |  | ||||||
|     $('#search-progress').empty(); |  | ||||||
|  |  | ||||||
|     // lookup as object |     // lookup as object | ||||||
|     for (i = 0; i < objectterms.length; i++) { |     objectTerms.forEach((term) => | ||||||
|       var others = [].concat(objectterms.slice(0, i), |       results.push(...Search.performObjectSearch(term, objectTerms)) | ||||||
|                              objectterms.slice(i+1, objectterms.length)); |     ); | ||||||
|       results = results.concat(this.performObjectSearch(objectterms[i], others)); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // lookup as search terms in fulltext |     // lookup as search terms in fulltext | ||||||
|     results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms)); |     results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); | ||||||
|  |  | ||||||
|     // let the scorer override scores with a custom scoring function |     // let the scorer override scores with a custom scoring function | ||||||
|     if (Scorer.score) { |     if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); | ||||||
|       for (i = 0; i < results.length; i++) |  | ||||||
|         results[i][4] = Scorer.score(results[i]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // now sort the results by score (in opposite order of appearance, since the |     // now sort the results by score (in opposite order of appearance, since the | ||||||
|     // display function below uses pop() to retrieve items) and then |     // display function below uses pop() to retrieve items) and then | ||||||
|     // alphabetically |     // alphabetically | ||||||
|     results.sort(function(a, b) { |     results.sort((a, b) => { | ||||||
|       var left = a[4]; |       const leftScore = a[4]; | ||||||
|       var right = b[4]; |       const rightScore = b[4]; | ||||||
|       if (left > right) { |       if (leftScore === rightScore) { | ||||||
|         return 1; |  | ||||||
|       } else if (left < right) { |  | ||||||
|         return -1; |  | ||||||
|       } else { |  | ||||||
|         // same score: sort alphabetically |         // same score: sort alphabetically | ||||||
|         left = a[1].toLowerCase(); |         const leftTitle = a[1].toLowerCase(); | ||||||
|         right = b[1].toLowerCase(); |         const rightTitle = b[1].toLowerCase(); | ||||||
|         return (left > right) ? -1 : ((left < right) ? 1 : 0); |         if (leftTitle === rightTitle) return 0; | ||||||
|  |         return leftTitle > rightTitle ? -1 : 1; // inverted is intentional | ||||||
|       } |       } | ||||||
|  |       return leftScore > rightScore ? 1 : -1; | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     // remove duplicate search results | ||||||
|  |     // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept | ||||||
|  |     let seen = new Set(); | ||||||
|  |     results = results.reverse().reduce((acc, result) => { | ||||||
|  |       let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); | ||||||
|  |       if (!seen.has(resultStr)) { | ||||||
|  |         acc.push(result); | ||||||
|  |         seen.add(resultStr); | ||||||
|  |       } | ||||||
|  |       return acc; | ||||||
|  |     }, []); | ||||||
|  |  | ||||||
|  |     results = results.reverse(); | ||||||
|  |  | ||||||
|     // for debugging |     // for debugging | ||||||
|     //Search.lastresults = results.slice();  // a copy |     //Search.lastresults = results.slice();  // a copy | ||||||
|     //console.info('search results:', Search.lastresults); |     // console.info("search results:", Search.lastresults); | ||||||
|  |  | ||||||
|     // print the results |     // print the results | ||||||
|     var resultCount = results.length; |     _displayNextItem(results, results.length, highlightTerms, searchTerms); | ||||||
|     function displayNextItem() { |  | ||||||
|       // results left, load the summary and display it |  | ||||||
|       if (results.length) { |  | ||||||
|         var item = results.pop(); |  | ||||||
|         var listItem = $('<li></li>'); |  | ||||||
|         var requestUrl = ""; |  | ||||||
|         var linkUrl = ""; |  | ||||||
|         if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') { |  | ||||||
|           // dirhtml builder |  | ||||||
|           var dirname = item[0] + '/'; |  | ||||||
|           if (dirname.match(/\/index\/$/)) { |  | ||||||
|             dirname = dirname.substring(0, dirname.length-6); |  | ||||||
|           } else if (dirname == 'index/') { |  | ||||||
|             dirname = ''; |  | ||||||
|           } |  | ||||||
|           requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname; |  | ||||||
|           linkUrl = requestUrl; |  | ||||||
|  |  | ||||||
|         } else { |  | ||||||
|           // normal html builders |  | ||||||
|           requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX; |  | ||||||
|           linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX; |  | ||||||
|         } |  | ||||||
|         listItem.append($('<a/>').attr('href', |  | ||||||
|             linkUrl + |  | ||||||
|             highlightstring + item[2]).html(item[1])); |  | ||||||
|         if (item[3]) { |  | ||||||
|           listItem.append($('<span> (' + item[3] + ')</span>')); |  | ||||||
|           Search.output.append(listItem); |  | ||||||
|           setTimeout(function() { |  | ||||||
|             displayNextItem(); |  | ||||||
|           }, 5); |  | ||||||
|         } else if (DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY) { |  | ||||||
|           $.ajax({url: requestUrl, |  | ||||||
|                   dataType: "text", |  | ||||||
|                   complete: function(jqxhr, textstatus) { |  | ||||||
|                     var data = jqxhr.responseText; |  | ||||||
|                     if (data !== '' && data !== undefined) { |  | ||||||
|                       var summary = Search.makeSearchSummary(data, searchterms, hlterms); |  | ||||||
|                       if (summary) { |  | ||||||
|                         listItem.append(summary); |  | ||||||
|                       } |  | ||||||
|                     } |  | ||||||
|                     Search.output.append(listItem); |  | ||||||
|                     setTimeout(function() { |  | ||||||
|                       displayNextItem(); |  | ||||||
|                     }, 5); |  | ||||||
|                   }}); |  | ||||||
|         } else { |  | ||||||
|           // just display title |  | ||||||
|           Search.output.append(listItem); |  | ||||||
|           setTimeout(function() { |  | ||||||
|             displayNextItem(); |  | ||||||
|           }, 5); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       // search finished, update title and status message |  | ||||||
|       else { |  | ||||||
|         Search.stopPulse(); |  | ||||||
|         Search.title.text(_('Search Results')); |  | ||||||
|         if (!resultCount) |  | ||||||
|           Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.')); |  | ||||||
|         else |  | ||||||
|             Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount)); |  | ||||||
|         Search.status.fadeIn(500); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     displayNextItem(); |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * search for object names |    * search for object names | ||||||
|    */ |    */ | ||||||
|   performObjectSearch : function(object, otherterms) { |   performObjectSearch: (object, objectTerms) => { | ||||||
|     var filenames = this._index.filenames; |     const filenames = Search._index.filenames; | ||||||
|     var docnames = this._index.docnames; |     const docNames = Search._index.docnames; | ||||||
|     var objects = this._index.objects; |     const objects = Search._index.objects; | ||||||
|     var objnames = this._index.objnames; |     const objNames = Search._index.objnames; | ||||||
|     var titles = this._index.titles; |     const titles = Search._index.titles; | ||||||
|  |  | ||||||
|     var i; |     const results = []; | ||||||
|     var results = []; |  | ||||||
|  |     const objectSearchCallback = (prefix, match) => { | ||||||
|  |       const name = match[4] | ||||||
|  |       const fullname = (prefix ? prefix + "." : "") + name; | ||||||
|  |       const fullnameLower = fullname.toLowerCase(); | ||||||
|  |       if (fullnameLower.indexOf(object) < 0) return; | ||||||
|  |  | ||||||
|  |       let score = 0; | ||||||
|  |       const parts = fullnameLower.split("."); | ||||||
|  |  | ||||||
|     for (var prefix in objects) { |  | ||||||
|       for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) { |  | ||||||
|         var match = objects[prefix][iMatch]; |  | ||||||
|         var name = match[4]; |  | ||||||
|         var fullname = (prefix ? prefix + '.' : '') + name; |  | ||||||
|         var fullnameLower = fullname.toLowerCase() |  | ||||||
|         if (fullnameLower.indexOf(object) > -1) { |  | ||||||
|           var score = 0; |  | ||||||
|           var parts = fullnameLower.split('.'); |  | ||||||
|       // check for different match types: exact matches of full name or |       // check for different match types: exact matches of full name or | ||||||
|       // "last name" (i.e. last dotted part) |       // "last name" (i.e. last dotted part) | ||||||
|           if (fullnameLower == object || parts[parts.length - 1] == object) { |       if (fullnameLower === object || parts.slice(-1)[0] === object) | ||||||
|         score += Scorer.objNameMatch; |         score += Scorer.objNameMatch; | ||||||
|           // matches in last name |       else if (parts.slice(-1)[0].indexOf(object) > -1) | ||||||
|           } else if (parts[parts.length - 1].indexOf(object) > -1) { |         score += Scorer.objPartialMatch; // matches in last name | ||||||
|             score += Scorer.objPartialMatch; |  | ||||||
|           } |       const objName = objNames[match[1]][2]; | ||||||
|           var objname = objnames[match[1]][2]; |       const title = titles[match[0]]; | ||||||
|           var title = titles[match[0]]; |  | ||||||
|       // If more than one term searched for, we require other words to be |       // If more than one term searched for, we require other words to be | ||||||
|       // found in the name/title/description |       // found in the name/title/description | ||||||
|           if (otherterms.length > 0) { |       const otherTerms = new Set(objectTerms); | ||||||
|             var haystack = (prefix + ' ' + name + ' ' + |       otherTerms.delete(object); | ||||||
|                             objname + ' ' + title).toLowerCase(); |       if (otherTerms.size > 0) { | ||||||
|             var allfound = true; |         const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); | ||||||
|             for (i = 0; i < otherterms.length; i++) { |         if ( | ||||||
|               if (haystack.indexOf(otherterms[i]) == -1) { |           [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) | ||||||
|                 allfound = false; |         ) | ||||||
|                 break; |           return; | ||||||
|       } |       } | ||||||
|             } |  | ||||||
|             if (!allfound) { |  | ||||||
|               continue; |  | ||||||
|             } |  | ||||||
|           } |  | ||||||
|           var descr = objname + _(', in ') + title; |  | ||||||
|  |  | ||||||
|           var anchor = match[3]; |       let anchor = match[3]; | ||||||
|           if (anchor === '') |       if (anchor === "") anchor = fullname; | ||||||
|             anchor = fullname; |       else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; | ||||||
|           else if (anchor == '-') |  | ||||||
|             anchor = objnames[match[1]][1] + '-' + fullname; |       const descr = objName + _(", in ") + title; | ||||||
|  |  | ||||||
|       // add custom score for some objects according to scorer |       // add custom score for some objects according to scorer | ||||||
|           if (Scorer.objPrio.hasOwnProperty(match[2])) { |       if (Scorer.objPrio.hasOwnProperty(match[2])) | ||||||
|         score += Scorer.objPrio[match[2]]; |         score += Scorer.objPrio[match[2]]; | ||||||
|           } else { |       else score += Scorer.objPrioDefault; | ||||||
|             score += Scorer.objPrioDefault; |  | ||||||
|           } |  | ||||||
|           results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |       results.push([ | ||||||
|  |         docNames[match[0]], | ||||||
|  |         fullname, | ||||||
|  |         "#" + anchor, | ||||||
|  |         descr, | ||||||
|  |         score, | ||||||
|  |         filenames[match[0]], | ||||||
|  |       ]); | ||||||
|  |     }; | ||||||
|  |     Object.keys(objects).forEach((prefix) => | ||||||
|  |       objects[prefix].forEach((array) => | ||||||
|  |         objectSearchCallback(prefix, array) | ||||||
|  |       ) | ||||||
|  |     ); | ||||||
|     return results; |     return results; | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions |  | ||||||
|    */ |  | ||||||
|   escapeRegExp : function(string) { |  | ||||||
|     return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * search for full-text terms in the index |    * search for full-text terms in the index | ||||||
|    */ |    */ | ||||||
|   performTermsSearch : function(searchterms, excluded, terms, titleterms) { |   performTermsSearch: (searchTerms, excludedTerms) => { | ||||||
|     var docnames = this._index.docnames; |     // prepare search | ||||||
|     var filenames = this._index.filenames; |     const terms = Search._index.terms; | ||||||
|     var titles = this._index.titles; |     const titleTerms = Search._index.titleterms; | ||||||
|  |     const docNames = Search._index.docnames; | ||||||
|  |     const filenames = Search._index.filenames; | ||||||
|  |     const titles = Search._index.titles; | ||||||
|  |  | ||||||
|     var i, j, file; |     const scoreMap = new Map(); | ||||||
|     var fileMap = {}; |     const fileMap = new Map(); | ||||||
|     var scoreMap = {}; |  | ||||||
|     var results = []; |  | ||||||
|  |  | ||||||
|     // perform the search on the required terms |     // perform the search on the required terms | ||||||
|     for (i = 0; i < searchterms.length; i++) { |     searchTerms.forEach((word) => { | ||||||
|       var word = searchterms[i]; |       const files = []; | ||||||
|       var files = []; |       const arr = [ | ||||||
|       var _o = [ |         { files: terms[word], score: Scorer.term }, | ||||||
|         {files: terms[word], score: Scorer.term}, |         { files: titleTerms[word], score: Scorer.title }, | ||||||
|         {files: titleterms[word], score: Scorer.title} |  | ||||||
|       ]; |       ]; | ||||||
|       // add support for partial matches |       // add support for partial matches | ||||||
|       if (word.length > 2) { |       if (word.length > 2) { | ||||||
|         var word_regex = this.escapeRegExp(word); |         const escapedWord = _escapeRegExp(word); | ||||||
|         for (var w in terms) { |         Object.keys(terms).forEach((term) => { | ||||||
|           if (w.match(word_regex) && !terms[word]) { |           if (term.match(escapedWord) && !terms[word]) | ||||||
|             _o.push({files: terms[w], score: Scorer.partialTerm}) |             arr.push({ files: terms[term], score: Scorer.partialTerm }); | ||||||
|           } |         }); | ||||||
|         } |         Object.keys(titleTerms).forEach((term) => { | ||||||
|         for (var w in titleterms) { |           if (term.match(escapedWord) && !titleTerms[word]) | ||||||
|           if (w.match(word_regex) && !titleterms[word]) { |             arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); | ||||||
|               _o.push({files: titleterms[w], score: Scorer.partialTitle}) |         }); | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       // no match but word was a required one |       // no match but word was a required one | ||||||
|       if ($u.every(_o, function(o){return o.files === undefined;})) { |       if (arr.every((record) => record.files === undefined)) return; | ||||||
|         break; |  | ||||||
|       } |  | ||||||
|       // found search word in contents |       // found search word in contents | ||||||
|       $u.each(_o, function(o) { |       arr.forEach((record) => { | ||||||
|         var _files = o.files; |         if (record.files === undefined) return; | ||||||
|         if (_files === undefined) |  | ||||||
|           return |  | ||||||
|  |  | ||||||
|         if (_files.length === undefined) |         let recordFiles = record.files; | ||||||
|           _files = [_files]; |         if (recordFiles.length === undefined) recordFiles = [recordFiles]; | ||||||
|         files = files.concat(_files); |         files.push(...recordFiles); | ||||||
|  |  | ||||||
|         // set score for the word in each file to Scorer.term |         // set score for the word in each file | ||||||
|         for (j = 0; j < _files.length; j++) { |         recordFiles.forEach((file) => { | ||||||
|           file = _files[j]; |           if (!scoreMap.has(file)) scoreMap.set(file, {}); | ||||||
|           if (!(file in scoreMap)) |           scoreMap.get(file)[word] = record.score; | ||||||
|             scoreMap[file] = {}; |         }); | ||||||
|           scoreMap[file][word] = o.score; |  | ||||||
|         } |  | ||||||
|       }); |       }); | ||||||
|  |  | ||||||
|       // create the mapping |       // create the mapping | ||||||
|       for (j = 0; j < files.length; j++) { |       files.forEach((file) => { | ||||||
|         file = files[j]; |         if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) | ||||||
|         if (file in fileMap && fileMap[file].indexOf(word) === -1) |           fileMap.get(file).push(word); | ||||||
|           fileMap[file].push(word); |         else fileMap.set(file, [word]); | ||||||
|         else |       }); | ||||||
|           fileMap[file] = [word]; |     }); | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // now check if the files don't contain excluded terms |     // now check if the files don't contain excluded terms | ||||||
|     for (file in fileMap) { |     const results = []; | ||||||
|       var valid = true; |     for (const [file, wordList] of fileMap) { | ||||||
|  |  | ||||||
|       // check if all requirements are matched |       // check if all requirements are matched | ||||||
|       var filteredTermCount = // as search terms with length < 3 are discarded: ignore |  | ||||||
|         searchterms.filter(function(term){return term.length > 2}).length |       // as search terms with length < 3 are discarded | ||||||
|  |       const filteredTermCount = [...searchTerms].filter( | ||||||
|  |         (term) => term.length > 2 | ||||||
|  |       ).length; | ||||||
|       if ( |       if ( | ||||||
|         fileMap[file].length != searchterms.length && |         wordList.length !== searchTerms.size && | ||||||
|         fileMap[file].length != filteredTermCount |         wordList.length !== filteredTermCount | ||||||
|       ) continue; |       ) | ||||||
|  |         continue; | ||||||
|  |  | ||||||
|       // ensure that none of the excluded terms is in the search result |       // ensure that none of the excluded terms is in the search result | ||||||
|       for (i = 0; i < excluded.length; i++) { |       if ( | ||||||
|         if (terms[excluded[i]] == file || |         [...excludedTerms].some( | ||||||
|             titleterms[excluded[i]] == file || |           (term) => | ||||||
|             $u.contains(terms[excluded[i]] || [], file) || |             terms[term] === file || | ||||||
|             $u.contains(titleterms[excluded[i]] || [], file)) { |             titleTerms[term] === file || | ||||||
|           valid = false; |             (terms[term] || []).includes(file) || | ||||||
|  |             (titleTerms[term] || []).includes(file) | ||||||
|  |         ) | ||||||
|  |       ) | ||||||
|         break; |         break; | ||||||
|         } |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|       // if we have still a valid result we can add it to the result list |  | ||||||
|       if (valid) { |  | ||||||
|       // select one (max) score for the file. |       // select one (max) score for the file. | ||||||
|         // for better ranking, we should calculate ranking by using words statistics like basic tf-idf... |       const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); | ||||||
|         var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]})); |       // add result to the result list | ||||||
|         results.push([docnames[file], titles[file], '', null, score, filenames[file]]); |       results.push([ | ||||||
|       } |         docNames[file], | ||||||
|  |         titles[file], | ||||||
|  |         "", | ||||||
|  |         null, | ||||||
|  |         score, | ||||||
|  |         filenames[file], | ||||||
|  |       ]); | ||||||
|     } |     } | ||||||
|     return results; |     return results; | ||||||
|   }, |   }, | ||||||
| @@ -492,34 +499,33 @@ var Search = { | |||||||
|   /** |   /** | ||||||
|    * helper function to return a node containing the |    * helper function to return a node containing the | ||||||
|    * search summary for a given text. keywords is a list |    * search summary for a given text. keywords is a list | ||||||
|    * of stemmed words, hlwords is the list of normal, unstemmed |    * of stemmed words, highlightWords is the list of normal, unstemmed | ||||||
|    * words. the first one is used to find the occurrence, the |    * words. the first one is used to find the occurrence, the | ||||||
|    * latter for highlighting it. |    * latter for highlighting it. | ||||||
|    */ |    */ | ||||||
|   makeSearchSummary : function(htmlText, keywords, hlwords) { |   makeSearchSummary: (htmlText, keywords, highlightWords) => { | ||||||
|     var text = Search.htmlToText(htmlText); |     const text = Search.htmlToText(htmlText).toLowerCase(); | ||||||
|     if (text == "") { |     if (text === "") return null; | ||||||
|       return null; |  | ||||||
|     } |     const actualStartPosition = [...keywords] | ||||||
|     var textLower = text.toLowerCase(); |       .map((k) => text.indexOf(k.toLowerCase())) | ||||||
|     var start = 0; |       .filter((i) => i > -1) | ||||||
|     $.each(keywords, function() { |       .slice(-1)[0]; | ||||||
|       var i = textLower.indexOf(this.toLowerCase()); |     const startWithContext = Math.max(actualStartPosition - 120, 0); | ||||||
|       if (i > -1) |  | ||||||
|         start = i; |     const top = startWithContext === 0 ? "" : "..."; | ||||||
|     }); |     const tail = startWithContext + 240 < text.length ? "..." : ""; | ||||||
|     start = Math.max(start - 120, 0); |  | ||||||
|     var excerpt = ((start > 0) ? '...' : '') + |     let summary = document.createElement("div"); | ||||||
|       $.trim(text.substr(start, 240)) + |     summary.classList.add("context"); | ||||||
|       ((start + 240 - text.length) ? '...' : ''); |     summary.innerText = top + text.substr(startWithContext, 240).trim() + tail; | ||||||
|     var rv = $('<p class="context"></p>').text(excerpt); |  | ||||||
|     $.each(hlwords, function() { |     highlightWords.forEach((highlightWord) => | ||||||
|       rv = rv.highlightText(this, 'highlighted'); |       _highlightText(summary, highlightWord, "highlighted") | ||||||
|     }); |     ); | ||||||
|     return rv; |  | ||||||
|   } |     return summary; | ||||||
|  |   }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| $(document).ready(function() { | _ready(Search.init); | ||||||
|   Search.init(); |  | ||||||
| }); |  | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Authentication — FitTrackee 0.6.7 |     <title>Authentication — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="authentication"> |   <section id="authentication"> | ||||||
| <h1>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h1> | <h1>Authentication<a class="headerlink" href="#authentication" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http post"> | <dl class="http post"> | ||||||
| <dt class="sig sig-object http" id="post--api-auth-register"> | <dt class="sig sig-object http" id="post--api-auth-register"> | ||||||
| <span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/register</span></span><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/register</span></span><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -164,14 +165,14 @@ to activate it.</p> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>username</strong> (<em>string</em>) – username (3 to 30 characters required)</p></li> | <li><p><strong>username</strong> (<em>string</em>) – username (3 to 30 characters required)</p></li> | ||||||
| <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | ||||||
| <li><p><strong>password</strong> (<em>string</em>) – password (8 characters required)</p></li> | <li><p><strong>password</strong> (<em>string</em>) – password (8 characters required)</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -219,12 +220,12 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>token</strong> (<em>string</em>) – confirmation token</p></li> | <li><p><strong>token</strong> (<em>string</em>) – confirmation token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – account confirmation successful</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – account confirmation successful</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -255,12 +256,12 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – confirmation email resent</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – confirmation email resent</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -308,13 +309,13 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | ||||||
| <li><p><strong>password</strong> (<em>string</em>) – password</p></li> | <li><p><strong>password</strong> (<em>string</em>) – password</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – successfully logged in</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – successfully logged in</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -408,12 +409,12 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success.</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success.</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -511,7 +512,7 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>first_name</strong> (<em>string</em>) – user first name</p></li> | <li><p><strong>first_name</strong> (<em>string</em>) – user first name</p></li> | ||||||
| <li><p><strong>last_name</strong> (<em>string</em>) – user last name</p></li> | <li><p><strong>last_name</strong> (<em>string</em>) – user last name</p></li> | ||||||
| @@ -520,12 +521,12 @@ character “_” allowed</p></li> | |||||||
| <li><p><strong>birth_date</strong> (<em>string</em>) – user birth date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li> | <li><p><strong>birth_date</strong> (<em>string</em>) – user birth date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user profile updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user profile updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -628,7 +629,7 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>timezone</strong> (<em>string</em>) – user time zone</p></li> | <li><p><strong>timezone</strong> (<em>string</em>) – user time zone</p></li> | ||||||
| <li><p><strong>weekm</strong> (<em>boolean</em>) – does week start on Monday?</p></li> | <li><p><strong>weekm</strong> (<em>boolean</em>) – does week start on Monday?</p></li> | ||||||
| @@ -636,12 +637,12 @@ character “_” allowed</p></li> | |||||||
| <li><p><strong>imperial_units</strong> (<em>boolean</em>) – display distance in imperial units</p></li> | <li><p><strong>imperial_units</strong> (<em>boolean</em>) – display distance in imperial units</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user preferences updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user preferences updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -688,19 +689,19 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>color</strong> (<em>string</em>) – valid hexadecimal color</p></li> | <li><p><strong>color</strong> (<em>string</em>) – valid hexadecimal color</p></li> | ||||||
| <li><p><strong>is_active</strong> (<em>boolean</em>) – is sport available when adding a workout</p></li> | <li><p><strong>is_active</strong> (<em>boolean</em>) – is sport available when adding a workout</p></li> | ||||||
| <li><p><strong>stopped_speed_threshold</strong> (<em>float</em>) – stopped speed threshold used by gpxpy</p></li> | <li><p><strong>stopped_speed_threshold</strong> (<em>float</em>) – stopped speed threshold used by gpxpy</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user preferences updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user preferences updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -739,17 +740,17 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>sport_id</strong> (<em>string</em>) – sport id</p></li> | <li><p><strong>sport_id</strong> (<em>string</em>) – sport id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – user preferences deleted</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – user preferences deleted</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -788,17 +789,17 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Form Parameters</dt> | <dt class="field-odd">Form Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>file</strong> – image file (allowed extensions: .jpg, .png, .gif)</p></li> | <li><p><strong>file</strong> – image file (allowed extensions: .jpg, .png, .gif)</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user picture updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user picture updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -836,12 +837,12 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – picture deleted</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – picture deleted</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -877,12 +878,12 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – password reset request processed</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – password reset request processed</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -986,19 +987,19 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | <li><p><strong>email</strong> (<em>string</em>) – user email</p></li> | ||||||
| <li><p><strong>password</strong> (<em>string</em>) – user current password</p></li> | <li><p><strong>password</strong> (<em>string</em>) – user current password</p></li> | ||||||
| <li><p><strong>new_password</strong> (<em>string</em>) – user new password</p></li> | <li><p><strong>new_password</strong> (<em>string</em>) – user new password</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user account updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – user account updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -1043,13 +1044,13 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>password</strong> (<em>string</em>) – password (8 characters required)</p></li> | <li><p><strong>password</strong> (<em>string</em>) – password (8 characters required)</p></li> | ||||||
| <li><p><strong>token</strong> (<em>string</em>) – password reset token</p></li> | <li><p><strong>token</strong> (<em>string</em>) – password reset token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – password updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – password updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -1080,12 +1081,12 @@ character “_” allowed</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>token</strong> (<em>string</em>) – password reset token</p></li> | <li><p><strong>token</strong> (<em>string</em>) – password reset token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – email updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – email updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -1110,7 +1111,7 @@ character “_” allowed</p></li> | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Configuration — FitTrackee 0.6.7 |     <title>Configuration — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="configuration"> |   <section id="configuration"> | ||||||
| <h1>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h1> | <h1>Configuration<a class="headerlink" href="#configuration" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http get"> | <dl class="http get"> | ||||||
| <dt class="sig sig-object http" id="get--api-config"> | <dt class="sig sig-object http" id="get--api-config"> | ||||||
| <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/config</span></span><a class="headerlink" href="#get--api-config" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/config</span></span><a class="headerlink" href="#get--api-config" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -151,14 +152,14 @@ | |||||||
| <span class="w">    </span><span class="nt">"max_users"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span> | <span class="w">    </span><span class="nt">"max_users"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span> | ||||||
| <span class="w">    </span><span class="nt">"max_zip_file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">10485760</span><span class="p">,</span><span class="w"></span> | <span class="w">    </span><span class="nt">"max_zip_file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">10485760</span><span class="p">,</span><span class="w"></span> | ||||||
| <span class="w">    </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="nt">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="w"></span> | <span class="w">    </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="nt">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="w"></span> | ||||||
| <span class="w">    </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.6.7"</span><span class="w"></span> | <span class="w">    </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.6.8"</span><span class="w"></span> | ||||||
| <span class="w">  </span><span class="p">},</span><span class="w"></span> | <span class="w">  </span><span class="p">},</span><span class="w"></span> | ||||||
| <span class="w">  </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="w"></span> | <span class="w">  </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="w"></span> | ||||||
| <span class="p">}</span><span class="w"></span> | <span class="p">}</span><span class="w"></span> | ||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error on getting configuration</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – error on getting configuration</p></li> | ||||||
| @@ -191,14 +192,14 @@ | |||||||
| <span class="w">    </span><span class="nt">"max_users"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"></span> | <span class="w">    </span><span class="nt">"max_users"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"></span> | ||||||
| <span class="w">    </span><span class="nt">"max_zip_file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">10485760</span><span class="p">,</span><span class="w"></span> | <span class="w">    </span><span class="nt">"max_zip_file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">10485760</span><span class="p">,</span><span class="w"></span> | ||||||
| <span class="w">    </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="nt">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="w"></span> | <span class="w">    </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="nt">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="w"></span> | ||||||
| <span class="w">    </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.6.7"</span><span class="w"></span> | <span class="w">    </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.6.8"</span><span class="w"></span> | ||||||
| <span class="w">  </span><span class="p">},</span><span class="w"></span> | <span class="w">  </span><span class="p">},</span><span class="w"></span> | ||||||
| <span class="w">  </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="w"></span> | <span class="w">  </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="w"></span> | ||||||
| <span class="p">}</span><span class="w"></span> | <span class="p">}</span><span class="w"></span> | ||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>admin_contact</strong> (<em>string</em>) – email to contact the administrator</p></li> | <li><p><strong>admin_contact</strong> (<em>string</em>) – email to contact the administrator</p></li> | ||||||
| <li><p><strong>gpx_limit_import</strong> (<em>integer</em>) – max number of files in zip archive</p></li> | <li><p><strong>gpx_limit_import</strong> (<em>integer</em>) – max number of files in zip archive</p></li> | ||||||
| @@ -208,12 +209,12 @@ | |||||||
| <li><p><strong>max_zip_file_size</strong> (<em>integer</em>) – max size of a zip archive</p></li> | <li><p><strong>max_zip_file_size</strong> (<em>integer</em>) – max size of a zip archive</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -251,7 +252,7 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| </ul> | </ul> | ||||||
| @@ -274,7 +275,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>API documentation — FitTrackee 0.6.7 |     <title>API documentation — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="api-documentation"> |   <section id="api-documentation"> | ||||||
| <h1>API documentation<a class="headerlink" href="#api-documentation" title="Permalink to this headline">¶</a></h1> | <h1>API documentation<a class="headerlink" href="#api-documentation" title="Permalink to this heading">¶</a></h1> | ||||||
| <div class="toctree-wrapper compound"> | <div class="toctree-wrapper compound"> | ||||||
| <p class="caption" role="heading"><span class="caption-text">Endpoints:</span></p> | <p class="caption" role="heading"><span class="caption-text">Endpoints:</span></p> | ||||||
| <ul> | <ul> | ||||||
| @@ -155,7 +156,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Records — FitTrackee 0.6.7 |     <title>Records — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="records"> |   <section id="records"> | ||||||
| <h1>Records<a class="headerlink" href="#records" title="Permalink to this headline">¶</a></h1> | <h1>Records<a class="headerlink" href="#records" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http get"> | <dl class="http get"> | ||||||
| <dt class="sig sig-object http" id="get--api-records"> | <dt class="sig sig-object http" id="get--api-records"> | ||||||
| <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/records</span></span><a class="headerlink" href="#get--api-records" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/records</span></span><a class="headerlink" href="#get--api-records" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -213,12 +214,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -247,7 +248,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Sports — FitTrackee 0.6.7 |     <title>Sports — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="sports"> |   <section id="sports"> | ||||||
| <h1>Sports<a class="headerlink" href="#sports" title="Permalink to this headline">¶</a></h1> | <h1>Sports<a class="headerlink" href="#sports" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http get"> | <dl class="http get"> | ||||||
| <dt class="sig sig-object http" id="get--api-sports"> | <dt class="sig sig-object http" id="get--api-sports"> | ||||||
| <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/sports</span></span><a class="headerlink" href="#get--api-sports" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/sports</span></span><a class="headerlink" href="#get--api-sports" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -271,12 +272,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -362,17 +363,17 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>sport_id</strong> (<em>integer</em>) – sport id</p></li> | <li><p><strong>sport_id</strong> (<em>integer</em>) – sport id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -437,22 +438,22 @@ Authenticated user must be an admin</p> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>sport_id</strong> (<em>integer</em>) – sport id</p></li> | <li><p><strong>sport_id</strong> (<em>integer</em>) – sport id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request JSON Object</dt> | <dt class="field-even">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><strong>is_active</strong> (<em>string</em>) – sport active status</p></li> | <li><p><strong>is_active</strong> (<em>string</em>) – sport active status</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – sport updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – sport updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -485,7 +486,7 @@ Authenticated user must be an admin</p> | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Statistics — FitTrackee 0.6.7 |     <title>Statistics — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="statistics"> |   <section id="statistics"> | ||||||
| <h1>Statistics<a class="headerlink" href="#statistics" title="Permalink to this headline">¶</a></h1> | <h1>Statistics<a class="headerlink" href="#statistics" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http get"> | <dl class="http get"> | ||||||
| <dt class="sig sig-object http" id="get--api-stats-(user_name)-by_time"> | <dt class="sig sig-object http" id="get--api-stats-(user_name)-by_time"> | ||||||
| <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/stats/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/by_time</span></span><a class="headerlink" href="#get--api-stats-(user_name)-by_time" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/stats/</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><span class="sig-name descname"><span class="pre">/by_time</span></span><a class="headerlink" href="#get--api-stats-(user_name)-by_time" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -205,12 +206,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Query Parameters</dt> | <dt class="field-even">Query Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><strong>from</strong> (<em>string</em>) – start date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li> | <li><p><strong>from</strong> (<em>string</em>) – start date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li> | ||||||
| <li><p><strong>to</strong> (<em>string</em>) – end date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li> | <li><p><strong>to</strong> (<em>string</em>) – end date (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span></code>)</p></li> | ||||||
| @@ -224,12 +225,12 @@ | |||||||
| </p></li> | </p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -319,22 +320,22 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Query Parameters</dt> | <dt class="field-even">Query Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><strong>sport_id</strong> (<em>integer</em>) – sport id</p></li> | <li><p><strong>sport_id</strong> (<em>integer</em>) – sport id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -377,12 +378,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -412,7 +413,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Users — FitTrackee 0.6.7 |     <title>Users — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="users"> |   <section id="users"> | ||||||
| <h1>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h1> | <h1>Users<a class="headerlink" href="#users" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http get"> | <dl class="http get"> | ||||||
| <dt class="sig sig-object http" id="get--api-users"> | <dt class="sig sig-object http" id="get--api-users"> | ||||||
| <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/users</span></span><a class="headerlink" href="#get--api-users" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/users</span></span><a class="headerlink" href="#get--api-users" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -248,7 +249,7 @@ has admin rights</p> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Query Parameters</dt> | <dt class="field-odd">Query Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>page</strong> (<em>integer</em>) – page if using pagination (default: 1)</p></li> | <li><p><strong>page</strong> (<em>integer</em>) – page if using pagination (default: 1)</p></li> | ||||||
| <li><p><strong>per_page</strong> (<em>integer</em>) – number of users per page (default: 10, max: 50)</p></li> | <li><p><strong>per_page</strong> (<em>integer</em>) – number of users per page (default: 10, max: 50)</p></li> | ||||||
| @@ -258,12 +259,12 @@ has admin rights</p> | |||||||
| <li><p><strong>order</strong> (<em>string</em>) – sorting order (default: <code class="docutils literal notranslate"><span class="pre">asc</span></code>)</p></li> | <li><p><strong>order</strong> (<em>string</em>) – sorting order (default: <code class="docutils literal notranslate"><span class="pre">asc</span></code>)</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -363,17 +364,17 @@ details.</p> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -406,12 +407,12 @@ details.</p> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | <li><p><strong>user_name</strong> (<em>integer</em>) – user name</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – <ul> | ||||||
| @@ -516,12 +517,12 @@ if sending enabled)</p></li> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>user_name</strong> (<em>string</em>) – user name</p></li> | <li><p><strong>user_name</strong> (<em>string</em>) – user name</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request JSON Object</dt> | <dt class="field-even">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><strong>activate</strong> (<em>boolean</em>) – activate user account</p></li> | <li><p><strong>activate</strong> (<em>boolean</em>) – activate user account</p></li> | ||||||
| <li><p><strong>admin</strong> (<em>boolean</em>) – does the user have administrator rights</p></li> | <li><p><strong>admin</strong> (<em>boolean</em>) – does the user have administrator rights</p></li> | ||||||
| @@ -529,12 +530,12 @@ if sending enabled)</p></li> | |||||||
| <li><p><strong>reset_password</strong> (<em>boolean</em>) – reset user password</p></li> | <li><p><strong>reset_password</strong> (<em>boolean</em>) – reset user password</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -578,17 +579,17 @@ one admin</p> | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>user_name</strong> (<em>string</em>) – user name</p></li> | <li><p><strong>user_name</strong> (<em>string</em>) – user name</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – user account deleted</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – user account deleted</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -627,7 +628,7 @@ one admin</p> | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Workouts — FitTrackee 0.6.7 |     <title>Workouts — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="workouts"> |   <section id="workouts"> | ||||||
| <h1>Workouts<a class="headerlink" href="#workouts" title="Permalink to this headline">¶</a></h1> | <h1>Workouts<a class="headerlink" href="#workouts" title="Permalink to this heading">¶</a></h1> | ||||||
| <dl class="http get"> | <dl class="http get"> | ||||||
| <dt class="sig sig-object http" id="get--api-workouts"> | <dt class="sig sig-object http" id="get--api-workouts"> | ||||||
| <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts</span></span><a class="headerlink" href="#get--api-workouts" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/workouts</span></span><a class="headerlink" href="#get--api-workouts" title="Permalink to this definition">¶</a></dt> | ||||||
| @@ -242,7 +243,7 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Query Parameters</dt> | <dt class="field-odd">Query Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>page</strong> (<em>integer</em>) – page if using pagination (default: 1)</p></li> | <li><p><strong>page</strong> (<em>integer</em>) – page if using pagination (default: 1)</p></li> | ||||||
| <li><p><strong>per_page</strong> (<em>integer</em>) – number of workouts per page | <li><p><strong>per_page</strong> (<em>integer</em>) – number of workouts per page | ||||||
| @@ -261,12 +262,12 @@ | |||||||
| <li><p><strong>order</strong> (<em>string</em>) – sorting order (default: <code class="docutils literal notranslate"><span class="pre">desc</span></code>)</p></li> | <li><p><strong>order</strong> (<em>string</em>) – sorting order (default: <code class="docutils literal notranslate"><span class="pre">desc</span></code>)</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -349,17 +350,17 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -398,17 +399,17 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -470,17 +471,17 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -542,18 +543,18 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| <li><p><strong>segment_id</strong> (<em>integer</em>) – segment id</p></li> | <li><p><strong>segment_id</strong> (<em>integer</em>) – segment id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – no gpx file for this workout</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – no gpx file for this workout</p></li> | ||||||
| @@ -593,18 +594,18 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| <li><p><strong>segment_id</strong> (<em>integer</em>) – segment id</p></li> | <li><p><strong>segment_id</strong> (<em>integer</em>) – segment id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – no gpx file for this workout</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – no gpx file for this workout</p></li> | ||||||
| @@ -636,12 +637,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>map_id</strong> (<em>string</em>) – workout map id</p></li> | <li><p><strong>map_id</strong> (<em>string</em>) – workout map id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -671,7 +672,7 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>s</strong> (<em>string</em>) – subdomain</p></li> | <li><p><strong>s</strong> (<em>string</em>) – subdomain</p></li> | ||||||
| <li><p><strong>z</strong> (<em>string</em>) – zoom</p></li> | <li><p><strong>z</strong> (<em>string</em>) – zoom</p></li> | ||||||
| @@ -697,12 +698,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -810,18 +811,18 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Form Parameters</dt> | <dt class="field-odd">Form Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>file</strong> – gpx file (allowed extensions: .gpx, .zip)</p></li> | <li><p><strong>file</strong> – gpx file (allowed extensions: .gpx, .zip)</p></li> | ||||||
| <li><p><strong>data</strong> – sport id and notes (example: <code class="docutils literal notranslate"><span class="pre">{"sport_id":</span> <span class="pre">1,</span> <span class="pre">"notes":</span> <span class="pre">""}</span></code>)</p></li> | <li><p><strong>data</strong> – sport id and notes (example: <code class="docutils literal notranslate"><span class="pre">{"sport_id":</span> <span class="pre">1,</span> <span class="pre">"notes":</span> <span class="pre">""}</span></code>)</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – workout created</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – workout created</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul> | ||||||
| @@ -933,7 +934,7 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Request JSON Object</dt> | <dt class="field-odd">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_date</strong> (<em>string</em>) – workout date, in user timezone | <li><p><strong>workout_date</strong> (<em>string</em>) – workout date, in user timezone | ||||||
| (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span> <span class="pre">%H:%M</span></code>)</p></li> | (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span> <span class="pre">%H:%M</span></code>)</p></li> | ||||||
| @@ -944,12 +945,12 @@ | |||||||
| <li><p><strong>title</strong> (<em>string</em>) – workout title</p></li> | <li><p><strong>title</strong> (<em>string</em>) – workout title</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – workout created</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a></span> – workout created</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -1054,12 +1055,12 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request JSON Object</dt> | <dt class="field-even">Request JSON Object<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><strong>workout_date</strong> (<em>string</em>) – workout date in user timezone | <li><p><strong>workout_date</strong> (<em>string</em>) – workout date in user timezone | ||||||
| (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span> <span class="pre">%H:%M</span></code>) | (format: <code class="docutils literal notranslate"><span class="pre">%Y-%m-%d</span> <span class="pre">%H:%M</span></code>) | ||||||
| @@ -1073,12 +1074,12 @@ | |||||||
| <li><p><strong>title</strong> (<em>string</em>) – workout title</p></li> | <li><p><strong>title</strong> (<em>string</em>) – workout title</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Request Headers</dt> | <dt class="field-odd">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Status Codes</dt> | <dt class="field-even">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – workout updated</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – workout updated</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – invalid payload</p></li> | ||||||
| @@ -1110,17 +1111,17 @@ | |||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Parameters</dt> | <dt class="field-odd">Parameters<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | <li><p><strong>workout_short_id</strong> (<em>string</em>) – workout short id</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-even">Request Headers</dt> | <dt class="field-even">Request Headers<span class="colon">:</span></dt> | ||||||
| <dd class="field-even"><ul class="simple"> | <dd class="field-even"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | <li><p><span><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li> | ||||||
| </ul> | </ul> | ||||||
| </dd> | </dd> | ||||||
| <dt class="field-odd">Status Codes</dt> | <dt class="field-odd">Status Codes<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><ul class="simple"> | <dd class="field-odd"><ul class="simple"> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – workout deleted</p></li> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a></span> – workout deleted</p></li> | ||||||
| <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | <li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul> | ||||||
| @@ -1151,7 +1152,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Command line interface — FitTrackee 0.6.7 |     <title>Command line interface — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="genindex.html" /> |     <link rel="index" title="Index" href="genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="search.html" /> |     <link rel="search" title="Search" href="search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="index.html"> |         <a class="navbar-brand" href="index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -138,7 +139,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="command-line-interface"> |   <section id="command-line-interface"> | ||||||
| <h1>Command line interface<a class="headerlink" href="#command-line-interface" title="Permalink to this headline">¶</a></h1> | <h1>Command line interface<a class="headerlink" href="#command-line-interface" title="Permalink to this heading">¶</a></h1> | ||||||
| <p>A command line interface (CLI) is available to manage database and users.</p> | <p>A command line interface (CLI) is available to manage database and users.</p> | ||||||
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ftcli | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ftcli | ||||||
| Usage: ftcli <span class="o">[</span>OPTIONS<span class="o">]</span> COMMAND <span class="o">[</span>ARGS<span class="o">]</span>... | Usage: ftcli <span class="o">[</span>OPTIONS<span class="o">]</span> COMMAND <span class="o">[</span>ARGS<span class="o">]</span>... | ||||||
| @@ -162,16 +163,16 @@ Commands: | |||||||
| </div> | </div> | ||||||
| </div> | </div> | ||||||
| <section id="database"> | <section id="database"> | ||||||
| <h2>Database<a class="headerlink" href="#database" title="Permalink to this headline">¶</a></h2> | <h2>Database<a class="headerlink" href="#database" title="Permalink to this heading">¶</a></h2> | ||||||
| <section id="ftcli-db-upgrade"> | <section id="ftcli-db-upgrade"> | ||||||
| <h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">upgrade</span></code><a class="headerlink" href="#ftcli-db-upgrade" title="Permalink to this headline">¶</a></h3> | <h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">upgrade</span></code><a class="headerlink" href="#ftcli-db-upgrade" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.6.5.</span></p> | <p><span class="versionmodified added">New in version 0.6.5.</span></p> | ||||||
| </div> | </div> | ||||||
| <p>Apply migrations.</p> | <p>Apply migrations.</p> | ||||||
| </section> | </section> | ||||||
| <section id="ftcli-db-drop"> | <section id="ftcli-db-drop"> | ||||||
| <h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">drop</span></code><a class="headerlink" href="#ftcli-db-drop" title="Permalink to this headline">¶</a></h3> | <h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">drop</span></code><a class="headerlink" href="#ftcli-db-drop" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.6.5.</span></p> | <p><span class="versionmodified added">New in version 0.6.5.</span></p> | ||||||
| </div> | </div> | ||||||
| @@ -179,14 +180,14 @@ Commands: | |||||||
| </section> | </section> | ||||||
| </section> | </section> | ||||||
| <section id="users"> | <section id="users"> | ||||||
| <h2>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h2> | <h2>Users<a class="headerlink" href="#users" title="Permalink to this heading">¶</a></h2> | ||||||
| <section id="ftcli-users-update"> | <section id="ftcli-users-update"> | ||||||
| <h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">update</span></code><a class="headerlink" href="#ftcli-users-update" title="Permalink to this headline">¶</a></h3> | <h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">update</span></code><a class="headerlink" href="#ftcli-users-update" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.6.5.</span></p> | <p><span class="versionmodified added">New in version 0.6.5.</span></p> | ||||||
| </div> | </div> | ||||||
| <p>Modify a user account (admin rights, active status, email and password).</p> | <p>Modify a user account (admin rights, active status, email and password).</p> | ||||||
| <table class="colwidths-given table-bordered docutils align-default"> | <table class="table-bordered docutils align-default"> | ||||||
| <colgroup> | <colgroup> | ||||||
| <col style="width: 33%" /> | <col style="width: 33%" /> | ||||||
| <col style="width: 67%" /> | <col style="width: 67%" /> | ||||||
| @@ -228,7 +229,7 @@ Commands: | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Features — FitTrackee 0.6.7 |     <title>Features — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="genindex.html" /> |     <link rel="index" title="Index" href="genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="search.html" /> |     <link rel="search" title="Search" href="search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="index.html"> |         <a class="navbar-brand" href="index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -141,9 +142,9 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="features"> |   <section id="features"> | ||||||
| <h1>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h1> | <h1>Features<a class="headerlink" href="#features" title="Permalink to this heading">¶</a></h1> | ||||||
| <section id="workouts"> | <section id="workouts"> | ||||||
| <h2>Workouts<a class="headerlink" href="#workouts" title="Permalink to this headline">¶</a></h2> | <h2>Workouts<a class="headerlink" href="#workouts" title="Permalink to this heading">¶</a></h2> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><dl class="simple"> | <li><dl class="simple"> | ||||||
| <dt>11 sports are supported:</dt><dd><ul> | <dt>11 sports are supported:</dt><dd><ul> | ||||||
| @@ -231,7 +232,7 @@ | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="account-preferences"> | <section id="account-preferences"> | ||||||
| <h2>Account & preferences<a class="headerlink" href="#account-preferences" title="Permalink to this headline">¶</a></h2> | <h2>Account & preferences<a class="headerlink" href="#account-preferences" title="Permalink to this heading">¶</a></h2> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>A user can create, update and deleted his account.</p></li> | <li><p>A user can create, update and deleted his account.</p></li> | ||||||
| <li><p>After registration, the user account is inactive and an email with confirmation instructions is sent to activate it. | <li><p>After registration, the user account is inactive and an email with confirmation instructions is sent to activate it. | ||||||
| @@ -266,7 +267,7 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li> | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="administration"> | <section id="administration"> | ||||||
| <h2>Administration<a class="headerlink" href="#administration" title="Permalink to this headline">¶</a></h2> | <h2>Administration<a class="headerlink" href="#administration" title="Permalink to this heading">¶</a></h2> | ||||||
| <p>(<em>new in 0.3.0</em>)</p> | <p>(<em>new in 0.3.0</em>)</p> | ||||||
| <ul> | <ul> | ||||||
| <li><p><strong>Application</strong></p> | <li><p><strong>Application</strong></p> | ||||||
| @@ -311,37 +312,37 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li> | |||||||
| </ul> | </ul> | ||||||
| </section> | </section> | ||||||
| <section id="translations"> | <section id="translations"> | ||||||
| <h2>Translations<a class="headerlink" href="#translations" title="Permalink to this headline">¶</a></h2> | <h2>Translations<a class="headerlink" href="#translations" title="Permalink to this heading">¶</a></h2> | ||||||
| <p>FitTrackee is available in English and French (which can be saved in the user preferences).</p> | <p>FitTrackee is available in English and French (which can be saved in the user preferences).</p> | ||||||
| </section> | </section> | ||||||
| <section id="screenshots"> | <section id="screenshots"> | ||||||
| <h2>Screenshots<a class="headerlink" href="#screenshots" title="Permalink to this headline">¶</a></h2> | <h2>Screenshots<a class="headerlink" href="#screenshots" title="Permalink to this heading">¶</a></h2> | ||||||
| <section id="dashboard"> | <section id="dashboard"> | ||||||
| <h3>Dashboard<a class="headerlink" href="#dashboard" title="Permalink to this headline">¶</a></h3> | <h3>Dashboard<a class="headerlink" href="#dashboard" title="Permalink to this heading">¶</a></h3> | ||||||
| <figure class="align-default"> | <figure class="align-default"> | ||||||
| <img alt="FitTrackee Dashboard" src="_images/fittrackee_screenshot-01.png" /> | <img alt="FitTrackee Dashboard" src="_images/fittrackee_screenshot-01.png" /> | ||||||
| </figure> | </figure> | ||||||
| </section> | </section> | ||||||
| <section id="workout-detail"> | <section id="workout-detail"> | ||||||
| <h3>Workout detail<a class="headerlink" href="#workout-detail" title="Permalink to this headline">¶</a></h3> | <h3>Workout detail<a class="headerlink" href="#workout-detail" title="Permalink to this heading">¶</a></h3> | ||||||
| <figure class="align-default"> | <figure class="align-default"> | ||||||
| <img alt="FitTrackee Workout" src="_images/fittrackee_screenshot-02.png" /> | <img alt="FitTrackee Workout" src="_images/fittrackee_screenshot-02.png" /> | ||||||
| </figure> | </figure> | ||||||
| </section> | </section> | ||||||
| <section id="workouts-list"> | <section id="workouts-list"> | ||||||
| <h3>Workouts list<a class="headerlink" href="#workouts-list" title="Permalink to this headline">¶</a></h3> | <h3>Workouts list<a class="headerlink" href="#workouts-list" title="Permalink to this heading">¶</a></h3> | ||||||
| <figure class="align-default"> | <figure class="align-default"> | ||||||
| <img alt="FitTrackee Workouts" src="_images/fittrackee_screenshot-03.png" /> | <img alt="FitTrackee Workouts" src="_images/fittrackee_screenshot-03.png" /> | ||||||
| </figure> | </figure> | ||||||
| </section> | </section> | ||||||
| <section id="statistics"> | <section id="statistics"> | ||||||
| <h3>Statistics<a class="headerlink" href="#statistics" title="Permalink to this headline">¶</a></h3> | <h3>Statistics<a class="headerlink" href="#statistics" title="Permalink to this heading">¶</a></h3> | ||||||
| <figure class="align-default"> | <figure class="align-default"> | ||||||
| <img alt="FitTrackee Statistics" src="_images/fittrackee_screenshot-04.png" /> | <img alt="FitTrackee Statistics" src="_images/fittrackee_screenshot-04.png" /> | ||||||
| </figure> | </figure> | ||||||
| </section> | </section> | ||||||
| <section id="id1"> | <section id="id1"> | ||||||
| <h3>Administration<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3> | <h3>Administration<a class="headerlink" href="#id1" title="Permalink to this heading">¶</a></h3> | ||||||
| <figure class="align-default"> | <figure class="align-default"> | ||||||
| <img alt="FitTrackee Administration" src="_images/fittrackee_screenshot-05.png" /> | <img alt="FitTrackee Administration" src="_images/fittrackee_screenshot-05.png" /> | ||||||
| </figure> | </figure> | ||||||
| @@ -365,7 +366,7 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li> | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|     <title>Index — FitTrackee 0.6.7 |     <title>Index — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -12,6 +12,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="#" /> |     <link rel="index" title="Index" href="#" /> | ||||||
|     <link rel="search" title="Search" href="search.html" /> |     <link rel="search" title="Search" href="search.html" /> | ||||||
| @@ -37,7 +38,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="index.html"> |         <a class="navbar-brand" href="index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -180,7 +181,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|     <title>HTTP Routing Table — FitTrackee 0.6.7 |     <title>HTTP Routing Table — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -12,6 +12,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="genindex.html" /> |     <link rel="index" title="Index" href="genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="search.html" /> |     <link rel="search" title="Search" href="search.html" /> | ||||||
| @@ -44,7 +45,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="index.html"> |         <a class="navbar-brand" href="index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -356,7 +357,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>FitTrackee — FitTrackee 0.6.7 |     <title>FitTrackee — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="genindex.html" /> |     <link rel="index" title="Index" href="genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="search.html" /> |     <link rel="search" title="Search" href="search.html" /> | ||||||
| @@ -39,7 +40,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="#"> |         <a class="navbar-brand" href="#"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -123,7 +124,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="fittrackee"> |   <section id="fittrackee"> | ||||||
| <h1>FitTrackee<a class="headerlink" href="#fittrackee" title="Permalink to this headline">¶</a></h1> | <h1>FitTrackee<a class="headerlink" href="#fittrackee" title="Permalink to this heading">¶</a></h1> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| <div class="line">This web application allows you to track your outdoor activities (workouts) | <div class="line">This web application allows you to track your outdoor activities (workouts) | ||||||
| from gpx files and keep your data on your own server.</div> | from gpx files and keep your data on your own server.</div> | ||||||
| @@ -149,7 +150,7 @@ Map</a>.</div> | |||||||
| </figure> | </figure> | ||||||
| </section> | </section> | ||||||
| <section id="table-of-contents"> | <section id="table-of-contents"> | ||||||
| <h1>Table of contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline">¶</a></h1> | <h1>Table of contents<a class="headerlink" href="#table-of-contents" title="Permalink to this heading">¶</a></h1> | ||||||
| <div class="toctree-wrapper compound"> | <div class="toctree-wrapper compound"> | ||||||
| <ul> | <ul> | ||||||
| <li class="toctree-l1"><a class="reference internal" href="features.html">Features</a></li> | <li class="toctree-l1"><a class="reference internal" href="features.html">Features</a></li> | ||||||
| @@ -175,7 +176,7 @@ Map</a>.</div> | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Installation — FitTrackee 0.6.7 |     <title>Installation — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="genindex.html" /> |     <link rel="index" title="Index" href="genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="search.html" /> |     <link rel="search" title="Search" href="search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="index.html"> |         <a class="navbar-brand" href="index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -159,7 +160,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="installation"> |   <section id="installation"> | ||||||
| <h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1> | <h1>Installation<a class="headerlink" href="#installation" title="Permalink to this heading">¶</a></h1> | ||||||
| <p>This application is written in Python (API) and Typescript (client):</p> | <p>This application is written in Python (API) and Typescript (client):</p> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><dl class="simple"> | <li><dl class="simple"> | ||||||
| @@ -188,7 +189,7 @@ | |||||||
| <div class="line">FitTrackee also uses icons from <a class="reference external" href="https://forkaweso.me">Fork Awesome</a>.</div> | <div class="line">FitTrackee also uses icons from <a class="reference external" href="https://forkaweso.me">Fork Awesome</a>.</div> | ||||||
| </div> | </div> | ||||||
| <section id="prerequisites"> | <section id="prerequisites"> | ||||||
| <h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2> | <h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this heading">¶</a></h2> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>Python 3.7+</p></li> | <li><p>Python 3.7+</p></li> | ||||||
| <li><p>PostgreSQL database (10+)</p></li> | <li><p>PostgreSQL database (10+)</p></li> | ||||||
| @@ -209,7 +210,7 @@ necessary.</div> | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="environment-variables"> | <section id="environment-variables"> | ||||||
| <h2>Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2> | <h2>Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this heading">¶</a></h2> | ||||||
| <div class="admonition warning"> | <div class="admonition warning"> | ||||||
| <p class="admonition-title">Warning</p> | <p class="admonition-title">Warning</p> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| @@ -233,7 +234,7 @@ deployment method.</p> | |||||||
| <span class="sig-name descname"><span class="pre">HOST</span></span><a class="headerlink" href="#envvar-HOST" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">HOST</span></span><a class="headerlink" href="#envvar-HOST" title="Permalink to this definition">¶</a></dt> | ||||||
| <dd><p><strong>FitTrackee</strong> host.</p> | <dd><p><strong>FitTrackee</strong> host.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>0.0.0.0</p> | <dd class="field-odd"><p>0.0.0.0</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -244,7 +245,7 @@ deployment method.</p> | |||||||
| <span class="sig-name descname"><span class="pre">PORT</span></span><a class="headerlink" href="#envvar-PORT" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">PORT</span></span><a class="headerlink" href="#envvar-PORT" title="Permalink to this definition">¶</a></dt> | ||||||
| <dd><p><strong>FitTrackee</strong> port.</p> | <dd><p><strong>FitTrackee</strong> port.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>5000</p> | <dd class="field-odd"><p>5000</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -255,7 +256,7 @@ deployment method.</p> | |||||||
| <span class="sig-name descname"><span class="pre">APP_SETTINGS</span></span><a class="headerlink" href="#envvar-APP_SETTINGS" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">APP_SETTINGS</span></span><a class="headerlink" href="#envvar-APP_SETTINGS" title="Permalink to this definition">¶</a></dt> | ||||||
| <dd><p><strong>FitTrackee</strong> configuration.</p> | <dd><p><strong>FitTrackee</strong> configuration.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>fittrackee.config.ProductionConfig</p> | <dd class="field-odd"><p>fittrackee.config.ProductionConfig</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -272,7 +273,7 @@ deployment method.</p> | |||||||
| <span class="sig-name descname"><span class="pre">APP_WORKERS</span></span><a class="headerlink" href="#envvar-APP_WORKERS" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">APP_WORKERS</span></span><a class="headerlink" href="#envvar-APP_WORKERS" title="Permalink to this definition">¶</a></dt> | ||||||
| <dd><p>Number of workers spawned by <strong>Gunicorn</strong>.</p> | <dd><p>Number of workers spawned by <strong>Gunicorn</strong>.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>1</p> | <dd class="field-odd"><p>1</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -295,7 +296,7 @@ deployment method.</p> | |||||||
| </div> | </div> | ||||||
| <p>Directory containing uploaded files.</p> | <p>Directory containing uploaded files.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p><cite>fittrackee/uploads/</cite></p> | <dd class="field-odd"><p><cite>fittrackee/uploads/</cite></p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -333,7 +334,7 @@ engine URL should begin with <cite>postgresql://</cite>.</div> | |||||||
| <p>Disable pooling if needed (when starting application with <strong>FitTrackee</strong> entry point and not directly with <strong>Gunicorn</strong>), | <p>Disable pooling if needed (when starting application with <strong>FitTrackee</strong> entry point and not directly with <strong>Gunicorn</strong>), | ||||||
| see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/pooling.html#using-connection-pools-with-multiprocessing-or-os-fork">SqlAlchemy documentation</a>.</p> | see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/pooling.html#using-connection-pools-with-multiprocessing-or-os-fork">SqlAlchemy documentation</a>.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>false</p> | <dd class="field-odd"><p>false</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -356,7 +357,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
| <p><span class="versionmodified changed">Changed in version 0.6.5.</span></p> | <p><span class="versionmodified changed">Changed in version 0.6.5.</span></p> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>empty string</p> | <dd class="field-odd"><p>empty string</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -387,7 +388,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
| </div> | </div> | ||||||
| <p>Redis instance used by <strong>Dramatiq</strong>.</p> | <p>Redis instance used by <strong>Dramatiq</strong>.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>local Redis instance (<code class="docutils literal notranslate"><span class="pre">redis://</span></code>)</p> | <dd class="field-odd"><p>local Redis instance (<code class="docutils literal notranslate"><span class="pre">redis://</span></code>)</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -413,7 +414,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
| <div class="line">Since <strong>0.4.9</strong>, it’s also used to generate static maps (to keep default server, see <a class="reference external" href="installation.html#envvar-DEFAULT_STATICMAP">DEFAULT_STATICMAP</a>)</div> | <div class="line">Since <strong>0.4.9</strong>, it’s also used to generate static maps (to keep default server, see <a class="reference external" href="installation.html#envvar-DEFAULT_STATICMAP">DEFAULT_STATICMAP</a>)</div> | ||||||
| </div> | </div> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p><cite>https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png</cite></p> | <dd class="field-odd"><p><cite>https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png</cite></p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -427,7 +428,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
| </div> | </div> | ||||||
| <p>Map attribution (if using another tile server), see <a class="reference external" href="installation.html#map-tile-server">Map tile server</a>.</p> | <p>Map attribution (if using another tile server), see <a class="reference external" href="installation.html#map-tile-server">Map tile server</a>.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p><cite>&copy; <a href=”http://www.openstreetmap.org/copyright” target=”_blank” rel=”noopener noreferrer”>OpenStreetMap</a> contributors</cite></p> | <dd class="field-odd"><p><cite>&copy; <a href=”http://www.openstreetmap.org/copyright” target=”_blank” rel=”noopener noreferrer”>OpenStreetMap</a> contributors</cite></p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -435,13 +436,13 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
|  |  | ||||||
| <dl class="std envvar"> | <dl class="std envvar"> | ||||||
| <dt class="sig sig-object std" id="envvar-DEFAULT_STATICMAP"> | <dt class="sig sig-object std" id="envvar-DEFAULT_STATICMAP"> | ||||||
| <span id="envvar-DEFAULT_STATICMAP 🆕"></span><span class="sig-name descname"><span class="pre">DEFAULT_STATICMAP</span> <span class="pre">🆕</span></span><a class="headerlink" href="#envvar-DEFAULT_STATICMAP" title="Permalink to this definition">¶</a></dt> | <span class="sig-name descname"><span class="pre">DEFAULT_STATICMAP</span> <span class="pre">🆕</span></span><a class="headerlink" href="#envvar-DEFAULT_STATICMAP" title="Permalink to this definition">¶</a></dt> | ||||||
| <dd><div class="versionadded"> | <dd><div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.4.9.</span></p> | <p><span class="versionmodified added">New in version 0.4.9.</span></p> | ||||||
| </div> | </div> | ||||||
| <p>If <cite>True</cite>, it keeps using default tile server to generate static maps.</p> | <p>If <cite>True</cite>, it keeps using default tile server to generate static maps.</p> | ||||||
| <dl class="field-list simple"> | <dl class="field-list simple"> | ||||||
| <dt class="field-odd">Default</dt> | <dt class="field-odd">Default<span class="colon">:</span></dt> | ||||||
| <dd class="field-odd"><p>False</p> | <dd class="field-odd"><p>False</p> | ||||||
| </dd> | </dd> | ||||||
| </dl> | </dl> | ||||||
| @@ -463,7 +464,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
| </dd></dl> | </dd></dl> | ||||||
|  |  | ||||||
| <section id="emails"> | <section id="emails"> | ||||||
| <h3>Emails<a class="headerlink" href="#emails" title="Permalink to this headline">¶</a></h3> | <h3>Emails<a class="headerlink" href="#emails" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.3.0.</span></p> | <p><span class="versionmodified added">New in version 0.3.0.</span></p> | ||||||
| </div> | </div> | ||||||
| @@ -509,7 +510,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="map-tile-server"> | <section id="map-tile-server"> | ||||||
| <h3>Map tile server<a class="headerlink" href="#map-tile-server" title="Permalink to this headline">¶</a></h3> | <h3>Map tile server<a class="headerlink" href="#map-tile-server" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.4.0.</span></p> | <p><span class="versionmodified added">New in version 0.4.0.</span></p> | ||||||
| </div> | </div> | ||||||
| @@ -529,7 +530,7 @@ The tile server can be changed by updating <code class="docutils literal notrans | |||||||
| </section> | </section> | ||||||
| </section> | </section> | ||||||
| <section id="id1"> | <section id="id1"> | ||||||
| <h2>Installation<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2> | <h2>Installation<a class="headerlink" href="#id1" title="Permalink to this heading">¶</a></h2> | ||||||
| <div class="admonition warning"> | <div class="admonition warning"> | ||||||
| <p class="admonition-title">Warning</p> | <p class="admonition-title">Warning</p> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| @@ -537,7 +538,7 @@ The tile server can be changed by updating <code class="docutils literal notrans | |||||||
| </div> | </div> | ||||||
| </div> | </div> | ||||||
| <section id="from-pypi"> | <section id="from-pypi"> | ||||||
| <h3>From PyPI<a class="headerlink" href="#from-pypi" title="Permalink to this headline">¶</a></h3> | <h3>From PyPI<a class="headerlink" href="#from-pypi" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="admonition note"> | <div class="admonition note"> | ||||||
| <p class="admonition-title">Note</p> | <p class="admonition-title">Note</p> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| @@ -605,7 +606,7 @@ $ <span class="nb">source</span> .env | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="from-sources"> | <section id="from-sources"> | ||||||
| <h3>From sources<a class="headerlink" href="#from-sources" title="Permalink to this headline">¶</a></h3> | <h3>From sources<a class="headerlink" href="#from-sources" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="admonition warning"> | <div class="admonition warning"> | ||||||
| <p class="admonition-title">Warning</p> | <p class="admonition-title">Warning</p> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| @@ -623,7 +624,7 @@ $ poetry config virtualenvs.in-project <span class="nb">true</span> | |||||||
| <p>For other OS, see <a class="reference external" href="https://python-poetry.org/docs/#installation">Poetry Documentation</a></p> | <p>For other OS, see <a class="reference external" href="https://python-poetry.org/docs/#installation">Poetry Documentation</a></p> | ||||||
| </div> | </div> | ||||||
| <section id="dev-environment"> | <section id="dev-environment"> | ||||||
| <h4>Dev environment<a class="headerlink" href="#dev-environment" title="Permalink to this headline">¶</a></h4> | <h4>Dev environment<a class="headerlink" href="#dev-environment" title="Permalink to this heading">¶</a></h4> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>Clone this repo:</p></li> | <li><p>Clone this repo:</p></li> | ||||||
| </ul> | </ul> | ||||||
| @@ -666,7 +667,7 @@ $ make install-db | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="production-environment"> | <section id="production-environment"> | ||||||
| <h4>Production environment<a class="headerlink" href="#production-environment" title="Permalink to this headline">¶</a></h4> | <h4>Production environment<a class="headerlink" href="#production-environment" title="Permalink to this heading">¶</a></h4> | ||||||
| <div class="admonition warning"> | <div class="admonition warning"> | ||||||
| <p class="admonition-title">Warning</p> | <p class="admonition-title">Warning</p> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| @@ -674,11 +675,11 @@ $ make install-db | |||||||
| </div> | </div> | ||||||
| </div> | </div> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>Download the last release (for now, it is the release v0.6.7):</p></li> | <li><p>Download the last release (for now, it is the release v0.6.8):</p></li> | ||||||
| </ul> | </ul> | ||||||
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.6.7.tar.gz | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.6.8.tar.gz | ||||||
| $ tar -xzf v0.6.7.tar.gz | $ tar -xzf v0.6.8.tar.gz | ||||||
| $ mv FitTrackee-0.6.7 FitTrackee | $ mv FitTrackee-0.6.8 FitTrackee | ||||||
| $ <span class="nb">cd</span> FitTrackee | $ <span class="nb">cd</span> FitTrackee | ||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| @@ -722,7 +723,7 @@ database credentials</strong>):</p></li> | |||||||
| </section> | </section> | ||||||
| </section> | </section> | ||||||
| <section id="upgrade"> | <section id="upgrade"> | ||||||
| <h2>Upgrade<a class="headerlink" href="#upgrade" title="Permalink to this headline">¶</a></h2> | <h2>Upgrade<a class="headerlink" href="#upgrade" title="Permalink to this heading">¶</a></h2> | ||||||
| <div class="admonition warning"> | <div class="admonition warning"> | ||||||
| <p class="admonition-title">Warning</p> | <p class="admonition-title">Warning</p> | ||||||
| <div class="line-block"> | <div class="line-block"> | ||||||
| @@ -732,7 +733,7 @@ database credentials</strong>):</p></li> | |||||||
| </div> | </div> | ||||||
| </div> | </div> | ||||||
| <section id="id2"> | <section id="id2"> | ||||||
| <h3>From PyPI<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3> | <h3>From PyPI<a class="headerlink" href="#id2" title="Permalink to this heading">¶</a></h3> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>Stop the application and activate the virtualenv</p></li> | <li><p>Stop the application and activate the virtualenv</p></li> | ||||||
| <li><p>Upgrade with pip</p></li> | <li><p>Upgrade with pip</p></li> | ||||||
| @@ -758,9 +759,9 @@ $ <span class="nb">source</span> .env | |||||||
| </ul> | </ul> | ||||||
| </section> | </section> | ||||||
| <section id="id3"> | <section id="id3"> | ||||||
| <h3>From sources<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3> | <h3>From sources<a class="headerlink" href="#id3" title="Permalink to this heading">¶</a></h3> | ||||||
| <section id="id4"> | <section id="id4"> | ||||||
| <h4>Dev environment<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h4> | <h4>Dev environment<a class="headerlink" href="#id4" title="Permalink to this heading">¶</a></h4> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>Stop the application and pull the repository:</p></li> | <li><p>Stop the application and pull the repository:</p></li> | ||||||
| </ul> | </ul> | ||||||
| @@ -794,15 +795,15 @@ $ <span class="nb">source</span> .env | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="prod-environment"> | <section id="prod-environment"> | ||||||
| <h4>Prod environment<a class="headerlink" href="#prod-environment" title="Permalink to this headline">¶</a></h4> | <h4>Prod environment<a class="headerlink" href="#prod-environment" title="Permalink to this heading">¶</a></h4> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
| <li><p>Stop the application</p></li> | <li><p>Stop the application</p></li> | ||||||
| <li><p>Change to the directory where FitTrackee directory is located</p></li> | <li><p>Change to the directory where FitTrackee directory is located</p></li> | ||||||
| <li><p>Download the last release (for now, it is the release v0.6.7) and overwrite existing files:</p></li> | <li><p>Download the last release (for now, it is the release v0.6.8) and overwrite existing files:</p></li> | ||||||
| </ul> | </ul> | ||||||
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.6.7.tar.gz | <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ wget https://github.com/SamR1/FitTrackee/archive/v0.6.8.tar.gz | ||||||
| $ tar -xzf v0.6.7.tar.gz | $ tar -xzf v0.6.8.tar.gz | ||||||
| $ cp -R FitTrackee-0.6.7/* FitTrackee/ | $ cp -R FitTrackee-0.6.8/* FitTrackee/ | ||||||
| $ <span class="nb">cd</span> FitTrackee | $ <span class="nb">cd</span> FitTrackee | ||||||
| </pre></div> | </pre></div> | ||||||
| </div> | </div> | ||||||
| @@ -833,7 +834,7 @@ $ <span class="nb">cd</span> FitTrackee | |||||||
| </section> | </section> | ||||||
| </section> | </section> | ||||||
| <section id="deployment"> | <section id="deployment"> | ||||||
| <h2>Deployment<a class="headerlink" href="#deployment" title="Permalink to this headline">¶</a></h2> | <h2>Deployment<a class="headerlink" href="#deployment" title="Permalink to this heading">¶</a></h2> | ||||||
| <p>There are several ways to start <strong>FitTrackee</strong> web application and task queue | <p>There are several ways to start <strong>FitTrackee</strong> web application and task queue | ||||||
| library. | library. | ||||||
| One way is to use a <strong>systemd</strong> services and <strong>Nginx</strong> to proxy pass to <strong>Gunicorn</strong>.</p> | One way is to use a <strong>systemd</strong> services and <strong>Nginx</strong> to proxy pass to <strong>Gunicorn</strong>.</p> | ||||||
| @@ -948,9 +949,9 @@ server { | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="docker"> | <section id="docker"> | ||||||
| <h2>Docker<a class="headerlink" href="#docker" title="Permalink to this headline">¶</a></h2> | <h2>Docker<a class="headerlink" href="#docker" title="Permalink to this heading">¶</a></h2> | ||||||
| <section id="id5"> | <section id="id5"> | ||||||
| <h3>Installation<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3> | <h3>Installation<a class="headerlink" href="#id5" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.4.4.</span></p> | <p><span class="versionmodified added">New in version 0.4.4.</span></p> | ||||||
| </div> | </div> | ||||||
| @@ -996,7 +997,7 @@ $ make docker-build docker-run docker-init | |||||||
| </div> | </div> | ||||||
| </section> | </section> | ||||||
| <section id="development"> | <section id="development"> | ||||||
| <h3>Development<a class="headerlink" href="#development" title="Permalink to this headline">¶</a></h3> | <h3>Development<a class="headerlink" href="#development" title="Permalink to this heading">¶</a></h3> | ||||||
| <div class="versionadded"> | <div class="versionadded"> | ||||||
| <p><span class="versionmodified added">New in version 0.5.0.</span></p> | <p><span class="versionmodified added">New in version 0.5.0.</span></p> | ||||||
| </div> | </div> | ||||||
| @@ -1034,7 +1035,7 @@ $ make docker-build docker-run docker-init | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								docs/objects.inv
									
									
									
									
									
								
							
							
						
						| @@ -1,10 +1,10 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|     <title>Search — FitTrackee 0.6.7 |     <title>Search — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" /> | ||||||
| @@ -12,6 +12,7 @@ | |||||||
|     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> |     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | ||||||
|     <script src="_static/jquery.js"></script> |     <script src="_static/jquery.js"></script> | ||||||
|     <script src="_static/underscore.js"></script> |     <script src="_static/underscore.js"></script> | ||||||
|  |     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="_static/doctools.js"></script> |     <script src="_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="genindex.html" /> |     <link rel="index" title="Index" href="genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="#" /> |     <link rel="search" title="Search" href="#" /> | ||||||
| @@ -44,7 +45,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="index.html"> |         <a class="navbar-brand" href="index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -150,7 +151,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Administrator — FitTrackee 0.6.7 |     <title>Administrator — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -130,9 +131,9 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="administrator"> |   <section id="administrator"> | ||||||
| <h1>Administrator<a class="headerlink" href="#administrator" title="Permalink to this headline">¶</a></h1> | <h1>Administrator<a class="headerlink" href="#administrator" title="Permalink to this heading">¶</a></h1> | ||||||
| <section id="fittrackee-fails-to-start"> | <section id="fittrackee-fails-to-start"> | ||||||
| <h2><cite>FitTrackee fails to start</cite><a class="headerlink" href="#fittrackee-fails-to-start" title="Permalink to this headline">¶</a></h2> | <h2><cite>FitTrackee fails to start</cite><a class="headerlink" href="#fittrackee-fails-to-start" title="Permalink to this heading">¶</a></h2> | ||||||
| <ul> | <ul> | ||||||
| <li><p>Check the database URL in <a class="reference external" href="../installation.html#envvar-DATABASE_URL">environment variables</a> if the following error is displayed in <strong>gunicorn</strong> logs:</p> | <li><p>Check the database URL in <a class="reference external" href="../installation.html#envvar-DATABASE_URL">environment variables</a> if the following error is displayed in <strong>gunicorn</strong> logs:</p> | ||||||
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sqlalchemy</span><span class="o">.</span><span class="n">exc</span><span class="o">.</span><span class="n">NoSuchModuleError</span><span class="p">:</span> <span class="n">Can</span><span class="s1">'t load plugin: sqlalchemy.dialects:postgres</span> | <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sqlalchemy</span><span class="o">.</span><span class="n">exc</span><span class="o">.</span><span class="n">NoSuchModuleError</span><span class="p">:</span> <span class="n">Can</span><span class="s1">'t load plugin: sqlalchemy.dialects:postgres</span> | ||||||
| @@ -163,7 +164,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>Troubleshooting — FitTrackee 0.6.7 |     <title>Troubleshooting — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="troubleshooting"> |   <section id="troubleshooting"> | ||||||
| <h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h1> | <h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this heading">¶</a></h1> | ||||||
| <div class="toctree-wrapper compound"> | <div class="toctree-wrapper compound"> | ||||||
| <ul> | <ul> | ||||||
| <li class="toctree-l1"><a class="reference internal" href="administrator.html">Administrator</a><ul> | <li class="toctree-l1"><a class="reference internal" href="administrator.html">Administrator</a><ul> | ||||||
| @@ -152,7 +153,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
|  |  | ||||||
| <html> | <html lang="en"> | ||||||
|   <head> |   <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | ||||||
|  |  | ||||||
|     <title>User — FitTrackee 0.6.7 |     <title>User — FitTrackee 0.6.8 | ||||||
|  documentation</title> |  documentation</title> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> |     <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" /> | ||||||
| @@ -13,6 +13,7 @@ | |||||||
|     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | ||||||
|     <script src="../_static/jquery.js"></script> |     <script src="../_static/jquery.js"></script> | ||||||
|     <script src="../_static/underscore.js"></script> |     <script src="../_static/underscore.js"></script> | ||||||
|  |     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> | ||||||
|     <script src="../_static/doctools.js"></script> |     <script src="../_static/doctools.js"></script> | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |     <link rel="index" title="Index" href="../genindex.html" /> | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |     <link rel="search" title="Search" href="../search.html" /> | ||||||
| @@ -40,7 +41,7 @@ | |||||||
|         </button> |         </button> | ||||||
|         <a class="navbar-brand" href="../index.html"> |         <a class="navbar-brand" href="../index.html"> | ||||||
|           FitTrackee</a> |           FitTrackee</a> | ||||||
|         <span class="navbar-text navbar-version pull-left"><b>0.6.7 |         <span class="navbar-text navbar-version pull-left"><b>0.6.8 | ||||||
| </b></span> | </b></span> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
| @@ -127,7 +128,7 @@ | |||||||
|     <div class="body col-md-12 content" role="main"> |     <div class="body col-md-12 content" role="main"> | ||||||
|        |        | ||||||
|   <section id="user"> |   <section id="user"> | ||||||
| <h1>User<a class="headerlink" href="#user" title="Permalink to this headline">¶</a></h1> | <h1>User<a class="headerlink" href="#user" title="Permalink to this heading">¶</a></h1> | ||||||
| <p><code class="docutils literal notranslate"><span class="pre">TODO</span></code></p> | <p><code class="docutils literal notranslate"><span class="pre">TODO</span></code></p> | ||||||
| </section> | </section> | ||||||
|  |  | ||||||
| @@ -144,7 +145,7 @@ | |||||||
|     </p> |     </p> | ||||||
|     <p> |     <p> | ||||||
|         © Copyright 2018 - 2022, SamR1.<br/> |         © Copyright 2018 - 2022, SamR1.<br/> | ||||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0.<br/> |       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.0.2.<br/> | ||||||
|     </p> |     </p> | ||||||
|   </div> |   </div> | ||||||
| </footer> | </footer> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 539 KiB After Width: | Height: | Size: 540 KiB | 
| Before Width: | Height: | Size: 368 KiB After Width: | Height: | Size: 369 KiB | 
| Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 202 KiB | 
| Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 70 KiB | 
| Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB | 
| Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB | 
| @@ -395,13 +395,13 @@ Production environment | |||||||
| .. warning:: | .. warning:: | ||||||
|     | Note that FitTrackee is under heavy development, some features may be unstable. |     | Note that FitTrackee is under heavy development, some features may be unstable. | ||||||
|  |  | ||||||
| -  Download the last release (for now, it is the release v0.6.7): | -  Download the last release (for now, it is the release v0.6.8): | ||||||
|  |  | ||||||
| .. code:: bash | .. code:: bash | ||||||
|  |  | ||||||
|    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.7.tar.gz |    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.8.tar.gz | ||||||
|    $ tar -xzf v0.6.7.tar.gz |    $ tar -xzf v0.6.8.tar.gz | ||||||
|    $ mv FitTrackee-0.6.7 FitTrackee |    $ mv FitTrackee-0.6.8 FitTrackee | ||||||
|    $ cd FitTrackee |    $ cd FitTrackee | ||||||
|  |  | ||||||
| -  Create **.env** from example and update it | -  Create **.env** from example and update it | ||||||
| @@ -521,13 +521,13 @@ Prod environment | |||||||
|  |  | ||||||
| - Change to the directory where FitTrackee directory is located | - Change to the directory where FitTrackee directory is located | ||||||
|  |  | ||||||
| - Download the last release (for now, it is the release v0.6.7) and overwrite existing files: | - Download the last release (for now, it is the release v0.6.8) and overwrite existing files: | ||||||
|  |  | ||||||
| .. code:: bash | .. code:: bash | ||||||
|  |  | ||||||
|    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.7.tar.gz |    $ wget https://github.com/SamR1/FitTrackee/archive/v0.6.8.tar.gz | ||||||
|    $ tar -xzf v0.6.7.tar.gz |    $ tar -xzf v0.6.8.tar.gz | ||||||
|    $ cp -R FitTrackee-0.6.7/* FitTrackee/ |    $ cp -R FitTrackee-0.6.8/* FitTrackee/ | ||||||
|    $ cd FitTrackee |    $ cd FitTrackee | ||||||
|  |  | ||||||
| - Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__). | - Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__). | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ from sqlalchemy.exc import ProgrammingError | |||||||
| from fittrackee.emails.email import EmailService | from fittrackee.emails.email import EmailService | ||||||
| from fittrackee.request import CustomRequest | from fittrackee.request import CustomRequest | ||||||
|  |  | ||||||
| VERSION = __version__ = '0.6.7' | VERSION = __version__ = '0.6.8' | ||||||
| db = SQLAlchemy() | db = SQLAlchemy() | ||||||
| bcrypt = Bcrypt() | bcrypt = Bcrypt() | ||||||
| migrate = Migrate() | migrate = Migrate() | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ def get_application_config() -> Union[Dict, HttpResponse]: | |||||||
|           "max_users": 0, |           "max_users": 0, | ||||||
|           "max_zip_file_size": 10485760, |           "max_zip_file_size": 10485760, | ||||||
|           "map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors" |           "map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors" | ||||||
|           "version": "0.6.7" |           "version": "0.6.8" | ||||||
|         }, |         }, | ||||||
|         "status": "success" |         "status": "success" | ||||||
|       } |       } | ||||||
| @@ -98,7 +98,7 @@ def update_application_config(auth_user: User) -> Union[Dict, HttpResponse]: | |||||||
|           "max_users": 10, |           "max_users": 10, | ||||||
|           "max_zip_file_size": 10485760, |           "max_zip_file_size": 10485760, | ||||||
|           "map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors" |           "map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors" | ||||||
|           "version": "0.6.7" |           "version": "0.6.8" | ||||||
|         }, |         }, | ||||||
|         "status": "success" |         "status": "success" | ||||||
|       } |       } | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								fittrackee/dist/index.html
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1 +1 @@ | |||||||
| <!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.87c31c45.js"></script><script defer="defer" src="/static/js/app.90a11eb1.js"></script><link href="/static/css/app.0bee5448.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> | <!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.87c31c45.js"></script><script defer="defer" src="/static/js/app.f559f6b1.js"></script><link href="/static/css/app.0bee5448.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> | ||||||
							
								
								
									
										2
									
								
								fittrackee/dist/service-worker.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										2
									
								
								fittrackee/dist/service-worker.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,2 +1,2 @@ | |||||||
| "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{9161:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});t(6699);var a=t(6252),r=t(2262),l=t(3577),o=t(3324),n=t(9996);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-d693c7da"]]);var Z=F,x=t(5630),D=t(8602),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]); | "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{9161:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});t(6699);var a=t(6252),r=t(2262),l=t(3577),o=t(3324),n=t(9996);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-d693c7da"]]);var Z=F,x=t(5630),D=t(8602),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]); | ||||||
| //# sourceMappingURL=statistics.c817d0d3.js.map
 | //# sourceMappingURL=statistics.6987952e.js.map
 | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "fittrackee_client", |   "name": "fittrackee_client", | ||||||
|   "version": "0.6.7", |   "version": "0.6.8", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "serve": "vue-cli-service serve", |     "serve": "vue-cli-service serve", | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| [tool.poetry] | [tool.poetry] | ||||||
| name = "fittrackee" | name = "fittrackee" | ||||||
| version = "0.6.7" | version = "0.6.8" | ||||||
| description = "Self-hosted outdoor workout/activity tracker" | description = "Self-hosted outdoor workout/activity tracker" | ||||||
| authors = ["SamR1"] | authors = ["SamR1"] | ||||||
| license = "AGPL-3.0" | license = "AGPL-3.0" | ||||||
|   | |||||||