From bdb273e9f87fa6e1cc9337929e9fe3d5435633b6 Mon Sep 17 00:00:00 2001 From: Henry Whitaker Date: Fri, 11 Sep 2020 01:13:38 +0100 Subject: [PATCH] Added v1.9.7 files --- README.md | 2 +- conf/site/README.md | 2 +- conf/site/app/Helpers/SettingsHelper.php | 48 +-- .../Http/Controllers/SpeedtestController.php | 78 +++-- conf/site/changelog.json | 14 + conf/site/composer.json | 2 +- conf/site/composer.lock | 313 +++++++++--------- conf/site/config/speedtest.php | 2 +- ..._09_10_231121_add_widget_card_settings.php | 56 ++++ conf/site/package-lock.json | 25 +- conf/site/package.json | 2 +- .../js/components/Graphics/LatestResults.js | 12 +- .../js/components/Graphics/Widget.js | 101 ++++-- .../components/Settings/SettingWithModal.js | 6 +- .../js/components/Settings/Settings.js | 26 +- conf/site/tests/Feature/APISpeedtestTest.php | 15 +- .../SpeedtestController/LatestTest.php | 5 +- 17 files changed, 460 insertions(+), 249 deletions(-) create mode 100644 conf/site/database/migrations/2020_09_10_231121_add_widget_card_settings.php diff --git a/README.md b/README.md index 998be755..75992dcf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 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.9.6-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.9.7-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 [Ookla's Speedtest cli](https://www.speedtest.net/apps/cli) to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results. diff --git a/conf/site/README.md b/conf/site/README.md index c38a8ec5..ccd742fc 100644 --- a/conf/site/README.md +++ b/conf/site/README.md @@ -1,6 +1,6 @@ # 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.9.6-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.9.7-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. diff --git a/conf/site/app/Helpers/SettingsHelper.php b/conf/site/app/Helpers/SettingsHelper.php index 809e0149..7e1ff0e1 100644 --- a/conf/site/app/Helpers/SettingsHelper.php +++ b/conf/site/app/Helpers/SettingsHelper.php @@ -7,7 +7,8 @@ use App\Setting; use Cache; use Carbon\Carbon; -class SettingsHelper { +class SettingsHelper +{ /** * Get a Setting object by name @@ -19,9 +20,9 @@ class SettingsHelper { { $name = Setting::where('name', $name)->get(); - if(sizeof($name) == 0) { + if (sizeof($name) == 0) { return false; - } else if(sizeof($name) == 1) { + } else if (sizeof($name) == 1) { return $name[0]; } else { $name = $name->keyBy('name'); @@ -40,11 +41,11 @@ class SettingsHelper { { $setting = SettingsHelper::get($name); - if($value === false) { + if ($value === false) { $value = "0"; } - if($setting !== false) { + if ($setting !== false) { $setting->value = $value; $setting->save(); } else { @@ -54,7 +55,7 @@ class SettingsHelper { ]); } - if($name == 'show_failed_tests_on_graph') { + if ($name == 'show_failed_tests_on_graph') { Cache::flush(); } @@ -69,13 +70,13 @@ class SettingsHelper { public static function getBase() { $base = env('BASE_PATH', '/'); - if($base == '') { + if ($base == '') { $base = '/'; } else { - if($base[0] != '/') { + if ($base[0] != '/') { $base = '/' . $base; } - if($base[-1] != '/') { + if ($base[-1] != '/') { $base = $base . '/'; } } @@ -95,7 +96,7 @@ class SettingsHelper { // Try exact key $val = exec('echo $' . $key); - if($val == "") { + if ($val == "") { array_push($results, true); } else { array_push($results, false); @@ -104,25 +105,25 @@ class SettingsHelper { // Try key all caps $val = exec('echo $' . strtoupper($key)); - if($val == "") { + if ($val == "") { array_push($results, true); } else { array_push($results, false); } - if(env($key, false) == false) { + if (env($key, false) == false) { array_push($results, true); } else { array_push($results, false); } - if(env(strtoupper($key), false) == false) { + if (env(strtoupper($key), false) == false) { array_push($results, true); } else { array_push($results, false); } - if(in_array(false, $results)) { + if (in_array(false, $results)) { return false; } @@ -138,6 +139,11 @@ class SettingsHelper { { return [ 'base' => SettingsHelper::getBase(), + 'widgets' => [ + 'show_average' => (bool)SettingsHelper::get('show_average')->value, + 'show_max' => (bool)SettingsHelper::get('show_max')->value, + 'show_min' => (bool)SettingsHelper::get('show_min')->value, + ], 'graphs' => [ 'download_upload_graph_enabled' => SettingsHelper::get('download_upload_graph_enabled'), 'download_upload_graph_width' => SettingsHelper::get('download_upload_graph_width'), @@ -163,15 +169,15 @@ class SettingsHelper { */ public static function testNotification($agent = true) { - $agents = [ 'slack', 'telegram' ]; + $agents = ['slack', 'telegram']; - if($agent === true) { + if ($agent === true) { event(new TestNotificationEvent($agents)); return true; } - if(in_array($agent, $agents)) { - event(new TestNotificationEvent([ $agent ])); + if (in_array($agent, $agents)) { + event(new TestNotificationEvent([$agent])); return true; } @@ -188,14 +194,14 @@ class SettingsHelper { 'telegram_chat_id' => SettingsHelper::get('telegram_chat_id')->value, ]; - foreach($settings as $key => $value) { + foreach ($settings as $key => $value) { $key = 'integrations.' . $key; - if($value === "") { + if ($value === "") { $value = null; } - config()->set([ $key => $value ]); + config()->set([$key => $value]); } } } diff --git a/conf/site/app/Http/Controllers/SpeedtestController.php b/conf/site/app/Http/Controllers/SpeedtestController.php index 5a34f3b4..88937fcc 100644 --- a/conf/site/app/Http/Controllers/SpeedtestController.php +++ b/conf/site/app/Http/Controllers/SpeedtestController.php @@ -18,9 +18,9 @@ class SpeedtestController extends Controller { public function __construct() { - if((bool)SettingsHelper::get('auth')->value === true) { + if ((bool)SettingsHelper::get('auth')->value === true) { $this->middleware('auth:api') - ->only([ 'run', 'delete', 'deleteAll' ]); + ->only(['run', 'delete', 'deleteAll']); } } @@ -32,7 +32,7 @@ class SpeedtestController extends Controller public function index() { $data = Speedtest::orderBy('created_at', 'desc') - ->paginate(); + ->paginate(); return response()->json([ 'method' => 'index of speedtests', @@ -49,12 +49,12 @@ class SpeedtestController extends Controller public function time($days) { $rule = [ - 'days' => [ 'required', 'integer' ], + 'days' => ['required', 'integer'], ]; - $validator = Validator::make([ 'days' => $days ], $rule); + $validator = Validator::make(['days' => $days], $rule); - if($validator->fails()) { + if ($validator->fails()) { return response()->json([ 'method' => 'get speedtests in last x days', 'error' => $validator->errors(), @@ -65,16 +65,16 @@ class SpeedtestController extends Controller $data = Cache::remember('speedtest-days-' . $days, $ttl, function () use ($days) { $showFailed = (bool)SettingsHelper::get('show_failed_tests_on_graph')->value; - if($showFailed === true) { + if ($showFailed === true) { return Speedtest::where('created_at', '>=', Carbon::now()->subDays($days)) - ->orderBy('created_at', 'asc') - ->get(); + ->orderBy('created_at', 'asc') + ->get(); } return Speedtest::where('created_at', '>=', Carbon::now()->subDays($days)) - ->where('failed', false) - ->orderBy('created_at', 'asc') - ->get(); + ->where('failed', false) + ->orderBy('created_at', 'asc') + ->get(); }); return response()->json([ @@ -93,12 +93,12 @@ class SpeedtestController extends Controller public function fail($days) { $rule = [ - 'days' => [ 'required', 'integer' ], + 'days' => ['required', 'integer'], ]; - $validator = Validator::make([ 'days' => $days ], $rule); + $validator = Validator::make(['days' => $days], $rule); - if($validator->fails()) { + if ($validator->fails()) { return response()->json([ 'method' => 'get speedtests in last x days', 'error' => $validator->errors(), @@ -122,20 +122,38 @@ class SpeedtestController extends Controller public function latest() { $data = SpeedtestHelper::latest(); - $avg = Speedtest::select(DB::raw('AVG(ping) as ping, AVG(download) as download, AVG(upload) as upload')) - ->where('failed', false) - ->get(); - $max = Speedtest::select(DB::raw('MAX(ping) as ping, MAX(download) as download, MAX(upload) as upload')) - ->where('failed', false) - ->get(); - if($data) { - return response()->json([ - 'method' => 'get latest speedtest', - 'data' => $data, - 'average' => $avg[0], - 'max' => $max[0], - ], 200); + $response = [ + 'method' => 'get latest speedtest', + 'data' => $data, + ]; + + if (SettingsHelper::get('show_average')) { + $avg = Speedtest::select(DB::raw('AVG(ping) as ping, AVG(download) as download, AVG(upload) as upload')) + ->where('failed', false) + ->first() + ->toArray(); + $response['average'] = $avg; + } + + if (SettingsHelper::get('show_max')) { + $max = Speedtest::select(DB::raw('MAX(ping) as ping, MAX(download) as download, MAX(upload) as upload')) + ->where('failed', false) + ->first() + ->toArray(); + $response['maximum'] = $max; + } + + if (SettingsHelper::get('show_average')) { + $min = Speedtest::select(DB::raw('MIN(ping) as ping, MIN(download) as download, MIN(upload) as upload')) + ->where('failed', false) + ->first() + ->toArray(); + $response['minimum'] = $min; + } + + if ($data) { + return response()->json($response, 200); } else { return response()->json([ 'method' => 'get latest speedtest', @@ -158,7 +176,7 @@ class SpeedtestController extends Controller 'method' => 'run speedtest', 'data' => 'a new speedtest has been added to the queue' ], 200); - } catch(Exception $e) { + } catch (Exception $e) { return response()->json([ 'method' => 'run speedtest', 'error' => $e @@ -175,7 +193,7 @@ class SpeedtestController extends Controller { $ret = SpeedtestHelper::deleteAll(); - if($ret['success']) { + if ($ret['success']) { return response()->json([ 'method' => 'delete all speedtests from the database', 'success' => true diff --git a/conf/site/changelog.json b/conf/site/changelog.json index bb9dcfa9..2227b9da 100644 --- a/conf/site/changelog.json +++ b/conf/site/changelog.json @@ -1,4 +1,18 @@ { + "1.9.7": [ + { + "description": "Added option to display minimum values on the top widgets.", + "link": "" + }, + { + "description": "New general settings section.", + "link": "" + }, + { + "description": "Updated dependencies.", + "link": "" + } + ], "1.9.6": [ { "description": "Clear the cache on restore.", diff --git a/conf/site/composer.json b/conf/site/composer.json index 603eadc2..fce78c78 100644 --- a/conf/site/composer.json +++ b/conf/site/composer.json @@ -15,7 +15,7 @@ "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0", "henrywhitaker3/healthchecks-io": "^1.0", - "laravel-notification-channels/telegram": "^0.4.0", + "laravel-notification-channels/telegram": "^0.5.0", "laravel/framework": "^7.0", "laravel/slack-notification-channel": "^2.0", "laravel/tinker": "^2.0", diff --git a/conf/site/composer.lock b/conf/site/composer.lock index 1f1de756..17ea4806 100644 --- a/conf/site/composer.lock +++ b/conf/site/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "94fffe1900e25fd9ab781c8dd9ebab35", + "content-hash": "5a60bc84653bdfda71c28e1264ed84e3", "packages": [ { "name": "asm89/stack-cors", @@ -661,16 +661,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.19", + "version": "2.1.20", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "840d5603eb84cc81a6a0382adac3293e57c1c64c" + "reference": "f46887bc48db66c7f38f668eb7d6ae54583617ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/840d5603eb84cc81a6a0382adac3293e57c1c64c", - "reference": "840d5603eb84cc81a6a0382adac3293e57c1c64c", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f46887bc48db66c7f38f668eb7d6ae54583617ff", + "reference": "f46887bc48db66c7f38f668eb7d6ae54583617ff", "shasum": "" }, "require": { @@ -715,7 +715,7 @@ "validation", "validator" ], - "time": "2020-08-08T21:28:19+00:00" + "time": "2020-09-06T13:44:32+00:00" }, { "name": "fideloper/proxy", @@ -773,33 +773,30 @@ }, { "name": "fruitcake/laravel-cors", - "version": "v2.0.1", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "dbfc311b25d4873c3c2382b26860be3567492bd6" + "reference": "4b19bfc3bd422948af37a42a62fad7f49025894a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/dbfc311b25d4873c3c2382b26860be3567492bd6", - "reference": "dbfc311b25d4873c3c2382b26860be3567492bd6", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/4b19bfc3bd422948af37a42a62fad7f49025894a", + "reference": "4b19bfc3bd422948af37a42a62fad7f49025894a", "shasum": "" }, "require": { "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^5.6|^6.0|^7.0|^8.0", - "illuminate/support": "^5.6|^6.0|^7.0|^8.0", - "php": ">=7.1", - "symfony/http-foundation": "^4.0|^5.0", - "symfony/http-kernel": "^4.0|^5.0" + "illuminate/contracts": "^6|^7|^8", + "illuminate/support": "^6|^7|^8", + "php": ">=7.2", + "symfony/http-foundation": "^4|^5", + "symfony/http-kernel": "^4.3.4|^5" }, "require-dev": { - "laravel/framework": "^5.5|^6.0|^7.0|^8.0", - "orchestra/dusk-updater": "^1.2", - "orchestra/testbench": "^3.5|^4.0|^5.0|^6.0", - "orchestra/testbench-dusk": "^5.1", - "phpro/grumphp": "^0.16|^0.17", - "phpunit/phpunit": "^6.0|^7.0|^8.0", + "laravel/framework": "^6|^7|^8", + "orchestra/testbench-dusk": "^4|^5|^6", + "phpunit/phpunit": "^6|^7|^8", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", @@ -845,7 +842,7 @@ "type": "github" } ], - "time": "2020-05-31T07:30:16+00:00" + "time": "2020-09-07T11:48:52+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1103,23 +1100,23 @@ }, { "name": "laravel-notification-channels/telegram", - "version": "0.4.1", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/laravel-notification-channels/telegram.git", - "reference": "55a9d8bce07f456e0c675909dba9b21acda376d6" + "reference": "c1e12a953ecb5fec0c285bc74950028ddd085fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-notification-channels/telegram/zipball/55a9d8bce07f456e0c675909dba9b21acda376d6", - "reference": "55a9d8bce07f456e0c675909dba9b21acda376d6", + "url": "https://api.github.com/repos/laravel-notification-channels/telegram/zipball/c1e12a953ecb5fec0c285bc74950028ddd085fc0", + "reference": "c1e12a953ecb5fec0c285bc74950028ddd085fc0", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.2 || ^7.0", - "illuminate/notifications": "^5.5 || ^6.0 || ^7.0", - "illuminate/support": "^5.5 || ^6.0 || ^7.0", + "illuminate/notifications": "^5.5 || ^6.0 || ^7.0 || ^8.0", + "illuminate/support": "^5.5 || ^6.0 || ^7.0 || ^8.0", "php": ">=7.1" }, "require-dev": { @@ -1160,20 +1157,20 @@ "telegram notification", "telegram notifications channel" ], - "time": "2020-07-06T19:01:02+00:00" + "time": "2020-09-07T19:29:19+00:00" }, { "name": "laravel/framework", - "version": "v7.27.0", + "version": "v7.28.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "17777a92da9b3cf0026f26462d289d596420e6d0" + "reference": "f7493ab717ca2a9598b1db2d6a3bae8ac8c755e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/17777a92da9b3cf0026f26462d289d596420e6d0", - "reference": "17777a92da9b3cf0026f26462d289d596420e6d0", + "url": "https://api.github.com/repos/laravel/framework/zipball/f7493ab717ca2a9598b1db2d6a3bae8ac8c755e8", + "reference": "f7493ab717ca2a9598b1db2d6a3bae8ac8c755e8", "shasum": "" }, "require": { @@ -1318,7 +1315,7 @@ "framework", "laravel" ], - "time": "2020-09-01T13:41:48+00:00" + "time": "2020-09-09T15:02:46+00:00" }, { "name": "laravel/slack-notification-channel", @@ -1443,16 +1440,16 @@ }, { "name": "laravel/ui", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "fb1404f04ece6eee128e3fb750d3a1e064238b33" + "reference": "2ccaa3b821ea8ac7e05393b946d0578bdb46099b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/fb1404f04ece6eee128e3fb750d3a1e064238b33", - "reference": "fb1404f04ece6eee128e3fb750d3a1e064238b33", + "url": "https://api.github.com/repos/laravel/ui/zipball/2ccaa3b821ea8ac7e05393b946d0578bdb46099b", + "reference": "2ccaa3b821ea8ac7e05393b946d0578bdb46099b", "shasum": "" }, "require": { @@ -1494,20 +1491,20 @@ "laravel", "ui" ], - "time": "2020-08-25T18:30:43+00:00" + "time": "2020-09-09T12:07:59+00:00" }, { "name": "lcobucci/jwt", - "version": "3.3.1", + "version": "3.3.3", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" + "reference": "c1123697f6a2ec29162b82f170dd4a491f524773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/c1123697f6a2ec29162b82f170dd4a491f524773", + "reference": "c1123697f6a2ec29162b82f170dd4a491f524773", "shasum": "" }, "require": { @@ -1549,7 +1546,17 @@ "JWS", "jwt" ], - "time": "2019-05-24T18:30:49+00:00" + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2020-08-20T13:22:28+00:00" }, { "name": "league/commonmark", @@ -1944,16 +1951,16 @@ }, { "name": "nesbot/carbon", - "version": "2.39.0", + "version": "2.39.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "0a41ea7f7fedacf307b7a339800e10356a042918" + "reference": "7af467873250583cc967a59ee9df29fabab193c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0a41ea7f7fedacf307b7a339800e10356a042918", - "reference": "0a41ea7f7fedacf307b7a339800e10356a042918", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7af467873250583cc967a59ee9df29fabab193c1", + "reference": "7af467873250583cc967a59ee9df29fabab193c1", "shasum": "" }, "require": { @@ -1966,7 +1973,7 @@ "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.8", + "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12.35", "phpunit/phpunit": "^7.5 || ^8.0", @@ -2029,7 +2036,7 @@ "type": "tidelift" } ], - "time": "2020-08-24T12:35:58+00:00" + "time": "2020-09-04T13:11:37+00:00" }, { "name": "nikic/php-parser", @@ -2085,16 +2092,16 @@ }, { "name": "opis/closure", - "version": "3.5.6", + "version": "3.5.7", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "e8d34df855b0a0549a300cb8cb4db472556e8aa9" + "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/e8d34df855b0a0549a300cb8cb4db472556e8aa9", - "reference": "e8d34df855b0a0549a300cb8cb4db472556e8aa9", + "url": "https://api.github.com/repos/opis/closure/zipball/4531e53afe2fc660403e76fb7644e95998bff7bf", + "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf", "shasum": "" }, "require": { @@ -2142,7 +2149,7 @@ "serialization", "serialize" ], - "time": "2020-08-11T08:46:50+00:00" + "time": "2020-09-06T17:02:15+00:00" }, { "name": "paragonie/random_compat", @@ -3077,16 +3084,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v2.1.3", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14" + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5e20b83385a77593259c9f8beb2c43cd03b2ac14", - "reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", "shasum": "" }, "require": { @@ -3095,7 +3102,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -3137,7 +3144,7 @@ "type": "tidelift" } ], - "time": "2020-06-06T08:49:21+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/error-handler", @@ -3298,16 +3305,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.1.3", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b" + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f6f613d74cfc5a623fc36294d3451eb7fa5a042b", - "reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", "shasum": "" }, "require": { @@ -3320,7 +3327,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -3370,7 +3377,7 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:23:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/finder", @@ -4176,16 +4183,16 @@ }, { "name": "symfony/polyfill-php56", - "version": "v1.15.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "d51ec491c8ddceae7dca8dd6c7e30428f543f37d" + "reference": "13df84e91cd168f247c2f2ec82cc0fa24901c011" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/d51ec491c8ddceae7dca8dd6c7e30428f543f37d", - "reference": "d51ec491c8ddceae7dca8dd6c7e30428f543f37d", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/13df84e91cd168f247c2f2ec82cc0fa24901c011", + "reference": "13df84e91cd168f247c2f2ec82cc0fa24901c011", "shasum": "" }, "require": { @@ -4195,7 +4202,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4242,7 +4253,7 @@ "type": "tidelift" } ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php70", @@ -4552,16 +4563,16 @@ }, { "name": "symfony/polyfill-util", - "version": "v1.15.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", - "reference": "d8e76c104127675d0ea3df3be0f2ae24a8619027" + "reference": "46b910c71e9828f8ec2aa7a0314de1130d9b295a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/d8e76c104127675d0ea3df3be0f2ae24a8619027", - "reference": "d8e76c104127675d0ea3df3be0f2ae24a8619027", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/46b910c71e9828f8ec2aa7a0314de1130d9b295a", + "reference": "46b910c71e9828f8ec2aa7a0314de1130d9b295a", "shasum": "" }, "require": { @@ -4570,7 +4581,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4614,7 +4629,7 @@ "type": "tidelift" } ], - "time": "2020-03-02T11:55:35+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/process", @@ -4774,16 +4789,16 @@ }, { "name": "symfony/service-contracts", - "version": "v2.1.3", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", "shasum": "" }, "require": { @@ -4796,7 +4811,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -4846,7 +4861,7 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:23:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/string", @@ -5027,16 +5042,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v2.1.3", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "616a9773c853097607cf9dd6577d5b143ffdcd63" + "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/616a9773c853097607cf9dd6577d5b143ffdcd63", - "reference": "616a9773c853097607cf9dd6577d5b143ffdcd63", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/77ce1c3627c9f39643acd9af086631f842c50c4d", + "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d", "shasum": "" }, "require": { @@ -5048,7 +5063,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -5098,7 +5113,7 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:23:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/var-dumper", @@ -5241,32 +5256,32 @@ }, { "name": "tymon/jwt-auth", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/tymondesigns/jwt-auth.git", - "reference": "d4cf9fd2b98790712d3e6cd1094e5ff018431f19" + "reference": "b927137cd5bd4d2f5d48a1ca71bc85006b99dbae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/d4cf9fd2b98790712d3e6cd1094e5ff018431f19", - "reference": "d4cf9fd2b98790712d3e6cd1094e5ff018431f19", + "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/b927137cd5bd4d2f5d48a1ca71bc85006b99dbae", + "reference": "b927137cd5bd4d2f5d48a1ca71bc85006b99dbae", "shasum": "" }, "require": { - "illuminate/auth": "^5.2|^6|^7", - "illuminate/contracts": "^5.2|^6|^7", - "illuminate/http": "^5.2|^6|^7", - "illuminate/support": "^5.2|^6|^7", + "illuminate/auth": "^5.2|^6|^7|^8", + "illuminate/contracts": "^5.2|^6|^7|^8", + "illuminate/http": "^5.2|^6|^7|^8", + "illuminate/support": "^5.2|^6|^7|^8", "lcobucci/jwt": "^3.2", "namshi/jose": "^7.0", "nesbot/carbon": "^1.0|^2.0", "php": "^5.5.9|^7.0" }, "require-dev": { - "illuminate/console": "^5.2|^6|^7", - "illuminate/database": "^5.2|^6|^7", - "illuminate/routing": "^5.2|^6|^7", + "illuminate/console": "^5.2|^6|^7|^8", + "illuminate/database": "^5.2|^6|^7|^8", + "illuminate/routing": "^5.2|^6|^7|^8", "mockery/mockery": ">=0.9.9", "phpunit/phpunit": "~4.8|~6.0" }, @@ -5317,7 +5332,7 @@ "type": "patreon" } ], - "time": "2020-03-04T11:21:28+00:00" + "time": "2020-09-08T12:29:20+00:00" }, { "name": "vlucas/phpdotenv", @@ -5467,42 +5482,43 @@ "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v2.8.0", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "ba95d18ef55c91295250ae8b7bfa73d8fb866b9b" + "reference": "affa55122f83575888d4ebf1728992686e8223de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/ba95d18ef55c91295250ae8b7bfa73d8fb866b9b", - "reference": "ba95d18ef55c91295250ae8b7bfa73d8fb866b9b", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/affa55122f83575888d4ebf1728992686e8223de", + "reference": "affa55122f83575888d4ebf1728992686e8223de", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.0.6", "composer/composer": "^1.6 || ^2.0@dev", "doctrine/dbal": "~2.3", - "illuminate/console": "^5.5 || ^6 || ^7", - "illuminate/filesystem": "^5.5 || ^6 || ^7", - "illuminate/support": "^5.5 || ^6 || ^7", + "ext-json": "*", + "illuminate/console": "^6 || ^7 || ^8", + "illuminate/filesystem": "^6 || ^7 || ^8", + "illuminate/support": "^6 || ^7 || ^8", "php": ">=7.2", "phpdocumentor/type-resolver": "^1.1.0" }, "require-dev": { - "illuminate/config": "^5.5 || ^6 || ^7", - "illuminate/view": "^5.5 || ^6 || ^7", + "friendsofphp/php-cs-fixer": "^2", + "illuminate/config": "^6 || ^7 || ^8", + "illuminate/view": "^6 || ^7 || ^8", "mockery/mockery": "^1.3", - "orchestra/testbench": "^3.5 || ^4 || ^5", - "phpro/grumphp": "^0.19.0", + "orchestra/testbench": "^4 || ^5 || ^6", + "phpunit/phpunit": "^8.5 || ^9", "spatie/phpunit-snapshot-assertions": "^1.4 || ^2.2 || ^3", - "squizlabs/php_codesniffer": "^3.5", "vimeo/psalm": "^3.12" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" }, "laravel": { "providers": [ @@ -5543,7 +5559,7 @@ "type": "github" } ], - "time": "2020-08-10T08:22:48+00:00" + "time": "2020-09-07T07:36:37+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -6023,21 +6039,21 @@ }, { "name": "facade/flare-client-php", - "version": "1.3.4", + "version": "1.3.5", "source": { "type": "git", "url": "https://github.com/facade/flare-client-php.git", - "reference": "0eeb0de4fc1078433f0915010bd8f41e998adcb4" + "reference": "25907a113bfc212a38d458ae365bfb902b4e7fb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/0eeb0de4fc1078433f0915010bd8f41e998adcb4", - "reference": "0eeb0de4fc1078433f0915010bd8f41e998adcb4", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/25907a113bfc212a38d458ae365bfb902b4e7fb8", + "reference": "25907a113bfc212a38d458ae365bfb902b4e7fb8", "shasum": "" }, "require": { "facade/ignition-contracts": "~1.0", - "illuminate/pipeline": "^5.5|^6.0|^7.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", "php": "^7.1", "symfony/http-foundation": "^3.3|^4.1|^5.0", "symfony/mime": "^3.4|^4.0|^5.1", @@ -6081,20 +6097,20 @@ "type": "github" } ], - "time": "2020-07-13T23:25:57+00:00" + "time": "2020-08-26T18:06:23+00:00" }, { "name": "facade/ignition", - "version": "2.3.6", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "d7d05dba5a0bdbf018a2cb7be268f22f5d73eb81" + "reference": "b364db8860a63c1fb58b72b9718863c21df08762" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/d7d05dba5a0bdbf018a2cb7be268f22f5d73eb81", - "reference": "d7d05dba5a0bdbf018a2cb7be268f22f5d73eb81", + "url": "https://api.github.com/repos/facade/ignition/zipball/b364db8860a63c1fb58b72b9718863c21df08762", + "reference": "b364db8860a63c1fb58b72b9718863c21df08762", "shasum": "" }, "require": { @@ -6113,7 +6129,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^2.14", "mockery/mockery": "^1.3", - "orchestra/testbench": "5.0", + "orchestra/testbench": "^5.0|^6.0", "psalm/plugin-laravel": "^1.2" }, "suggest": { @@ -6153,7 +6169,7 @@ "laravel", "page" ], - "time": "2020-08-10T13:50:38+00:00" + "time": "2020-09-06T19:26:27+00:00" }, { "name": "facade/ignition-contracts", @@ -6822,25 +6838,25 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -6867,7 +6883,7 @@ "reflection", "static analysis" ], - "time": "2020-04-27T09:25:28+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -6924,25 +6940,24 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "30441f2752e493c639526b215ed81d54f369d693" + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/30441f2752e493c639526b215ed81d54f369d693", - "reference": "30441f2752e493c639526b215ed81d54f369d693", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", "shasum": "" }, "require": { - "php": "^7.2", + "php": "^7.2 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.2", - "mockery/mockery": "~1" + "ext-tokenizer": "*" }, "type": "library", "extra": { @@ -6966,7 +6981,7 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-06-19T20:22:09+00:00" + "time": "2020-06-27T10:12:23+00:00" }, { "name": "phpspec/prophecy", @@ -7435,16 +7450,16 @@ }, { "name": "scrivo/highlight.php", - "version": "v9.18.1.1", + "version": "v9.18.1.2", "source": { "type": "git", "url": "https://github.com/scrivo/highlight.php.git", - "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558" + "reference": "efb6e445494a9458aa59b0af5edfa4bdcc6809d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/52fc21c99fd888e33aed4879e55a3646f8d40558", - "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558", + "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/efb6e445494a9458aa59b0af5edfa4bdcc6809d9", + "reference": "efb6e445494a9458aa59b0af5edfa4bdcc6809d9", "shasum": "" }, "require": { @@ -7506,7 +7521,7 @@ "type": "github" } ], - "time": "2020-03-02T05:59:21+00:00" + "time": "2020-08-27T03:24:44+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", diff --git a/conf/site/config/speedtest.php b/conf/site/config/speedtest.php index 1c0b1398..a9c98a5e 100644 --- a/conf/site/config/speedtest.php +++ b/conf/site/config/speedtest.php @@ -7,7 +7,7 @@ return [ |-------------------------------------------------------------------------- */ - 'version' => '1.9.6', + 'version' => '1.9.7', /* |-------------------------------------------------------------------------- diff --git a/conf/site/database/migrations/2020_09_10_231121_add_widget_card_settings.php b/conf/site/database/migrations/2020_09_10_231121_add_widget_card_settings.php new file mode 100644 index 00000000..cc95f30e --- /dev/null +++ b/conf/site/database/migrations/2020_09_10_231121_add_widget_card_settings.php @@ -0,0 +1,56 @@ + 'show_average', + 'value' => true, + 'description' => 'If enabled, the average value for speedtests will be shown in the widgets.' + ]); + } + + if (!SettingsHelper::get('show_max')) { + Setting::create([ + 'name' => 'show_max', + 'value' => true, + 'description' => 'If enabled, the maximum value for speedtests will be shown in the widgets.' + ]); + } + + if (!SettingsHelper::get('show_min')) { + Setting::create([ + 'name' => 'show_min', + 'value' => true, + 'description' => 'If enabled, the minimum value for speedtests will be shown in the widgets.' + ]); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Setting::whereIn('name', [ + 'show_average', + 'show_max', + 'show_min', + ])->delete(); + } +} diff --git a/conf/site/package-lock.json b/conf/site/package-lock.json index 08c27af2..166827f5 100644 --- a/conf/site/package-lock.json +++ b/conf/site/package-lock.json @@ -9032,18 +9032,24 @@ } }, "sass-loader": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.1.tgz", - "integrity": "sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.2.tgz", + "integrity": "sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg==", "dev": true, "requires": { "klona": "^2.0.3", "loader-utils": "^2.0.0", "neo-async": "^2.6.2", - "schema-utils": "^2.7.0", + "schema-utils": "^2.7.1", "semver": "^7.3.2" }, "dependencies": { + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, "loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -9055,6 +9061,17 @@ "json5": "^2.1.2" } }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", diff --git a/conf/site/package.json b/conf/site/package.json index 48bdbe81..5884869a 100644 --- a/conf/site/package.json +++ b/conf/site/package.json @@ -22,7 +22,7 @@ "react-dom": "^16.2.0", "resolve-url-loader": "^3.1.0", "sass": "^1.26.10", - "sass-loader": "^10.0.1" + "sass-loader": "^10.0.2" }, "dependencies": { "@babel/plugin-proposal-class-properties": "^7.10.4", diff --git a/conf/site/resources/js/components/Graphics/LatestResults.js b/conf/site/resources/js/components/Graphics/LatestResults.js index 31a6d04f..adc406bf 100644 --- a/conf/site/resources/js/components/Graphics/LatestResults.js +++ b/conf/site/resources/js/components/Graphics/LatestResults.js @@ -131,9 +131,7 @@ export default class LatestResults extends Component { > { - if(this.props.title != this.state.title || this.props.value != this.state.value || this.props.unit != this.state.unit || this.props.icon != this.state.icon || this.props.avg != this.state.avg || this.props.max != this.state.max || this.props.failed != this.state.failed) { + if(this.props.title != this.state.title || this.props.data != this.state.data || this.props.unit != this.state.unit || this.props.icon != this.state.icon || this.props.failed != this.state.failed) { this.setState({ title: this.props.title, - value: this.props.value, unit: this.props.unit, icon: this.props.icon, - avg: this.props.avg, - max: this.props.max, failed: this.props.failed, + data: this.props.data }); } } render() { var title = this.state.title; - var value = this.state.value; var unit = this.state.unit; var icon = this.state.icon; - var max = this.state.max; - var avg = this.state.avg; var failed = Boolean(Number(this.state.failed)); + var data = this.parseData(title, this.state.data); + switch(icon) { case 'ping': icon = ; @@ -63,17 +113,30 @@ export default class Widget extends Component {
-

{(!failed) ? value : }

+

{(!failed) ? data.value : }

{unit} (current)

-
-
{avg}
-

{unit} (average)

-
-
-
{max}
-

{unit} (maximum)

-
+ + {window.config.widgets.show_average && +
+
{data.avg}
+

{unit} (average)

+
+ } + + {window.config.widgets.show_max && +
+
{data.max}
+

{unit} (maximum)

+
+ } + + {window.config.widgets.show_min && +
+
{data.min}
+

{unit} (minimum)

+
+ } diff --git a/conf/site/resources/js/components/Settings/SettingWithModal.js b/conf/site/resources/js/components/Settings/SettingWithModal.js index 95e04111..43d66d51 100644 --- a/conf/site/resources/js/components/Settings/SettingWithModal.js +++ b/conf/site/resources/js/components/Settings/SettingWithModal.js @@ -47,6 +47,10 @@ export default class SettingWithModal extends Component { if(this.state.autoClose) { this.toggleShow(); } + Axios.get('api/settings/config') + .then((resp) => { + window.config = resp.data; + }) }) .catch((err) => { if(err.response.status == 422) { @@ -194,7 +198,7 @@ export default class SettingWithModal extends Component { {e.description == null && -

{e.obj.description}

+

} diff --git a/conf/site/resources/js/components/Settings/Settings.js b/conf/site/resources/js/components/Settings/Settings.js index d9bd1a98..14699eb3 100644 --- a/conf/site/resources/js/components/Settings/Settings.js +++ b/conf/site/resources/js/components/Settings/Settings.js @@ -59,10 +59,28 @@ export default class Settings extends Component { return ( - - - - + randomFloat(); - array_push($ping,$pingVal); + array_push($ping, $pingVal); $dlVal = $faker->randomFloat(); - array_push($dl,$dlVal); + array_push($dl, $dlVal); $ulVal = $faker->randomFloat(); - array_push($ul,$ulVal); + array_push($ul, $ulVal); Speedtest::create([ 'ping' => $pingVal, @@ -70,7 +70,12 @@ class APISpeedtestTest extends TestCase 'download', 'upload', ], - 'max' => [ + 'maximum' => [ + 'ping', + 'download', + 'upload', + ], + 'minimum' => [ 'ping', 'download', 'upload', diff --git a/conf/site/tests/Unit/Controllers/SpeedtestController/LatestTest.php b/conf/site/tests/Unit/Controllers/SpeedtestController/LatestTest.php index 0b6189c3..af7209cd 100644 --- a/conf/site/tests/Unit/Controllers/SpeedtestController/LatestTest.php +++ b/conf/site/tests/Unit/Controllers/SpeedtestController/LatestTest.php @@ -19,7 +19,7 @@ class LatestTest extends TestCase */ private $controller; - public function setUp() : void + public function setUp(): void { parent::setUp(); @@ -53,6 +53,7 @@ class LatestTest extends TestCase $this->assertArrayHasKey('data', $resp); $this->assertArrayHasKey('average', $resp); - $this->assertArrayHasKey('max', $resp); + $this->assertArrayHasKey('maximum', $resp); + $this->assertArrayHasKey('minimum', $resp); } }