Enhance resilience and UI in inventory and server detail pages:

- Add `Heartbeat` column to `/X/Inventory.php` with status-based row styling.
- Improve error handling and data validation for backup details in `Server-Detail.php`.
This commit is contained in:
2025-09-17 10:20:48 +02:00
parent 2c279320ce
commit 878106f83f
2 changed files with 28 additions and 8 deletions

View File

@@ -111,7 +111,7 @@
<?php if($OSKernel){echo "&nbsp;<span class='badge rounded-pill bg-secondary text-light'>$OSKernel</span>";} ?> <?php if($OSKernel){echo "&nbsp;<span class='badge rounded-pill bg-secondary text-light'>$OSKernel</span>";} ?>
<?php <?php
if(is_array($Qvm)){ if(is_array($Qvm)){
$site = Invoke_Infra("SELECT site from cmdb_physical_site where hostname ='".$Qvm[0]['Owner']."'")[0]['site']; $site = Invoke_Infra("SELECT site from cmdb_physical_site where hostname ='".$Qvm[0]['Owner']."'")[0]['site'] ?? "?";
if($Qvm[0]['Owner'] == $Qvm[0]['PreferredOwner']){ if($Qvm[0]['Owner'] == $Qvm[0]['PreferredOwner']){
echo "&nbsp;<span class='badge rounded-pill bg-success text-light'>Host : ".$Qvm[0]['Owner']."</span>"; echo "&nbsp;<span class='badge rounded-pill bg-success text-light'>Host : ".$Qvm[0]['Owner']."</span>";
}else{ }else{
@@ -298,10 +298,14 @@
<!-- Backup for AIX, Linux --> <!-- Backup for AIX, Linux -->
<?php <?php
if(is_array($Qx)){ if(is_array($Qx)){
$backup = Invoke_Infra("select * from X_cmdb_Backupsys where HOSTNAME='$server'"); try {
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>LastBackup : ".explode(".",$backup[0]['LastBackup'])[0]."</span>&nbsp;"; $backup = Invoke_Infra("select * from X_cmdb_Backupsys where HOSTNAME='$server'");
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>BackupType : ".$backup[0]['BackupType']."</span>&nbsp;"; if(is_array($backup) && $backup[0]['LastBackup']) {
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Media : ".$backup[0]['Location']."</span>"; echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>LastBackup : " . explode(".", $backup[0]['LastBackup'])[0] . "</span>&nbsp;";
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>BackupType : " . $backup[0]['BackupType'] . "</span>&nbsp;";
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Media : " . $backup[0]['Location'] . "</span>";
}
} catch (Exception $e) {} // Catch any potential errors during backup information retrieval
} }
?> ?>
@@ -311,4 +315,3 @@
</div> </div>
<script src="/js/switch.js"></script> <script src="/js/switch.js"></script>
</body> </body>

View File

@@ -56,6 +56,7 @@
<thead> <!-- Header --> <thead> <!-- Header -->
<tr> <tr>
<th data-field="Name" data-sortable="true">Name</th> <th data-field="Name" data-sortable="true">Name</th>
<th data-field="Heartbeat" data-sortable="true" data-visible="false" >Heartbeat</th>
<th data-field="Host" data-sortable="true">Host</th> <th data-field="Host" data-sortable="true">Host</th>
<th data-field="OS" data-sortable="true">OS Type</th> <th data-field="OS" data-sortable="true">OS Type</th>
<th data-field="distrib" data-sortable="true">Distrib</th> <th data-field="distrib" data-sortable="true">Distrib</th>
@@ -75,8 +76,24 @@
$total++; $total++;
echo "<tr>"; echo "<tr>";
//name //name
$name = $s['hostname']; $name = $s['hostname']; $heartbeat = $s['Heartbeat']; $statusClass = '';
echo "<td><a href='/inventory/server-detail.php?s=".$name."' target='_blank'>$name</a></td>"; $heartbeatDate = new DateTime($heartbeat);
$now = new DateTime();
$interval = $now->diff($heartbeatDate);
$diffInMinutes = ($interval->days * 24 * 60) + ($interval->h * 60) + $interval->i;
if ($diffInMinutes < 10) {
$statusClass = 'table-success';
} elseif ($diffInMinutes <= 30) {
$statusClass = 'table-warning';
} else {
$statusClass = 'table-danger';
}
echo "<td class='{$statusClass}'>";
echo " <a href='/inventory/server-detail.php?s={$name}' target='_blank'>{$name}</a>";
echo "</td>";
//heartbeat
echo "<td>".$s["Heartbeat"]."</td>";
//Host //Host
echo "<td>".$s['Owner']."</td>"; echo "<td>".$s['Owner']."</td>";