Skip to content

Test AG Grid Page ​

Overview ​

Pagina di test per verificare il corretto funzionamento di AG Grid React Enterprise nel progetto Elerama Frontend, utilizzando dati reali dall'API di magazzino.

Accesso ​

  • URL: /test-ag-grid
  • Disponibilità: Accessibile anche in produzione (redirect commentato)
  • Autenticazione: Richiesta (protected route)

Features ​

1. Test Configurabili ​

  • Configurazione test caricata da JSON esterno
  • Filtro automatico per ditta corrente
  • Selezione manuale del test da eseguire
  • Parametri test: date, magazzini, tipi movimento

2. Performance Tracking ​

  • Tempo API: Misurato dalla chiamata al completamento
  • Tempo Rendering: Misurato dal completamento API al render della griglia
  • Metriche visualizzate in tempo reale

3. AG Grid Enterprise Configuration ​

  • Versione: ag-grid-react v34.3.0 (Enterprise Edition)
  • Tema: ag-theme-quartz-dark personalizzato
  • Features Enterprise attive:
    • Paginazione avanzata (10, 50, 100, 1000, 10000, 100000 righe)
    • Row Grouping
    • Pivot Mode
    • Value Aggregation
    • Advanced Filters (data, numero)
    • Sidebar con pannelli Columns e Filters
    • Range Selection
    • Excel Export (menu contestuale)
    • Integrated Charts
    • Grid State Persistence (sessionStorage)

4. Gestione Dati Warehouse ​

  • API: getWarehouseMovementsSummary
  • TanStack Query hooks (StrictMode-safe)
  • Hook useFetchJson per configurazione test
  • Interfaccia WarehouseMovement da schema Zod

5. Interazioni Utente ​

  • Click su riga: Visualizza tutti i dati della riga selezionata
  • Arrow Up/Down: Naviga tra le righe con tastiera
  • Grid State: Posizione scroll e filtri persistono tra navigazioni

Struttura Codice ​

typescript
import { AG_GRID_LOCALE_IT } from '@ag-grid-community/locale';
import { AllEnterpriseModule } from "ag-grid-enterprise";
import { ModuleRegistry, ClientSideRowModelModule } from "ag-grid-community";

// Register AG Grid Enterprise modules
ModuleRegistry.registerModules([
    AllEnterpriseModule,
    ClientSideRowModelModule,
    IntegratedChartsModule.with(AgChartsEnterpriseModule)
]);

// TanStack Query hook - StrictMode-safe
const { data, isLoading, error } = useWarehouseMovementsSummary();

// Carica configurazione test
const { data: testsConfig } = useFetchJson<TestsConfigFile>(
    "https://daisysolution.it/benchmark/erp/erp-warehouse-movements-summary-test-list.json"
);

// Filtra test per ditta corrente
const availableTests = useMemo(() => {
    if (!testsConfig || !currentCompanyId) return [];
    return testsConfig.tests.filter(test => test.companyId === currentCompanyId);
}, [testsConfig, currentCompanyId]);

Grid State Persistence ​

Lo stato della griglia (scroll, filtri, ordinamento) viene salvato automaticamente:

typescript
const GRID_STATE_KEY = 'ag-grid-test-state';

// Carica stato iniziale
const initialState = useMemo<GridState | undefined>(() => {
    const savedState = sessionStorage.getItem(GRID_STATE_KEY);
    return savedState ? JSON.parse(savedState) : undefined;
}, []);

// Salva stato prima della distruzione
const onGridPreDestroyed = useCallback((event: GridPreDestroyedEvent) => {
    if (event.state) {
        sessionStorage.setItem(GRID_STATE_KEY, JSON.stringify(event.state));
    }
}, []);

Compatibilità ​

  • ✅ React 19
  • ✅ React Compiler
  • ✅ React Router 7.9
  • ✅ TypeScript 5 (strict mode)
  • ✅ StrictMode double-call prevention
  • ✅ AG Grid Enterprise v34.3.0

Testing ​

Test completi disponibili in: tests/routes/test-ag-grid.test.tsx

Coverage:

  • Meta tags
  • Client loader
  • Rendering componenti
  • Selettore test
  • Grid con dati iniziali vuoti
  • Persistenza stato

Eseguire i test:

bash
npm test tests/routes/test-ag-grid.test.tsx

Uso ​

  1. Accedi alla pagina /test-ag-grid
  2. Seleziona un test dal menu dropdown
  3. Osserva i tempi di caricamento e rendering
  4. Clicca su una riga per visualizzare i dettagli
  5. Esplora le features Enterprise (sidebar, export, charts)
  • Dalla pagina /welcome è disponibile un menu con link a tutte le pagine di test (visibile solo in development)
  • AG Grid React Documentation

Note Tecniche ​

React Compiler ​

Questa pagina è compatibile con il React Compiler abilitato nel progetto. Non utilizza useCallback o useMemo poiché il compilatore ottimizza automaticamente.

CSS ​

Gli stili di AG Grid sono importati direttamente nel componente:

typescript
import "ag-grid-community/styles/ag-grid.css";
import "ag-grid-community/styles/ag-theme-quartz.css";

Questo è accettabile per una pagina di test. Per uso in produzione, considera di importare gli stili nel app.css principale.

Documentazione Elerama Frontend