Update stuff

This commit is contained in:
Henry Whitaker
2021-03-07 08:48:35 +00:00
parent 56e3b15e75
commit 744f045ccf
5 changed files with 14522 additions and 13927 deletions

View File

@@ -1,6 +1,6 @@
# Speedtest Tracker # Speedtest Tracker
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Stable?label=master&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Dev?label=dev&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.10.3-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE) [![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Stable?label=master&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Dev?label=dev&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.10.4-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
This program runs a speedtest check every hour and graphs the results. The back-end is written in [Laravel](https://laravel.com/) and the front-end uses [React](https://reactjs.org/). It uses the [Ookla's speedtest cli](https://www.speedtest.net/apps/cli) package to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results. This program runs a speedtest check every hour and graphs the results. The back-end is written in [Laravel](https://laravel.com/) and the front-end uses [React](https://reactjs.org/). It uses the [Ookla's speedtest cli](https://www.speedtest.net/apps/cli) package to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results.

View File

@@ -1,4 +1,10 @@
{ {
"1.10.4": [
{
"description": "Updated dependencies.",
"link": ""
}
],
"1.10.3": [ "1.10.3": [
{ {
"description": "Moved stuff into pages.", "description": "Moved stuff into pages.",

View File

@@ -7,7 +7,7 @@ return [
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
'version' => '1.10.3', 'version' => '1.10.4',
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

127
public/css/app.css vendored
View File

@@ -1,9 +1,9 @@
@import url(https://fonts.googleapis.com/css?family=Nunito);@charset "UTF-8"; @import url(https://fonts.googleapis.com/css?family=Nunito);@charset "UTF-8";
/*! /*!
* Bootstrap v4.5.3 (https://getbootstrap.com/) * Bootstrap v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors * Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc. * Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/ */
@@ -245,9 +245,8 @@ button {
border-radius: 0; border-radius: 0;
} }
button:focus { button:focus:not(:focus-visible) {
outline: 1px dotted; outline: 0;
outline: 5px auto -webkit-focus-ring-color;
} }
input, input,
@@ -2343,6 +2342,11 @@ textarea.form-control {
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.form-row > .col > .valid-tooltip,
.form-row > [class*=col-] > .valid-tooltip {
left: 5px;
}
.was-validated :valid ~ .valid-feedback, .was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip, .was-validated :valid ~ .valid-tooltip,
.is-valid ~ .valid-feedback, .is-valid ~ .valid-feedback,
@@ -2376,7 +2380,7 @@ textarea.form-control.is-valid {
.custom-select.is-valid { .custom-select.is-valid {
border-color: #38c172; border-color: #38c172;
padding-right: calc(0.75em + 2.3125rem); padding-right: calc(0.75em + 2.3125rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2338c172' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2338c172' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem) no-repeat;
} }
.was-validated .custom-select:valid:focus, .was-validated .custom-select:valid:focus,
@@ -2458,6 +2462,11 @@ textarea.form-control.is-valid {
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.form-row > .col > .invalid-tooltip,
.form-row > [class*=col-] > .invalid-tooltip {
left: 5px;
}
.was-validated :invalid ~ .invalid-feedback, .was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip, .was-validated :invalid ~ .invalid-tooltip,
.is-invalid ~ .invalid-feedback, .is-invalid ~ .invalid-feedback,
@@ -2491,7 +2500,7 @@ textarea.form-control.is-invalid {
.custom-select.is-invalid { .custom-select.is-invalid {
border-color: #e3342f; border-color: #e3342f;
padding-right: calc(0.75em + 2.3125rem); padding-right: calc(0.75em + 2.3125rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e3342f' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e3342f' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e3342f' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e3342f' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem) no-repeat;
} }
.was-validated .custom-select:invalid:focus, .was-validated .custom-select:invalid:focus,
@@ -3588,7 +3597,7 @@ input[type=button].btn-block {
.dropdown-item:focus { .dropdown-item:focus {
color: #16181b; color: #16181b;
text-decoration: none; text-decoration: none;
background-color: #f8f9fa; background-color: #e9ecef;
} }
.dropdown-item.active, .dropdown-item.active,
@@ -3600,7 +3609,7 @@ input[type=button].btn-block {
.dropdown-item.disabled, .dropdown-item.disabled,
.dropdown-item:disabled { .dropdown-item:disabled {
color: #6c757d; color: #adb5bd;
pointer-events: none; pointer-events: none;
background-color: transparent; background-color: transparent;
} }
@@ -3791,12 +3800,6 @@ input[type=button].btn-block {
z-index: 4; z-index: 4;
} }
.input-group > .form-control:not(:last-child),
.input-group > .custom-select:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .form-control:not(:first-child), .input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child) { .input-group > .custom-select:not(:first-child) {
border-top-left-radius: 0; border-top-left-radius: 0;
@@ -3809,14 +3812,23 @@ input[type=button].btn-block {
} }
.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label,
.input-group > .custom-file:not(:last-child) .custom-file-label::after { .input-group > .custom-file:not(:first-child) .custom-file-label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group:not(.has-validation) > .form-control:not(:last-child),
.input-group:not(.has-validation) > .custom-select:not(:last-child),
.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label::after {
border-top-right-radius: 0; border-top-right-radius: 0;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
} }
.input-group > .custom-file:not(:first-child) .custom-file-label { .input-group.has-validation > .form-control:nth-last-child(n+3),
border-top-left-radius: 0; .input-group.has-validation > .custom-select:nth-last-child(n+3),
border-bottom-left-radius: 0; .input-group.has-validation > .custom-file:nth-last-child(n+3) .custom-file-label::after {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
} }
.input-group-prepend, .input-group-prepend,
@@ -3916,8 +3928,10 @@ input[type=button].btn-block {
.input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text, .input-group > .input-group-prepend > .input-group-text,
.input-group > .input-group-append:not(:last-child) > .btn, .input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
.input-group > .input-group-append:not(:last-child) > .input-group-text, .input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
.input-group.has-validation > .input-group-append:nth-last-child(n+3) > .btn,
.input-group.has-validation > .input-group-append:nth-last-child(n+3) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
border-top-right-radius: 0; border-top-right-radius: 0;
@@ -4015,7 +4029,7 @@ input[type=button].btn-block {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
content: ""; content: "";
background: no-repeat 50%/50% 50%; background: 50%/50% 50% no-repeat;
} }
.custom-checkbox .custom-control-label::before { .custom-checkbox .custom-control-label::before {
@@ -4101,7 +4115,7 @@ input[type=button].btn-block {
line-height: 1.6; line-height: 1.6;
color: #495057; color: #495057;
vertical-align: middle; vertical-align: middle;
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat;
border: 1px solid #ced4da; border: 1px solid #ced4da;
border-radius: 0.25rem; border-radius: 0.25rem;
-webkit-appearance: none; -webkit-appearance: none;
@@ -4171,6 +4185,7 @@ input[type=button].btn-block {
width: 100%; width: 100%;
height: calc(1.6em + 0.75rem + 2px); height: calc(1.6em + 0.75rem + 2px);
margin: 0; margin: 0;
overflow: hidden;
opacity: 0; opacity: 0;
} }
@@ -4200,6 +4215,7 @@ input[type=button].btn-block {
z-index: 1; z-index: 1;
height: calc(1.6em + 0.75rem + 2px); height: calc(1.6em + 0.75rem + 2px);
padding: 0.375rem 0.75rem; padding: 0.375rem 0.75rem;
overflow: hidden;
font-weight: 400; font-weight: 400;
line-height: 1.6; line-height: 1.6;
color: #495057; color: #495057;
@@ -4236,7 +4252,7 @@ input[type=button].btn-block {
} }
.custom-range:focus { .custom-range:focus {
outline: none; outline: 0;
} }
.custom-range:focus::-webkit-slider-thumb { .custom-range:focus::-webkit-slider-thumb {
@@ -4430,11 +4446,8 @@ input[type=button].btn-block {
border-bottom: 1px solid #dee2e6; border-bottom: 1px solid #dee2e6;
} }
.nav-tabs .nav-item {
margin-bottom: -1px;
}
.nav-tabs .nav-link { .nav-tabs .nav-link {
margin-bottom: -1px;
border: 1px solid transparent; border: 1px solid transparent;
border-top-left-radius: 0.25rem; border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem; border-top-right-radius: 0.25rem;
@@ -4581,8 +4594,12 @@ input[type=button].btn-block {
height: 1.5em; height: 1.5em;
vertical-align: middle; vertical-align: middle;
content: ""; content: "";
background: no-repeat center center; background: 50%/100% 100% no-repeat;
background-size: 100% 100%; }
.navbar-nav-scroll {
max-height: 75vh;
overflow-y: auto;
} }
@media (max-width: 575.98px) { @media (max-width: 575.98px) {
@@ -4625,6 +4642,10 @@ input[type=button].btn-block {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.navbar-expand-sm .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-sm .navbar-collapse { .navbar-expand-sm .navbar-collapse {
display: flex !important; display: flex !important;
flex-basis: auto; flex-basis: auto;
@@ -4675,6 +4696,10 @@ input[type=button].btn-block {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.navbar-expand-md .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-md .navbar-collapse { .navbar-expand-md .navbar-collapse {
display: flex !important; display: flex !important;
flex-basis: auto; flex-basis: auto;
@@ -4725,6 +4750,10 @@ input[type=button].btn-block {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.navbar-expand-lg .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-lg .navbar-collapse { .navbar-expand-lg .navbar-collapse {
display: flex !important; display: flex !important;
flex-basis: auto; flex-basis: auto;
@@ -4775,6 +4804,10 @@ input[type=button].btn-block {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.navbar-expand-xl .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-xl .navbar-collapse { .navbar-expand-xl .navbar-collapse {
display: flex !important; display: flex !important;
flex-basis: auto; flex-basis: auto;
@@ -4822,6 +4855,10 @@ input[type=button].btn-block {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.navbar-expand .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand .navbar-collapse { .navbar-expand .navbar-collapse {
display: flex !important; display: flex !important;
flex-basis: auto; flex-basis: auto;
@@ -5186,16 +5223,12 @@ input[type=button].btn-block {
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.breadcrumb-item {
display: flex;
}
.breadcrumb-item + .breadcrumb-item { .breadcrumb-item + .breadcrumb-item {
padding-left: 0.5rem; padding-left: 0.5rem;
} }
.breadcrumb-item + .breadcrumb-item::before { .breadcrumb-item + .breadcrumb-item::before {
display: inline-block; float: left;
padding-right: 0.5rem; padding-right: 0.5rem;
color: #6c757d; color: #6c757d;
content: "/"; content: "/";
@@ -5692,8 +5725,8 @@ a.badge-dark.focus {
} }
.progress-bar-animated { .progress-bar-animated {
-webkit-animation: progress-bar-stripes 1s linear infinite; -webkit-animation: 1s linear infinite progress-bar-stripes;
animation: progress-bar-stripes 1s linear infinite; animation: 1s linear infinite progress-bar-stripes;
} }
@media (prefers-reduced-motion: reduce) { @media (prefers-reduced-motion: reduce) {
@@ -6797,7 +6830,7 @@ a.close.disabled {
display: inline-block; display: inline-block;
width: 20px; width: 20px;
height: 20px; height: 20px;
background: no-repeat 50%/100% 100%; background: 50%/100% 100% no-repeat;
} }
.carousel-control-prev-icon { .carousel-control-prev-icon {
@@ -6881,8 +6914,8 @@ a.close.disabled {
border: 0.25em solid currentColor; border: 0.25em solid currentColor;
border-right-color: transparent; border-right-color: transparent;
border-radius: 50%; border-radius: 50%;
-webkit-animation: spinner-border 0.75s linear infinite; -webkit-animation: 0.75s linear infinite spinner-border;
animation: spinner-border 0.75s linear infinite; animation: 0.75s linear infinite spinner-border;
} }
.spinner-border-sm { .spinner-border-sm {
@@ -6921,8 +6954,8 @@ a.close.disabled {
background-color: currentColor; background-color: currentColor;
border-radius: 50%; border-radius: 50%;
opacity: 0; opacity: 0;
-webkit-animation: spinner-grow 0.75s linear infinite; -webkit-animation: 0.75s linear infinite spinner-grow;
animation: spinner-grow 0.75s linear infinite; animation: 0.75s linear infinite spinner-grow;
} }
.spinner-grow-sm { .spinner-grow-sm {
@@ -6930,6 +6963,14 @@ a.close.disabled {
height: 1rem; height: 1rem;
} }
@media (prefers-reduced-motion: reduce) {
.spinner-border,
.spinner-grow {
-webkit-animation-duration: 1.5s;
animation-duration: 1.5s;
}
}
.align-baseline { .align-baseline {
vertical-align: baseline !important; vertical-align: baseline !important;
} }

27814
public/js/app.js vendored

File diff suppressed because one or more lines are too long