π¨ Operations Overview - Redesign UI Completo
π¨ Operations Overview - Redesign UI Completo
Data: 21 Ottobre 2025
File: resources/views/admin/i40/operations/index.blade.php
---
π Riepilogo Modifiche
Redesign completo dell'interfaccia Operations con focus su: 1. Overview Macchine - Card eleganti e moderne 2. KPI Cards - Design con gradienti e animazioni 3. Navigazione - Semplificata e intuitiva
---
ποΈ 1. Eliminazione Select Macchina
Prima
``html
<select onchange="switchMachine(this.value)">
<option value="">-- Tutte le macchine (overview) --</option>
@foreach($machines as $machine)...
</select>
<!-- Bottoni Prev/Next -->
`Dopo
`html
@if($selectedMachine)
<div class="card">
<h5>{{ $selectedMachine->name }}</h5>
<div class="btn-group">
[ β Prev ] [ π Tutte ] [ Next βΆ ]
</div>
</div>
@endif
`Vantaggi:
- β
Navigazione diretta con bottoni
- β
Card visibile solo quando necessario
- β
Bottone "Tutte" per tornare all'overview
- β
~50 linee di codice eliminate
---
π¨ 2. Overview Macchine - Design Elegante
Card Structure
`html
<div class="machine-card machine-card-active">
<!-- Header con nome, location e badge status -->
<!-- Metrica: Ultimo Import (con icona) -->
<!-- Metrica: Database Stats (con icona) -->
<!-- Footer: Bottone Analisi -->
</div>
`Features Principali
A. Barra Laterale Colorata
`css
.machine-card::before {
width: 4px;
background: linear-gradient(180deg, colore1, colore2);
}.machine-card-active::before {
background: linear-gradient(180deg, #198754, #20c997); / Verde /
}
.machine-card-inactive::before {
background: linear-gradient(180deg, #6c757d, #adb5bd); / Grigio /
}
`B. Header Elegante
Nome macchina in <h5> bold
Location con icona bi-geo-alt
Badge status modernizzato (Attiva/Inattiva) C. Metriche Interattive
`css
.machine-metric {
padding: 0.75rem;
background: rgba(255,255,255,0.6);
border-radius: 0.5rem;
border-left: 3px solid colore;
transition: all 0.3s ease;
}.machine-metric:hover {
background: rgba(255,255,255,0.9);
border-left-color: #0d6efd;
transform: translateX(4px);
}
`Metriche Disponibili:
1. Ultimo Import (Verde - Success)
- Data import
- Numero operazioni
- Range date (badge)
- Icona:
bi-arrow-down-circle2. Database (Cyan - Info)
- Totale operazioni (numero grande)
- Giorni attivi (badge)
- Range temporale
- Icona:
bi-bar-chart3. Nessun Import (Giallo - Warning)
- Messaggio "Nessun import recente"
- Icona:
bi-clock-historyD. Effetti Hover
`css
.machine-card:hover {
transform: translateY(-8px); / Sollevamento 3D /
box-shadow: 0 12px 24px rgba(0,0,0,0.15) !important;
}.machine-card:hover::before {
opacity: 1; / Barra laterale visibile /
}
.machine-card:hover .machine-stat-icon {
opacity: 1;
transform: scale(1.1); / Zoom icone /
}
`E. Clickable Cards
`html
<div class="machine-card" onclick="window.location.href='...'">
<!-- Card cliccabile per navigare alla macchina -->
<a onclick="event.stopPropagation();">
<!-- Bottone Analisi non propaga il click -->
</a>
</div>
`---
π 3. KPI Cards - Design con Gradienti
Prima (Colori Solidi)
`html
<div class="card bg-primary text-white">
<h3>123</h3>
<small>Operazioni Oggi</small>
<i class="bi bi-gear fs-1"></i>
</div>
`Dopo (Gradienti + Animazioni)
`html
<div class="card kpi-card kpi-primary text-white shadow">
<div class="small text-white-50 mb-1">Operazioni Oggi</div>
<h3 class="mb-0 fw-bold">123</h3>
<i class="bi bi-gear-fill" style="font-size: 2.5rem; opacity: 0.8;"></i>
</div>
`Gradienti per KPI
`css
.kpi-primary {
background: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%);
}.kpi-info {
background: linear-gradient(135deg, #0dcaf0 0%, #087990 100%);
}
.kpi-success {
background: linear-gradient(135deg, #198754 0%, #146c43 100%);
}
.kpi-warning {
background: linear-gradient(135deg, #ffc107 0%, #cc9a06 100%);
}
`Effetti Decorativi
`css
/ Cerchio decorativo in alto a destra /
.kpi-card::after {
content: '';
position: absolute;
top: 0;
right: 0;
width: 100px;
height: 100px;
background: rgba(255,255,255,0.1);
border-radius: 50%;
transform: translate(30%, -30%);
}
`Animazioni Hover
`css
.kpi-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.2) !important;
}.kpi-card:hover .kpi-icon {
transform: scale(1.2) rotate(5deg); / Zoom + Rotazione /
}
`4 KPI Disponibili
| KPI | Colore | Icona | Metrica |
|-----|--------|-------|---------|
| Operazioni Oggi | Primary (Blu) |
bi-gear-fill | Conteggio totale |
| Durata Media | Info (Cyan) | bi-clock-fill | Secondi |
| Success Rate | Success (Verde) | bi-check-circle-fill | Percentuale |
| Pezzi Lavorati | Warning (Giallo) | bi-box-fill | Conteggio totale |---
π― 4. Badge Status Modernizzati
`css
.status-badge-modern {
padding: 0.375rem 0.75rem;
border-radius: 2rem; / Pill shape /
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
`Applicazione:
`html
<!-- Macchina Attiva -->
<span class="status-badge-modern badge bg-success">
<i class="bi bi-check-circle"></i> Attiva
</span><!-- Macchina Inattiva -->
<span class="status-badge-modern badge bg-secondary">
<i class="bi bi-pause-circle"></i> Inattiva
</span>
`---
π¨ 5. Palette Colori Completa
Machine Cards
| Stato | Barra Laterale | Descrizione |
|-------|----------------|-------------|
| Active |
#198754 β #20c997 | Verde gradient |
| Inactive | #6c757d β #adb5bd | Grigio gradient |
| Default | #0d6efd β #0dcaf0 | Blu gradient (hover) |Metriche
| Tipo | Bordo | Uso |
|------|-------|-----|
| Success |
#198754 | Ultimo import riuscito |
| Info | #0dcaf0 | Database stats |
| Warning | #ffc107 | Nessun import |
| Default | #dee2e6 | Hover |KPI Cards
| KPI | Gradient | RGB |
|-----|----------|-----|
| Primary | Blu |
#0d6efd β #0a58ca |
| Info | Cyan | #0dcaf0 β #087990 |
| Success | Verde | #198754 β #146c43 |
| Warning | Giallo | #ffc107 β #cc9a06 |---
π 6. Layout Responsive
Grid System
`html
<!-- Overview Macchine -->
<div class="row g-4">
<div class="col-lg-4 col-md-6">
<!-- Card macchina -->
</div>
</div><!-- KPI Cards -->
<div class="row mb-4 g-3">
<div class="col-md-3">
<!-- KPI card -->
</div>
</div>
`Breakpoints:
Desktop (β₯1200px): 3 card per riga (33%)
Tablet (β₯768px): 2 card per riga (50%)
Mobile (<768px): 1 card per riga (100%) ---
β¨ 7. Animazioni e Transizioni
Timing
`css
transition: all 0.3s ease;
`Transform
Card Hover: translateY(-8px) (sollevamento)
Metric Hover: translateX(4px) (slide laterale)
Icon Hover: scale(1.1) (zoom)
KPI Icon Hover: scale(1.2) rotate(5deg) (zoom + rotazione)Opacity
Icon Default: opacity: 0.7
Icon Hover: opacity: 1
Barra Laterale Default: opacity: 0
Barra Laterale Hover: opacity: 1---
π§ 8. Ottimizzazioni Performance
CSS
Inline CSS nel blade per evitare problemi di caching
GPU Acceleration per transform (translateY, scale)
Will-change implicito tramite transform HTML
Grid Gap ( g-4, g-3) invece di margin manuali
Shadow utility Bootstrap 5 ( shadow-sm, shadow)
Icone fill ( -fill) per maggiore impatto visivo---
π File Modificato
Path:
resources/views/admin/i40/operations/index.blade.phpSezioni:
1. CSS (Linee 6-154)
Machine cards styles
KPI cards styles
Metriche interattive
Badge modernizzati
Animazioni hover 2. Navigazione (Linee 196-244)
Card navigazione (solo se macchina selezionata)
Bottoni Prev/Tutte/Next 3. Overview Macchine (Linee 248-376)
Grid responsive col-lg-4 col-md-6
Card cliccabili con header elegante
Metriche interattive con icone
Footer con bottone analisi 4. KPI Cards (Linee 380-442)
4 KPI con gradienti
Icone fill 2.5rem
Layout responsive
Effetti hover ---
β
Risultati Finali
UX/UI
β
Design moderno con gradienti e ombre
β
InterattivitΓ fluida con hover effects
β
Icone contestuali per riconoscimento immediato
β
Gerarchia visiva chiara con colori e dimensioni
β
Responsive su tutti i dispositivi Navigazione
β
Card cliccabili per navigazione rapida
β
Bottoni Prev/Next per scorrere macchine
β
Bottone "Tutte" per tornare all'overview
β
No select dropdown - UI piΓΉ pulita Performance
β
CSS inline - nessun caricamento esterno
β
Animazioni GPU - smooth su qualsiasi device
β
Bootstrap 5 utilities - lightweight Metriche Visibili
β
Ultimo Import: Data, count, range
β
Database: Totale operazioni, giorni attivi, range
β
Status: Badge Attiva/Inattiva con icone
β
KPI: Operazioni, Durata, Success Rate, Pezzi ---
π Prossimi Passi Suggeriti
1. Grafici Inline: Mini-grafici sparkline nelle card overview
2. Filtri Avanzati: Per data, tipo lavorazione, stato
3. Export Dati: CSV/Excel per overview e dettaglio
4. Auto-refresh: Aggiornamento automatico ogni N secondi
5. Notifiche: Alert per macchine inattive o errori
6. Confronto Macchine: Vista comparativa side-by-side
7. Trend Indicators: Frecce ββ per indicare trend positivi/negativi
---
π Note Tecniche
Bootstrap 5: Utilizzato per grid, utilities, colori
Bootstrap Icons: Tutte le icone con varianti -fill
Flexbox: Layout interno card e metriche
CSS Custom Properties: Possibile migrazione futura per theming
JavaScript: Onclick per navigazione card
Event Propagation: event.stopPropagation()` su bottoni dentro card---
Fine Documento
Analisi Codice
Blocco 1 html
<select onchange="switchMachine(this.value)">
<option value="">-- Tutte le macchine (overview) --</option>
@foreach($machines as $machine)...
</select>
<!-- Bottoni Prev/Next -->
Blocco 2 html
@if($selectedMachine)
<div class="card">
<h5>{{ $selectedMachine->name }}</h5>
<div class="btn-group">
[ β Prev ] [ π Tutte ] [ Next βΆ ]
</div>
</div>
@endif
Blocco 3 html
<div class="machine-card machine-card-active">
<!-- Header con nome, location e badge status -->
<!-- Metrica: Ultimo Import (con icona) -->
<!-- Metrica: Database Stats (con icona) -->
<!-- Footer: Bottone Analisi -->
</div>
Blocco 4 css
.machine-card::before {
width: 4px;
background: linear-gradient(180deg, colore1, colore2);
}
.machine-card-active::before {
background: linear-gradient(180deg, #198754, #20c997); /* Verde */
}
.machine-card-inactive::before {
background: linear-gradient(180deg, #6c757d, #adb5bd); /* Grigio */
}
Blocco 5 css
.machine-metric {
padding: 0.75rem;
background: rgba(255,255,255,0.6);
border-radius: 0.5rem;
border-left: 3px solid colore;
transition: all 0.3s ease;
}
.machine-metric:hover {
background: rgba(255,255,255,0.9);
border-left-color: #0d6efd;
transform: translateX(4px);
}
Blocco 6 css
.machine-card:hover {
transform: translateY(-8px); /* Sollevamento 3D */
box-shadow: 0 12px 24px rgba(0,0,0,0.15) !important;
}
.machine-card:hover::before {
opacity: 1; /* Barra laterale visibile */
}
.machine-card:hover .machine-stat-icon {
opacity: 1;
transform: scale(1.1); /* Zoom icone */
}
Blocco 7 html
<div class="machine-card" onclick="window.location.href='...'">
<!-- Card cliccabile per navigare alla macchina -->
<a onclick="event.stopPropagation();">
<!-- Bottone Analisi non propaga il click -->
</a>
</div>
Blocco 8 html
<div class="card bg-primary text-white">
<h3>123</h3>
<small>Operazioni Oggi</small>
<i class="bi bi-gear fs-1"></i>
</div>
Blocco 9 html
<div class="card kpi-card kpi-primary text-white shadow">
<div class="small text-white-50 mb-1">Operazioni Oggi</div>
<h3 class="mb-0 fw-bold">123</h3>
<i class="bi bi-gear-fill" style="font-size: 2.5rem; opacity: 0.8;"></i>
</div>
Blocco 10 css
.kpi-primary {
background: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%);
}
.kpi-info {
background: linear-gradient(135deg, #0dcaf0 0%, #087990 100%);
}
.kpi-success {
background: linear-gradient(135deg, #198754 0%, #146c43 100%);
}
.kpi-warning {
background: linear-gradient(135deg, #ffc107 0%, #cc9a06 100%);
}
Blocco 11 css
/* Cerchio decorativo in alto a destra */
.kpi-card::after {
content: '';
position: absolute;
top: 0;
right: 0;
width: 100px;
height: 100px;
background: rgba(255,255,255,0.1);
border-radius: 50%;
transform: translate(30%, -30%);
}
Blocco 12 css
.kpi-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.2) !important;
}
.kpi-card:hover .kpi-icon {
transform: scale(1.2) rotate(5deg); /* Zoom + Rotazione */
}
Blocco 13 css
.status-badge-modern {
padding: 0.375rem 0.75rem;
border-radius: 2rem; /* Pill shape */
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
Blocco 14 html
<!-- Macchina Attiva -->
<span class="status-badge-modern badge bg-success">
<i class="bi bi-check-circle"></i> Attiva
</span>
<!-- Macchina Inattiva -->
<span class="status-badge-modern badge bg-secondary">
<i class="bi bi-pause-circle"></i> Inattiva
</span>
Blocco 15 html
<!-- Overview Macchine -->
<div class="row g-4">
<div class="col-lg-4 col-md-6">
<!-- Card macchina -->
</div>
</div>
<!-- KPI Cards -->
<div class="row mb-4 g-3">
<div class="col-md-3">
<!-- KPI card -->
</div>
</div>
Blocco 16 css
transition: all 0.3s ease;