sitespeed.io 29.1.2 → 29.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -1
- package/lib/plugins/html/templates/url/metrics/elementTimings.pug +5 -3
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/assets.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/css/index.min.css +0 -1
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/detailed.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/domains.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/help.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/browsertime64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/coach.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/coach64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/compare64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/gpsi64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io-114.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io-144.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io-72.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io.ico +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/pagexray64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/sitespeed.io-logo.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/summary64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/video64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/webpagetest64.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/index.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/chartist-plugin-axistitle.min.js +0 -1
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/chartist-plugin-legend.min.js +0 -1
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/chartist-plugin-tooltip.min.js +0 -8
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/chartist.min.js +0 -10
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/fetch.min.js +0 -1
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/gunzip.min.js +0 -26
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/perf-cascade.min.js +0 -3
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/js/sortable.min.js +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/1.html +0 -143
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/browsertime.har +0 -1
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/filmstrip/1/ms_000000.jpg +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/filmstrip/1/ms_001400.jpg +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/filmstrip/1/ms_001434.jpg +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/filmstrip/1/ms_001467.jpg +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/filmstrip/1/ms_001500.jpg +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/screenshots/1/afterPageCompleteCheck.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/screenshots/1/largestContentfulPaint.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/screenshots/1/layoutShift.png +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/data/video/1.mp4 +0 -0
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/index.html +0 -143
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages/sitespeed_io/metrics.html +0 -5
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/pages.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/settings.html +0 -2
- package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/toplist.html +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org))
|
|
2
2
|
|
|
3
|
+
## 29.1.3 - 2023-08-03
|
|
4
|
+
### Fixed
|
|
5
|
+
* HTML result page was broken when you had element timings that was not images. Thank you [dooglewoogle](https://github.com/dooglewoogle) for reporting, fixed in [#3927](https://github.com/sitespeedio/sitespeed.io/pull/3927).
|
|
6
|
+
|
|
3
7
|
## 29.1.2 - 2023-07-31
|
|
4
8
|
### Fixed
|
|
5
9
|
* Updating Browsertime that makes it possible to run the AMD docker image on ARM M1 Macs. Add `--platform linux/amd64` and in Docker desktop turn on *"Use Rosetta for x86/amd64 emulation"*.
|
|
@@ -21,7 +25,7 @@ The breaking changes in this release will not break anything, however some behav
|
|
|
21
25
|
|
|
22
26
|
* Changed timestamp for Graphite/InfluxDB metrics/annotations. The old implementation used the start time for the test all metrics sent except *browsertime.run* metrics (data for each run). This fix changes so metrics (and annotations) uses the *browsertime.pageSummary* runTime (when the actual first iteration happen for a test). This makes more sense if you test multiple pages within the same test [#3900](https://github.com/sitespeedio/sitespeed.io/pull/3900).
|
|
23
27
|
|
|
24
|
-
* When the slug concept was introduced in 17.0.0 also a bug was accidently added that add the domain as a slug if the slug was missing. As long as you added `--slug` that was not a problem and you will not be affected by this bug. However if you do not use `--slug` (you really should since 20.0.0) the slug portion would be automatically populated [#3901](https://github.com/sitespeedio/sitespeed.io/pull/3901).
|
|
28
|
+
* When the slug concept was introduced in 17.0.0 also a bug was accidently added that add the domain as a slug if the slug was missing. As long as you added `--slug` that was not a problem and you will not be affected by this bug. However if you do not use `--slug` (you really should since 20.0.0) the slug portion would be automatically populated [#3901](https://github.com/sitespeedio/sitespeed.io/pull/3901) with the domain. If you send your metrics to Graphite and do not use `--slug` and use the dashboard that use the slug, you need to add `--slug` to your run for your dashboards to continue to work.
|
|
25
29
|
|
|
26
30
|
### Fixed
|
|
27
31
|
* Crux: Remove experimental from INP when getting Crux data [#3906](https://github.com/sitespeedio/sitespeed.io/pull/3906).
|
|
@@ -4,9 +4,8 @@ if browsertime.timings.elementTimings && Object.keys(browsertime.timings.element
|
|
|
4
4
|
table
|
|
5
5
|
tr
|
|
6
6
|
th Id
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
th Image
|
|
7
|
+
th URL
|
|
8
|
+
th Image
|
|
10
9
|
th Tag
|
|
11
10
|
th Render time
|
|
12
11
|
th Load time
|
|
@@ -21,6 +20,9 @@ if browsertime.timings.elementTimings && Object.keys(browsertime.timings.element
|
|
|
21
20
|
td
|
|
22
21
|
a(href=value.url)
|
|
23
22
|
img.screenshot(src=value.url, alt='LCP', style='width:200px')
|
|
23
|
+
else
|
|
24
|
+
td
|
|
25
|
+
td
|
|
24
26
|
td #{value.tagName}
|
|
25
27
|
td #{h.time.ms(value.renderTime)}
|
|
26
28
|
td #{h.time.ms(value.loadTime)}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sitespeed.io",
|
|
3
|
-
"version": "29.1.
|
|
3
|
+
"version": "29.1.3",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "sitespeed.io",
|
|
9
|
-
"version": "29.1.
|
|
9
|
+
"version": "29.1.3",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@google-cloud/storage": "6.9.5",
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Most used assets for https://sitespeed.io tested at 2023-07-19 11:30:34</title><meta name="description" content="A list of the most used assets for the analysed pages."><meta name="robots" content="noindex"><link rel="stylesheet" href="css/index.min.css"><style type="text/css">
|
|
2
|
-
</style><link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/ico/sitespeed.io-144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/ico/sitespeed.io-114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/ico/sitespeed.io-72.png"><link rel="apple-touch-icon-precomposed" href="img/ico/sitespeed.io-57.png"><link rel="shortcut icon" href="img/ico/sitespeed.io.ico"></head><body><div class="darkblue nav"><div class="navgrid"><div class="logo"><a href="https://www.sitespeed.io"><img class="navbar-brand" src="img/sitespeed.io-logo.png" width="162" height="50" alt="sitespeed.io logo"></a></div><ul><li><a href="index.html">Summary</a></li><li><a href="detailed.html">Detailed Summary</a></li><li><a href="pages.html">Pages</a></li><li><a href="domains.html">Domains</a></li><li><a href="toplist.html">Toplist</a></li><li><a class="active" href="assets.html">Assets</a></li></ul></div></div><div class="container"><h2 class="url">1 page analysed for https://sitespeed.io</h2><p class="small">Tested 2023-07-19 11:30:34 using Chrome <a href="settings.html">(runtime settings).</a></p><div>Showing all 12 assets</div><div class="responsive"><table data-sortable id="assets"><thead><tr><th>url</th><th>type</th><th>time since last modified</th><th>cache time</th><th>size (kb)</th><th>count</th></tr></thead><tr><td class="url assetsurl" data-title="URL"><a href="https://sitespeed.io/">https://sitespeed.io/</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">plain</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="0">0 seconds</td><td class="number" data-title="size" data-value="0">0</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/">https://www.sitespeed.io/</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">html</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="0">0 seconds</td><td class="number" data-title="size" data-value="37790">36.9</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/css/prism-1.15.css">https://www.sitespee...ss/prism-1.15.css</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">css</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="3553">3.5</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/js/clipboard-2.0.4.min.js">https://www.sitespee...oard-2.0.4.min.js</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">javascript</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="10754">10.5</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/js/prism-1.15.js">https://www.sitespee.../js/prism-1.15.js</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">javascript</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="16542">16.2</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/sitespeed-logo-2c.png">https://www.sitespee...speed-logo-2c.png</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">image</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="3619">3.5</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/team1px.png">https://www.sitespeed.io/img/team1px.png</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">image</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="50285">49.1</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/pippi.png">https://www.sitespeed.io/img/pippi.png</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">image</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="10892">10.6</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/dashboard-front.png">https://www.sitespee...shboard-front.png</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">image</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="52480">51.3</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/public.png">https://www.sitespeed.io/img/public.png</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">image</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="12994">12.7</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/black-logo-120.png">https://www.sitespee...lack-logo-120.png</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">image</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="1678">1.6</td><td class="number" data-title="count">1</td></tr><tr><td class="url assetsurl" data-title="URL"><a href="https://www.sitespeed.io/img/ico/sitespeed.io.ico">https://www.sitespee.../sitespeed.io.ico</a> <a href="pages/sitespeed_io/index.html">↺</a></td><td data-title="type">favicon</td><td class="number" data-title="last modified" data-value="-1">-1 second</td><td class="number" data-title="cache time" data-value="3600000">6 weeks</td><td class="number" data-title="size" data-value="6518">6.4</td><td class="number" data-title="count">1</td></tr></table></div><footer><hr><p><a href="https://www.sitespeed.io">sitespeed.io</a> 28.2.0 by <a href="https://www.sitespeed.io/aboutus/">the sitespeed.io team</a> and <a href="https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md">contributors</a></p></footer></div><script src="js/sortable.min.js"></script><script src="js/chartist.min.js"></script><script src="js/chartist-plugin-axistitle.min.js"></script><script src="js/chartist-plugin-tooltip.min.js"></script><script src="js/chartist-plugin-legend.min.js"></script></body></html>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}*,:after,:before{box-sizing:border-box}ol,ul{margin-bottom:2.5rem}ul{margin-top:0;padding-left:0;list-style:circle inside}ul ol,ul ul{margin:1.5rem 0 1.5rem 3rem;font-size:.9rem}ol{margin-top:0;padding-left:0;list-style:decimal inside}ol ol,ol ul{margin:1.5rem 0 1.5rem 3rem;font-size:.9rem}li{margin-bottom:0}figure{margin-bottom:2.5rem}footer{text-align:center}hr{margin-top:3rem;margin-bottom:3.5rem;border-width:0;border-top:1px solid #e1e1e1}.container:after,.row:after{content:"";display:table;clear:both}.container{position:relative;width:100%;max-width:1140px;margin:0 auto;padding:0 20px;box-sizing:border-box}.column,.columns{width:100%;float:left;box-sizing:border-box}@media (min-width:400px){.container{width:85%;padding:0}}@media (min-width:550px){.container{width:80%}.column,.columns{margin-left:4%}.column:first-child,.columns:first-child{margin-left:0}.one.column,.one.columns{width:4.6666666667%}.two.columns{width:13.3333333333%}.three.columns{width:22%}.four.columns{width:30.6666666667%}.five.columns{width:39.3333333333%}.six.columns{width:48%}.seven.columns{width:56.6666666667%}.eight.columns{width:65.3333333333%}.nine.columns{width:74%}.ten.columns{width:82.6666666667%}.eleven.columns{width:91.3333333333%}.twelve.columns{width:100%;margin-left:0}.one-third.column{width:30.6666666667%}.two-thirds.column{width:65.3333333333%}.one-half.column{width:48%}.offset-by-one.column,.offset-by-one.columns{margin-left:8.6666666667%}.offset-by-two.column,.offset-by-two.columns{margin-left:17.3333333333%}.offset-by-three.column,.offset-by-three.columns{margin-left:26%}.offset-by-four.column,.offset-by-four.columns{margin-left:34.6666666667%}.offset-by-five.column,.offset-by-five.columns{margin-left:43.3333333333%}.offset-by-six.column,.offset-by-six.columns{margin-left:52%}.offset-by-seven.column,.offset-by-seven.columns{margin-left:60.6666666667%}.offset-by-eight.column,.offset-by-eight.columns{margin-left:69.3333333333%}.offset-by-nine.column,.offset-by-nine.columns{margin-left:78%}.offset-by-ten.column,.offset-by-ten.columns{margin-left:86.6666666667%}.offset-by-eleven.column,.offset-by-eleven.columns{margin-left:95.3333333333%}.offset-by-one-third.column,.offset-by-one-third.columns{margin-left:34.6666666667%}.offset-by-two-thirds.column,.offset-by-two-thirds.columns{margin-left:69.3333333333%}.offset-by-one-half.column,.offset-by-one-half.columns{margin-left:52%}}@media (min-width:1550px){.container{max-width:1400px;font-size:1.2em}}@media (min-width:1900px){.container{max-width:1800px;font-size:1.4em}}table{width:100%;margin-bottom:2.5rem;border-collapse:separate;border-spacing:1px;background-color:#e1e1e1}td,th{padding:4px 1rem;vertical-align:top;text-align:left}td:first-child,th:first-child{padding-left:1rem}td:last-child,th:last-child{padding-right:1rem}tr:nth-child(odd){background:#fafafa}tr:nth-child(2n){background:#fff}tr.odd{background:#fafafa}tr.even{background:#fff}th{background:#f1fbff}td.number,th.number{text-align:right}td.right{text-align:right}td.url{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;-moz-hyphens:auto;hyphens:auto}td.assetsurl{max-width:400px}td.pagesurl{max-width:350px}td.offendingurl{max-width:900px}td.break{word-break:break-all}td.extraheader{font-weight:700;background:#f5f5f5}@media only screen and (max-width:800px){.responsive table,.responsive tbody,.responsive td,.responsive th,.responsive thead,.responsive tr{display:block}.responsive tr.u-hideable{display:none}.responsive thead tr{position:absolute;top:-9999px;left:-9999px}.responsive tr{border:2px solid #e1e1e1}.responsive td{border:none;border-bottom:1px solid #e1e1e1;position:relative;padding-left:50%;white-space:normal;text-align:left;max-width:none}.responsive td:before{position:absolute;top:6px;left:6px;width:30%;padding-right:10px;white-space:nowrap;text-align:left;font-weight:700}.responsive td:before{content:attr(data-title)}.responsive td.url.offendingurl{word-break:break-all;padding-left:2px}.hidden-small{display:none}}html{font-size:100%}body{font-size:1em;line-height:1.6;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#222}h1,h2,h3,h4,h5,h6{margin-top:1rem;margin-bottom:2rem;font-weight:300}h1{font-size:3rem;line-height:1.2}h2{font-size:2.8rem;line-height:1.25}h3{font-size:2.6rem;line-height:1.3}h4{font-size:2.4rem;line-height:1.35}h5{font-size:1.8rem;line-height:1.5}h6{font-size:1.5rem;line-height:1.6;letter-spacing:0}p{margin-top:0}a{color:#0095d2}a:hover{color:#00719f}blockquote,dl,p,pre{margin-bottom:2.5rem}code{padding:.2rem .5rem;margin:0 .2rem;font-size:.9rem;white-space:nowrap;background:#fafafa;border:1px solid #e1e1e1;border-radius:4px}pre>code{display:block;padding:1rem 1.5rem;white-space:pre;overflow:auto}.u-full-width{width:100%}.u-max-full-width{max-width:100%}.u-pull-right{float:right}.u-pull-left{float:left}.u-cf{content:"";display:table;clear:both}.u-hideable{display:none}.button{display:inline-block;height:38px;padding:0 30px;margin-bottom:1rem;color:#222;text-align:center;font-size:80%;font-weight:600;line-height:38px;letter-spacing:.1rem;text-transform:uppercase;text-decoration:none;white-space:nowrap;background-color:transparent;border-radius:4px;border:1px solid #e1e1e1;cursor:pointer}.button:active,.button:focus,.button:hover{color:#222;border-color:#aeaeae;outline:0}.button--primary{color:#fff;background-color:#0095d2;border-color:#0095d2}.button--primary:active,.button--primary:focus,.button--primary:hover{color:#fff;background-color:#0087be;border-color:#0087be}.button-download{color:#fff;background-color:#ec971f;border-color:#eb9316;padding:0 10px;margin-right:1rem}.button-download:active,.button-download:focus,.button-download:hover{color:#fff;background-color:#e38d13;border-color:#da8813}.navgrid{width:100%;min-width:0;margin-left:0;margin-right:0;padding-left:0;padding-right:10px}.nav{background:#0095d2}.nav ul{list-style:none;text-align:center;padding:0;margin:0;background-color:#0095d2}.nav li{line-height:40px;height:40px;border-bottom:none;margin-bottom:0}.nav a{text-decoration:none;color:#fff;display:block}.nav a:hover{background-color:#0073b0}.nav a.active{background-color:#0073b0;color:#fff;cursor:default}.logo{text-align:center;background-color:#0095d2}.navbar-brand{padding:0;font-size:18px;max-width:250px}@media screen and (min-width:820px){body{padding-top:50px}.navgrid{width:100%;max-width:1140px;min-width:755px;margin:0 auto;overflow:hidden}.nav{height:50px;width:100%;z-index:1000;position:fixed;top:0}.navbar-brand{padding:0;font-size:18px;float:left;max-width:250px}.nav{z-index:10;top:0;background-color:#0095d2}.nav a{padding-left:20px;padding-right:20px}.nav li{border-bottom:none;height:50px;line-height:50px;float:left;display:inline-block;margin-right:0}.nav a{text-decoration:none;color:#fff;display:block}.nav ul{list-style:none;text-align:center;padding:0;margin:0;background-color:#0095d2}:target:before{content:"";display:block;height:50px;margin:-50px 0 0}}@media (min-width:1550px){.nav li{font-size:1.2em}}@media (min-width:1900px){.nav li{font-size:1.4em}}table[data-sortable] th[data-sorted=true]{color:#3a87ad;background:#d9edf7;border-bottom-color:#bce8f1}table[data-sortable] th:not([data-sortable=false]){cursor:pointer;color:#222;text-decoration:underline}.summarybox{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.summarybox.ok{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.summarybox.warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.summarybox.error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.summarybox.info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}a.summaries{text-decoration:none}.summarynumber{font-size:2rem;line-height:1;font-weight:700}.summarysmall{font-size:1rem;line-height:1}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.normal{font-size:100%}.ok{background-color:#468847}.warning{background-color:#f0ad4e}.error{background-color:#d9534f}.info{background-color:#0095d2}ul.menu{list-style:none;font-size:125%;text-transform:uppercase}.errors{margin-bottom:1.333em;background:#ffb6c1;padding-left:1em}.subtableheader{background:#ffe3eb}.large{font-size:1.333rem;line-height:1.8rem}.hidden-small{display:inline}.url{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;-moz-hyphens:auto;hyphens:auto}/*! github.com/micmro/PerfCascade Version:2.11.0 (24/11/2021) */.water-fall-chart{width:100%;overflow:visible;font-size:12px;line-height:1em}.water-fall-chart *{box-sizing:border-box}.water-fall-chart button{cursor:pointer}.water-fall-holder{fill:#ccc}.water-fall-chart .left-fixed-holder{overflow:visible}.water-fall-chart .marker-holder{width:100%}.water-fall-chart .line-label-holder{cursor:pointer}.water-fall-chart .line-holder{stroke-width:1;stroke:#ccc;stroke-opacity:0.5;transition:all 60ms}.water-fall-chart .line-holder .line-mark{fill:#69009e;opacity:.01;stroke-width:0;transition:all 60ms}.water-fall-chart .line-holder.active{stroke:#69009e;stroke-width:2;stroke-opacity:1}.water-fall-chart .line-holder.active .line-mark{opacity:.4}.water-fall-chart .type-onload .line-holder{stroke:#c0c0ff}.water-fall-chart .type-oncontentload .line-holder{stroke:#d888df}.water-fall-chart .labels{width:100%}.water-fall-chart .labels .inner-label{pointer-events:none}.water-fall-chart .time-block.active{opacity:.8}.water-fall-chart .line-end,.water-fall-chart .line-start{display:none;stroke-width:1;stroke-opacity:0.5;stroke:#000}.water-fall-chart .line-end.active,.water-fall-chart .line-start.active{display:block}.left-fixed-holder .label-full-bg{fill:#fff;opacity:.9}.time-scale line{stroke:#0cc;stroke-width:1}.time-scale line.sub-second-line{stroke:#ccc;opacity:.75;stroke-width:.5}.time-scale text{font-weight:700}.row-item{cursor:pointer}.row-item .even{fill:#ccc;opacity:.05}.row-item .odd{fill:#000;opacity:.05}.row-item:hover .even,.row-item:hover .odd{fill:#000;opacity:.1}.row-item:focus{outline:solid 1.5px #aaa;outline-offset:-1.5px}.row-item:focus .even,.row-item:focus .odd{fill:#000;opacity:.2}.row-item .rect-holder text{fill:#aaa}.row-item.status0 .even,.row-item.status5xx .even{fill:#f66}.row-item.status0 .odd,.row-item.status5xx .odd{fill:#f00}.row-item.status4xx .even{fill:#c33}.row-item.status4xx .odd{fill:#c00}.row-item.status3xx .even{fill:#ff6}.row-item.status3xx .odd{fill:#ff0}.row-item.potentiallyRenderBlocking .even,.row-item.potentiallyRenderBlocking .odd{fill:#e5a331}.row-item.renderBlocking .even,.row-item.renderBlocking .odd{fill:#e57231;stroke-dasharray:5;stroke:black;stroke-width:2px}.row-item.largestContentfulPaint .even,.row-item.largestContentfulPaint .odd{fill:#c9e531;stroke-dasharray:8;stroke-width:2px;stroke:black}.row-item.largestContentfulPaint .even,.row-item.largestContentfulPaint .odd,.row-item.potentiallyRenderBlocking .even,.row-item.potentiallyRenderBlocking .odd,.row-item.renderBlocking .even,.row-item.renderBlocking .odd,.row-item.status0 .even,.row-item.status0 .odd,.row-item.status3xx .even,.row-item.status3xx .odd,.row-item.status4xx .even,.row-item.status4xx .odd,.row-item.status5xx .even,.row-item.status5xx .odd{opacity:.3}.row-item.largestContentfulPaint:hover .even,.row-item.largestContentfulPaint:hover .odd,.row-item.potentiallyRenderBlocking:hover .even,.row-item.potentiallyRenderBlocking:hover .odd,.row-item.renderBlocking:hover .even,.row-item.renderBlocking:hover .odd,.row-item.status0:hover .even,.row-item.status0:hover .odd,.row-item.status3xx:hover .even,.row-item.status3xx:hover .odd,.row-item.status4xx:hover .even,.row-item.status4xx:hover .odd,.row-item.status5xx:hover .even,.row-item.status5xx:hover .odd{opacity:.5}.tooltip-holder{overflow:visible}.tooltip *{padding:0;margin:0}.tooltip html{font-size:10px;line-height:1.2em}.tooltip body{position:relative}.tooltip-payload{position:absolute;top:0;left:0;padding:.25em;font-size:10px;display:inline-block;background:rgba(255,255,255,.9);border:solid 1px #f0f0f0;word-break:break-all;overflow-wrap:break-word;transition:opacity .3s}.tooltip-payload.no-anim{transition:none}.row-item,.time-scale line,.time-scale text,.water-fall-chart .line-holder line,.water-fall-chart .line-label-holder{transition:transform 60ms}.water-fall-chart.closing{transition-delay:60ms}.labels{overflow:hidden}.block-css{fill:#a6d18f}.block-html,.block-iframe,.block-internal,.block-svg{fill:#82a8de}.block-image,.block-img{fill:#b394cf}.block-javascript,.block-js,.block-script{fill:#e0b483}.block-link{fill:#89afe6}.block-flash,.block-swf{fill:#42aab1}.block-font{fill:#e15d4e}.block-ajax,.block-xmlhttprequest{fill:#f00}.block-other,.block-plain{fill:#b3b3b3}.block-blocked{fill:#aaa}.block-dns{fill:#159588}.block-connect{fill:#fd9727}.block-ssl{fill:#c141cd}.block-send{fill:#b0bec5}.block-wait{fill:#1ec659}.block-receive{fill:#1eaaf1}.block-receive-chunk{fill:#a1c3fa}.block-undefined{fill:#0f0}.info-overlay-bg{fill:#fff;stroke:#cdcdcd}.info-overlay-close-btn{fill:rgba(205,205,205,0.8);transform:translate(-23px,-23px);cursor:pointer}.info-overlay-close-btn text{fill:#111;pointer-events:none}.info-overlay-close-btn:focus{border:solid 1px #36c}.info-overlay-holder .connect{border-right:solid 5px #fd9727;padding-right:5px}.info-overlay-holder .blocked{border-right:solid 5px #aaa;padding-right:5px}.info-overlay-holder .ssltls{border-right:solid 5px #c141cd;padding-right:5px}.info-overlay-holder .send{border-right:solid 5px #b0bec5;padding-right:5px}.info-overlay-holder .wait{border-right:solid 5px #1ec659;padding-right:5px}.info-overlay-holder .receive{border-right:solid 5px #1eaaf1;padding-right:5px}.info-overlay-holder .dns{border-right:solid 5px #159588;padding-right:5px}.type-css{background:#406b29}.type-html,.type-iframe,.type-internal,.type-svg{background:#1c4278}.type-image,.type-img{background:#4d2e69}.type-javascript,.type-js,.type-script{background:#7a4e1d}.type-link{background:#89afe6}.type-flash,.type-swf{background:#234980}.type-font{background:#ae2a1b}.type-ajax,.type-xmlhttprequest{background:#c00}.type-other,.type-plain{background:grey}.info-overlay-holder *{padding:0;margin:0;font-size:12px}.info-overlay-holder body{position:relative;height:450px;clear:both;padding:0;margin:0;width:100%;background:#fff;color:#666}.info-overlay-holder body .wrapper{height:450px;width:100%;overflow:scroll}.info-overlay-holder header{position:relative;box-shadow:0 0 2px 2px rgba(0,0,0,.25)}.info-overlay-holder header,.info-overlay-holder header a,.info-overlay-holder header button{color:#fff;text-decoration:none}.info-overlay-holder header a:focus,.info-overlay-holder header a:hover{text-decoration:underline}.info-overlay-holder .requestID{font-weight:700}.info-overlay-holder h3,.info-overlay-holder h3 a{font-size:1.1em;padding:1em;margin:0;font-weight:400;overflow-wrap:break-word}.info-overlay-holder h3 strong{font-size:1.1em}.info-overlay-holder .tab-nav ul{margin:0;padding:0}.info-overlay-holder .tab-nav li{margin:0;padding:0;display:inline-block}.info-overlay-holder button{background:0 0;outline:0;border:0;border-bottom:solid 2px transparent;padding:.5em 1em;margin:0 .25em}.info-overlay-holder li:first-child button{margin-left:1em}.info-overlay-holder button.active:focus,.info-overlay-holder button:focus,.info-overlay-holder button:hover{border-color:rgba(255,255,255,.6)}.info-overlay-holder button.active{border-color:#fff;cursor:default}.info-overlay-holder button.active:focus{border-color:rgba(255,255,255,.8)}.info-overlay-holder button.copy-tab-data{position:absolute;top:.5em;right:.5em;border:0;margin:0;border-radius:1em;background:#e0e0e0}.info-overlay-holder button.copy-tab-data:focus,.info-overlay-holder button.copy-tab-data:hover{background:#ccc}.info-overlay-holder dt{float:left;clear:both;margin-top:.5em;width:25%;text-align:right;font-weight:700}.info-overlay-holder dd{float:left;width:73%;margin:.5em 0 0 2%;padding:0 0 .5em 0}.info-overlay-holder dt:after{content:":"}.info-overlay-holder pre{font-size:11px;line-height:23px;border-radius:0;background:#f6f3f3}.info-overlay-holder .tab{float:left;position:relative;width:100%;height:350px;padding:12px 12px 24px}.info-overlay-holder .tab h2{font-size:1.2em;margin:.5em 0 0;padding:.5em 0 .5em 1em;clear:both;border-top:solid 1px #efefef}.info-overlay-holder .tab h2:first-child{border-top:0;padding-top:0}.info-overlay-holder .tab pre{overflow-y:hidden;width:100%;min-height:100%}.info-overlay-holder .tab .preview{width:auto;max-width:100%;max-height:500px;border:solid 1px #666}.info-overlay-holder .tab dl:after{content:"";display:table;clear:both}.info-overlay-holder .tab.rendered-data{padding:0}.info-overlay-holder .tab.rendered-data pre{padding:12px 12px 24px}.info-overlay-holder .tab.rendered-data pre>code{white-space:pre-wrap}.resource-legend{margin:0;padding:0;font-size:.75em;line-height:1.5em;display:inline-block}.resource-legend li{margin:0 1em 0 0;padding:0;white-space:nowrap;display:inline-block}.resource-legend li:before{content:"";width:1em;height:1em;margin:0 .5em 0 0;vertical-align:text-top;display:inline-block}.resource-legend .legend-blocked:before{background:#aaa}.resource-legend .legend-dns:before{background:#159588}.resource-legend .legend-connect:before{background:#fd9727}.resource-legend .legend-ssl:before{background:#c141cd}.resource-legend .legend-send:before{background:#b0bec5}.resource-legend .legend-wait:before{background:#1ec659}.resource-legend .legend-receive:before{background:#1eaaf1}.icon{fill:#666}.icon-4xx,.icon-5xx,.icon-no-cache,.icon-no-gzip,.icon-warning{fill:#b55}.water-fall-chart .type-firstpaint .line-holder{stroke:#42f46e;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-firstvisualchange .line-holder{stroke:#42f46e;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-visualcomplete85 .line-holder{stroke:#ee7777;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-lastvisualchange .line-holder{stroke:#ee42f4;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-onload .line-holder{stroke:#9c99e5;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-oncontentload .line-holder{stroke:#9842f4;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-dominteractivetime .line-holder{stroke:#1842f4;stroke-opacity:1;stroke-width:2}.water-fall-chart .type-domcontentloadedtime .line-holder{stroke:#1212f4;stroke-opacity:1;stroke-width:2}.water-fall-chart .type-lastcpulongtask .line-holder{stroke:#f41229;stroke-opacity:1;stroke-width:3}.water-fall-chart .type-largestcontentfulpaint .line-holder{stroke:#c7f412;stroke-opacity:1;stroke-width:3}.water-fall-chart{font-size:14px}#page-selector{display:none;clear:both;margin:1em 0}*{box-sizing:border-box}@media screen and (max-width:400px){select{max-width:100%}}.screenshot{padding:4px;background-color:#fff;border:1px solid #ddd;border-radius:4px}*,:after,:before{margin:0;padding:0;box-sizing:border-box}section{display:block;padding:20px 0 0;border-top:1px solid #ddd}#tabs a{display:inline-block;margin:0 0 -1px;padding:15px 22px;font-weight:600;text-align:center;color:#bbb;border:1px solid transparent;text-decoration:none;text-transform:uppercase}#tabs a:before{font-weight:400}#tabs a:hover{color:#888;cursor:pointer}#tabs a:target:focus{outline:0}#tabs a[selected]{color:#555;border:1px solid #ddd;border-top:2px solid #0095d2;border-bottom:1px solid #fff}@media screen and (max-width:650px){#tabs a:before{margin:0;font-size:18px}}@media screen and (max-width:400px){#tabs a{padding:13px}}.group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd;font-weight:700}.group-item.active{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.loader,.loader:after,.loader:before{background:#000;-webkit-animation:load1 1s infinite ease-in-out;animation:load1 1s infinite ease-in-out;width:1em;height:4em}.loader{color:#000;text-indent:-9999em;margin:88px auto;position:relative;font-size:11px;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.loader:after,.loader:before{position:absolute;top:0;content:""}.loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.loader:after{left:1.5em}@-webkit-keyframes load1{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes load1{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.ct-label{fill:rgba(0,0,0,0.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,0.2);stroke-width:1px;stroke-dasharray:2px}.ct-grid-background{fill:none}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{fill:none;stroke-width:4px}.ct-area{stroke:none;fill-opacity:0.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{content:"";display:table;clear:both}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{content:"";display:table;clear:both}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{content:"";display:table;clear:both}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{content:"";display:table;clear:both}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{content:"";display:table;clear:both}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{content:"";display:table;clear:both}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{content:"";display:table;clear:both}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{content:"";display:table;clear:both}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{content:"";display:table;clear:both}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{content:"";display:table;clear:both}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{content:"";display:table;clear:both}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{content:"";display:table;clear:both}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{content:"";display:table;clear:both}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{content:"";display:table;clear:both}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{content:"";display:table;clear:both}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{content:"";display:table;clear:both}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0}.chartist-tooltip{position:absolute;display:inline-block;opacity:0;min-width:5em;padding:.5em;background:#f4c63d;color:#453d3f;font-family:Oxygen,Helvetica,Arial,sans-serif;font-weight:700;text-align:center;pointer-events:none;z-index:1;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.chartist-tooltip:before{content:"";position:absolute;top:100%;left:50%;width:0;height:0;margin-left:-15px;border:15px solid transparent;border-top-color:#f4c63d}.chartist-tooltip.tooltip-show{opacity:1}.ct-area,.ct-line{pointer-events:none}.chartist-tooltip{background:#0095d2;color:#fff}.chartist-tooltip:before{border-top-color:#0095d2}.ct-bar{stroke-width:16px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#82b5fc}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#468847}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#b2ea94}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#c09853}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#fec584}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#b94a48}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#c49ae8}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#c49ae8}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#ff523e}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#ff523e}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#c4c4c4}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#c4c4c4}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#c4c4c4}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#c4c4c4}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#c4c4c4}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#c4c4c4}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#EAB839}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#EAB839}.ct-chart .ct-legend{position:relative;z-index:10;list-style:none;text-align:left;line-height:.8;font-size:.8em}.ct-chart .ct-legend li{padding-left:23px;margin-right:10px;margin-bottom:3px;cursor:pointer}.ct-chart .ct-legend li:before{width:12px;height:12px;position:absolute;left:0;content:"";border:3px solid transparent;border-radius:2px}.ct-chart .ct-legend li .inactive:before{background:0 0}.ct-chart .ct-legend li:first-child::before{background-color:#468847}.ct-chart .ct-legend li:nth-child(2)::before{background-color:#c09853}.ct-chart .ct-legend li:nth-child(3)::before{background-color:#b94a48}.ct-chart .ct-legend .ct-legend-inside{position:absolute;top:0;right:0}.ct-chart g:not(.ct-grids):not(.ct-labels) g:first-child .ct-line,.ct-chart g:not(.ct-grids):not(.ct-labels) g:first-child .ct-point{stroke:#468847}.ct-chart g:not(.ct-grids):not(.ct-labels) g:nth-child(2) .ct-line,.ct-chart g:not(.ct-grids):not(.ct-labels) g:nth-child(2) .ct-point{stroke:#c09853}.ct-chart g:not(.ct-grids):not(.ct-labels) g:nth-child(3) .ct-line,.ct-chart g:not(.ct-grids):not(.ct-labels) g:nth-child(3) .ct-point{stroke:#b94a48}.filmstrip{padding-bottom:20px}.videoframe{vertical-align:top;display:inline-block;padding:4px;background-color:#fff;border:1px solid #ddd;border-radius:4px;width:100%}.videoframe.blue{border:2px solid #0095d2}.videoframetime{text-align:center;display:block}.videoframetext{text-align:left;display:block;line-height:1.2em;font-size:.8em;white-space:nowrap;margin-bottom:.2em}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>In details summary for https://sitespeed.io tested 1 page at 2023-07-19 11:30:34</title><meta name="description" content="Get all the details you need to fast track things you need to change."><meta name="robots" content="noindex"><link rel="stylesheet" href="css/index.min.css"><style type="text/css">
|
|
2
|
-
</style><link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/ico/sitespeed.io-144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/ico/sitespeed.io-114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/ico/sitespeed.io-72.png"><link rel="apple-touch-icon-precomposed" href="img/ico/sitespeed.io-57.png"><link rel="shortcut icon" href="img/ico/sitespeed.io.ico"></head><body><div class="darkblue nav"><div class="navgrid"><div class="logo"><a href="https://www.sitespeed.io"><img class="navbar-brand" src="img/sitespeed.io-logo.png" width="162" height="50" alt="sitespeed.io logo"></a></div><ul><li><a href="index.html">Summary</a></li><li><a class="active" href="detailed.html">Detailed Summary</a></li><li><a href="pages.html">Pages</a></li><li><a href="domains.html">Domains</a></li><li><a href="toplist.html">Toplist</a></li><li><a href="assets.html">Assets</a></li></ul></div></div><div class="container"><h2 class="url">1 page analysed for https://sitespeed.io</h2><p class="small">Tested 2023-07-19 11:30:34 using Chrome <a href="settings.html">(runtime settings).</a></p><div class="responsive"><table data-sortable id="detailed"><thead><tr><th>name</th><th>min</th><th>median</th><th>mean</th><th>p90</th><th>max</th></tr></thead><tr><td data-title="Metric" data-value="Coach score"><a href="help.html#overallScore">Coach score</a></td><td data-title="min" data-value="95">95</td><td data-title="median" data-value="95">95</td><td data-title="mean" data-value="95">95</td><td data-title="p90" data-value="95">95</td><td data-title="max" data-value="95">95</td></tr><tr><td data-title="Metric" data-value="Coach performance score"><a href="help.html#performanceScore">Coach performance score</a></td><td data-title="min" data-value="92">92</td><td data-title="median" data-value="92">92</td><td data-title="mean" data-value="92">92</td><td data-title="p90" data-value="92">92</td><td data-title="max" data-value="92">92</td></tr><tr><td data-title="Metric" data-value="Privacy score"><a href="help.html#privacyScore">Privacy score</a></td><td data-title="min" data-value="100">100</td><td data-title="median" data-value="100">100</td><td data-title="mean" data-value="100">100</td><td data-title="p90" data-value="100">100</td><td data-title="max" data-value="100">100</td></tr><tr><td data-title="Metric" data-value="Best Practice score"><a href="help.html#bestPracticeScore">Best Practice score</a></td><td data-title="min" data-value="100">100</td><td data-title="median" data-value="100">100</td><td data-title="mean" data-value="100">100</td><td data-title="p90" data-value="100">100</td><td data-title="max" data-value="100">100</td></tr><tr><td data-title="Metric" data-value="Image requests"><a href="help.html#imageRequestsPerPage">Image requests</a></td><td data-title="min" data-value="6">6</td><td data-title="median" data-value="6">6</td><td data-title="mean" data-value="6">6</td><td data-title="p90" data-value="6">6</td><td data-title="max" data-value="6">6</td></tr><tr><td data-title="Metric" data-value="CSS requests"><a href="help.html#cssRequestsPerPage">CSS requests</a></td><td data-title="min" data-value="1">1</td><td data-title="median" data-value="1">1</td><td data-title="mean" data-value="1">1</td><td data-title="p90" data-value="1">1</td><td data-title="max" data-value="1">1</td></tr><tr><td data-title="Metric" data-value="Javascript requests"><a href="help.html#jsRequestsPerPage">Javascript requests</a></td><td data-title="min" data-value="2">2</td><td data-title="median" data-value="2">2</td><td data-title="mean" data-value="2">2</td><td data-title="p90" data-value="2">2</td><td data-title="max" data-value="2">2</td></tr><tr><td data-title="Metric" data-value="Font requests"><a href="help.html#fontRequestsPerPage">Font requests</a></td><td data-title="min" data-value="0">0</td><td data-title="median" data-value="0">0</td><td data-title="mean" data-value="0">0</td><td data-title="p90" data-value="0">0</td><td data-title="max" data-value="0">0</td></tr><tr><td data-title="Metric" data-value="Total requests"><a href="help.html#totalRequestsPerPage">Total requests</a></td><td data-title="min" data-value="12">12</td><td data-title="median" data-value="12">12</td><td data-title="mean" data-value="12">12</td><td data-title="p90" data-value="12">12</td><td data-title="max" data-value="12">12</td></tr><tr><td data-title="Metric" data-value="Image size"><a href="help.html#imageSizePerPage">Image size</a></td><td data-title="min" data-value="132633">129.5 KB</td><td data-title="median" data-value="132633">129.5 KB</td><td data-title="mean" data-value="132633">129.5 KB</td><td data-title="p90" data-value="132633">129.5 KB</td><td data-title="max" data-value="132633">129.5 KB</td></tr><tr><td data-title="Metric" data-value="HTML size"><a href="help.html#htmlSizePerPage">HTML size</a></td><td data-title="min" data-value="9849">9.6 KB</td><td data-title="median" data-value="9849">9.6 KB</td><td data-title="mean" data-value="9849">9.6 KB</td><td data-title="p90" data-value="9849">9.6 KB</td><td data-title="max" data-value="9849">9.6 KB</td></tr><tr><td data-title="Metric" data-value="CSS size"><a href="help.html#cssSizePerPage">CSS size</a></td><td data-title="min" data-value="1277">1.2 KB</td><td data-title="median" data-value="1277">1.2 KB</td><td data-title="mean" data-value="1277">1.2 KB</td><td data-title="p90" data-value="1277">1.2 KB</td><td data-title="max" data-value="1277">1.2 KB</td></tr><tr><td data-title="Metric" data-value="Javascript size"><a href="help.html#jsSizePerPage">Javascript size</a></td><td data-title="min" data-value="9656">9.4 KB</td><td data-title="median" data-value="9656">9.4 KB</td><td data-title="mean" data-value="9656">9.4 KB</td><td data-title="p90" data-value="9656">9.4 KB</td><td data-title="max" data-value="9656">9.4 KB</td></tr><tr><td data-title="Metric" data-value="Font size"><a href="help.html#fontSizePerPage">Font size</a></td><td data-title="min" data-value="0">0 b</td><td data-title="median" data-value="0">0 b</td><td data-title="mean" data-value="0">0 b</td><td data-title="p90" data-value="0">0 b</td><td data-title="max" data-value="0">0 b</td></tr><tr><td data-title="Metric" data-value="Total size"><a href="help.html#totalSizePerPage">Total size</a></td><td data-title="min" data-value="160055">156.3 KB</td><td data-title="median" data-value="160055">156.3 KB</td><td data-title="mean" data-value="160055">156.3 KB</td><td data-title="p90" data-value="160055">156.3 KB</td><td data-title="max" data-value="160055">156.3 KB</td></tr><tr><td data-title="Metric" data-value="200 responses">200 responses</td><td data-title="min" data-value="11">11</td><td data-title="median" data-value="11">11</td><td data-title="mean" data-value="11">11</td><td data-title="p90" data-value="11">11</td><td data-title="max" data-value="11">11</td></tr><tr><td data-title="Metric" data-value="301 responses">301 responses</td><td data-title="min" data-value="1">1</td><td data-title="median" data-value="1">1</td><td data-title="mean" data-value="1">1</td><td data-title="p90" data-value="1">1</td><td data-title="max" data-value="1">1</td></tr><tr><td data-title="Metric" data-value="First Paint"><a href="help.html#firstPaint">First Paint</a></td><td data-title="min" data-value="1402">1.402 s</td><td data-title="median" data-value="1402">1.402 s</td><td data-title="mean" data-value="1402">1.402 s</td><td data-title="p90" data-value="1402">1.402 s</td><td data-title="max" data-value="1402">1.402 s</td></tr><tr><td data-title="Metric" data-value="Fully Loaded"><a href="help.html#fullyLoaded">Fully Loaded</a></td><td data-title="min" data-value="1526">1.526 s</td><td data-title="median" data-value="1526">1.526 s</td><td data-title="mean" data-value="1526">1.526 s</td><td data-title="p90" data-value="1526">1.526 s</td><td data-title="max" data-value="1526">1.526 s</td></tr><tr><td data-title="Metric" data-value="Largest Contentful Paint"><a href="help.html#largestContentfulPaint">Largest Contentful Paint</a></td><td data-title="min" data-value="1502">1.502 s</td><td data-title="median" data-value="1502">1.502 s</td><td data-title="mean" data-value="1502">1.502 s</td><td data-title="p90" data-value="1502">1.502 s</td><td data-title="max" data-value="1502">1.502 s</td></tr><tr><td data-title="Metric" data-value="First Contentful Paint"><a href="help.html#first-contentful-paint">First Contentful Paint</a></td><td data-title="min" data-value="1402">1.402 s</td><td data-title="median" data-value="1402">1.402 s</td><td data-title="mean" data-value="1402">1.402 s</td><td data-title="p90" data-value="1402">1.402 s</td><td data-title="max" data-value="1402">1.402 s</td></tr><tr><td data-title="Metric" data-value="First Paint"><a href="help.html#first-paint">First Paint</a></td><td data-title="min" data-value="1402">1.402 s</td><td data-title="median" data-value="1402">1.402 s</td><td data-title="mean" data-value="1402">1.402 s</td><td data-title="p90" data-value="1402">1.402 s</td><td data-title="max" data-value="1402">1.402 s</td></tr><tr><td data-title="Metric" data-value="backEndTime"><a href="help.html#backEndTime">backEndTime</a></td><td data-title="min" data-value="1286">1.286 s</td><td data-title="median" data-value="1286">1.286 s</td><td data-title="mean" data-value="1286">1.286 s</td><td data-title="p90" data-value="1286">1.286 s</td><td data-title="max" data-value="1286">1.286 s</td></tr><tr><td data-title="Metric" data-value="domContentLoadedTime"><a href="help.html#domContentLoadedTime">domContentLoadedTime</a></td><td data-title="min" data-value="1455">1.455 s</td><td data-title="median" data-value="1455">1.455 s</td><td data-title="mean" data-value="1455">1.455 s</td><td data-title="p90" data-value="1455">1.455 s</td><td data-title="max" data-value="1455">1.455 s</td></tr><tr><td data-title="Metric" data-value="domInteractiveTime"><a href="help.html#domInteractiveTime">domInteractiveTime</a></td><td data-title="min" data-value="1450">1.450 s</td><td data-title="median" data-value="1450">1.450 s</td><td data-title="mean" data-value="1450">1.450 s</td><td data-title="p90" data-value="1450">1.450 s</td><td data-title="max" data-value="1450">1.450 s</td></tr><tr><td data-title="Metric" data-value="domainLookupTime"><a href="help.html#domainLookupTime">domainLookupTime</a></td><td data-title="min" data-value="169">169 ms</td><td data-title="median" data-value="169">169 ms</td><td data-title="mean" data-value="169">169 ms</td><td data-title="p90" data-value="169">169 ms</td><td data-title="max" data-value="169">169 ms</td></tr><tr><td data-title="Metric" data-value="frontEndTime"><a href="help.html#frontEndTime">frontEndTime</a></td><td data-title="min" data-value="154">154 ms</td><td data-title="median" data-value="154">154 ms</td><td data-title="mean" data-value="154">154 ms</td><td data-title="p90" data-value="154">154 ms</td><td data-title="max" data-value="154">154 ms</td></tr><tr><td data-title="Metric" data-value="pageDownloadTime"><a href="help.html#pageDownloadTime">pageDownloadTime</a></td><td data-title="min" data-value="38">38 ms</td><td data-title="median" data-value="38">38 ms</td><td data-title="mean" data-value="38">38 ms</td><td data-title="p90" data-value="38">38 ms</td><td data-title="max" data-value="38">38 ms</td></tr><tr><td data-title="Metric" data-value="pageLoadTime"><a href="help.html#pageLoadTime">pageLoadTime</a></td><td data-title="min" data-value="1478">1.478 s</td><td data-title="median" data-value="1478">1.478 s</td><td data-title="mean" data-value="1478">1.478 s</td><td data-title="p90" data-value="1478">1.478 s</td><td data-title="max" data-value="1478">1.478 s</td></tr><tr><td data-title="Metric" data-value="redirectionTime"><a href="help.html#redirectionTime">redirectionTime</a></td><td data-title="min" data-value="0">0 ms</td><td data-title="median" data-value="0">0 ms</td><td data-title="mean" data-value="0">0 ms</td><td data-title="p90" data-value="0">0 ms</td><td data-title="max" data-value="0">0 ms</td></tr><tr><td data-title="Metric" data-value="serverConnectionTime"><a href="help.html#serverConnectionTime">serverConnectionTime</a></td><td data-title="min" data-value="93">93 ms</td><td data-title="median" data-value="93">93 ms</td><td data-title="mean" data-value="93">93 ms</td><td data-title="p90" data-value="93">93 ms</td><td data-title="max" data-value="93">93 ms</td></tr><tr><td data-title="Metric" data-value="serverResponseTime"><a href="help.html#serverResponseTime">serverResponseTime</a></td><td data-title="min" data-value="81">81 ms</td><td data-title="median" data-value="81">81 ms</td><td data-title="mean" data-value="81">81 ms</td><td data-title="p90" data-value="81">81 ms</td><td data-title="max" data-value="81">81 ms</td></tr><tr><td data-title="Metric" data-value="Cumulative Layout Shift"><a href="help.html#cumulativeLayoutShift">Cumulative Layout Shift</a></td><td data-title="min" data-value="0.0004">0.0004</td><td data-title="median" data-value="0.0004">0.0004</td><td data-title="mean" data-value="0.0004">0.0004</td><td data-title="p90" data-value="0.0004">0.0004</td><td data-title="max" data-value="0.0004">0.0004</td></tr><tr><td data-title="Metric" data-value="First Visual Change"><a href="help.html#FirstVisualChange">First Visual Change</a></td><td data-title="min" data-value="1400">1.400 s</td><td data-title="median" data-value="1400">1.400 s</td><td data-title="mean" data-value="1400">1.400 s</td><td data-title="p90" data-value="1400">1.400 s</td><td data-title="max" data-value="1400">1.400 s</td></tr><tr><td data-title="Metric" data-value="Speed Index"><a href="help.html#SpeedIndex">Speed Index</a></td><td data-title="min" data-value="1438">1.438 s</td><td data-title="median" data-value="1438">1.438 s</td><td data-title="mean" data-value="1438">1.438 s</td><td data-title="p90" data-value="1438">1.438 s</td><td data-title="max" data-value="1438">1.438 s</td></tr><tr><td data-title="Metric" data-value="Visual Complete 85%"><a href="help.html#VisualComplete85">Visual Complete 85%</a></td><td data-title="min" data-value="1500">1.500 s</td><td data-title="median" data-value="1500">1.500 s</td><td data-title="mean" data-value="1500">1.500 s</td><td data-title="p90" data-value="1500">1.500 s</td><td data-title="max" data-value="1500">1.500 s</td></tr><tr><td data-title="Metric" data-value="Visual Complete 95%"><a href="help.html#VisualComplete95">Visual Complete 95%</a></td><td data-title="min" data-value="1500">1.500 s</td><td data-title="median" data-value="1500">1.500 s</td><td data-title="mean" data-value="1500">1.500 s</td><td data-title="p90" data-value="1500">1.500 s</td><td data-title="max" data-value="1500">1.500 s</td></tr><tr><td data-title="Metric" data-value="Visual Complete 99%"><a href="help.html#VisualComplete99">Visual Complete 99%</a></td><td data-title="min" data-value="1500">1.500 s</td><td data-title="median" data-value="1500">1.500 s</td><td data-title="mean" data-value="1500">1.500 s</td><td data-title="p90" data-value="1500">1.500 s</td><td data-title="max" data-value="1500">1.500 s</td></tr><tr><td data-title="Metric" data-value="Last Visual Change"><a href="help.html#LastVisualChange">Last Visual Change</a></td><td data-title="min" data-value="1500">1.500 s</td><td data-title="median" data-value="1500">1.500 s</td><td data-title="mean" data-value="1500">1.500 s</td><td data-title="p90" data-value="1500">1.500 s</td><td data-title="max" data-value="1500">1.500 s</td></tr><tr><td data-title="Metric" data-value="CPU Long Tasks"><a href="help.html#cpuLongTasksPerPage">CPU Long Tasks</a></td><td data-title="min" data-value="0">0</td><td data-title="median" data-value="0">0</td><td data-title="mean" data-value="0">0</td><td data-title="p90" data-value="0">0</td><td data-title="max" data-value="0">0</td></tr><tr><td data-title="Metric" data-value="CPU Long Tasks total duration"><a href="help.html#cpuLongTasksTotalDurationPerPage">CPU Long Tasks total duration</a></td><td data-title="min" data-value="0">0 ms</td><td data-title="median" data-value="0">0 ms</td><td data-title="mean" data-value="0">0 ms</td><td data-title="p90" data-value="0">0 ms</td><td data-title="max" data-value="0">0 ms</td></tr><tr><td data-title="Metric" data-value="Total Blocking Time"><a href="help.html#totalBlockingTime">Total Blocking Time</a></td><td data-title="min" data-value="0">0 ms</td><td data-title="median" data-value="0">0 ms</td><td data-title="mean" data-value="0">0 ms</td><td data-title="p90" data-value="0">0 ms</td><td data-title="max" data-value="0">0 ms</td></tr><tr><td data-title="Metric" data-value="Max Potential First Input Delay"><a href="help.html#maxPotentialFirstInputDelay">Max Potential First Input Delay</a></td><td data-title="min" data-value="0">0 ms</td><td data-title="median" data-value="0">0 ms</td><td data-title="mean" data-value="0">0 ms</td><td data-title="p90" data-value="0">0 ms</td><td data-title="max" data-value="0">0 ms</td></tr></table></div><footer><hr><p><a href="https://www.sitespeed.io">sitespeed.io</a> 28.2.0 by <a href="https://www.sitespeed.io/aboutus/">the sitespeed.io team</a> and <a href="https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md">contributors</a></p></footer></div><script src="js/sortable.min.js"></script><script src="js/chartist.min.js"></script><script src="js/chartist-plugin-axistitle.min.js"></script><script src="js/chartist-plugin-tooltip.min.js"></script><script src="js/chartist-plugin-legend.min.js"></script></body></html>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>The most used domains for https://sitespeed.io tested at 2023-07-19 11:30:34</title><meta name="description" content="A list of the most used domains and the respective timings"><meta name="robots" content="noindex"><link rel="stylesheet" href="css/index.min.css"><style type="text/css">
|
|
2
|
-
</style><link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/ico/sitespeed.io-144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/ico/sitespeed.io-114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/ico/sitespeed.io-72.png"><link rel="apple-touch-icon-precomposed" href="img/ico/sitespeed.io-57.png"><link rel="shortcut icon" href="img/ico/sitespeed.io.ico"></head><body><div class="darkblue nav"><div class="navgrid"><div class="logo"><a href="https://www.sitespeed.io"><img class="navbar-brand" src="img/sitespeed.io-logo.png" width="162" height="50" alt="sitespeed.io logo"></a></div><ul><li><a href="index.html">Summary</a></li><li><a href="detailed.html">Detailed Summary</a></li><li><a href="pages.html">Pages</a></li><li><a class="active" href="domains.html">Domains</a></li><li><a href="toplist.html">Toplist</a></li><li><a href="assets.html">Assets</a></li></ul></div></div><div class="container"><h2 class="url">1 page analysed for https://sitespeed.io</h2><p class="small">Tested 2023-07-19 11:30:34 using Chrome <a href="settings.html">(runtime settings).</a></p><div>Showing all 2 domains</div><div class="responsive"><table data-sortable id="domains"><thead><tr><th>Domain</th><th>Blocked</th><th>DNS</th><th>Connect</th><th>Send</th><th>SSL</th><th>Wait</th><th>Receive</th><th>Total time</th><th>Requests</th></tr></thead><tr><td class="url assetsurl" data-title="Domain">www.sitespeed.io</td><td class="number" data-title="Blocked" data-value="3">3</td><td class="number" data-title="DNS" data-value="169">169</td><td class="number" data-title="Connect" data-value="93">93</td><td class="number" data-title="Send" data-value="2.981">2.981</td><td class="number" data-title="SSL" data-value="48">48</td><td class="number" data-title="Wait" data-value="123">123</td><td class="number" data-title="Receive" data-value="38">38</td><td class="number" data-title="Total time" data-value="342">342</td><td class="number" data-title="Requests">11</td></tr><tr><td class="url assetsurl" data-title="Domain">sitespeed.io</td><td class="number" data-title="Blocked" data-value="0">0</td><td class="number" data-title="DNS" data-value="470">470</td><td class="number" data-title="Connect" data-value="336">336</td><td class="number" data-title="Send" data-value="0.193">0.193</td><td class="number" data-title="SSL" data-value="169">169</td><td class="number" data-title="Wait" data-value="164">164</td><td class="number" data-title="Receive" data-value="0">0</td><td class="number" data-title="Total time" data-value="970">970</td><td class="number" data-title="Requests">1</td></tr></table></div><footer><hr><p><a href="https://www.sitespeed.io">sitespeed.io</a> 28.2.0 by <a href="https://www.sitespeed.io/aboutus/">the sitespeed.io team</a> and <a href="https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md">contributors</a></p></footer></div><script src="js/sortable.min.js"></script><script src="js/chartist.min.js"></script><script src="js/chartist-plugin-axistitle.min.js"></script><script src="js/chartist-plugin-tooltip.min.js"></script><script src="js/chartist-plugin-legend.min.js"></script></body></html>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Definitions and help in for all the metrics</title><meta name="description" content=""><meta name="robots" content="noindex"><link rel="stylesheet" href="css/index.min.css"><style type="text/css">
|
|
2
|
-
</style><link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/ico/sitespeed.io-144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/ico/sitespeed.io-114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/ico/sitespeed.io-72.png"><link rel="apple-touch-icon-precomposed" href="img/ico/sitespeed.io-57.png"><link rel="shortcut icon" href="img/ico/sitespeed.io.ico"></head><body><div class="darkblue nav"><div class="navgrid"><div class="logo"><a href="https://www.sitespeed.io"><img class="navbar-brand" src="img/sitespeed.io-logo.png" width="162" height="50" alt="sitespeed.io logo"></a></div><ul><li><a href="index.html">Summary</a></li><li><a href="detailed.html">Detailed Summary</a></li><li><a href="pages.html">Pages</a></li><li><a href="domains.html">Domains</a></li><li><a href="toplist.html">Toplist</a></li><li><a href="assets.html">Assets</a></li></ul></div></div><div class="container"><h2>Welcome to the wonderful world of performance</h2><p>The help file explains different metrics, so it easier to understand what sitespeed.io collects. When you need more information, you should checkout <a href="https://www.sitespeed.io">https://www.sitespeed.io</a>.</p><h2 id="overallScore">Overall score</h2><p>The average combined performance, accessibility and best practices score from the Coach. If the score is 100 you are doing fantastic, there's no more you can do here.</p><h2 id="performanceScore">Performance score</h2><p>The coach knows much about performance best practices and match your pages against them. Checkout the full <a href="#performanceAdvice">advice list</a>.</p><h2 id="accessibilityScore">Accessibility score</h2><p>Make sure your site is accessible and usable for everyone. The coach can learn more about accessibility so please <a href="https://github.com/sitespeedio/coach/issues/new">help out </a>. You can read more about making the web accessible <a href="https://www.marcozehe.de/2015/12/14/the-web-accessibility-basics/">here</a>.</p><h2 id="bestPracticeScore">Web best practice score</h2><p>You want your page to follow web best practice and the coach helps you with that. Making sure your page is set up for search engines, have good URL structure and more. Read all <a href="#bestPracticeAdvice">the advice</a>.</p><h2 id="performanceAdvice">Performance advice</h2><h5 id="avoidRenderBlocking">Avoid slowing down the critical rendering path (avoidRenderBlocking)</h5><p>The critical rendering path is what the browser needs to do to start rendering the page. Every file requested inside of the head element will postpone the rendering of the page, because the browser need to do the request. Avoid loading JavaScript synchronously inside of the head (you should not need JavaScript to render the page), request files from the same domain as the main document (to avoid DNS lookups) and inline CSS for really fast rendering and a short rendering path.</p><h5 id="avoidScalingImages">Don't scale images in the browser (avoidScalingImages)</h5><p>It's easy to scale images in the browser and make sure they look good in different devices, however that is bad for performance! Scaling images in the browser takes extra CPU time and will hurt performance on mobile. And the user will download extra kilobytes (sometimes megabytes) of data that could be avoided. Don't do that, make sure you create multiple version of the same image server-side and serve the appropriate one.</p><h5 id="cssPrint">Do not load specific print stylesheets. (cssPrint)</h5><p>Loading a specific stylesheet for printing slows down the page, even though it is not used. You can include the print styles inside your other CSS file(s) just by using an @media query targeting type print.</p><h5 id="firstContentfulPaint">Have a fast first contentful paint (firstContentfulPaint)</h5><p>The First Contentful Paint (FCP) metric measures the time from when the page starts loading to when any part of the page content is rendered on the screen. For this metric, "content" refers to text, images (including background images), <svg> elements, or non-white <canvas> elements.</p><h5 id="googleTagManager">Avoid using Google Tag Manager. (googleTagManager)</h5><p>Google Tag Manager makes it possible for non tech users to add scripts to your page that will downgrade performance.</p><h5 id="inlineCss">Inline CSS for faster first render (inlineCss)</h5><p>In the early days of the Internet, inlining CSS was one of the ugliest things you can do. That has changed if you want your page to start rendering fast for your user. Always inline the critical CSS when you use HTTP/1 and HTTP/2 (avoid doing CSS requests that block rendering) and lazy load and cache the rest of the CSS. It is a little more complicated when using HTTP/2. Does your server support HTTP push? Then maybe that can help. Do you have a lot of users on a slow connection and are serving large chunks of HTML? Then it could be better to use the inline technique, becasue some servers always prioritize HTML content over CSS so the user needs to download the HTML first, before the CSS is downloaded.</p><h5 id="jquery">Avoid using more than one jQuery version per page (jquery)</h5><p>There are sites out there that use multiple versions of jQuery on the same page. You shouldn't do that because the user will then unnecessarily download extra data. Cleanup the code and make sure you only use one version.</p><h5 id="largestContentfulPaint">Have a fast largest contentful paint (largestContentfulPaint)</h5><p>Largest contentful paint is one of Google Web Vitals and reports the render time of the largest image or text block visible within the viewport, relative to when the page first started loading. To be fast according to Google, it needs to render before 2.5 seconds and results over 4 seconds is poor performance.</p><h5 id="longTasks">Avoid CPU Long Tasks (longTasks)</h5><p>Long CPU tasks locks the thread. To the user this is commonly visible as a "locked up" page where the browser is unable to respond to user input; this is a major source of bad user experience on the web today. However the CPU Long Task is depending on the computer/phones actual CPU speed, so you should measure this on the same type of the device that your user is using. To debug you should use the Chrome timeline log and drag/drop it into devtools or use Firefox Geckoprofiler.</p><h5 id="spof">Avoid Frontend single point of failures (spof)</h5><p>A page can be stopped from loading in the browser if a single JavaScript, CSS, and in some cases a font, couldn't be fetched or is loading really slowly (the white screen of death). That is a scenario you really want to avoid. Never load 3rd-party components synchronously inside of the head tag.</p><h5 id="assetsRedirects">Avoid doing redirects (assetsRedirects)</h5><p>A redirect is one extra step for the user to download the asset. Avoid that if you want to be fast. Redirects are even more of a showstopper on mobile.</p><h5 id="cacheHeaders">Avoid extra requests by setting cache headers (cacheHeaders)</h5><p>The easiest way to make your page fast is to avoid doing requests to the server. Setting a cache header on your server response will tell the browser that it doesn't need to download the asset again during the configured cache time! Always try to set a cache time if the content doesn't change for every request.</p><h5 id="cacheHeadersLong">Long cache headers is good (cacheHeadersLong)</h5><p>Setting a cache header is good. Setting a long cache header (at least 30 days) is even better beacause then it will stay long in the browser cache. But what do you do if that asset change? Rename it and the browser will pick up the new version.</p><h5 id="compressAssets">Always compress text content (compressAssets)</h5><p>In the early days of the Internet there were browsers that didn't support compressing (gzipping) text content. They do now. Make sure you compress HTML, JSON, JavaScript, CSS and SVG. It will save bytes for the user; making the page load faster and use less bandwith. </p><h5 id="connectionKeepAlive">Don't close a connection that is used multiple times (connectionKeepAlive)</h5><p>Use keep-alive headers and don't close the connection when we have multiple requests to the same domain. There has been some hacks in the past that suggested closing the connection as fast as possible in order to create new ones, but that shouldn't be applicable anymore.</p><h5 id="cpuTimeSpentInRendering">Avoid spend too much CPU time to render the page (cpuTimeSpentInRendering)</h5><p>You need to be able to render the page fast. This metric depends on which computer/device you run on but the limit here is high: Spending more time than 500 ms will alert this advice.</p><h5 id="cpuTimeSpentInScripting">Avoid executing too much JavaScript (cpuTimeSpentInScripting)</h5><p>Do not run too much JavaSript, that will slow down the page for your user. This metric depends on which computer/device you run on but the limit here is high: Spending more time than 1000 ms will alert this advice</p><h5 id="cssSize">Total CSS size shouldn't be too big (cssSize)</h5><p>Delivering a massive amount of CSS to the browser is not the best thing you can do, because it means more work for the browser when parsing the CSS against the HTML and that makes the rendering slower. Try to send only the CSS that is used on that page. And make sure to remove CSS rules when they aren't used anymore.</p><h5 id="documentRedirect">Avoid redirecting the main document (documentRedirect)</h5><p>You should never ever redirect the main document, because it will make the page load slower for the user. Well, you should redirect the user if the user tries to use HTTP and there's an HTTPS version of the page. The coach checks for that. :)</p><h5 id="favicon">The favicon should be small and cacheable (favicon)</h5><p>It is easy to make the favicon big but please avoid doing that, because every browser will then perform an unnecessarily large download. And make sure the cache headers are set for a long time for the favicon. It is easy to miss since it's another content type.</p><h5 id="fewFonts">Avoid too many fonts (fewFonts)</h5><p>How many fonts do you need on a page for the user to get the message? Fonts can slow down the rendering of content, try to avoid loading too many of them because worst case it can make the text invisible until they are loaded (FOIT—flash of invisible text), best case they will flicker the text content when they arrive.</p><h5 id="fewRequestsPerDomain">Avoid too many requests per domain [HTTP/1] (fewRequestsPerDomain)</h5><p>Browsers have a limit on how many concurrent requests they can do per domain when using HTTP/1. When you hit the limit, the browser will wait before it can download more assets on that domain. So avoid having too many requests per domain.</p><h5 id="headerSize">Response headers should't be too big [HTTP/1] (headerSize)</h5><p>Avoid a lot of cookies and other stuff that makes your headers big when you use HTTP/1 because the headers are not compressed. You will send extra data to the user.</p><h5 id="imageSize">Total image size shouldn't be too big (imageSize)</h5><p>Avoid having too many large images on the page. The images will not affect the first paint of the page, but it will eat bandwidth for the user.</p><h5 id="javascriptSize">Total JavaScript size shouldn't be too big (javascriptSize)</h5><p>A lot of JavaScript often means you are downloading more than you need. How complex is the page and what can the user do on the page? Do you use multiple JavaScript frameworks?</p><h5 id="mimeTypes">Avoid using incorrect mime types (mimeTypes)</h5><p>It's not a great idea to let browsers guess content types (content sniffing), in some cases it can actually be a security risk.</p><h5 id="optimalCssSize">Make each CSS response small (optimalCssSize)</h5><p>Make CSS responses small to fit into the magic number TCP window size of 14.5 KB. The browser can then download the CSS faster and that will make the page start rendering earlier.</p><h5 id="pageSize">Total page size shouldn't be too big (pageSize)</h5><p>Avoid having pages that have a transfer size over the wire of more than 2 MB (desktop) and 1 MB (mobile) because that is really big and will hurt performance and will make the page expensive for the user if she/he pays for the bandwidth.</p><h5 id="privateAssets">Don't use private headers on static content (privateAssets)</h5><p>If you set private headers on content, that means that the content are specific for that user. Static content should be able to be cached and used by everyone. Avoid setting the cache header to private.</p><h5 id="responseOk">Avoid missing and error requests (responseOk)</h5><p>Your page should never request assets that return a 400 or 500 error. These requests are never cached. If that happens something is broken. Please fix it.</p><h2 id="bestPracticeAdvice">Best practice advice</h2><h5 id="amp">Avoid using AMP (amp)</h5><p>AMP was one of Google attempts to strengthen its monopoly in the Interente advertising market. You can read more about it here: https://storage.courtlistener.com/recap/gov.uscourts.nysd.564903/gov.uscourts.nysd.564903.152.0_1.pdf Using AMP you also share private user information with Google that your user hasn't agreed on sharing.</p><h5 id="charset">Declare a charset in your document (charset)</h5><p>The Unicode Standard (UTF-8) covers (almost) all the characters, punctuations, and symbols in the world. Please use that.</p><h5 id="cumulativeLayoutShift">Cumulative Layout Shift (cumulativeLayoutShift)</h5><p>Cumulative Layout Shift measures the sum total of all individual layout shift scores for unexpected layout shift that occur. The metric is measuring visual stability by quantify how often users experience unexpected layout shifts. It is one of Google Web Vitals.</p><h5 id="doctype">Declare a doctype in your document (doctype)</h5><p>The <!DOCTYPE> declaration is not an HTML tag; it is an instruction to the web browser about what version of HTML the page is written in.</p><h5 id="language">Declare the language code for your document (language)</h5><p>According to the W3C recommendation you should declare the primary language for each Web page with the lang attribute inside the <html> tag https://www.w3.org/International/questions/qa-html-language-declarations#basics.</p><h5 id="metaDescription">Meta description (metaDescription)</h5><p>Use a page description to make the page more relevant to search engines.</p><h5 id="optimizely">Only use Optimizely when you need it (optimizely)</h5><p>Use Optimizely with care because it hurts your performance since JavaScript is loaded synchronously inside of the head tag, making the first paint happen later. Only turn on Optimzely (= load the javascript) when you run your A/B tests.</p><h5 id="pageTitle">Page title (pageTitle)</h5><p>Use a title to make the page more relevant to search engines.</p><h5 id="spdy">EOL for SPDY in Chrome (spdy)</h5><p>Chrome dropped supports for SPDY in Chrome 51, upgrade to HTTP/2 as soon as possible. The page has more users (browsers) supporting HTTP/2 than supports SPDY.</p><h5 id="url">Have a good URL format (url)</h5><p>A clean URL is good for the user and for SEO. Make them human readable, avoid too long URLs, spaces in the URL, too many request parameters, and never ever have the session id in your URL.</p><h5 id="longHeaders">Do not send too long headers (longHeaders)</h5><p>Do not send response headers that are too long.</p><h5 id="manyHeaders">Avoid use too many response headers (manyHeaders)</h5><p>Avoid send too many response headers.</p><h5 id="thirdParty">Avoid too many third party requests (thirdParty)</h5><p>Do not load most of your content from third party URLs.</p><h5 id="unnecessaryHeaders">Avoid unnecessary headers (unnecessaryHeaders)</h5><p>Do not send headers that you don't need. We look for p3p, cache-control and max-age, pragma, server and x-frame-options headers. Have a look at Andrew Betts - Headers for Hackers talk as a guide https://www.youtube.com/watch?v=k92ZbrY815c or read https://www.fastly.com/blog/headers-we-dont-want.</p><h2 id="timingMetrics">Timing metrics</h2><h5 id="backEndTime">BackEndTime / TTFB</h5><p>The time it takes for the network and the server to generate and start sending the HTML. Collected using the Navigation Timing API with the definition: responseStart - navigationStart</p><h5 id="frontEndTime">FrontEndTime</h5><p>The time it takes for the browser to parse and create the page. Collected using the Navigation Timing API with the definition: loadEventStart - responseEnd</p><h5 id="domContentLoadedTime">DOMContentLoadedTime</h5><p>The time the browser takes to parse the document and execute deferred and parser-inserted scripts including the network time from the users location to your server. Collected using the Navigation Timing API with the definition: domContentLoadedEventStart - navigationStart</p><h5 id="domInteractiveTime">DOMInteractiveTime</h5><p>The time the browser takes to parse the document, including the network time from the users location to your server. Collected using the Navigation Timing API with the definition: domInteractive - navigationStart</p><h5 id="domainLookupTime">DomainLookupTime</h5><p>The time it takes to do the DNS lookup. Collected using the Navigation Timing API with the definition: domainLookupEnd - domainLookupStart</p><h5 id="pageDownloadTime">PageDownloadTime</h5><p>How long time does it take to download the page (the HTML). Collected using the Navigation Timing API with the definition: responseEnd - responseStart</p><h5 id="pageLoadTime">PageLoadTime</h5><p>The time it takes for page to load, from initiation of the page view (e.g., click on a page link) to load completion in the browser. Important: this is only relevant to some pages, depending on how you page is built. Collected using the Navigation Timing API with the definition: loadEventStart - navigationStart</p><h5 id="redirectionTime">RedirectionTime</h5><p>Time spent on redirects. Collected using the Navigation Timing API with the definition: fetchStart - navigationStart</p><h5 id="serverConnectionTime">ServerConnectionTime</h5><p>How long time it takes to connect to the server. Collected using the Navigation Timing API with the definition: connectEnd - connectStart</p><h5 id="serverResponseTime">ServerResponseTime</h5><p>The time it takes for the server to send the response. Collected using the Navigation Timing API with the definition: responseEnd - requestStart</p><h5 id="firstPaint">FirstPaint</h5><p>This is when the first paint happens on the screen. In Firefox we use timeToNonBlankPaint (that is behind a Firefox preference).</p><h5 id="first-contentful-paint">First Contentful Paint</h5><p>First Contentful Paint (FCP) measures the time from navigation to the time when the browser renders the first bit of content from the DOM.</p><h5 id="largestContentfulPaint">Largest Contentful Paint</h5><p>The Largest Contentful Paint (LCP) metric reports the render time of the largest content element visible in the viewport.</p><h5 id="timeToDomContentFlushed">Time To DOM Content Flushed</h5><p>Internal Firefox metric activated by setting the preference<i>dom.performance.time_to_dom_content_flushed.enabled</i> to true.</p><h5 id="timeToContentfulPaint">Time To Contentful Paint</h5><p>Firefox implementation of First Contentful Paint. Activated by setting the preference<i>dom.performance.time_to_contentful_paint.enabled</i> to true.</p><h5 id="timeToFirstInteractive">Time To First Interactive</h5><p>Firefox implementation of Time to first interactive. Activated by setting the preference<i>dom.performance.time_to_first_interactive.enabled</i> to true.</p><h5 id="loadEventEnd">Load Event End</h5><p>The time when the load event of the current document is completed.</p><h5 id="fullyLoaded">FullyLoaded</h5><p>The time when all assets in the page is downloaded. The value comes from the latest response in the HAR file.</p><h5 id="SpeedIndex">Speed Index</h5><p>The Speed Index is the average time at which visible parts of the page are displayed. It is expressed in milliseconds and dependent on size of the view port. It was created by Pat Meenan and you can checkout the full documentation <a href="https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index">here</a>.</p><h5 id="ContentfulSpeedIndex">Contentful Speed Index</h5><p>This new metric is developed by Bas Schouten at Mozilla which uses edge detection to calculate the amount of "content" that is visible on each frame. It was primarily designed for two main purposes: Have a good metric to measure the amount of text that is visible. Design a metric that is not easily fooled by the pop up splash/login screens that commonly occur at the end of a page load. These can often disturb the speed index numbers since the last frame that is being used as reference is not accurate.</p><h5 id="FirstVisualChange">First Visual Change</h5><p>The time when something for the first time is painted within the viewport. Calculated by analysing a video.</p><h5 id="VisualComplete85">Visual Complete 85%</h5><p>When the page is visually complete to 85% (or more). Calculated by analysing a video.</p><h5 id="VisualComplete95">Visual Complete 95%</h5><p>When the page is visually complete to 95% (or more). Calculated by analysing a video.</p><h5 id="VisualComplete99">Visual Complete 99%</h5><p>When the page is visually complete to 99% (or more). Calculated by analysing a video.</p><h5 id="LastVisualChange">Last Visual Change</h5><p>The time when something for the last time changes within the viewport. Calculated by analysing a video.</p><h5 id="LargestImage">Largest Image</h5><p>The time when the largest image within the viewport has finished painted at the final position on the screen. Calculated by analysing a video.</p><h5 id="Heading">Heading</h5><p>The time when the largest H1 heading within the viewport has finished painted at the final position on the screen. Calculated by analysing a video.</p><h5 id="Logo">Logo</h5><p>The time when the logo (configured with --scriptInput.visualElements) within the viewport has finished painted at the final position on the screen. Calculated by analysing a video.</p><h5 id="memory">Memory usage</h5><p>The page memory usage. Only measurable in Firefox using --firefox.memoryReport.</p><h5 id="imageSizePerPage">Image transfer size per page</h5><p>The size of images per page.</p><h5 id="cssSizePerPage">CSS transfer size per page</h5><p>The transfer size of CSS per page, meaning if the CSS is sent compressed the unpacked size is larger.</p><h5 id="jsSizePerPage">JavaScript transfer size per page</h5><p>The transfer size of JavaScript per page.</p><h5 id="fontSizePerPage">Font transfer size per page</h5><p>The transfer size of fonts per page.</p><h5 id="htmlSizePerPage">HTML transfer size per page</h5><p>The transfer size of HTML per page.</p><h5 id="totalSizePerPage">Total transfer size per page</h5><p>The total transfer size of all assets on a page.</p><h5 id="imageRequestsPerPage">Image requests per page</h5><p>The number of image requests on a page.</p><h5 id="cssRequestsPerPage">CSS requests per page</h5><p>The number of CSS requests on a page.</p><h5 id="jsRequestsPerPage">JavaScript requests per page</h5><p>The number of JavaScript requests on a page.</p><h5 id="fontRequestsPerPage">Font requests per page</h5><p>The number of font requests on a page.</p><h5 id="totalRequestsPerPage">Total amount of requests per page</h5><p>The total amount of requests on a page.</p><h5 id="axeCriticalViolations">Critical Axe violations</h5><p>The number of critical accessibility violations on your page found by Axe. A critical violation means that you should fix it now.</p><h5 id="axeSeriousViolations">Serious Axe violations</h5><p>The number of serious accessibility violations on your page found by Axe. A serious violation means that you should fix it now.</p><h5 id="axeMinorViolations">Minor Axe violations</h5><p>The number of monir accessibility violations on your page found by Axe.</p><h5 id="axeModeratelViolations">Moderate Axe violations</h5><p>The number of moderate accessibility violations on your page found by Axe.</p><h5 id="totalBlockingTime">Total Blocking Time</h5><p>The blocking time of a given long task is its duration in excess of 50 ms (or the time you have configured with <code>--browsertime.minLongTaskLength</code>). And the total blocking time for a page is the sum of the blocking time for each long task that happens after first contentful paint.</p><h5 id="maxPotentialFid">Max Potential First Input Delay</h5><p>The worst-case First Input Delay that your users might experience during load. This is calculated using CPU long tasks.</p><h5 id="firstInputDelay">First Input Delay</h5><p>First Input Delay measures the time from when a user first interacts with your site (when they click a link, tap on a button etc) to the time when the browser is actually able to respond to that interaction. You need to <a href="https://www.sitespeed.io/documentation/sitespeed.io/scripting/#measuring-first-input-delay---fid">use scripting</a> to actively do something with the page for this metric to be collected.</p><footer><hr><p><a href="https://www.sitespeed.io">sitespeed.io</a> 28.2.0 by <a href="https://www.sitespeed.io/aboutus/">the sitespeed.io team</a> and <a href="https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md">contributors</a></p></footer></div><script src="js/sortable.min.js"></script><script src="js/chartist.min.js"></script><script src="js/chartist-plugin-axistitle.min.js"></script><script src="js/chartist-plugin-tooltip.min.js"></script><script src="js/chartist-plugin-legend.min.js"></script></body></html>
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/browsertime64.png
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io-114.png
DELETED
|
Binary file
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io-144.png
DELETED
|
Binary file
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io-72.png
DELETED
|
Binary file
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/ico/sitespeed.io.ico
DELETED
|
Binary file
|
|
Binary file
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/sitespeed.io-logo.png
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/sitespeed.io-result/sitespeed-result/board1/2023-07-19-11-30-34/img/webpagetest64.png
DELETED
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Executive Summary for https://sitespeed.io tested 1 page at 2023-07-19 11:30:34</title><meta name="description" content="Executive summary of the sitespeed.io result. Act on red/yellow/green."><meta name="robots" content="noindex"><link rel="stylesheet" href="css/index.min.css"><style type="text/css">
|
|
2
|
-
</style><link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/ico/sitespeed.io-144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/ico/sitespeed.io-114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/ico/sitespeed.io-72.png"><link rel="apple-touch-icon-precomposed" href="img/ico/sitespeed.io-57.png"><link rel="shortcut icon" href="img/ico/sitespeed.io.ico"></head><body><div class="darkblue nav"><div class="navgrid"><div class="logo"><a href="https://www.sitespeed.io"><img class="navbar-brand" src="img/sitespeed.io-logo.png" width="162" height="50" alt="sitespeed.io logo"></a></div><ul><li><a class="active" href="index.html">Summary</a></li><li><a href="detailed.html">Detailed Summary</a></li><li><a href="pages.html">Pages</a></li><li><a href="domains.html">Domains</a></li><li><a href="toplist.html">Toplist</a></li><li><a href="assets.html">Assets</a></li></ul></div></div><div class="container"><h2 class="url">1 page analysed for https://sitespeed.io</h2><p class="small">Tested 2023-07-19 11:30:34 using Chrome <a href="settings.html">(runtime settings).</a></p><div class="row"><div class="one-third column"><a class="summaries" href="help.html#FirstPaint"><div class="summarybox warning">First Paint<div class="summarynumber">1.402 s <span class="summarysmall">(1.402 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#FirstContentfulPaint"><div class="summarybox ok">First Contentful Paint<div class="summarynumber">1.402 s <span class="summarysmall">(1.402 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#FullyLoaded"><div class="summarybox info">Fully Loaded<div class="summarynumber">1.526 s <span class="summarysmall">(1.526 s)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#PageLoadTime"><div class="summarybox info">Page Load Time<div class="summarynumber">1.478 s <span class="summarysmall">(1.478 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#LargestContentfulPaint"><div class="summarybox ok">Largest Contentful Paint<div class="summarynumber">1.502 s <span class="summarysmall">(1.502 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#FirstVisualChange"><div class="summarybox warning">First Visual Change<div class="summarynumber">1.400 s <span class="summarysmall">(1.400 s)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#LastVisualChange"><div class="summarybox info">Last Visual Change<div class="summarynumber">1.500 s <span class="summarysmall">(1.500 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#SpeedIndex"><div class="summarybox ok">Speed Index<div class="summarynumber">1.438 s <span class="summarysmall">(1.438 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#VisualReadiness"><div class="summarybox ok">Visual Readiness<div class="summarynumber">100 ms <span class="summarysmall">(100 ms)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#TTFB"><div class="summarybox info">TTFB<div class="summarynumber">1.286 s <span class="summarysmall">(1.286 s)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#CumulativeLayoutShift"><div class="summarybox info">Cumulative Layout Shift<div class="summarynumber">0 <span class="summarysmall">(0)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#TotalDurationofLongTasks"><div class="summarybox ok">Total Duration of Long Tasks<div class="summarynumber">0 ms <span class="summarysmall">(0 ms)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#NumberofLongTasks"><div class="summarybox ok">Number of Long Tasks<div class="summarynumber">0 <span class="summarysmall">(0)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#TotalBlockingTime"><div class="summarybox ok">Total Blocking Time<div class="summarynumber">0 ms <span class="summarysmall">(0 ms)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#MaxPotentialFID"><div class="summarybox ok">Max Potential FID<div class="summarynumber">0 ms <span class="summarysmall">(0 ms)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#CoachOverallScore"><div class="summarybox ok">Coach Overall Score<div class="summarynumber">95 <span class="summarysmall">(95)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#CoachBestPracticeScore"><div class="summarybox ok">Coach Best Practice Score<div class="summarynumber">100 <span class="summarysmall">(100)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#CoachPrivacyScore"><div class="summarybox ok">Coach Privacy Score<div class="summarynumber">100 <span class="summarysmall">(100)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#CoachPerformanceScore"><div class="summarybox ok">Coach Performance Score<div class="summarynumber">92 <span class="summarysmall">(92)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#TotalRequests"><div class="summarybox ok">Total Requests<div class="summarynumber">12 <span class="summarysmall">(12)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#ImageRequests"><div class="summarybox info">Image Requests<div class="summarynumber">6 <span class="summarysmall">(6)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#TotalTransferSize"><div class="summarybox ok">Total Transfer Size<div class="summarynumber">156.3 KB <span class="summarysmall">(156.3 KB)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#HTMLTransferSize"><div class="summarybox info">HTML Transfer Size<div class="summarynumber">9.6 KB <span class="summarysmall">(9.6 KB)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#JavaScriptTransferSize"><div class="summarybox info">JavaScript Transfer Size<div class="summarynumber">9.4 KB <span class="summarysmall">(9.4 KB)</span></div></div></a></div></div><div class="row"><div class="one-third column"><a class="summaries" href="help.html#JavaScriptContentSize"><div class="summarybox ok">JavaScript Content Size<div class="summarynumber">26.7 KB <span class="summarysmall">(26.7 KB)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#CSSTransferSize"><div class="summarybox info">CSS Transfer Size<div class="summarynumber">1.2 KB <span class="summarysmall">(1.2 KB)</span></div></div></a></div><div class="one-third column"><a class="summaries" href="help.html#ImageTransferSize"><div class="summarybox info">Image Transfer Size<div class="summarynumber">129.5 KB <span class="summarysmall">(129.5 KB)</span></div></div></a></div></div><p class="small">* The value inside of the parentheses are the 90th percentile (90% of the time, the number is below this amount)</p><footer><hr><p><a href="https://www.sitespeed.io">sitespeed.io</a> 28.2.0 by <a href="https://www.sitespeed.io/aboutus/">the sitespeed.io team</a> and <a href="https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md">contributors</a></p></footer></div><script src="js/sortable.min.js"></script><script src="js/chartist.min.js"></script><script src="js/chartist-plugin-axistitle.min.js"></script><script src="js/chartist-plugin-tooltip.min.js"></script><script src="js/chartist-plugin-legend.min.js"></script></body></html>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(a,b){"function"==typeof define&&define.amd?define(["chartist"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("chartist")):a["Chartist.plugins.ctAxisTitle"]=b(Chartist)}(this,function(a){return function(a,b,c){"use strict";var d={axisTitle:"",axisClass:"ct-axis-title",offset:{x:0,y:0},textAnchor:"middle",flipText:!1},e={xAxis:d,yAxis:d},f=function(a){return a instanceof Function?a():a},g=function(a){return a instanceof Function?a():a};c.plugins=c.plugins||{},c.plugins.ctAxisTitle=function(a){return a=c.extend({},e,a),function(b){b.on("created",function(b){if(!a.axisX.axisTitle&&!a.axisY.axisTitle)throw new Error("ctAxisTitle plugin - You must provide at least one axis title");if(!b.axisX&&!b.axisY)throw new Error("ctAxisTitle plugin can only be used on charts that have at least one axis");var d,e,h;if(a.axisX.axisTitle&&b.axisX&&(d=b.axisX.axisLength/2+b.options.axisY.offset+b.options.chartPadding.left,e=b.options.chartPadding.top,"end"===b.options.axisY.position&&(d-=b.options.axisY.offset),"end"===b.options.axisX.position&&(e+=b.axisY.axisLength),h=new c.Svg("text"),h.addClass(g(a.axisX.axisClass)),h.text(f(a.axisX.axisTitle)),h.attr({x:d+a.axisX.offset.x,y:e+a.axisX.offset.y,"text-anchor":a.axisX.textAnchor}),b.svg.append(h,!0)),a.axisY.axisTitle&&b.axisY){d=0,e=b.axisY.axisLength/2+b.options.chartPadding.top,"start"===b.options.axisX.position&&(e+=b.options.axisX.offset),"end"===b.options.axisY.position&&(d=b.axisX.axisLength);var i="rotate("+(a.axisY.flipTitle?-90:90)+", "+d+", "+e+")";h=new c.Svg("text"),h.addClass(g(a.axisY.axisClass)),h.text(f(a.axisY.axisTitle)),h.attr({x:d+a.axisY.offset.x,y:e+a.axisY.offset.y,transform:i,"text-anchor":a.axisY.textAnchor}),b.svg.append(h,!0)}})}}}(window,document,a),a.plugins.ctAxisTitle});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(e,t){"function"==typeof define&&define.amd?define(["chartist"],function(n){return e.returnExportsGlobal=t(n)}):"object"==typeof exports?module.exports=t(require("chartist")):e["Chartist.plugins.legend"]=t(e.Chartist)}(this,function(e){"use strict";var t={className:"",classNames:!1,removeAll:!1,legendNames:!1,clickable:!0,onClick:null,position:"top"};return e.plugins=e.plugins||{},e.plugins.legend=function(n){if(n&&n.position){if(!("top"===n.position||"bottom"===n.position||n.position instanceof HTMLElement))throw Error("The position you entered is not a valid position");if(n.position instanceof HTMLElement){var a=n.position;delete n.position}}return n=e.extend({},t,n),a&&(n.position=a),function(t){!function(){var e=t.container.querySelector(".ct-legend");e&&e.parentNode.removeChild(e)}();var a=function(){var a=document.createElement("ul");return a.className="ct-legend",t instanceof e.Pie&&a.classList.add("ct-legend-inside"),"string"==typeof n.className&&n.className.length>0&&a.classList.add(n.className),t.options.width&&(a.style.cssText="width: "+t.options.width+"px;margin: 0 auto;"),a}(),i=t instanceof e.Pie&&t.data.labels&&t.data.labels.length,s=function(e){return n.legendNames||(e?t.data.labels:t.data.series)}(i),o=function(e){for(var n=new Array(t.data.series.length),a=0;a<t.data.series.length;a++)n[a]={data:t.data.series[a],label:e?t.data.labels[a]:null,legend:-1};return n}(i),l=[],r=Array.isArray(n.classNames)&&n.classNames.length===s.length;s.forEach(function(e,t){var i=e.name||e,s=e.series||[t],c=function(e,t,a){var i=document.createElement("li");return i.classList.add("ct-series-"+e),a&&i.classList.add(n.classNames[e]),i.setAttribute("data-legend",e),i.textContent=t,i}(t,i,r);a.appendChild(c),s.forEach(function(e){o[e].legend=t}),l.push({text:i,series:s,active:!0})}),t.on("created",function(e){!function(e){if(n.position instanceof HTMLElement)n.position.insertBefore(e,null);else switch(n.position){case"top":t.container.insertBefore(e,t.container.childNodes[0]);break;case"bottom":t.container.insertBefore(e,null)}}(a)}),n.clickable&&(t.data.series=t.data.series.map(function(n,a){return"object"!=typeof n&&(n={value:n}),n.className=n.className||t.options.classNames.series+"-"+e.alphaNumerate(a),n}),function(e,a,i,s){e.addEventListener("click",function(o){var l=o.target;if(l.parentNode===e&&l.hasAttribute("data-legend")){o.preventDefault();var r=parseInt(l.getAttribute("data-legend")),c=a[r];if(c.active){c.active=!1,l.classList.add("inactive");var d=a.filter(function(e){return e.active}).length;if(!n.removeAll&&0==d)for(var u=0;u<a.length;u++)a[u].active=!0,e.childNodes[u].classList.remove("inactive")}else c.active=!0,l.classList.remove("inactive");var f=[],p=[];for(u=0;u<i.length;u++)-1!=i[u].legend&&a[i[u].legend].active&&(f.push(i[u].data),p.push(i[u].label));t.data.series=f,s&&(t.data.labels=p),t.update(),n.onClick&&n.onClick(t,o)}})}(a,l,o,i))}},e.plugins.legend});
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/* chartist-plugin-tooltip 0.0.17
|
|
2
|
-
* Copyright © 2017 Markus Padourek
|
|
3
|
-
* Free to use under the WTFPL license.
|
|
4
|
-
* http://www.wtfpl.net/
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(a,b){"function"==typeof define&&define.amd?define(["chartist"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("chartist")):a["Chartist.plugins.tooltip"]=b(Chartist)}(this,function(a){return function(a,b,c){"use strict";function d(a){f(a,"tooltip-show")||(a.className=a.className+" tooltip-show")}function e(a){var b=new RegExp("tooltip-show\\s*","gi");a.className=a.className.replace(b,"").trim()}function f(a,b){return(" "+a.getAttribute("class")+" ").indexOf(" "+b+" ")>-1}function g(a,b){do{a=a.nextSibling}while(a&&!f(a,b));return a}function h(a){return a.innerText||a.textContent}var i={currency:void 0,currencyFormatCallback:void 0,tooltipOffset:{x:0,y:-20},anchorToPoint:!1,appendToBody:!1,class:void 0,pointClass:"ct-point"};c.plugins=c.plugins||{},c.plugins.tooltip=function(j){return j=c.extend({},i,j),function(i){function k(a,b,c){n.addEventListener(a,function(a){b&&!f(a.target,b)||c(a)})}function l(b){p=p||o.offsetHeight,q=q||o.offsetWidth;var c,d,e=-q/2+j.tooltipOffset.x,f=-p+j.tooltipOffset.y;if(j.appendToBody)o.style.top=b.pageY+f+"px",o.style.left=b.pageX+e+"px";else{var g=n.getBoundingClientRect(),h=b.pageX-g.left-a.pageXOffset,i=b.pageY-g.top-a.pageYOffset;!0===j.anchorToPoint&&b.target.x2&&b.target.y2&&(c=parseInt(b.target.x2.baseVal.value),d=parseInt(b.target.y2.baseVal.value)),o.style.top=(d||i)+f+"px",o.style.left=(c||h)+e+"px"}}var m=j.pointClass;i instanceof c.Bar?m="ct-bar":i instanceof c.Pie&&(m=i.options.donut?"ct-slice-donut":"ct-slice-pie");var n=i.container,o=n.querySelector(".chartist-tooltip");o||(o=b.createElement("div"),o.className=j.class?"chartist-tooltip "+j.class:"chartist-tooltip",j.appendToBody?b.body.appendChild(o):n.appendChild(o));var p=o.offsetHeight,q=o.offsetWidth;e(o),k("mouseover",m,function(a){var e=a.target,f="",k=i instanceof c.Pie?e:e.parentNode,m=k?e.parentNode.getAttribute("ct:meta")||e.parentNode.getAttribute("ct:series-name"):"",n=e.getAttribute("ct:meta")||m||"",r=!!n,s=e.getAttribute("ct:value");if(j.transformTooltipTextFnc&&"function"==typeof j.transformTooltipTextFnc&&(s=j.transformTooltipTextFnc(s)),j.tooltipFnc&&"function"==typeof j.tooltipFnc)f=j.tooltipFnc(n,s);else{if(j.metaIsHTML){var t=b.createElement("textarea");t.innerHTML=n,n=t.value}if(n='<span class="chartist-tooltip-meta">'+n+"</span>",r)f+=n+"<br>";else if(i instanceof c.Pie){var u=g(e,"ct-label");u&&(f+=h(u)+"<br>")}s&&(j.currency&&(s=void 0!=j.currencyFormatCallback?j.currencyFormatCallback(s,j):j.currency+s.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g,"$1,")),s='<span class="chartist-tooltip-value">'+s+"</span>",f+=s)}f&&(o.innerHTML=f,l(a),d(o),p=o.offsetHeight,q=o.offsetWidth)}),k("mouseout",m,function(){e(o)}),k("mousemove",null,function(a){!1===j.anchorToPoint&&l(a)})}}}(window,document,a),a.plugins.tooltip});
|
|
8
|
-
//# sourceMappingURL=chartist-plugin-tooltip.min.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/* Chartist.js 0.11.0
|
|
2
|
-
* Copyright © 2017 Gion Kunz
|
|
3
|
-
* Free to use under either the WTFPL license or the MIT license.
|
|
4
|
-
* https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL
|
|
5
|
-
* https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
!function(a,b){"function"==typeof define&&define.amd?define("Chartist",[],function(){return a.Chartist=b()}):"object"==typeof module&&module.exports?module.exports=b():a.Chartist=b()}(this,function(){var a={version:"0.11.0"};return function(a,b,c){"use strict";c.namespaces={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",ct:"http://gionkunz.github.com/chartist-js/ct"},c.noop=function(a){return a},c.alphaNumerate=function(a){return String.fromCharCode(97+a%26)},c.extend=function(a){var b,d,e;for(a=a||{},b=1;b<arguments.length;b++){d=arguments[b];for(var f in d)e=d[f],"object"!=typeof e||null===e||e instanceof Array?a[f]=e:a[f]=c.extend(a[f],e)}return a},c.replaceAll=function(a,b,c){return a.replace(new RegExp(b,"g"),c)},c.ensureUnit=function(a,b){return"number"==typeof a&&(a+=b),a},c.quantity=function(a){if("string"==typeof a){var b=/^(\d+)\s*(.*)$/g.exec(a);return{value:+b[1],unit:b[2]||void 0}}return{value:a}},c.querySelector=function(a){return a instanceof Node?a:b.querySelector(a)},c.times=function(a){return Array.apply(null,new Array(a))},c.sum=function(a,b){return a+(b?b:0)},c.mapMultiply=function(a){return function(b){return b*a}},c.mapAdd=function(a){return function(b){return b+a}},c.serialMap=function(a,b){var d=[],e=Math.max.apply(null,a.map(function(a){return a.length}));return c.times(e).forEach(function(c,e){var f=a.map(function(a){return a[e]});d[e]=b.apply(null,f)}),d},c.roundWithPrecision=function(a,b){var d=Math.pow(10,b||c.precision);return Math.round(a*d)/d},c.precision=8,c.escapingMap={"&":"&","<":"<",">":">",'"':""","'":"'"},c.serialize=function(a){return null===a||void 0===a?a:("number"==typeof a?a=""+a:"object"==typeof a&&(a=JSON.stringify({data:a})),Object.keys(c.escapingMap).reduce(function(a,b){return c.replaceAll(a,b,c.escapingMap[b])},a))},c.deserialize=function(a){if("string"!=typeof a)return a;a=Object.keys(c.escapingMap).reduce(function(a,b){return c.replaceAll(a,c.escapingMap[b],b)},a);try{a=JSON.parse(a),a=void 0!==a.data?a.data:a}catch(b){}return a},c.createSvg=function(a,b,d,e){var f;return b=b||"100%",d=d||"100%",Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function(a){return a.getAttributeNS(c.namespaces.xmlns,"ct")}).forEach(function(b){a.removeChild(b)}),f=new c.Svg("svg").attr({width:b,height:d}).addClass(e),f._node.style.width=b,f._node.style.height=d,a.appendChild(f._node),f},c.normalizeData=function(a,b,d){var e,f={raw:a,normalized:{}};return f.normalized.series=c.getDataArray({series:a.series||[]},b,d),e=f.normalized.series.every(function(a){return a instanceof Array})?Math.max.apply(null,f.normalized.series.map(function(a){return a.length})):f.normalized.series.length,f.normalized.labels=(a.labels||[]).slice(),Array.prototype.push.apply(f.normalized.labels,c.times(Math.max(0,e-f.normalized.labels.length)).map(function(){return""})),b&&c.reverseData(f.normalized),f},c.safeHasProperty=function(a,b){return null!==a&&"object"==typeof a&&a.hasOwnProperty(b)},c.isDataHoleValue=function(a){return null===a||void 0===a||"number"==typeof a&&isNaN(a)},c.reverseData=function(a){a.labels.reverse(),a.series.reverse();for(var b=0;b<a.series.length;b++)"object"==typeof a.series[b]&&void 0!==a.series[b].data?a.series[b].data.reverse():a.series[b]instanceof Array&&a.series[b].reverse()},c.getDataArray=function(a,b,d){function e(a){if(c.safeHasProperty(a,"value"))return e(a.value);if(c.safeHasProperty(a,"data"))return e(a.data);if(a instanceof Array)return a.map(e);if(!c.isDataHoleValue(a)){if(d){var b={};return"string"==typeof d?b[d]=c.getNumberOrUndefined(a):b.y=c.getNumberOrUndefined(a),b.x=a.hasOwnProperty("x")?c.getNumberOrUndefined(a.x):b.x,b.y=a.hasOwnProperty("y")?c.getNumberOrUndefined(a.y):b.y,b}return c.getNumberOrUndefined(a)}}return a.series.map(e)},c.normalizePadding=function(a,b){return b=b||0,"number"==typeof a?{top:a,right:a,bottom:a,left:a}:{top:"number"==typeof a.top?a.top:b,right:"number"==typeof a.right?a.right:b,bottom:"number"==typeof a.bottom?a.bottom:b,left:"number"==typeof a.left?a.left:b}},c.getMetaData=function(a,b){var c=a.data?a.data[b]:a[b];return c?c.meta:void 0},c.orderOfMagnitude=function(a){return Math.floor(Math.log(Math.abs(a))/Math.LN10)},c.projectLength=function(a,b,c){return b/c.range*a},c.getAvailableHeight=function(a,b){return Math.max((c.quantity(b.height).value||a.height())-(b.chartPadding.top+b.chartPadding.bottom)-b.axisX.offset,0)},c.getHighLow=function(a,b,d){function e(a){if(void 0!==a)if(a instanceof Array)for(var b=0;b<a.length;b++)e(a[b]);else{var c=d?+a[d]:+a;g&&c>f.high&&(f.high=c),h&&c<f.low&&(f.low=c)}}b=c.extend({},b,d?b["axis"+d.toUpperCase()]:{});var f={high:void 0===b.high?-Number.MAX_VALUE:+b.high,low:void 0===b.low?Number.MAX_VALUE:+b.low},g=void 0===b.high,h=void 0===b.low;return(g||h)&&e(a),(b.referenceValue||0===b.referenceValue)&&(f.high=Math.max(b.referenceValue,f.high),f.low=Math.min(b.referenceValue,f.low)),f.high<=f.low&&(0===f.low?f.high=1:f.low<0?f.high=0:f.high>0?f.low=0:(f.high=1,f.low=0)),f},c.isNumeric=function(a){return null!==a&&isFinite(a)},c.isFalseyButZero=function(a){return!a&&0!==a},c.getNumberOrUndefined=function(a){return c.isNumeric(a)?+a:void 0},c.isMultiValue=function(a){return"object"==typeof a&&("x"in a||"y"in a)},c.getMultiValue=function(a,b){return c.isMultiValue(a)?c.getNumberOrUndefined(a[b||"y"]):c.getNumberOrUndefined(a)},c.rho=function(a){function b(a,c){return a%c===0?c:b(c,a%c)}function c(a){return a*a+1}if(1===a)return a;var d,e=2,f=2;if(a%2===0)return 2;do e=c(e)%a,f=c(c(f))%a,d=b(Math.abs(e-f),a);while(1===d);return d},c.getBounds=function(a,b,d,e){function f(a,b){return a===(a+=b)&&(a*=1+(b>0?o:-o)),a}var g,h,i,j=0,k={high:b.high,low:b.low};k.valueRange=k.high-k.low,k.oom=c.orderOfMagnitude(k.valueRange),k.step=Math.pow(10,k.oom),k.min=Math.floor(k.low/k.step)*k.step,k.max=Math.ceil(k.high/k.step)*k.step,k.range=k.max-k.min,k.numberOfSteps=Math.round(k.range/k.step);var l=c.projectLength(a,k.step,k),m=l<d,n=e?c.rho(k.range):0;if(e&&c.projectLength(a,1,k)>=d)k.step=1;else if(e&&n<k.step&&c.projectLength(a,n,k)>=d)k.step=n;else for(;;){if(m&&c.projectLength(a,k.step,k)<=d)k.step*=2;else{if(m||!(c.projectLength(a,k.step/2,k)>=d))break;if(k.step/=2,e&&k.step%1!==0){k.step*=2;break}}if(j++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var o=2.221e-16;for(k.step=Math.max(k.step,o),h=k.min,i=k.max;h+k.step<=k.low;)h=f(h,k.step);for(;i-k.step>=k.high;)i=f(i,-k.step);k.min=h,k.max=i,k.range=k.max-k.min;var p=[];for(g=k.min;g<=k.max;g=f(g,k.step)){var q=c.roundWithPrecision(g);q!==p[p.length-1]&&p.push(q)}return k.values=p,k},c.polarToCartesian=function(a,b,c,d){var e=(d-90)*Math.PI/180;return{x:a+c*Math.cos(e),y:b+c*Math.sin(e)}},c.createChartRect=function(a,b,d){var e=!(!b.axisX&&!b.axisY),f=e?b.axisY.offset:0,g=e?b.axisX.offset:0,h=a.width()||c.quantity(b.width).value||0,i=a.height()||c.quantity(b.height).value||0,j=c.normalizePadding(b.chartPadding,d);h=Math.max(h,f+j.left+j.right),i=Math.max(i,g+j.top+j.bottom);var k={padding:j,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return e?("start"===b.axisX.position?(k.y2=j.top+g,k.y1=Math.max(i-j.bottom,k.y2+1)):(k.y2=j.top,k.y1=Math.max(i-j.bottom-g,k.y2+1)),"start"===b.axisY.position?(k.x1=j.left+f,k.x2=Math.max(h-j.right,k.x1+1)):(k.x1=j.left,k.x2=Math.max(h-j.right-f,k.x1+1))):(k.x1=j.left,k.x2=Math.max(h-j.right,k.x1+1),k.y2=j.top,k.y1=Math.max(i-j.bottom,k.y2+1)),k},c.createGrid=function(a,b,d,e,f,g,h,i){var j={};j[d.units.pos+"1"]=a,j[d.units.pos+"2"]=a,j[d.counterUnits.pos+"1"]=e,j[d.counterUnits.pos+"2"]=e+f;var k=g.elem("line",j,h.join(" "));i.emit("draw",c.extend({type:"grid",axis:d,index:b,group:g,element:k},j))},c.createGridBackground=function(a,b,c,d){var e=a.elem("rect",{x:b.x1,y:b.y2,width:b.width(),height:b.height()},c,!0);d.emit("draw",{type:"gridBackground",group:a,element:e})},c.createLabel=function(a,d,e,f,g,h,i,j,k,l,m){var n,o={};if(o[g.units.pos]=a+i[g.units.pos],o[g.counterUnits.pos]=i[g.counterUnits.pos],o[g.units.len]=d,o[g.counterUnits.len]=Math.max(0,h-10),l){var p=b.createElement("span");p.className=k.join(" "),p.setAttribute("xmlns",c.namespaces.xhtml),p.innerText=f[e],p.style[g.units.len]=Math.round(o[g.units.len])+"px",p.style[g.counterUnits.len]=Math.round(o[g.counterUnits.len])+"px",n=j.foreignObject(p,c.extend({style:"overflow: visible;"},o))}else n=j.elem("text",o,k.join(" ")).text(f[e]);m.emit("draw",c.extend({type:"label",axis:g,index:e,group:j,element:n,text:f[e]},o))},c.getSeriesOption=function(a,b,c){if(a.name&&b.series&&b.series[a.name]){var d=b.series[a.name];return d.hasOwnProperty(c)?d[c]:b[c]}return b[c]},c.optionsProvider=function(b,d,e){function f(b){var f=h;if(h=c.extend({},j),d)for(i=0;i<d.length;i++){var g=a.matchMedia(d[i][0]);g.matches&&(h=c.extend(h,d[i][1]))}e&&b&&e.emit("optionsChanged",{previousOptions:f,currentOptions:h})}function g(){k.forEach(function(a){a.removeListener(f)})}var h,i,j=c.extend({},b),k=[];if(!a.matchMedia)throw"window.matchMedia not found! Make sure you're using a polyfill.";if(d)for(i=0;i<d.length;i++){var l=a.matchMedia(d[i][0]);l.addListener(f),k.push(l)}return f(),{removeMediaQueryListeners:g,getCurrentOptions:function(){return c.extend({},h)}}},c.splitIntoSegments=function(a,b,d){var e={increasingX:!1,fillHoles:!1};d=c.extend({},e,d);for(var f=[],g=!0,h=0;h<a.length;h+=2)void 0===c.getMultiValue(b[h/2].value)?d.fillHoles||(g=!0):(d.increasingX&&h>=2&&a[h]<=a[h-2]&&(g=!0),g&&(f.push({pathCoordinates:[],valueData:[]}),g=!1),f[f.length-1].pathCoordinates.push(a[h],a[h+1]),f[f.length-1].valueData.push(b[h/2]));return f}}(window,document,a),function(a,b,c){"use strict";c.Interpolation={},c.Interpolation.none=function(a){var b={fillHoles:!1};return a=c.extend({},b,a),function(b,d){for(var e=new c.Svg.Path,f=!0,g=0;g<b.length;g+=2){var h=b[g],i=b[g+1],j=d[g/2];void 0!==c.getMultiValue(j.value)?(f?e.move(h,i,!1,j):e.line(h,i,!1,j),f=!1):a.fillHoles||(f=!0)}return e}},c.Interpolation.simple=function(a){var b={divisor:2,fillHoles:!1};a=c.extend({},b,a);var d=1/Math.max(1,a.divisor);return function(b,e){for(var f,g,h,i=new c.Svg.Path,j=0;j<b.length;j+=2){var k=b[j],l=b[j+1],m=(k-f)*d,n=e[j/2];void 0!==n.value?(void 0===h?i.move(k,l,!1,n):i.curve(f+m,g,k-m,l,k,l,!1,n),f=k,g=l,h=n):a.fillHoles||(f=k=h=void 0)}return i}},c.Interpolation.cardinal=function(a){var b={tension:1,fillHoles:!1};a=c.extend({},b,a);var d=Math.min(1,Math.max(0,a.tension)),e=1-d;return function f(b,g){var h=c.splitIntoSegments(b,g,{fillHoles:a.fillHoles});if(h.length){if(h.length>1){var i=[];return h.forEach(function(a){i.push(f(a.pathCoordinates,a.valueData))}),c.Svg.Path.join(i)}if(b=h[0].pathCoordinates,g=h[0].valueData,b.length<=4)return c.Interpolation.none()(b,g);for(var j,k=(new c.Svg.Path).move(b[0],b[1],!1,g[0]),l=0,m=b.length;m-2*!j>l;l+=2){var n=[{x:+b[l-2],y:+b[l-1]},{x:+b[l],y:+b[l+1]},{x:+b[l+2],y:+b[l+3]},{x:+b[l+4],y:+b[l+5]}];j?l?m-4===l?n[3]={x:+b[0],y:+b[1]}:m-2===l&&(n[2]={x:+b[0],y:+b[1]},n[3]={x:+b[2],y:+b[3]}):n[0]={x:+b[m-2],y:+b[m-1]}:m-4===l?n[3]=n[2]:l||(n[0]={x:+b[l],y:+b[l+1]}),k.curve(d*(-n[0].x+6*n[1].x+n[2].x)/6+e*n[2].x,d*(-n[0].y+6*n[1].y+n[2].y)/6+e*n[2].y,d*(n[1].x+6*n[2].x-n[3].x)/6+e*n[2].x,d*(n[1].y+6*n[2].y-n[3].y)/6+e*n[2].y,n[2].x,n[2].y,!1,g[(l+2)/2])}return k}return c.Interpolation.none()([])}},c.Interpolation.monotoneCubic=function(a){var b={fillHoles:!1};return a=c.extend({},b,a),function d(b,e){var f=c.splitIntoSegments(b,e,{fillHoles:a.fillHoles,increasingX:!0});if(f.length){if(f.length>1){var g=[];return f.forEach(function(a){g.push(d(a.pathCoordinates,a.valueData))}),c.Svg.Path.join(g)}if(b=f[0].pathCoordinates,e=f[0].valueData,b.length<=4)return c.Interpolation.none()(b,e);var h,i,j=[],k=[],l=b.length/2,m=[],n=[],o=[],p=[];for(h=0;h<l;h++)j[h]=b[2*h],k[h]=b[2*h+1];for(h=0;h<l-1;h++)o[h]=k[h+1]-k[h],p[h]=j[h+1]-j[h],n[h]=o[h]/p[h];for(m[0]=n[0],m[l-1]=n[l-2],h=1;h<l-1;h++)0===n[h]||0===n[h-1]||n[h-1]>0!=n[h]>0?m[h]=0:(m[h]=3*(p[h-1]+p[h])/((2*p[h]+p[h-1])/n[h-1]+(p[h]+2*p[h-1])/n[h]),isFinite(m[h])||(m[h]=0));for(i=(new c.Svg.Path).move(j[0],k[0],!1,e[0]),h=0;h<l-1;h++)i.curve(j[h]+p[h]/3,k[h]+m[h]*p[h]/3,j[h+1]-p[h]/3,k[h+1]-m[h+1]*p[h]/3,j[h+1],k[h+1],!1,e[h+1]);return i}return c.Interpolation.none()([])}},c.Interpolation.step=function(a){var b={postpone:!0,fillHoles:!1};return a=c.extend({},b,a),function(b,d){for(var e,f,g,h=new c.Svg.Path,i=0;i<b.length;i+=2){var j=b[i],k=b[i+1],l=d[i/2];void 0!==l.value?(void 0===g?h.move(j,k,!1,l):(a.postpone?h.line(j,f,!1,g):h.line(e,k,!1,l),h.line(j,k,!1,l)),e=j,f=k,g=l):a.fillHoles||(e=f=g=void 0)}return h}}}(window,document,a),function(a,b,c){"use strict";c.EventEmitter=function(){function a(a,b){d[a]=d[a]||[],d[a].push(b)}function b(a,b){d[a]&&(b?(d[a].splice(d[a].indexOf(b),1),0===d[a].length&&delete d[a]):delete d[a])}function c(a,b){d[a]&&d[a].forEach(function(a){a(b)}),d["*"]&&d["*"].forEach(function(c){c(a,b)})}var d=[];return{addEventHandler:a,removeEventHandler:b,emit:c}}}(window,document,a),function(a,b,c){"use strict";function d(a){var b=[];if(a.length)for(var c=0;c<a.length;c++)b.push(a[c]);return b}function e(a,b){var d=b||this.prototype||c.Class,e=Object.create(d);c.Class.cloneDefinitions(e,a);var f=function(){var a,b=e.constructor||function(){};return a=this===c?Object.create(e):this,b.apply(a,Array.prototype.slice.call(arguments,0)),a};return f.prototype=e,f["super"]=d,f.extend=this.extend,f}function f(){var a=d(arguments),b=a[0];return a.splice(1,a.length-1).forEach(function(a){Object.getOwnPropertyNames(a).forEach(function(c){delete b[c],Object.defineProperty(b,c,Object.getOwnPropertyDescriptor(a,c))})}),b}c.Class={extend:e,cloneDefinitions:f}}(window,document,a),function(a,b,c){"use strict";function d(a,b,d){return a&&(this.data=a||{},this.data.labels=this.data.labels||[],this.data.series=this.data.series||[],this.eventEmitter.emit("data",{type:"update",data:this.data})),b&&(this.options=c.extend({},d?this.options:this.defaultOptions,b),this.initializeTimeoutId||(this.optionsProvider.removeMediaQueryListeners(),this.optionsProvider=c.optionsProvider(this.options,this.responsiveOptions,this.eventEmitter))),this.initializeTimeoutId||this.createChart(this.optionsProvider.getCurrentOptions()),this}function e(){return this.initializeTimeoutId?a.clearTimeout(this.initializeTimeoutId):(a.removeEventListener("resize",this.resizeListener),this.optionsProvider.removeMediaQueryListeners()),this}function f(a,b){return this.eventEmitter.addEventHandler(a,b),this}function g(a,b){return this.eventEmitter.removeEventHandler(a,b),this}function h(){a.addEventListener("resize",this.resizeListener),this.optionsProvider=c.optionsProvider(this.options,this.responsiveOptions,this.eventEmitter),this.eventEmitter.addEventHandler("optionsChanged",function(){this.update()}.bind(this)),this.options.plugins&&this.options.plugins.forEach(function(a){a instanceof Array?a[0](this,a[1]):a(this)}.bind(this)),this.eventEmitter.emit("data",{type:"initial",data:this.data}),this.createChart(this.optionsProvider.getCurrentOptions()),this.initializeTimeoutId=void 0}function i(a,b,d,e,f){this.container=c.querySelector(a),this.data=b||{},this.data.labels=this.data.labels||[],this.data.series=this.data.series||[],this.defaultOptions=d,this.options=e,this.responsiveOptions=f,this.eventEmitter=c.EventEmitter(),this.supportsForeignObject=c.Svg.isSupported("Extensibility"),this.supportsAnimations=c.Svg.isSupported("AnimationEventsAttribute"),this.resizeListener=function(){this.update()}.bind(this),this.container&&(this.container.__chartist__&&this.container.__chartist__.detach(),this.container.__chartist__=this),this.initializeTimeoutId=setTimeout(h.bind(this),0)}c.Base=c.Class.extend({constructor:i,optionsProvider:void 0,container:void 0,svg:void 0,eventEmitter:void 0,createChart:function(){throw new Error("Base chart type can't be instantiated!")},update:d,detach:e,on:f,off:g,version:c.version,supportsForeignObject:!1})}(window,document,a),function(a,b,c){"use strict";function d(a,d,e,f,g){a instanceof Element?this._node=a:(this._node=b.createElementNS(c.namespaces.svg,a),"svg"===a&&this.attr({"xmlns:ct":c.namespaces.ct})),d&&this.attr(d),e&&this.addClass(e),f&&(g&&f._node.firstChild?f._node.insertBefore(this._node,f._node.firstChild):f._node.appendChild(this._node))}function e(a,b){return"string"==typeof a?b?this._node.getAttributeNS(b,a):this._node.getAttribute(a):(Object.keys(a).forEach(function(b){if(void 0!==a[b])if(b.indexOf(":")!==-1){var d=b.split(":");this._node.setAttributeNS(c.namespaces[d[0]],b,a[b])}else this._node.setAttribute(b,a[b])}.bind(this)),this)}function f(a,b,d,e){return new c.Svg(a,b,d,this,e)}function g(){return this._node.parentNode instanceof SVGElement?new c.Svg(this._node.parentNode):null}function h(){for(var a=this._node;"svg"!==a.nodeName;)a=a.parentNode;return new c.Svg(a)}function i(a){var b=this._node.querySelector(a);return b?new c.Svg(b):null}function j(a){var b=this._node.querySelectorAll(a);return b.length?new c.Svg.List(b):null}function k(){return this._node}function l(a,d,e,f){if("string"==typeof a){var g=b.createElement("div");g.innerHTML=a,a=g.firstChild}a.setAttribute("xmlns",c.namespaces.xmlns);var h=this.elem("foreignObject",d,e,f);return h._node.appendChild(a),h}function m(a){return this._node.appendChild(b.createTextNode(a)),this}function n(){for(;this._node.firstChild;)this._node.removeChild(this._node.firstChild);return this}function o(){return this._node.parentNode.removeChild(this._node),this.parent()}function p(a){return this._node.parentNode.replaceChild(a._node,this._node),a}function q(a,b){return b&&this._node.firstChild?this._node.insertBefore(a._node,this._node.firstChild):this._node.appendChild(a._node),this}function r(){return this._node.getAttribute("class")?this._node.getAttribute("class").trim().split(/\s+/):[]}function s(a){return this._node.setAttribute("class",this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function(a,b,c){return c.indexOf(a)===b}).join(" ")),this}function t(a){var b=a.trim().split(/\s+/);return this._node.setAttribute("class",this.classes(this._node).filter(function(a){return b.indexOf(a)===-1}).join(" ")),this}function u(){return this._node.setAttribute("class",""),this}function v(){return this._node.getBoundingClientRect().height}function w(){return this._node.getBoundingClientRect().width}function x(a,b,d){return void 0===b&&(b=!0),Object.keys(a).forEach(function(e){function f(a,b){var f,g,h,i={};a.easing&&(h=a.easing instanceof Array?a.easing:c.Svg.Easing[a.easing],delete a.easing),a.begin=c.ensureUnit(a.begin,"ms"),a.dur=c.ensureUnit(a.dur,"ms"),h&&(a.calcMode="spline",a.keySplines=h.join(" "),a.keyTimes="0;1"),b&&(a.fill="freeze",i[e]=a.from,this.attr(i),g=c.quantity(a.begin||0).value,a.begin="indefinite"),f=this.elem("animate",c.extend({attributeName:e},a)),b&&setTimeout(function(){try{f._node.beginElement()}catch(b){i[e]=a.to,this.attr(i),f.remove()}}.bind(this),g),d&&f._node.addEventListener("beginEvent",function(){d.emit("animationBegin",{element:this,animate:f._node,params:a})}.bind(this)),f._node.addEventListener("endEvent",function(){d&&d.emit("animationEnd",{element:this,animate:f._node,params:a}),b&&(i[e]=a.to,this.attr(i),f.remove())}.bind(this))}a[e]instanceof Array?a[e].forEach(function(a){f.bind(this)(a,!1)}.bind(this)):f.bind(this)(a[e],b)}.bind(this)),this}function y(a){var b=this;this.svgElements=[];for(var d=0;d<a.length;d++)this.svgElements.push(new c.Svg(a[d]));Object.keys(c.Svg.prototype).filter(function(a){return["constructor","parent","querySelector","querySelectorAll","replace","append","classes","height","width"].indexOf(a)===-1}).forEach(function(a){b[a]=function(){var d=Array.prototype.slice.call(arguments,0);return b.svgElements.forEach(function(b){c.Svg.prototype[a].apply(b,d)}),b}})}c.Svg=c.Class.extend({constructor:d,attr:e,elem:f,parent:g,root:h,querySelector:i,querySelectorAll:j,getNode:k,foreignObject:l,text:m,empty:n,remove:o,replace:p,append:q,classes:r,addClass:s,removeClass:t,removeAllClasses:u,height:v,width:w,animate:x}),c.Svg.isSupported=function(a){return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#"+a,"1.1")};var z={easeInSine:[.47,0,.745,.715],easeOutSine:[.39,.575,.565,1],easeInOutSine:[.445,.05,.55,.95],easeInQuad:[.55,.085,.68,.53],easeOutQuad:[.25,.46,.45,.94],easeInOutQuad:[.455,.03,.515,.955],easeInCubic:[.55,.055,.675,.19],easeOutCubic:[.215,.61,.355,1],easeInOutCubic:[.645,.045,.355,1],easeInQuart:[.895,.03,.685,.22],easeOutQuart:[.165,.84,.44,1],easeInOutQuart:[.77,0,.175,1],easeInQuint:[.755,.05,.855,.06],easeOutQuint:[.23,1,.32,1],easeInOutQuint:[.86,0,.07,1],easeInExpo:[.95,.05,.795,.035],easeOutExpo:[.19,1,.22,1],easeInOutExpo:[1,0,0,1],easeInCirc:[.6,.04,.98,.335],easeOutCirc:[.075,.82,.165,1],easeInOutCirc:[.785,.135,.15,.86],easeInBack:[.6,-.28,.735,.045],easeOutBack:[.175,.885,.32,1.275],easeInOutBack:[.68,-.55,.265,1.55]};c.Svg.Easing=z,c.Svg.List=c.Class.extend({constructor:y})}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e,f,g){var h=c.extend({command:f?a.toLowerCase():a.toUpperCase()},b,g?{data:g}:{});d.splice(e,0,h)}function e(a,b){a.forEach(function(c,d){u[c.command.toLowerCase()].forEach(function(e,f){b(c,e,d,f,a)})})}function f(a,b){this.pathElements=[],this.pos=0,this.close=a,this.options=c.extend({},v,b)}function g(a){return void 0!==a?(this.pos=Math.max(0,Math.min(this.pathElements.length,a)),this):this.pos}function h(a){return this.pathElements.splice(this.pos,a),this}function i(a,b,c,e){return d("M",{x:+a,y:+b},this.pathElements,this.pos++,c,e),this}function j(a,b,c,e){return d("L",{x:+a,y:+b},this.pathElements,this.pos++,c,e),this}function k(a,b,c,e,f,g,h,i){return d("C",{x1:+a,y1:+b,x2:+c,y2:+e,x:+f,y:+g},this.pathElements,this.pos++,h,i),this}function l(a,b,c,e,f,g,h,i,j){return d("A",{rx:+a,ry:+b,xAr:+c,lAf:+e,sf:+f,x:+g,y:+h},this.pathElements,this.pos++,i,j),this}function m(a){var b=a.replace(/([A-Za-z])([0-9])/g,"$1 $2").replace(/([0-9])([A-Za-z])/g,"$1 $2").split(/[\s,]+/).reduce(function(a,b){return b.match(/[A-Za-z]/)&&a.push([]),a[a.length-1].push(b),a},[]);"Z"===b[b.length-1][0].toUpperCase()&&b.pop();var d=b.map(function(a){var b=a.shift(),d=u[b.toLowerCase()];return c.extend({command:b},d.reduce(function(b,c,d){return b[c]=+a[d],b},{}))}),e=[this.pos,0];return Array.prototype.push.apply(e,d),Array.prototype.splice.apply(this.pathElements,e),this.pos+=d.length,this}function n(){var a=Math.pow(10,this.options.accuracy);return this.pathElements.reduce(function(b,c){var d=u[c.command.toLowerCase()].map(function(b){return this.options.accuracy?Math.round(c[b]*a)/a:c[b]}.bind(this));return b+c.command+d.join(",")}.bind(this),"")+(this.close?"Z":"")}function o(a,b){return e(this.pathElements,function(c,d){c[d]*="x"===d[0]?a:b}),this}function p(a,b){return e(this.pathElements,function(c,d){c[d]+="x"===d[0]?a:b}),this}function q(a){return e(this.pathElements,function(b,c,d,e,f){var g=a(b,c,d,e,f);(g||0===g)&&(b[c]=g)}),this}function r(a){var b=new c.Svg.Path(a||this.close);return b.pos=this.pos,b.pathElements=this.pathElements.slice().map(function(a){return c.extend({},a)}),b.options=c.extend({},this.options),b}function s(a){var b=[new c.Svg.Path];return this.pathElements.forEach(function(d){d.command===a.toUpperCase()&&0!==b[b.length-1].pathElements.length&&b.push(new c.Svg.Path),b[b.length-1].pathElements.push(d)}),b}function t(a,b,d){for(var e=new c.Svg.Path(b,d),f=0;f<a.length;f++)for(var g=a[f],h=0;h<g.pathElements.length;h++)e.pathElements.push(g.pathElements[h]);return e}var u={m:["x","y"],l:["x","y"],c:["x1","y1","x2","y2","x","y"],a:["rx","ry","xAr","lAf","sf","x","y"]},v={accuracy:3};c.Svg.Path=c.Class.extend({constructor:f,position:g,remove:h,move:i,line:j,curve:k,arc:l,scale:o,translate:p,transform:q,parse:m,stringify:n,clone:r,splitByCommand:s}),c.Svg.Path.elementDescriptions=u,c.Svg.Path.join=t}(window,document,a),function(a,b,c){"use strict";function d(a,b,c,d){this.units=a,this.counterUnits=a===f.x?f.y:f.x,this.chartRect=b,this.axisLength=b[a.rectEnd]-b[a.rectStart],this.gridOffset=b[a.rectOffset],this.ticks=c,this.options=d}function e(a,b,d,e,f){var g=e["axis"+this.units.pos.toUpperCase()],h=this.ticks.map(this.projectValue.bind(this)),i=this.ticks.map(g.labelInterpolationFnc);h.forEach(function(j,k){var l,m={x:0,y:0};l=h[k+1]?h[k+1]-j:Math.max(this.axisLength-j,30),c.isFalseyButZero(i[k])&&""!==i[k]||("x"===this.units.pos?(j=this.chartRect.x1+j,m.x=e.axisX.labelOffset.x,"start"===e.axisX.position?m.y=this.chartRect.padding.top+e.axisX.labelOffset.y+(d?5:20):m.y=this.chartRect.y1+e.axisX.labelOffset.y+(d?5:20)):(j=this.chartRect.y1-j,m.y=e.axisY.labelOffset.y-(d?l:0),"start"===e.axisY.position?m.x=d?this.chartRect.padding.left+e.axisY.labelOffset.x:this.chartRect.x1-10:m.x=this.chartRect.x2+e.axisY.labelOffset.x+10),g.showGrid&&c.createGrid(j,k,this,this.gridOffset,this.chartRect[this.counterUnits.len](),a,[e.classNames.grid,e.classNames[this.units.dir]],f),g.showLabel&&c.createLabel(j,l,k,i,this,g.offset,m,b,[e.classNames.label,e.classNames[this.units.dir],"start"===g.position?e.classNames[g.position]:e.classNames.end],d,f))}.bind(this))}var f={x:{pos:"x",len:"width",dir:"horizontal",rectStart:"x1",rectEnd:"x2",rectOffset:"y2"},y:{pos:"y",len:"height",dir:"vertical",rectStart:"y2",rectEnd:"y1",rectOffset:"x1"}};c.Axis=c.Class.extend({constructor:d,createGridAndLabels:e,projectValue:function(a,b,c){throw new Error("Base axis can't be instantiated!")}}),c.Axis.units=f}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e){var f=e.highLow||c.getHighLow(b,e,a.pos);this.bounds=c.getBounds(d[a.rectEnd]-d[a.rectStart],f,e.scaleMinSpace||20,e.onlyInteger),this.range={min:this.bounds.min,max:this.bounds.max},c.AutoScaleAxis["super"].constructor.call(this,a,d,this.bounds.values,e)}function e(a){return this.axisLength*(+c.getMultiValue(a,this.units.pos)-this.bounds.min)/this.bounds.range}c.AutoScaleAxis=c.Axis.extend({constructor:d,projectValue:e})}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e){var f=e.highLow||c.getHighLow(b,e,a.pos);this.divisor=e.divisor||1,this.ticks=e.ticks||c.times(this.divisor).map(function(a,b){return f.low+(f.high-f.low)/this.divisor*b}.bind(this)),this.ticks.sort(function(a,b){return a-b}),this.range={min:f.low,max:f.high},c.FixedScaleAxis["super"].constructor.call(this,a,d,this.ticks,e),this.stepLength=this.axisLength/this.divisor}function e(a){return this.axisLength*(+c.getMultiValue(a,this.units.pos)-this.range.min)/(this.range.max-this.range.min)}c.FixedScaleAxis=c.Axis.extend({constructor:d,projectValue:e})}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e){c.StepAxis["super"].constructor.call(this,a,d,e.ticks,e);var f=Math.max(1,e.ticks.length-(e.stretch?1:0));this.stepLength=this.axisLength/f}function e(a,b){return this.stepLength*b}c.StepAxis=c.Axis.extend({constructor:d,projectValue:e})}(window,document,a),function(a,b,c){"use strict";function d(a){var b=c.normalizeData(this.data,a.reverseData,!0);this.svg=c.createSvg(this.container,a.width,a.height,a.classNames.chart);var d,e,g=this.svg.elem("g").addClass(a.classNames.gridGroup),h=this.svg.elem("g"),i=this.svg.elem("g").addClass(a.classNames.labelGroup),j=c.createChartRect(this.svg,a,f.padding);d=void 0===a.axisX.type?new c.StepAxis(c.Axis.units.x,b.normalized.series,j,c.extend({},a.axisX,{ticks:b.normalized.labels,stretch:a.fullWidth})):a.axisX.type.call(c,c.Axis.units.x,b.normalized.series,j,a.axisX),e=void 0===a.axisY.type?new c.AutoScaleAxis(c.Axis.units.y,b.normalized.series,j,c.extend({},a.axisY,{high:c.isNumeric(a.high)?a.high:a.axisY.high,low:c.isNumeric(a.low)?a.low:a.axisY.low})):a.axisY.type.call(c,c.Axis.units.y,b.normalized.series,j,a.axisY),d.createGridAndLabels(g,i,this.supportsForeignObject,a,this.eventEmitter),e.createGridAndLabels(g,i,this.supportsForeignObject,a,this.eventEmitter),a.showGridBackground&&c.createGridBackground(g,j,a.classNames.gridBackground,this.eventEmitter),b.raw.series.forEach(function(f,g){var i=h.elem("g");i.attr({"ct:series-name":f.name,"ct:meta":c.serialize(f.meta)}),i.addClass([a.classNames.series,f.className||a.classNames.series+"-"+c.alphaNumerate(g)].join(" "));var k=[],l=[];b.normalized.series[g].forEach(function(a,h){var i={x:j.x1+d.projectValue(a,h,b.normalized.series[g]),y:j.y1-e.projectValue(a,h,b.normalized.series[g])};k.push(i.x,i.y),l.push({value:a,valueIndex:h,meta:c.getMetaData(f,h)})}.bind(this));var m={lineSmooth:c.getSeriesOption(f,a,"lineSmooth"),showPoint:c.getSeriesOption(f,a,"showPoint"),showLine:c.getSeriesOption(f,a,"showLine"),showArea:c.getSeriesOption(f,a,"showArea"),areaBase:c.getSeriesOption(f,a,"areaBase")},n="function"==typeof m.lineSmooth?m.lineSmooth:m.lineSmooth?c.Interpolation.monotoneCubic():c.Interpolation.none(),o=n(k,l);if(m.showPoint&&o.pathElements.forEach(function(b){var h=i.elem("line",{x1:b.x,y1:b.y,x2:b.x+.01,y2:b.y},a.classNames.point).attr({"ct:value":[b.data.value.x,b.data.value.y].filter(c.isNumeric).join(","),"ct:meta":c.serialize(b.data.meta)});this.eventEmitter.emit("draw",{type:"point",value:b.data.value,index:b.data.valueIndex,meta:b.data.meta,series:f,seriesIndex:g,axisX:d,axisY:e,group:i,element:h,x:b.x,y:b.y})}.bind(this)),m.showLine){var p=i.elem("path",{d:o.stringify()},a.classNames.line,!0);this.eventEmitter.emit("draw",{type:"line",values:b.normalized.series[g],path:o.clone(),chartRect:j,index:g,series:f,seriesIndex:g,seriesMeta:f.meta,axisX:d,axisY:e,group:i,element:p})}if(m.showArea&&e.range){var q=Math.max(Math.min(m.areaBase,e.range.max),e.range.min),r=j.y1-e.projectValue(q);o.splitByCommand("M").filter(function(a){return a.pathElements.length>1}).map(function(a){var b=a.pathElements[0],c=a.pathElements[a.pathElements.length-1];return a.clone(!0).position(0).remove(1).move(b.x,r).line(b.x,b.y).position(a.pathElements.length+1).line(c.x,r)}).forEach(function(c){var h=i.elem("path",{d:c.stringify()},a.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:b.normalized.series[g],path:c.clone(),series:f,seriesIndex:g,axisX:d,axisY:e,chartRect:j,index:g,group:i,element:h})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:e.bounds,chartRect:j,axisX:d,axisY:e,svg:this.svg,options:a})}function e(a,b,d,e){c.Line["super"].constructor.call(this,a,b,f,c.extend({},f,d),e)}var f={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,type:void 0},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,type:void 0,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,showLine:!0,showPoint:!0,showArea:!1,areaBase:0,lineSmooth:!0,showGridBackground:!1,low:void 0,high:void 0,chartPadding:{top:15,right:15,bottom:5,left:10},fullWidth:!1,reverseData:!1,classNames:{chart:"ct-chart-line",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",line:"ct-line",point:"ct-point",area:"ct-area",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};c.Line=c.Base.extend({constructor:e,createChart:d})}(window,document,a),function(a,b,c){"use strict";function d(a){var b,d;a.distributeSeries?(b=c.normalizeData(this.data,a.reverseData,a.horizontalBars?"x":"y"),b.normalized.series=b.normalized.series.map(function(a){return[a]})):b=c.normalizeData(this.data,a.reverseData,a.horizontalBars?"x":"y"),this.svg=c.createSvg(this.container,a.width,a.height,a.classNames.chart+(a.horizontalBars?" "+a.classNames.horizontalBars:""));var e=this.svg.elem("g").addClass(a.classNames.gridGroup),g=this.svg.elem("g"),h=this.svg.elem("g").addClass(a.classNames.labelGroup);if(a.stackBars&&0!==b.normalized.series.length){var i=c.serialMap(b.normalized.series,function(){
|
|
9
|
-
return Array.prototype.slice.call(arguments).map(function(a){return a}).reduce(function(a,b){return{x:a.x+(b&&b.x)||0,y:a.y+(b&&b.y)||0}},{x:0,y:0})});d=c.getHighLow([i],a,a.horizontalBars?"x":"y")}else d=c.getHighLow(b.normalized.series,a,a.horizontalBars?"x":"y");d.high=+a.high||(0===a.high?0:d.high),d.low=+a.low||(0===a.low?0:d.low);var j,k,l,m,n,o=c.createChartRect(this.svg,a,f.padding);k=a.distributeSeries&&a.stackBars?b.normalized.labels.slice(0,1):b.normalized.labels,a.horizontalBars?(j=m=void 0===a.axisX.type?new c.AutoScaleAxis(c.Axis.units.x,b.normalized.series,o,c.extend({},a.axisX,{highLow:d,referenceValue:0})):a.axisX.type.call(c,c.Axis.units.x,b.normalized.series,o,c.extend({},a.axisX,{highLow:d,referenceValue:0})),l=n=void 0===a.axisY.type?new c.StepAxis(c.Axis.units.y,b.normalized.series,o,{ticks:k}):a.axisY.type.call(c,c.Axis.units.y,b.normalized.series,o,a.axisY)):(l=m=void 0===a.axisX.type?new c.StepAxis(c.Axis.units.x,b.normalized.series,o,{ticks:k}):a.axisX.type.call(c,c.Axis.units.x,b.normalized.series,o,a.axisX),j=n=void 0===a.axisY.type?new c.AutoScaleAxis(c.Axis.units.y,b.normalized.series,o,c.extend({},a.axisY,{highLow:d,referenceValue:0})):a.axisY.type.call(c,c.Axis.units.y,b.normalized.series,o,c.extend({},a.axisY,{highLow:d,referenceValue:0})));var p=a.horizontalBars?o.x1+j.projectValue(0):o.y1-j.projectValue(0),q=[];l.createGridAndLabels(e,h,this.supportsForeignObject,a,this.eventEmitter),j.createGridAndLabels(e,h,this.supportsForeignObject,a,this.eventEmitter),a.showGridBackground&&c.createGridBackground(e,o,a.classNames.gridBackground,this.eventEmitter),b.raw.series.forEach(function(d,e){var f,h,i=e-(b.raw.series.length-1)/2;f=a.distributeSeries&&!a.stackBars?l.axisLength/b.normalized.series.length/2:a.distributeSeries&&a.stackBars?l.axisLength/2:l.axisLength/b.normalized.series[e].length/2,h=g.elem("g"),h.attr({"ct:series-name":d.name,"ct:meta":c.serialize(d.meta)}),h.addClass([a.classNames.series,d.className||a.classNames.series+"-"+c.alphaNumerate(e)].join(" ")),b.normalized.series[e].forEach(function(g,k){var r,s,t,u;if(u=a.distributeSeries&&!a.stackBars?e:a.distributeSeries&&a.stackBars?0:k,r=a.horizontalBars?{x:o.x1+j.projectValue(g&&g.x?g.x:0,k,b.normalized.series[e]),y:o.y1-l.projectValue(g&&g.y?g.y:0,u,b.normalized.series[e])}:{x:o.x1+l.projectValue(g&&g.x?g.x:0,u,b.normalized.series[e]),y:o.y1-j.projectValue(g&&g.y?g.y:0,k,b.normalized.series[e])},l instanceof c.StepAxis&&(l.options.stretch||(r[l.units.pos]+=f*(a.horizontalBars?-1:1)),r[l.units.pos]+=a.stackBars||a.distributeSeries?0:i*a.seriesBarDistance*(a.horizontalBars?-1:1)),t=q[k]||p,q[k]=t-(p-r[l.counterUnits.pos]),void 0!==g){var v={};v[l.units.pos+"1"]=r[l.units.pos],v[l.units.pos+"2"]=r[l.units.pos],!a.stackBars||"accumulate"!==a.stackMode&&a.stackMode?(v[l.counterUnits.pos+"1"]=p,v[l.counterUnits.pos+"2"]=r[l.counterUnits.pos]):(v[l.counterUnits.pos+"1"]=t,v[l.counterUnits.pos+"2"]=q[k]),v.x1=Math.min(Math.max(v.x1,o.x1),o.x2),v.x2=Math.min(Math.max(v.x2,o.x1),o.x2),v.y1=Math.min(Math.max(v.y1,o.y2),o.y1),v.y2=Math.min(Math.max(v.y2,o.y2),o.y1);var w=c.getMetaData(d,k);s=h.elem("line",v,a.classNames.bar).attr({"ct:value":[g.x,g.y].filter(c.isNumeric).join(","),"ct:meta":c.serialize(w)}),this.eventEmitter.emit("draw",c.extend({type:"bar",value:g,index:k,meta:w,series:d,seriesIndex:e,axisX:m,axisY:n,chartRect:o,group:h,element:s},v))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:j.bounds,chartRect:o,axisX:m,axisY:n,svg:this.svg,options:a})}function e(a,b,d,e){c.Bar["super"].constructor.call(this,a,b,f,c.extend({},f,d),e)}var f={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,referenceValue:0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,showGridBackground:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};c.Bar=c.Base.extend({constructor:e,createChart:d})}(window,document,a),function(a,b,c){"use strict";function d(a,b,c){var d=b.x>a.x;return d&&"explode"===c||!d&&"implode"===c?"start":d&&"implode"===c||!d&&"explode"===c?"end":"middle"}function e(a){var b,e,f,h,i,j=c.normalizeData(this.data),k=[],l=a.startAngle;this.svg=c.createSvg(this.container,a.width,a.height,a.donut?a.classNames.chartDonut:a.classNames.chartPie),e=c.createChartRect(this.svg,a,g.padding),f=Math.min(e.width()/2,e.height()/2),i=a.total||j.normalized.series.reduce(function(a,b){return a+b},0);var m=c.quantity(a.donutWidth);"%"===m.unit&&(m.value*=f/100),f-=a.donut&&!a.donutSolid?m.value/2:0,h="outside"===a.labelPosition||a.donut&&!a.donutSolid?f:"center"===a.labelPosition?0:a.donutSolid?f-m.value/2:f/2,h+=a.labelOffset;var n={x:e.x1+e.width()/2,y:e.y2+e.height()/2},o=1===j.raw.series.filter(function(a){return a.hasOwnProperty("value")?0!==a.value:0!==a}).length;j.raw.series.forEach(function(a,b){k[b]=this.svg.elem("g",null,null)}.bind(this)),a.showLabel&&(b=this.svg.elem("g",null,null)),j.raw.series.forEach(function(e,g){if(0!==j.normalized.series[g]||!a.ignoreEmptyValues){k[g].attr({"ct:series-name":e.name}),k[g].addClass([a.classNames.series,e.className||a.classNames.series+"-"+c.alphaNumerate(g)].join(" "));var p=i>0?l+j.normalized.series[g]/i*360:0,q=Math.max(0,l-(0===g||o?0:.2));p-q>=359.99&&(p=q+359.99);var r,s,t,u=c.polarToCartesian(n.x,n.y,f,q),v=c.polarToCartesian(n.x,n.y,f,p),w=new c.Svg.Path(!a.donut||a.donutSolid).move(v.x,v.y).arc(f,f,0,p-l>180,0,u.x,u.y);a.donut?a.donutSolid&&(t=f-m.value,r=c.polarToCartesian(n.x,n.y,t,l-(0===g||o?0:.2)),s=c.polarToCartesian(n.x,n.y,t,p),w.line(r.x,r.y),w.arc(t,t,0,p-l>180,1,s.x,s.y)):w.line(n.x,n.y);var x=a.classNames.slicePie;a.donut&&(x=a.classNames.sliceDonut,a.donutSolid&&(x=a.classNames.sliceDonutSolid));var y=k[g].elem("path",{d:w.stringify()},x);if(y.attr({"ct:value":j.normalized.series[g],"ct:meta":c.serialize(e.meta)}),a.donut&&!a.donutSolid&&(y._node.style.strokeWidth=m.value+"px"),this.eventEmitter.emit("draw",{type:"slice",value:j.normalized.series[g],totalDataSum:i,index:g,meta:e.meta,series:e,group:k[g],element:y,path:w.clone(),center:n,radius:f,startAngle:l,endAngle:p}),a.showLabel){var z;z=1===j.raw.series.length?{x:n.x,y:n.y}:c.polarToCartesian(n.x,n.y,h,l+(p-l)/2);var A;A=j.normalized.labels&&!c.isFalseyButZero(j.normalized.labels[g])?j.normalized.labels[g]:j.normalized.series[g];var B=a.labelInterpolationFnc(A,g);if(B||0===B){var C=b.elem("text",{dx:z.x,dy:z.y,"text-anchor":d(n,z,a.labelDirection)},a.classNames.label).text(""+B);this.eventEmitter.emit("draw",{type:"label",index:g,group:b,element:C,text:""+B,x:z.x,y:z.y})}}l=p}}.bind(this)),this.eventEmitter.emit("created",{chartRect:e,svg:this.svg,options:a})}function f(a,b,d,e){c.Pie["super"].constructor.call(this,a,b,g,c.extend({},g,d),e)}var g={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",sliceDonutSolid:"ct-slice-donut-solid",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutSolid:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:c.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};c.Pie=c.Base.extend({constructor:f,createChart:e,determineAnchorPosition:d})}(window,document,a),a});
|
|
10
|
-
//# sourceMappingURL=chartist.min.js.map
|