Create sorting on table in devices
This commit is contained in:
		@@ -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"));
 | 
			
		||||
 | 
			
		||||
		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,13 +22,16 @@
 | 
			
		||||
		</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><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>
 | 
			
		||||
@@ -36,8 +39,6 @@
 | 
			
		||||
						</form>
 | 
			
		||||
					</th>
 | 
			
		||||
				</tr>
 | 
			
		||||
				</thead>
 | 
			
		||||
				<tbody>
 | 
			
		||||
				<?php if (!empty($DEVICES)) : ?>
 | 
			
		||||
					<?php foreach ($DEVICES as $device) : ?>
 | 
			
		||||
						<tr>
 | 
			
		||||
@@ -107,7 +108,6 @@
 | 
			
		||||
						</tr>
 | 
			
		||||
					<?php endforeach; ?>
 | 
			
		||||
				<?php endif; ?>
 | 
			
		||||
				<tbody>
 | 
			
		||||
			</table>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
@@ -117,6 +117,12 @@
 | 
			
		||||
		$partial->render();
 | 
			
		||||
		//TODO js do main.js
 | 
			
		||||
		?>
 | 
			
		||||
		<script>
 | 
			
		||||
			$( function() {
 | 
			
		||||
			    $( "#sortable" ).sortable();
 | 
			
		||||
			    $( "#sortable" ).disableSelection();
 | 
			
		||||
			  } );
 | 
			
		||||
		</script>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user