Create sorting on table in devices
This commit is contained in:
parent
ed732e125a
commit
cc804f36df
@ -26,6 +26,10 @@ class DeviceManager{
|
||||
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) {
|
||||
$defaultRoom = RoomManager::getDefaultRoomId();
|
||||
$device = array (
|
||||
|
@ -16,7 +16,61 @@ class Device extends Template
|
||||
$template = new Template ('device');
|
||||
$template->prepare ('title', $langMng->get ("m_devices"));
|
||||
|
||||
$devices = $deviceManager->getAllDevices ();
|
||||
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 = "";
|
||||
break;
|
||||
case "ASC":
|
||||
$sortType = "DESC";
|
||||
$sortIcon = "";
|
||||
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 ();
|
||||
}
|
||||
|
||||
if (!empty ($_GET['sort'])) {
|
||||
$_SESSION['sort'] = $_GET['sort'];
|
||||
}
|
||||
|
||||
foreach ($devices as $key => $device) {
|
||||
$localBinary = "../updater/" . str_replace (':', '', $device['mac']) . ".bin";
|
||||
@ -30,6 +84,21 @@ class Device extends Template
|
||||
} else {
|
||||
$devices[$key]['firmware_hash'] = "false";
|
||||
}
|
||||
if (empty ($device['mac'])) {
|
||||
$devices[$key]['firmware_hash'] = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty ($_GET['sort']) && !empty ($_GET['sortType']) && $_GET['sort'] == "firmware") {
|
||||
if ($_GET['sortType'] == "DESC") {
|
||||
usort($devices, function($a, $b) {
|
||||
return $a['firmware_hash'] <=> $b['firmware_hash'];
|
||||
});
|
||||
} else if ($_GET['sortType'] == "ASC") {
|
||||
usort($devices, function($a, $b) {
|
||||
return $b['firmware_hash'] <=> $a['firmware_hash'];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$rooms = $roomManager->getAllRooms();
|
||||
@ -38,6 +107,7 @@ class Device extends Template
|
||||
$template->prepare ('debugMod', DEBUGMOD);
|
||||
$template->prepare ('logToLiveTime', LOGTIMOUT);
|
||||
$template->prepare ('rooms', $rooms);
|
||||
$template->prepare ('sortType', $sortType);
|
||||
$template->prepare ('devices', $devices);
|
||||
$template->prepare ('langMng', $langMng);
|
||||
|
||||
|
@ -22,92 +22,92 @@
|
||||
</div>
|
||||
<div class="col-md-9 main-body">
|
||||
<table class="table is-fluid">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>Room</th>
|
||||
<th>Firmware</th>
|
||||
<th>IP Address<br>(Mac)<br>Token</th>
|
||||
<th>Action
|
||||
<form method="post" action="">
|
||||
<button class="fa custom-file-input" type="submit" name="deviceCommand" value="reset" title="Reset All"><b></b></button>
|
||||
<div style="float: clear;"></div>
|
||||
</form>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php if (!empty($DEVICES)) : ?>
|
||||
<?php foreach ($DEVICES as $device) : ?>
|
||||
<tr>
|
||||
<td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></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>
|
||||
<tr>
|
||||
<th><a href="device">#</a></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><a href="device?sort=room&sortType=<?php echo $SORTTYPE; ?>">Room</a><i class="fa"><?php echo (!empty($SORTICON['room']) ? $SORTICON['room'] : ""); ?></i></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
|
||||
<form method="post" action="">
|
||||
<button class="fa custom-file-input" type="submit" name="deviceCommand" value="reset" title="Reset All"><b></b></button>
|
||||
<div style="float: clear;"></div>
|
||||
</form>
|
||||
</th>
|
||||
</tr>
|
||||
<?php if (!empty($DEVICES)) : ?>
|
||||
<?php foreach ($DEVICES as $device) : ?>
|
||||
<tr>
|
||||
<td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></td>
|
||||
<td>
|
||||
<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();">
|
||||
<input class="input" type="text" onchange="this.form.submit();" name="deviceName" value="<?php echo (!empty($device['name']) ? $device['name'] : ""); ?>">
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<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
|
||||
if (!empty ($ROOMS)) {
|
||||
foreach ($ROOMS as $key => $room) {
|
||||
echo '<option value="' . $room['room_id'] . '" ' . ($device['room_id'] == $room['room_id'] ? 'selected' : '') . '>' . $room['name'] . '</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<?php if (!empty($device['mac'])) : ?>
|
||||
<?php
|
||||
if (!empty ($ROOMS)) {
|
||||
foreach ($ROOMS as $key => $room) {
|
||||
echo '<option value="' . $room['room_id'] . '" ' . ($device['room_id'] == $room['room_id'] ? 'selected' : '') . '>' . $room['name'] . '</option>';
|
||||
$icon = "fa-circle";
|
||||
$color = "yellow";
|
||||
if (!empty($device['firmware_hash'])) {
|
||||
if ($device['firmware_hash'] == "true") {
|
||||
$icon = "fa-check-circle";
|
||||
$color = "green";
|
||||
} else if ($device['firmware_hash'] == "need") {
|
||||
$icon = "fa-arrow-circle-up";
|
||||
$color = "#6495ED";
|
||||
} else {
|
||||
$icon = "fa-times-circle";
|
||||
$color = "red";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<?php if (!empty($device['mac'])) : ?>
|
||||
<?php
|
||||
$icon = "fa-circle";
|
||||
$color = "yellow";
|
||||
if (!empty($device['firmware_hash'])) {
|
||||
if ($device['firmware_hash'] == "true") {
|
||||
$icon = "fa-check-circle";
|
||||
$color = "green";
|
||||
} else if ($device['firmware_hash'] == "need") {
|
||||
$icon = "fa-arrow-circle-up";
|
||||
$color = "#6495ED";
|
||||
} else {
|
||||
$icon = "fa-times-circle";
|
||||
$color = "red";
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>;"></i>
|
||||
<?php echo $device['firmware_hash'] ?>
|
||||
<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id']?>').click();"></button>
|
||||
<form style="display: none;" method="post" action="" enctype="multipart/form-data">
|
||||
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
|
||||
<input type="file" onchange="this.form.submit();" name="deviceFirmware" id="deviceFirmware-<?php echo $device['device_id']?>" value="">
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
<div type="float: clear;"></div>
|
||||
</td>
|
||||
<td><?php echo (!empty($device['mac']) ? $device['mac'] : ""); ?><br>
|
||||
<?php echo (!empty($device['ip_address']) ? $device['ip_address'] : ""); ?><br>
|
||||
<?php echo (!empty($device['token']) ? $device['token'] : ""); ?></td>
|
||||
<td>
|
||||
<?php if (!empty($device['mac'])) : ?>
|
||||
<form method="post" action="">
|
||||
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
|
||||
<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "reset" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="reset" title="Reset"></button>
|
||||
<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "config" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="config" title="Config"></button>
|
||||
<div style="float: clear;"></div>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
<tbody>
|
||||
<i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>;"></i>
|
||||
<?php echo $device['firmware_hash'] ?>
|
||||
<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id']?>').click();"></button>
|
||||
<form style="display: none;" method="post" action="" enctype="multipart/form-data">
|
||||
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
|
||||
<input type="file" onchange="this.form.submit();" name="deviceFirmware" id="deviceFirmware-<?php echo $device['device_id']?>" value="">
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
<div type="float: clear;"></div>
|
||||
</td>
|
||||
<td><?php echo (!empty($device['mac']) ? $device['mac'] : ""); ?><br>
|
||||
<?php echo (!empty($device['ip_address']) ? $device['ip_address'] : ""); ?><br>
|
||||
<?php echo (!empty($device['token']) ? $device['token'] : ""); ?></td>
|
||||
<td>
|
||||
<?php if (!empty($device['mac'])) : ?>
|
||||
<form method="post" action="">
|
||||
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
|
||||
<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "reset" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="reset" title="Reset"></button>
|
||||
<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "config" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="config" title="Config"></button>
|
||||
<div style="float: clear;"></div>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@ -117,6 +117,12 @@
|
||||
$partial->render();
|
||||
//TODO js do main.js
|
||||
?>
|
||||
<script>
|
||||
$( function() {
|
||||
$( "#sortable" ).sortable();
|
||||
$( "#sortable" ).disableSelection();
|
||||
} );
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue
Block a user