diff --git a/app/templates/js/script.js b/app/templates/js/script.js index 420409a..a6f5d02 100644 --- a/app/templates/js/script.js +++ b/app/templates/js/script.js @@ -1,3 +1,5 @@ +var pending = false; + if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('serviceWorker.js') @@ -14,16 +16,16 @@ if ('serviceWorker' in navigator) { $('select[name="atSelector"]').change(function(e) { console.log($(this).val()); if( $(this).val() == 'time') { - + $('input[name="atTime"]').prop( "disabled", false ); - + $('select[name="atDeviceValueInt"]').prop( "disabled", true ); $('input[name="atDeviceValue"]').prop( "disabled", true ); } else if( $(this).val() == 'atDeviceValue') { - + $('select[name="atDeviceValue"]').prop( "disabled", false ); $('input[name="atDeviceValueInt"]').prop( "disabled", false ); - + $('input[name="atTime"]').prop( "disabled", true ); } }); @@ -38,7 +40,7 @@ $("div.square-content").on('touchend', function (e){ $("div.square-content").on('touchstart', function (eTarget) { navigator.vibrate([500]); var id = ''; - + var windowLoc = $(location).attr('pathname'); windowLoc = windowLoc.substring(windowLoc.lastIndexOf("/")); console.log(windowLoc); @@ -49,9 +51,9 @@ $("div.square-content").on('touchstart', function (eTarget) { } else if (windowLoc == "/automation") { id = $(this).attr('id').replace('automation-', ''); } - + var subId = $(this).attr('data-sub-device-id'); - + touch++; if(touch == 2 && touchSubId == subId){ console.log("Detail"); @@ -59,7 +61,7 @@ $("div.square-content").on('touchstart', function (eTarget) { $("#modal-detail-"+subId).removeClass('modal-container-hiden').show(); ajaxChart(subId); } else if (windowLoc == "/scene") { - + } else if (windowLoc == "/automation") { } touch = 0; @@ -67,7 +69,7 @@ $("div.square-content").on('touchstart', function (eTarget) { return; } touchSubId = subId; - + pressTimer = window.setTimeout(function (e) { console.log("Setting"); $("#modal-setting-"+id).removeClass('modal-container-hiden').show(); @@ -152,7 +154,14 @@ var windowLoc = $(location).attr('pathname'); windowLoc = windowLoc.substring(windowLoc.lastIndexOf("/")); console.log(); if (windowLoc == "/") { + var selectRoomId = localStorage.getItem("selectedRoomId"); + + if (selectRoomId == null) { + selectRoomId = 'all'; + } + + console.log('Saved Selected Room ID '+ selectRoomId); $('[name="room"]').val(selectRoomId); $('.device-button').each(function(){ @@ -164,6 +173,8 @@ if (windowLoc == "/") { } } }); + + } //Room selector @@ -187,29 +198,35 @@ windowLoc = windowLoc.substring(windowLoc.lastIndexOf("/")); console.log(); if (windowLoc == "/") { var autoUpdate = setInterval(function(){ - $.ajax({ - url: 'ajax', - type: 'POST', - dataType: 'json', - data: { - "action": 'getState' - }, - success: function(data){ - console.log(data); - for (const key in data) { - if (data.hasOwnProperty(key)) { - const device = data[key]; - $('[data-sub-device-id="'+key+'"]') - .find('.device-button-value') - .text(device['value']) - .attr('title',device['time']) + if (pending == false) { + pending = true; + $.ajax({ + url: 'ajax', + type: 'POST', + dataType: 'json', + data: { + "action": 'getState' + }, + success: function(data){ + console.log(data); + for (const key in data) { + if (data.hasOwnProperty(key)) { + const device = data[key]; + $('[data-sub-device-id="'+key+'"]') + .find('.device-button-value') + .text(device['value']) + .attr('title',device['time']) + } } + }, + error: function (request, status, error) { + console.log("ERROR ajaxChart():", request, error); + }, + complete: function (){ + pending = false; } - }, - error: function (request, status, error) { - console.log("ERROR ajaxChart():", request, error); - } - }); + }); + } },2000); } diff --git a/app/templates/log.phtml b/app/templates/log.phtml index f446e17..cf3ba59 100644 --- a/app/templates/log.phtml +++ b/app/templates/log.phtml @@ -34,14 +34,13 @@ '; + echo '
';
                         foreach ($file_lines as $line) {
                             echo $line;
                         }
                         echo '
'; } ?> - diff --git a/app/templates/part/deviceButton.phtml b/app/templates/part/deviceButton.phtml index 1bdf669..3864438 100644 --- a/app/templates/part/deviceButton.phtml +++ b/app/templates/part/deviceButton.phtml @@ -10,7 +10,7 @@ if ($SUBDEVICE['type'] == 'on/off') {
" id="device-" data-sub-device-id="">
-
+
&#x
@@ -19,7 +19,7 @@ if ($SUBDEVICE['type'] == 'on/off') {
-
+
diff --git a/app/views/Ajax.php b/app/views/Ajax.php index 94caaa9..649d151 100644 --- a/app/views/Ajax.php +++ b/app/views/Ajax.php @@ -48,6 +48,7 @@ class Ajax extends Template AutomationManager::deactive($automationId); } } else if (isset($_POST['subDevice']) && isset($_POST['action']) && $_POST['action'] == "chart") { + die(); //TODO lepe rozstrukturovat $subDeviceId = $_POST['subDevice']; $period = $_POST['period']; diff --git a/app/views/Home.php b/app/views/Home.php index 73f5a87..eca796b 100644 --- a/app/views/Home.php +++ b/app/views/Home.php @@ -43,58 +43,69 @@ class Home extends Template foreach ($subDevicesData as $subDeviceKey => $subDeviceData) { $events = RecordManager::getLastRecord($subDeviceData['subdevice_id'], 5); - //TODO: skontrolovat zdali se jedná o poslední (opravdu nejaktuálnější) záznam - $lastRecord = $events[0]; - $parsedValue = round($lastRecord['value']); - - /*Value Parsing*/ - if ($subDeviceData['type'] == "on/off") { - $parsedValue = ($parsedValue == 1 ? 'ON' : 'OFF'); - } - - if ($subDeviceData['type'] == "door") { - $replacementTrue = 'Closed'; - $replacementFalse = 'Opened'; - foreach ($events as $key => $value) { - $events[$key]['value'] = ($value['value'] == 1 ? $replacementTrue : $replacementFalse); - } - $parsedValue = ($parsedValue == 1 ? $replacementTrue : $replacementFalse); - } - - if ($subDeviceData['type'] == "light") { - $replacementTrue = 'Light'; - $replacementFalse = 'Dark'; - foreach ($events as $key => $value) { - if ($parsedValue != 1){ - //Analog Reading - $events[$key]['value'] = ($value['value'] <= 810 ? $replacementTrue : $replacementFalse); - } else { - //Digital Reading - $events[$key]['value'] = ($value['value'] == 0 ? $replacementTrue : $replacementFalse); - } - } - if ($parsedValue != 1){ - //Analog Reading - $parsedValue = ($parsedValue <= 810 ? $replacementTrue : $replacementFalse); - } else { - //Digital Reading - $parsedValue = ($parsedValue == 0 ? $replacementTrue : $replacementFalse); - } - } - - $date2 = new DateTime($lastRecord['time']); - - $niceTime = $this->ago($date2); $connectionError = false; + $parsedValue = ""; + $niceTime = ""; - $startDate = date_create($lastRecord['time']); - $interval = $startDate->diff(new DateTime()); - $hours = $interval->format('%h'); - $minutes = $interval->format('%i'); - $lastSeen = ($hours * 60 + $minutes); - if ($lastSeen > $deviceData['sleep_time'] && $subDeviceData['type'] != "on/off") { + if (sizeof($events) > 1) { + + //TODO: skontrolovat zdali se jedná o poslední (opravdu nejaktuálnější) záznam + $lastRecord = $events[0]; + + $parsedValue = round($lastRecord['value']); + + /*Value Parsing*/ + if ($subDeviceData['type'] == "on/off") { + $parsedValue = ($parsedValue == 1 ? 'ON' : 'OFF'); + } + + if ($subDeviceData['type'] == "door") { + $replacementTrue = 'Closed'; + $replacementFalse = 'Opened'; + foreach ($events as $key => $value) { + $events[$key]['value'] = ($value['value'] == 1 ? $replacementTrue : $replacementFalse); + } + $parsedValue = ($parsedValue == 1 ? $replacementTrue : $replacementFalse); + } + + if ($subDeviceData['type'] == "light") { + $replacementTrue = 'Light'; + $replacementFalse = 'Dark'; + foreach ($events as $key => $value) { + if ($parsedValue != 1){ + //Analog Reading + $events[$key]['value'] = ($value['value'] <= 810 ? $replacementTrue : $replacementFalse); + } else { + //Digital Reading + $events[$key]['value'] = ($value['value'] == 0 ? $replacementTrue : $replacementFalse); + } + } + if ($parsedValue != 1){ + //Analog Reading + $parsedValue = ($parsedValue <= 810 ? $replacementTrue : $replacementFalse); + } else { + //Digital Reading + $parsedValue = ($parsedValue == 0 ? $replacementTrue : $replacementFalse); + } + } + + $date2 = new DateTime($lastRecord['time']); + + $niceTime = $this->ago($date2); + + + $startDate = date_create($lastRecord['time']); + $interval = $startDate->diff(new DateTime()); + $hours = $interval->format('%h'); + $minutes = $interval->format('%i'); + $lastSeen = ($hours * 60 + $minutes); + + if ($lastSeen > $deviceData['sleep_time'] && $subDeviceData['type'] != "on/off") { + $connectionError = true; + } + } else { $connectionError = true; } @@ -104,9 +115,9 @@ class Home extends Template 'unit' => $subDeviceData['unit'], 'comError' => $connectionError, 'lastRecort' => [ - 'value' => $parsedValue, - 'time' => $lastRecord['time'], - 'niceTime' => $niceTime, + 'value' => (empty($parsedValue) ? 0 : $parsedValue), + 'time' => (empty($lastRecord['time']) ? "00:00" : $lastRecord['time']), + 'niceTime' => (empty($niceTime) ? "00:00" : $niceTime), ], ]; } diff --git a/app/views/Log.php b/app/views/Log.php index af2646e..8098223 100644 --- a/app/views/Log.php +++ b/app/views/Log.php @@ -19,7 +19,7 @@ class Log extends Template $cdir = scandir('./app/logs/'); foreach ($cdir as $key => $value) { - if (!in_array($value,array(".",".."))) + if (!in_array($value,array(".","..", ".gitkeep"))) { $result[$value] = $value; } diff --git a/manifest.json b/manifest.json index 7150e8b..16775df 100644 --- a/manifest.json +++ b/manifest.json @@ -10,11 +10,11 @@ "theme_color": "#182239", "icons": [ { - "src": "/vasek/home/templates/images/icon-192x192.png", + "src": "/vasek/home/app/templates/images/icon-192x192.png", "sizes": "192x192" }, { - "src": "/vasek/home/templates/images/icon-512x512.png", + "src": "/vasek/home/app/templates/images/icon-512x512.png", "sizes": "512x512" } ],