From 6b08b2785fa94f7298cbc49c7bc7e0c9ff8ea600 Mon Sep 17 00:00:00 2001 From: GamerClassN7 Date: Sun, 25 Oct 2020 11:51:44 +0100 Subject: [PATCH] Bether Graph generation & covid version 2 --- app/api/CronApi.php | 3 ++ app/api/RoomsApi.php | 31 ++++++++++------ app/api/WidgetApi.php | 19 ++++++---- app/plugins/AirQuality.php | 1 + app/plugins/CovidV2.php | 53 +++++++++++++++++++++++++++ app/plugins/OpenWeatherMap.php | 1 + app/plugins/UsaElection.php | 1 + app/plugins/{Covid.php => _Covid.php} | 1 + 8 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 app/plugins/CovidV2.php rename app/plugins/{Covid.php => _Covid.php} (93%) diff --git a/app/api/CronApi.php b/app/api/CronApi.php index d115b2a..497cd3d 100644 --- a/app/api/CronApi.php +++ b/app/api/CronApi.php @@ -23,6 +23,9 @@ class CronApi extends ApiController $pluginsFiles = array_diff(scandir($dir), ['..', '.']); foreach ($pluginsFiles as $key => $pluginFile) { $className = str_replace(".php", "", $pluginFile); + if (strpos($pluginFile, '_') === true) { + continue; + } if (!class_exists($className)) { continue; } diff --git a/app/api/RoomsApi.php b/app/api/RoomsApi.php index 2bbefc3..10a08ed 100644 --- a/app/api/RoomsApi.php +++ b/app/api/RoomsApi.php @@ -19,20 +19,27 @@ class RoomsApi extends ApiController $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds); foreach ($subDevicesData as $subDeviceKey => $subDevice) { foreach ($subDevice as $key => $value) { + $type = null; if (strpos($subDevicesData[$subDeviceKey][$key]['type'], '-') !== false) { - $type = ""; - foreach (explode('-', $subDevicesData[$subDeviceKey][$key]['type']) as $word) { - $type .= ucfirst($word); - } - if (!class_exists($type)) { - continue; - } - $deviceClass = new $type; - if (!method_exists($deviceClass, 'translate')) { - continue; - } - $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); + $type = $subDevicesData[$subDeviceKey][$key]['type']; + } else if (strpos(SubDeviceManager::getSubDeviceMaster($subDevicesData[$subDeviceKey][$key]['subdevice_id'])['type'], '-') !== false) { + $type = SubDeviceManager::getSubDeviceMaster($subDevicesData[$subDeviceKey][$key]['subdevice_id'])['type']; + } else { + continue; } + + $cammelCaseClass = ""; + foreach (explode('-', $type) as $word) { + $cammelCaseClass .= ucfirst($word); + } + if (!class_exists($cammelCaseClass)) { + continue; + } + $deviceClass = new $cammelCaseClass; + if (!method_exists($deviceClass, 'translate')) { + continue; + } + $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); } } diff --git a/app/api/WidgetApi.php b/app/api/WidgetApi.php index 4ab68cd..cd95a04 100644 --- a/app/api/WidgetApi.php +++ b/app/api/WidgetApi.php @@ -96,13 +96,7 @@ class WidgetApi extends ApiController 'type' => 'time', 'distribution' => 'linear', ]], - 'yAxes' => [[ - 'ticks' => [ - 'min' => $this->getDeviceConfig($subDeviceData['type'])['min'], - 'max' => $this->getDeviceConfig($subDeviceData['type'])['max'], - 'steps' => $this->getDeviceConfig($subDeviceData['type'])['scale'], - ] - ]] + ], 'legend' => [ 'display' => false @@ -119,6 +113,17 @@ class WidgetApi extends ApiController 'lastConnectionTime' => (empty($niceTime) ? "00:00" : $niceTime), ]; + //TODO: Make Cleaner + if (isset(RANGES[$subDeviceData['type']])){ + $response['graph']['options']['options']['scales']['yAxes'] = [[ + 'ticks' => [ + 'min' => RANGES[$subDeviceData['type']]['min'], + 'max' => RANGES[$subDeviceData['type']]['max'], + 'steps' => RANGES[$subDeviceData['type']]['scale'], + ] + ]]; + } + $this->response($response); } diff --git a/app/plugins/AirQuality.php b/app/plugins/AirQuality.php index 89c0f2e..35b6ea2 100644 --- a/app/plugins/AirQuality.php +++ b/app/plugins/AirQuality.php @@ -15,6 +15,7 @@ class AirQuality extends VirtualDeviceManager if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, $this->subdevice_type)) { SubDeviceManager::create($deviceId, $this->subdevice_type, ''); sleep(1); + $subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($this->subdevice_type)); } //if (!$this->fetchEnabled($deviceId,$subDevice['subdevice_id'])) die(); diff --git a/app/plugins/CovidV2.php b/app/plugins/CovidV2.php new file mode 100644 index 0000000..b5f4971 --- /dev/null +++ b/app/plugins/CovidV2.php @@ -0,0 +1,53 @@ + "kumulativni_pocet_nakazenych", + "Recovered" => "kumulativni_pocet_vylecenych", + "Tested" => "kumulativni_pocet_testu", + "Deaths" => "kumulativni_pocet_umrti", + + ]; + + public function make() + { + try { + if (DeviceManager::registeret($this->virtual_device_name)) { + $deviceId = DeviceManager::getDeviceByToken($this->virtual_device_name)['device_id']; + $dataItems = ['Tested', 'Deaths', 'Recovered', 'Active']; + foreach ($dataItems as $dataItem) { + if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($dataItem))) { + SubDeviceManager::create($deviceId, strtolower($dataItem), $dataItem); + sleep(1); + $subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($dataItem)); + } + } + + if (!$this->fetchEnabled($deviceId, $subDevice['subdevice_id'])) die(); + + $finalUrl = $this->api_uri; + $json = json_decode(Utilities::CallAPI('GET', $finalUrl, ''), true)['data']; + + foreach ($dataItems as $dataItem) { + RecordManager::create($deviceId, strtolower($dataItem), end($json)[$this->name_index[$dataItem]]); + } + } else { + DeviceManager::create($this->virtual_device_name, $this->virtual_device_name, strtolower($this->virtual_device_name)); + DeviceManager::approved($this->virtual_device_name); + } + return 'sucessful'; + } catch (Exception $e) { + return 'exception: ' . $e->getMessage(); + } + } + + public function translate($value){ + $outcome = $value / 1000; + if ($outcome < 1){ + return $value; + } + return round($outcome) . 'K'; + } +} \ No newline at end of file diff --git a/app/plugins/OpenWeatherMap.php b/app/plugins/OpenWeatherMap.php index 76fd4de..9b2920a 100644 --- a/app/plugins/OpenWeatherMap.php +++ b/app/plugins/OpenWeatherMap.php @@ -15,6 +15,7 @@ class OpenWeatherMap extends VirtualDeviceManager if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, $this->subdevice_type)) { SubDeviceManager::create($deviceId, $this->subdevice_type, ''); sleep(1); + $subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($this->subdevice_type)); } if (!$this->fetchEnabled($deviceId, $subDevice['subdevice_id'])) die(); diff --git a/app/plugins/UsaElection.php b/app/plugins/UsaElection.php index 96a6c15..1cf7323 100644 --- a/app/plugins/UsaElection.php +++ b/app/plugins/UsaElection.php @@ -15,6 +15,7 @@ class UsaElection extends VirtualDeviceManager if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($dataItem))) { SubDeviceManager::create($deviceId, strtolower($dataItem), '% ' . $dataItem); sleep(1); + $subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($this->subdevice_type)); } } diff --git a/app/plugins/Covid.php b/app/plugins/_Covid.php similarity index 93% rename from app/plugins/Covid.php rename to app/plugins/_Covid.php index 418f156..11bdc25 100644 --- a/app/plugins/Covid.php +++ b/app/plugins/_Covid.php @@ -15,6 +15,7 @@ class Covid extends VirtualDeviceManager if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($dataItem))) { SubDeviceManager::create($deviceId, strtolower($dataItem), $dataItem); sleep(1); + $subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($dataItem)); } }