beinahe suizidiert

This commit is contained in:
2025-07-30 12:20:19 +02:00
parent 61dcfdfdd5
commit 4d2366b5c9
4 changed files with 30 additions and 111 deletions

View File

@@ -1,5 +1,3 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -28,7 +26,6 @@ public class ServerDetailsViewModel
public int CpuCores { get; set; } = 0;
public string? GpuType { get; set; } = string.Empty;
public double RamSize { get; set; } = 0;
public string? DiskSpace { get; set; } = string.Empty;
// Database
@@ -39,16 +36,4 @@ public class ServerDetailsViewModel
public DateTime LastSeen { get; set; }
public Boolean IsVerified { get; set; } = false;
// Display Properties for View
public string DisplayCpuType => !string.IsNullOrWhiteSpace(CpuType) ? CpuType : "-";
public string DisplayCpuCores => CpuCores > 0 ? CpuCores.ToString() : "-";
public string DisplayGpuType => !string.IsNullOrWhiteSpace(GpuType) ? GpuType : "-";
public string DisplayRamSize => RamSize > 0 ? $"{RamSize} GB" : "-";
//public string DisplayDiskSpace => !string.IsNullOrWhiteSpace(DiskSpace) ? DiskSpace : "-";
public string DisplayCreatedAt => CreatedAt.ToLocalTime().ToString("dd.MM.yyyy HH:mm");
public string DisplayLastSeen => LastSeen.ToLocalTime().ToString("dd.MM.yyyy HH:mm");
public string StatusBadgeClass => IsOnline ? "bg-success" : "bg-danger";
public string StatusIcon => IsOnline ? "bi-check-circle" : "bi-x-circle";
public string StatusText => IsOnline ? "Online" : "Offline";
}

View File

@@ -4,13 +4,12 @@
<div class="row g-4">
@foreach (var s in Model)
{
<div class="col-12 col-sm-6 col-lg-4">
<div class="col-12 col-sm-6">
<div class="card h-100 border-secondary shadow-sm">
<div class="card-body d-flex flex-column gap-3">
<!-- Header mit Name und Status -->
<div class="d-flex justify-content-between align-items-center mb-3">
<h5 class="card-title text-dark mb-0">
<i class="bi bi-server me-2 text-primary"></i>(#@s.Id) @s.Name
<i class="bi bi-pc-display me-2 text-muted"></i>(#@s.Id) @s.Name
</h5>
<span class="badge
@(s.IsOnline ? "bg-success text-light" : "bg-danger text-light")">
@@ -19,7 +18,6 @@
</span>
</div>
<!-- Server Details -->
<div class="row mb-3">
<div class="col-md-5 text-muted small">
<div><i class="bi bi-globe me-1"></i><strong>IP:</strong> @s.IPAddress</div>
@@ -37,10 +35,10 @@
</div>
</div>
<!-- Action Buttons -->
<div class="d-flex flex-wrap gap-2 mt-auto">
<a asp-action="Details" asp-route-id="@s.Id" class="btn btn-sm btn-outline-primary flex-grow-1">
<i class="bi bi-info-circle me-1"></i> Details
<div class="d-flex flex-wrap gap-2">
<a asp-action="EditServer" asp-route-id="@s.Id" class="btn btn-outline-primary">
<i class="bi bi-pencil-square me-1"></i> Bearbeiten
</a>
<a asp-asp-controller="Server" asp-action="Details" asp-route-id="@s.Id"
@@ -66,20 +64,4 @@
</div>
}
</div>
</div>
<style>
.card {
transition: transform 0.2s, box-shadow 0.2s;
}
.card:hover {
transform: translateY(-2px);
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
}
.badge {
font-size: 0.8rem;
padding: 0.35em 0.65em;
}
</style>
</div>

View File

@@ -2,84 +2,42 @@
<div class="card shadow-sm">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="bi bi-server me-2 text-primary"></i>Serverdetails: @Model.Name
<i class="bi bi-hdd-network me-2 text-primary"></i>Serverdetails: @Model.Name
</h5>
<span class="badge @Model.StatusBadgeClass">
<i class="bi @Model.StatusIcon me-1"></i>
@Model.StatusText
<span class="badge @(Model.IsOnline ? "bg-success" : "bg-danger")">
<i class="bi @(Model.IsOnline ? "bi-check-circle" : "bi-x-circle") me-1"></i>
@(Model.IsOnline ? "Online" : "Offline")
</span>
</div>
<div class="card-body">
<div class="row">
<!-- System Information -->
<div class="col-md-6">
<h6><i class="bi bi-info-circle me-2"></i>Systeminformationen</h6>
<dl class="row">
<dt class="col-sm-4">ID</dt>
<dd class="col-sm-8">@Model.Id</dd>
<dl class="row mb-0">
<dt class="col-sm-3">ID</dt>
<dd class="col-sm-9">@Model.Id</dd>
<dt class="col-sm-4">IP-Adresse</dt>
<dd class="col-sm-8">@Model.IPAddress</dd>
<dt class="col-sm-3">IP-Adresse</dt>
<dd class="col-sm-9">@Model.IPAddress</dd>
<dt class="col-sm-4">Typ</dt>
<dd class="col-sm-8">@Model.Type</dd>
<dt class="col-sm-3">Typ</dt>
<dd class="col-sm-9">@Model.Type</dd>
<dt class="col-sm-4">Erstellt am</dt>
<dd class="col-sm-8">@Model.DisplayCreatedAt</dd>
<dt class="col-sm-3">Erstellt am</dt>
<dd class="col-sm-9">@Model.CreatedAt.ToLocalTime().ToString("dd.MM.yyyy HH:mm")</dd>
<dt class="col-sm-4">Zuletzt online</dt>
<dd class="col-sm-8">@Model.DisplayLastSeen</dd>
</dl>
</div>
<!-- Hardware Information -->
<div class="col-md-6">
<h6><i class="bi bi-cpu me-2"></i>Hardwareinformationen</h6>
<dl class="row">
<dt class="col-sm-4">CPU-Typ</dt>
<dd class="col-sm-8">@Model.DisplayCpuType</dd>
<dt class="col-sm-4">CPU-Kerne</dt>
<dd class="col-sm-8">@Model.DisplayCpuCores</dd>
<dt class="col-sm-4">GPU-Typ</dt>
<dd class="col-sm-8">@Model.DisplayGpuType</dd>
<dt class="col-sm-4">RAM</dt>
<dd class="col-sm-8">@Model.DisplayRamSize</dd>
<dt class="col-sm-4">Festplatte</dt>
<dd class="col-sm-8">@Model.DisplayDiskSpace</dd>
</dl>
</div>
</div>
<!-- Description -->
@if (!string.IsNullOrEmpty(Model.Description))
{
<div class="mt-4">
<h6><i class="bi bi-card-text me-2"></i>Beschreibung</h6>
<div class="alert alert-light">
@Model.Description
</div>
</div>
}
<dt class="col-sm-3">Zuletzt gesehen</dt>
<dd class="col-sm-9">@Model.LastSeen.ToLocalTime().ToString("dd.MM.yyyy HH:mm")</dd>
</dl>
</div>
<!-- Card Footer with Actions -->
<div class="card-footer d-flex flex-wrap gap-2">
<div class="card-footer text-end">
<a href="/Download/File/Linux/heartbeat" class="btn btn-success">
🖥️ Linux Agent
</a>
<a asp-action="EditServer" asp-route-id="@Model.Id" class="btn btn-outline-primary">
<i class="bi bi-pencil me-1"></i> Bearbeiten
<a asp-action="EditServer" asp-route-id="@Model.Id" class="btn btn-outline-primary me-2">
<i class="bi bi-pencil"></i> Bearbeiten
</a>
<form asp-action="Delete" asp-route-id="@Model.Id" method="post" class="d-inline"
onsubmit="return confirm('Diesen Server wirklich löschen?');">
<button type="submit" class="btn btn-outline-danger">
<i class="bi bi-trash me-1"></i> Löschen
<i class="bi bi-trash"></i> Löschen
</button>
</form>
</div>
@@ -106,9 +64,4 @@
<canvas id="uptimeChart"></canvas>
</div>
</div>
<h6><i class="bi bi-graph-up me-1"></i>RAM Last</h6>
<div class="bg-light border rounded p-4 text-center text-muted" style="height: 250px;">
<canvas id="uptimeChart"></canvas>
</div>
</div>
</div>

View File

@@ -7,8 +7,7 @@
<h1 class="h2 fw-bold mb-0">
<i class="bi bi-hdd-network me-2 text-primary"></i>Serverübersicht
</h1>
<a asp-controller="Server" asp-action="AddServer"
class="btn btn-primary d-flex align-items-center gap-1">
<a asp-controller="Server" asp-action="AddServer" class="btn btn-primary d-flex align-items-center gap-1">
<i class="bi bi-plus-circle"></i> Server hinzufügen
</a>
</div>
@@ -22,7 +21,7 @@
<script src="~/js/server_uptime.js"></script>
<script>
async function loadServerCards() {
async function loadServerCards() {
try {
const response = await fetch('/Server/ServerCardsPartial');
if (response.ok) {
@@ -40,4 +39,4 @@
loadServerCards();
setInterval(loadServerCards, 30000);
</script>
}
}