diff --git a/ogWebconsole/src/app/components/global-status/global-status.component.ts b/ogWebconsole/src/app/components/global-status/global-status.component.ts
index b6e27ca..6b6e6d9 100644
--- a/ogWebconsole/src/app/components/global-status/global-status.component.ts
+++ b/ogWebconsole/src/app/components/global-status/global-status.component.ts
@@ -44,6 +44,14 @@ export class GlobalStatusComponent implements OnInit {
isDhcp: boolean = false;
isRepository: boolean = false;
+ // Loading específicos para cada sección
+ loadingOgBootOgLives: boolean = false;
+ loadingOgBootServices: boolean = false;
+ loadingOgBootDisk: boolean = false;
+ loadingDhcpSubnets: boolean = false;
+ loadingDhcpServices: boolean = false;
+ loadingDhcpDisk: boolean = false;
+
constructor(
private configService: ConfigService,
private toastService: ToastrService,
@@ -160,6 +168,7 @@ export class GlobalStatusComponent implements OnInit {
if (data.message.installed_oglives) {
installedOgLives.push(...data.message.installed_oglives);
}
+ this.loadingOgBootOgLives = false;
}
diskUsageChartData.length = 0;
diff --git a/ogWebconsole/src/app/components/global-status/status-tab/status-tab.component.html b/ogWebconsole/src/app/components/global-status/status-tab/status-tab.component.html
index 82bd90d..eb34459 100644
--- a/ogWebconsole/src/app/components/global-status/status-tab/status-tab.component.html
+++ b/ogWebconsole/src/app/components/global-status/status-tab/status-tab.component.html
@@ -2,7 +2,7 @@
-
{{ cpuUsage.used_percentage }}
+
{{ cpuUsage.used_percentage }}%
Uso actual
diff --git a/ogWebconsole/src/app/components/task-logs/task-logs.component.css b/ogWebconsole/src/app/components/task-logs/task-logs.component.css
index 127ad84..42be1ad 100644
--- a/ogWebconsole/src/app/components/task-logs/task-logs.component.css
+++ b/ogWebconsole/src/app/components/task-logs/task-logs.component.css
@@ -73,9 +73,60 @@
border-left: 4px solid #667eea;
}
-.stat-card:hover {
+.stat-card.clickable {
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+}
+
+.stat-card.clickable::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: -100%;
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
+ transition: left 0.5s ease;
+}
+
+.stat-card.clickable:hover::before {
+ left: 100%;
+}
+
+.stat-card.clickable:hover {
+ transform: translateY(-3px);
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
+}
+
+.stat-card.clickable:active {
+ transform: translateY(-1px);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
+}
+
+.stat-card.active-filter {
transform: translateY(-2px);
- box-shadow: 0 8px 15px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
+ border: 2px solid #fff;
+ position: relative;
+}
+
+.stat-card.active-filter::after {
+ content: '✓';
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ background: rgba(255, 255, 255, 0.9);
+ color: #28a745;
+ border-radius: 50%;
+ width: 20px;
+ height: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ font-size: 12px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.stat-total {
@@ -161,6 +212,35 @@
margin-bottom: 15px;
}
+.filters-header-actions {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+}
+
+.active-filter-indicator {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ background: #e3f2fd;
+ color: #1976d2;
+ padding: 8px 12px;
+ border-radius: 20px;
+ font-size: 0.9rem;
+ font-weight: 500;
+ border: 1px solid #bbdefb;
+}
+
+.active-filter-indicator mat-icon {
+ font-size: 18px;
+ width: 18px;
+ height: 18px;
+}
+
+.active-filter-indicator button {
+ margin-left: 4px;
+}
+
.filters-header h3 {
margin: 0;
color: #495057;
diff --git a/ogWebconsole/src/app/components/task-logs/task-logs.component.html b/ogWebconsole/src/app/components/task-logs/task-logs.component.html
index 39ca165..7aeea14 100644
--- a/ogWebconsole/src/app/components/task-logs/task-logs.component.html
+++ b/ogWebconsole/src/app/components/task-logs/task-logs.component.html
@@ -22,23 +22,38 @@