From 8a00190850f0304ce58a2d3c9e6bd939399aaf40 Mon Sep 17 00:00:00 2001 From: GamerClassN7 Date: Sat, 31 Oct 2020 21:37:29 +0100 Subject: [PATCH] Minor Tweeks --- app/Routes.php | 4 ++++ app/api/RoomsApi.php | 17 ++++++++--------- app/api/ServerApi.php | 12 ++++++++++-- app/api/WidgetApi.php | 21 ++++++++++++++++++--- app/models/managers/RecordManager.php | 2 +- app/models/managers/SubDeviceManager.php | 2 +- app/views/Server.php | 4 ++-- 7 files changed, 44 insertions(+), 18 deletions(-) diff --git a/app/Routes.php b/app/Routes.php index fa734ca..5256e35 100644 --- a/app/Routes.php +++ b/app/Routes.php @@ -28,13 +28,17 @@ $router->post('/api/login', 'AuthApi@login'); $router->post('/api/logout', 'AuthApi@logout'); $router->get('/api/rooms', 'RoomsApi@default'); $router->get('/api/rooms/{roomId}/update', 'RoomsApi@update'); + $router->get('/api/devices', 'DevicesApi@default'); $router->get('/api/plugins', 'PluginsApi@default'); $router->get('/api/users', 'UsersApi@default'); $router->get('/api/server', 'ServerApi@default'); $router->get('/api/server/log', 'ServerApi@logStatus'); + $router->post('/api/widgets/{widgetId}/run', 'WidgetApi@run'); $router->get('/api/widgets/{widgetId}/detail', 'WidgetApi@detail'); +$router->get('/api/widgets/{widgetId}/detail/{period}', 'WidgetApi@detail'); + //cron $router->post('/cron/clean', 'CronApi@clean'); diff --git a/app/api/RoomsApi.php b/app/api/RoomsApi.php index 10a08ed..8c51e5d 100644 --- a/app/api/RoomsApi.php +++ b/app/api/RoomsApi.php @@ -2,19 +2,18 @@ class RoomsApi extends ApiController { - - public function - default() + + public function default() { //$this->requireAuth(); $response = []; $roomIds = []; $roomsData = RoomManager::getRoomsDefault(); - + foreach ($roomsData as $roomKey => $room) { $roomIds[] = $room['room_id']; } - + //Translation Of Numeric Walues $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds); foreach ($subDevicesData as $subDeviceKey => $subDevice) { @@ -27,7 +26,7 @@ class RoomsApi extends ApiController } else { continue; } - + $cammelCaseClass = ""; foreach (explode('-', $type) as $word) { $cammelCaseClass .= ucfirst($word); @@ -42,7 +41,7 @@ class RoomsApi extends ApiController $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); } } - + foreach ($roomsData as $roomKey => $roomData) { if ($roomData['device_count'] == 0) continue; $response[] = [ @@ -53,11 +52,11 @@ class RoomsApi extends ApiController } $this->response($response); } - + public function update($roomId) { //$this->requireAuth(); - + $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds([$roomId]); $this->response($subDevicesData); } diff --git a/app/api/ServerApi.php b/app/api/ServerApi.php index 4a4e3bc..ce08fc5 100644 --- a/app/api/ServerApi.php +++ b/app/api/ServerApi.php @@ -12,16 +12,24 @@ class ServerApi extends ApiController { return $meminfo; } + private function getProcessorUsage(){ + $loads=sys_getloadavg(); + $core_nums=trim(shell_exec("grep -P '^physical id' /proc/cpuinfo|wc -l")); + $load = round($loads[0]/($core_nums + 1)*100, 2); + return $load; + } + public function default(){ //$this->requireAuth(); $response = [ - "cpu_load" => sys_getloadavg()[0], + "cpu_load" => $this->getProcessorUsage(), "uptime" => shell_exec('uptime -p'), "ramFree" => $this->getSystemMemInfo()["MemFree"], "ramTotal" => $this->getSystemMemInfo()["MemTotal"], "diskFree" => disk_free_space("/"), "diskTotal" => disk_total_space("/"), - "serverTime" => date('m. d. Y H:i:s - e'), + "serverTime" => date('m. d. Y H:i:s'), + "serverTimeZone" => date('e'), ]; $this->response($response); } diff --git a/app/api/WidgetApi.php b/app/api/WidgetApi.php index cd95a04..2630736 100644 --- a/app/api/WidgetApi.php +++ b/app/api/WidgetApi.php @@ -32,9 +32,17 @@ class WidgetApi extends ApiController $this->response(['value' => $response]); } - public function detail($subDeviceId) + public function detail($subDeviceId, $period = "day") { //$this->requireAuth(); + + $groupBy = [ + "year" => "month", + "month" => "day", + "day" => "hour", + "hout" => "minute", + ]; + $response = null; $connectionError = true; @@ -42,11 +50,18 @@ class WidgetApi extends ApiController $deviceData = DeviceManager::getDeviceById($subDeviceData['device_id']); //TODO: zeptat se @Patrik Je Graf Dobře Seřazený na DESC ? - $events = RecordManager::getAllRecordForGraph($subDeviceId); + $events = RecordManager::getAllRecordForGraph($subDeviceId, $period, $groupBy[$period]); if ( count($events) == 0){ throw new Exception("No Records", 404); } + //Striping executed value from dataset if pasiv device such as Senzor ETC + if ($subDeviceData['type'] != "on/off") { + foreach ($events as $key => $event) { + unset($events[$key]['execuded']); + } + } + $LastRecordTime = new DateTime(reset($events)['time']); $niceTime = Utilities::ago($LastRecordTime); @@ -115,7 +130,7 @@ class WidgetApi extends ApiController //TODO: Make Cleaner if (isset(RANGES[$subDeviceData['type']])){ - $response['graph']['options']['options']['scales']['yAxes'] = [[ + $response['graph']['options']['scales']['yAxes'] = [[ 'ticks' => [ 'min' => RANGES[$subDeviceData['type']]['min'], 'max' => RANGES[$subDeviceData['type']]['max'], diff --git a/app/models/managers/RecordManager.php b/app/models/managers/RecordManager.php index f6fe640..b0bb5ce 100644 --- a/app/models/managers/RecordManager.php +++ b/app/models/managers/RecordManager.php @@ -86,7 +86,7 @@ class RecordManager{ $dateTime = $dateTime->modify($periodLocal); $dateTime = $dateTime->format('Y-m-d H:i:s'); $groupBy = strtoupper($groupBy).'(time)'; - $sql = 'SELECT value, time FROM records + $sql = 'SELECT value, time, execuded FROM records WHERE subdevice_id = ? AND diff --git a/app/models/managers/SubDeviceManager.php b/app/models/managers/SubDeviceManager.php index 85af59c..ccd0347 100644 --- a/app/models/managers/SubDeviceManager.php +++ b/app/models/managers/SubDeviceManager.php @@ -77,7 +77,7 @@ class SubDeviceManager //TODO: @Patrik Check line 89 $rows = Db::loadAll(" - SELECT d.room_id, sd.subdevice_id, sd.device_id, d.name, sd.type, sd.unit, r.value FROM subdevices sd + SELECT d.room_id, sd.subdevice_id, sd.device_id, d.icon, d.name, sd.type, sd.unit, r.value FROM subdevices sd JOIN devices d ON sd.device_id = d.device_id JOIN records r ON r.subdevice_id = sd.subdevice_id WHERE d.room_id IN (".str_repeat("?,", count($roomIds)-1)."?) diff --git a/app/views/Server.php b/app/views/Server.php index fe0f698..62fdc86 100644 --- a/app/views/Server.php +++ b/app/views/Server.php @@ -23,8 +23,8 @@ class Server extends Template return $load; } - function __construct() - { + function __construct() + { $userManager = new UserManager(); $langMng = new LanguageManager('en');