🎨 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-circle

    2. Database (Cyan - Info) - Totale operazioni (numero grande) - Giorni attivi (badge) - Range temporale - Icona: bi-bar-chart

    3. Nessun Import (Giallo - Warning) - Messaggio "Nessun import recente" - Icona: bi-clock-history

    D. 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.php

    Sezioni:

    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
  • βœ… 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;