Merge local branch to remastering

This commit is contained in:
Václav Španinger 2020-09-14 15:21:20 +02:00
commit aafd5539c4
4 changed files with 158 additions and 66 deletions

View File

@ -21,6 +21,12 @@ if (!empty ($_POST)){
$deviceManager->edit ($device['device_id'], array ('command' => $_POST['deviceCommand'])); $deviceManager->edit ($device['device_id'], array ('command' => $_POST['deviceCommand']));
} }
} }
if (!empty ($_POST['deviceRoomId']) && !empty ($_POST['deviceId'])) {
$deviceManager->edit ($_POST['deviceId'], array ('room_id' => $_POST['deviceRoomId']));
}
if (!empty ($_POST['deviceName']) && !empty ($_POST['deviceId'])) {
$deviceManager->edit ($_POST['deviceId'], array ('name' => $_POST['deviceName']));
}
header('Location: ./device'); header('Location: ./device');
die(); die();
} }

View File

@ -26,6 +26,10 @@ class DeviceManager{
return Db::loadOne("SELECT * FROM devices WHERE device_id = ?", array($deviceId)); return Db::loadOne("SELECT * FROM devices WHERE device_id = ?", array($deviceId));
} }
static function getAllDevicesSorted ($sort, $sortType = "ASC") {
return Db::loadAll ("SELECT devices.* FROM devices LEFT JOIN rooms ON devices.room_id = rooms.room_id WHERE devices.approved != ? ORDER BY $sort $sortType", Array(2));
}
public static function create ($name, $token) { public static function create ($name, $token) {
$defaultRoom = RoomManager::getDefaultRoomId(); $defaultRoom = RoomManager::getDefaultRoomId();
$device = array ( $device = array (

View File

@ -16,7 +16,61 @@ class Device extends Template
$template = new Template ('device'); $template = new Template ('device');
$template->prepare ('title', $langMng->get ("m_devices")); $template->prepare ('title', $langMng->get ("m_devices"));
if (!empty ($_GET['sort']) && !empty ($_SESSION['sort']) && $_SESSION['sort'] != $_GET['sort']) {
unset($_SESSION['sort']);
header('Location: device?sort=' . $_GET["sort"] . "&sortType=ASC");
die();
}
if (isset ($_GET['sortType'])) {
switch ($_GET['sortType']) {
case "DESC":
$sortType = "";
$sortIcon = "&#xf0dd";
break;
case "ASC":
$sortType = "DESC";
$sortIcon = "&#xf0de";
break;
case "":
unset($_GET["sort"]);
unset($_GET["sortType"]);
header('Location: device');
die();
break;
}
} else {
$sortType = "ASC";
}
if (!empty ($_GET['sort']) && !empty ($_GET['sortType'])) {
$template->prepare ('sortIcon', array ($_GET['sort'] => $sortIcon));
$actualSort = "devices.device_id";
switch ($_GET['sort']) {
case "name":
$actualSort = "devices.name";
break;
case "room":
$actualSort = "rooms.name";
break;
case "ip":
$actualSort = "devices.ip_address";
break;
case "mac":
$actualSort = "devices.mac";
break;
case "token":
$actualSort = "devices.token";
break;
}
$devices = $deviceManager->getAllDevicesSorted ($actualSort, $_GET['sortType']);
} else {
$devices = $deviceManager->getAllDevices (); $devices = $deviceManager->getAllDevices ();
}
if (!empty ($_GET['sort'])) {
$_SESSION['sort'] = $_GET['sort'];
}
foreach ($devices as $key => $device) { foreach ($devices as $key => $device) {
$localBinary = "../updater/" . str_replace (':', '', $device['mac']) . ".bin"; $localBinary = "../updater/" . str_replace (':', '', $device['mac']) . ".bin";
@ -30,11 +84,20 @@ class Device extends Template
} else { } else {
$devices[$key]['firmware_hash'] = "false"; $devices[$key]['firmware_hash'] = "false";
} }
if (empty ($device['mac'])) {
$devices[$key]['firmware_hash'] = "";
}
}
$wifi = SubDeviceManager::getSubDeviceByMaster($device['device_id'], 'wifi'); if (!empty ($_GET['sort']) && !empty ($_GET['sortType']) && $_GET['sort'] == "firmware") {
if ($wifi) { if ($_GET['sortType'] == "DESC") {
$signalStrenght = RecordManager::getLastRecordNotNull($wifi['subdevice_id']); usort($devices, function($a, $b) {
$devices[$key]['signal'] = (!$signalStrenght ? 0 : $signalStrenght['value']); return $a['firmware_hash'] <=> $b['firmware_hash'];
});
} else if ($_GET['sortType'] == "ASC") {
usort($devices, function($a, $b) {
return $b['firmware_hash'] <=> $a['firmware_hash'];
});
} }
} }
@ -44,6 +107,7 @@ class Device extends Template
$template->prepare ('debugMod', DEBUGMOD); $template->prepare ('debugMod', DEBUGMOD);
$template->prepare ('logToLiveTime', LOGTIMOUT); $template->prepare ('logToLiveTime', LOGTIMOUT);
$template->prepare ('rooms', $rooms); $template->prepare ('rooms', $rooms);
$template->prepare ('sortType', $sortType);
$template->prepare ('devices', $devices); $template->prepare ('devices', $devices);
$template->prepare ('langMng', $langMng); $template->prepare ('langMng', $langMng);

View File

@ -22,14 +22,18 @@
</div> </div>
<div class="col-md-9 main-body"> <div class="col-md-9 main-body">
<table class="table is-fluid"> <table class="table is-fluid">
<thead>
<tr> <tr>
<th>#</th> <th><a href="device">#</a></th>
<th>Name</th> <th><a href="device?sort=name&sortType=<?php echo $SORTTYPE; ?>">Name</a><i class="fa"><?php echo (!empty($SORTICON['name']) ? $SORTICON['name'] : ""); ?></i></th>
<th>Signal</th> <th><a href="device?sort=room&sortType=<?php echo $SORTTYPE; ?>">Room</a><i class="fa"><?php echo (!empty($SORTICON['room']) ? $SORTICON['room'] : ""); ?></i></th>
<th>Room</th> <th><a href="device?sort=signal&sortType=<?php echo $SORTTYPE; ?>">Signal</a><i class="fa"><?php echo (!empty($SORTICON['signal']) ? $SORTICON['signal'] : ""); ?></i></th>
<th>Firmware</th>
<th>IP Address<br>(Mac)<br>Token</th> <th><a href="device?sort=firmware&sortType=<?php echo $SORTTYPE; ?>">Firmware</a><i class="fa"><?php echo (!empty($SORTICON['firmware']) ? $SORTICON['firmware'] : ""); ?></i></th>
<th>
<a href="device?sort=ip&sortType=<?php echo $SORTTYPE; ?>">IP Address</a><i class="fa"><?php echo (!empty($SORTICON['ip']) ? $SORTICON['ip'] : ""); ?></i><br>
<a href="device?sort=mac&sortType=<?php echo $SORTTYPE; ?>">(Mac)</a><i class="fa"><?php echo (!empty($SORTICON['mac']) ? $SORTICON['mac'] : ""); ?></i><br>
<a href="device?sort=token&sortType=<?php echo $SORTTYPE; ?>">Token</a><i class="fa"><?php echo (!empty($SORTICON['token']) ? $SORTICON['token'] : ""); ?></i>
</th>
<th>Action <th>Action
<form method="post" action=""> <form method="post" action="">
<button class="fa custom-file-input" type="submit" name="deviceCommand" value="reset" title="Reset All"><b>&#xf01e;</b></button> <button class="fa custom-file-input" type="submit" name="deviceCommand" value="reset" title="Reset All"><b>&#xf01e;</b></button>
@ -37,22 +41,30 @@
</form> </form>
</th> </th>
</tr> </tr>
</thead>
<tbody>
<?php if (!empty($DEVICES)) : ?> <?php if (!empty($DEVICES)) : ?>
<?php foreach ($DEVICES as $device) : ?> <?php foreach ($DEVICES as $device) : ?>
<tr> <tr>
<td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></td> <td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></td>
<td><?php echo (!empty($device['name']) ? $device['name'] : ""); ?></td> <td>
<form method="post" action="">
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
<input class="input" type="text" onchange="this.form.submit();" name="deviceName" value="<?php echo (!empty($device['name']) ? $device['name'] : ""); ?>">
</form>
</td>
<td><?php echo (!empty($device['signal']) ? $device['signal'] : ""); ?></td> <td><?php echo (!empty($device['signal']) ? $device['signal'] : ""); ?></td>
<td> <td>
<select class="input" id="device-<?php echo $device['device_id']?>-roomId"> <form method="post" action="">
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
<select class="input" name="deviceRoomId" onchange="this.form.submit();">
<?php <?php
if (!empty ($ROOMS)) {
foreach ($ROOMS as $key => $room) { foreach ($ROOMS as $key => $room) {
echo '<option value="' . $room['room_id'] . '" ' . ($device['room_id'] == $room['room_id'] ? 'selected' : '') . '>' . $room['name'] . '</option>'; echo '<option value="' . $room['room_id'] . '" ' . ($device['room_id'] == $room['room_id'] ? 'selected' : '') . '>' . $room['name'] . '</option>';
} }
}
?> ?>
</select> </select>
</form>
</td> </td>
<td> <td>
<?php if (!empty($device['mac'])) : ?> <?php if (!empty($device['mac'])) : ?>
@ -64,7 +76,8 @@
$icon = "fa-check-circle"; $icon = "fa-check-circle";
$color = "green"; $color = "green";
} else if ($device['firmware_hash'] == "need") { } else if ($device['firmware_hash'] == "need") {
$icon = "arrow-circle-up"; $icon = "fa-arrow-circle-up";
$color = "#6495ED";
} else { } else {
$icon = "fa-times-circle"; $icon = "fa-times-circle";
$color = "red"; $color = "red";
@ -72,7 +85,7 @@
} }
?> ?>
<i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>"></i> <i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>;"></i>
<?php echo $device['firmware_hash'] ?> <?php echo $device['firmware_hash'] ?>
<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id']?>').click();">&#xf0ee;</button> <button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id']?>').click();">&#xf0ee;</button>
<form style="display: none;" method="post" action="" enctype="multipart/form-data"> <form style="display: none;" method="post" action="" enctype="multipart/form-data">
@ -98,7 +111,6 @@
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
<?php endif; ?> <?php endif; ?>
<tbody>
</table> </table>
</div> </div>
@ -108,6 +120,12 @@
$partial->render(); $partial->render();
//TODO js do main.js //TODO js do main.js
?> ?>
<script>
$( function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
} );
</script>
</body> </body>
</html> </html>