@esfaenza/core 20.3.73 → 20.3.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/components/index.d.ts
CHANGED
|
@@ -652,6 +652,34 @@ declare abstract class BaseSearchComponent<TSearch extends AppSearch<TItem>, TIt
|
|
|
652
652
|
constructor(injector: Injector);
|
|
653
653
|
ngOnInit(): void;
|
|
654
654
|
private init;
|
|
655
|
+
/**
|
|
656
|
+
* Dimensione di pagina a partire dalla quale la ricerca è di fatto "tutti gli
|
|
657
|
+
* elementi": è il valore con cui l'es-table rende la voce "Tutti" del paginatore.
|
|
658
|
+
*/
|
|
659
|
+
protected readonly TuttiGliElementi: number;
|
|
660
|
+
/**
|
|
661
|
+
* Rimette a posto la paginazione di una ricerca RIPRESA dallo storage.
|
|
662
|
+
*
|
|
663
|
+
* I filtri vanno ripresi — è tutto il senso della "hot view" — ma la dimensione
|
|
664
|
+
* di pagina no: se l'utente sceglie "Tutti" anche una volta sola, quel valore
|
|
665
|
+
* finisce nello storage e da lì in avanti OGNI ingresso nella pagina chiede al
|
|
666
|
+
* backend l'intero risultato. Su una ricerca da decine di migliaia di righe la
|
|
667
|
+
* tabella le rende tutte e la pagina si pianta per minuti, senza che chi la apre
|
|
668
|
+
* possa collegare la causa all'effetto: la scelta era stata fatta giorni prima.
|
|
669
|
+
*
|
|
670
|
+
* Una pagina si riapre quindi sempre con la dimensione di default. "Tutti" resta
|
|
671
|
+
* disponibile, ma come scelta esplicita e valida per la sessione in corso.
|
|
672
|
+
* Gira PRIMA di `afterLoadView`, così una pagina che volesse davvero ripartire
|
|
673
|
+
* da "tutti" può ancora imporlo di suo.
|
|
674
|
+
*/
|
|
675
|
+
private sanitizePagination;
|
|
676
|
+
/**
|
|
677
|
+
* Regola pura: una dimensione di pagina è accettabile se è positiva e sta sotto
|
|
678
|
+
* la soglia del "tutti". Isolata qui perché è l'unico pezzo con dei casi limite
|
|
679
|
+
* (0, negativi, `undefined`, i 9.999.999 di `AppSearch.toSelectAll`) e così si
|
|
680
|
+
* può verificare senza montare il componente.
|
|
681
|
+
*/
|
|
682
|
+
protected static dimensionePaginaAccettabile(ipp: number, tuttiGliElementi: number): boolean;
|
|
655
683
|
private createOrLoadView;
|
|
656
684
|
sendSearch(): void;
|
|
657
685
|
onSearchRequest(resetPage?: boolean): void;
|
|
@@ -2298,6 +2298,11 @@ class BaseSearchComponent extends BaseComponent {
|
|
|
2298
2298
|
super(injector);
|
|
2299
2299
|
//@ViewChild(EsFiltersComponent, { static: false }) filters: EsFiltersComponent;
|
|
2300
2300
|
this.searchView = null;
|
|
2301
|
+
/**
|
|
2302
|
+
* Dimensione di pagina a partire dalla quale la ricerca è di fatto "tutti gli
|
|
2303
|
+
* elementi": è il valore con cui l'es-table rende la voce "Tutti" del paginatore.
|
|
2304
|
+
*/
|
|
2305
|
+
this.TuttiGliElementi = 999999;
|
|
2301
2306
|
this.location = injector.get(Location);
|
|
2302
2307
|
this.lc = injector.get(LocalizationService);
|
|
2303
2308
|
this.localStorage = injector.get(CacheService);
|
|
@@ -2337,9 +2342,40 @@ class BaseSearchComponent extends BaseComponent {
|
|
|
2337
2342
|
await firstValueFrom(this.localStorage.removeItem(this.HotView));
|
|
2338
2343
|
}
|
|
2339
2344
|
}
|
|
2345
|
+
/**
|
|
2346
|
+
* Rimette a posto la paginazione di una ricerca RIPRESA dallo storage.
|
|
2347
|
+
*
|
|
2348
|
+
* I filtri vanno ripresi — è tutto il senso della "hot view" — ma la dimensione
|
|
2349
|
+
* di pagina no: se l'utente sceglie "Tutti" anche una volta sola, quel valore
|
|
2350
|
+
* finisce nello storage e da lì in avanti OGNI ingresso nella pagina chiede al
|
|
2351
|
+
* backend l'intero risultato. Su una ricerca da decine di migliaia di righe la
|
|
2352
|
+
* tabella le rende tutte e la pagina si pianta per minuti, senza che chi la apre
|
|
2353
|
+
* possa collegare la causa all'effetto: la scelta era stata fatta giorni prima.
|
|
2354
|
+
*
|
|
2355
|
+
* Una pagina si riapre quindi sempre con la dimensione di default. "Tutti" resta
|
|
2356
|
+
* disponibile, ma come scelta esplicita e valida per la sessione in corso.
|
|
2357
|
+
* Gira PRIMA di `afterLoadView`, così una pagina che volesse davvero ripartire
|
|
2358
|
+
* da "tutti" può ancora imporlo di suo.
|
|
2359
|
+
*/
|
|
2360
|
+
sanitizePagination(view) {
|
|
2361
|
+
if (BaseSearchComponent.dimensionePaginaAccettabile(view.itemsperpageoverride, this.TuttiGliElementi))
|
|
2362
|
+
return;
|
|
2363
|
+
view.itemsperpageoverride = new this.SearchType().itemsperpageoverride;
|
|
2364
|
+
view.page = 1; // la pagina corrente non ha più senso con un'altra dimensione
|
|
2365
|
+
}
|
|
2366
|
+
/**
|
|
2367
|
+
* Regola pura: una dimensione di pagina è accettabile se è positiva e sta sotto
|
|
2368
|
+
* la soglia del "tutti". Isolata qui perché è l'unico pezzo con dei casi limite
|
|
2369
|
+
* (0, negativi, `undefined`, i 9.999.999 di `AppSearch.toSelectAll`) e così si
|
|
2370
|
+
* può verificare senza montare il componente.
|
|
2371
|
+
*/
|
|
2372
|
+
static dimensionePaginaAccettabile(ipp, tuttiGliElementi) {
|
|
2373
|
+
return ipp > 0 && ipp < tuttiGliElementi;
|
|
2374
|
+
}
|
|
2340
2375
|
createOrLoadView(HotPotato) {
|
|
2341
2376
|
if (HotPotato) {
|
|
2342
2377
|
this.searchView = HotPotato;
|
|
2378
|
+
this.sanitizePagination(this.searchView);
|
|
2343
2379
|
this.afterLoadView(this.searchView);
|
|
2344
2380
|
}
|
|
2345
2381
|
else {
|