@esfaenza/es-table 11.2.22-beta3 → 11.2.22-beta7

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.
Files changed (62) hide show
  1. package/bundles/esfaenza-es-table.umd.js +3129 -2988
  2. package/bundles/esfaenza-es-table.umd.js.map +1 -1
  3. package/bundles/esfaenza-es-table.umd.min.js +1 -15
  4. package/bundles/esfaenza-es-table.umd.min.js.map +1 -1
  5. package/esfaenza-es-table.d.ts +6 -5
  6. package/esfaenza-es-table.metadata.json +1 -1
  7. package/esm2015/esfaenza-es-table.js +7 -6
  8. package/esm2015/lib/components/es-table/es_table.component.js +1299 -0
  9. package/esm2015/lib/components/es-table/es_table.component.loc.js +36 -0
  10. package/esm2015/lib/components/es-td/es_td.component.js +106 -0
  11. package/esm2015/lib/components/es-th/es_th.component.js +160 -0
  12. package/esm2015/lib/components/pager/table_pager.component.js +100 -0
  13. package/esm2015/lib/components/pager/table_pager.component.loc.js +22 -0
  14. package/esm2015/lib/core/handlers/classes/ColumnMetadataHandler.js +666 -0
  15. package/esm2015/lib/core/handlers/classes/DynamicModeHandler.js +63 -0
  16. package/esm2015/lib/core/handlers/classes/ExportHandler.js +41 -0
  17. package/esm2015/lib/core/handlers/classes/HierarchyModeHandler.js +134 -0
  18. package/esm2015/lib/core/handlers/classes/ItemsHandler.js +120 -0
  19. package/esm2015/lib/core/handlers/classes/ReportModeHandler.js +67 -0
  20. package/esm2015/lib/core/handlers/classes/RowGroupingHandler.js +474 -0
  21. package/esm2015/lib/core/handlers/classes/SelectionHandler.js +524 -0
  22. package/esm2015/lib/core/handlers/classes/UtilitiesHandler.js +170 -0
  23. package/esm2015/lib/core/handlers/index.js +10 -0
  24. package/esm2015/lib/domain/configuration/EsTableDefaultable.js +4 -0
  25. package/esm2015/lib/domain/configuration/EsTableModuleConfig.js +4 -0
  26. package/esm2015/lib/domain/internals/classes/EsTableColumn.js +1 -1
  27. package/esm2015/lib/es-table.module.js +6 -6
  28. package/esm2015/lib/tokens.js +1 -1
  29. package/esm2015/public-api.js +6 -6
  30. package/fesm2015/esfaenza-es-table.js +2818 -2701
  31. package/fesm2015/esfaenza-es-table.js.map +1 -1
  32. package/lib/{es_table.component.d.ts → components/es-table/es_table.component.d.ts} +35 -573
  33. package/lib/{es_table.component.loc.d.ts → components/es-table/es_table.component.loc.d.ts} +0 -0
  34. package/lib/{es_td.component.d.ts → components/es-td/es_td.component.d.ts} +0 -0
  35. package/lib/{es_th.component.d.ts → components/es-th/es_th.component.d.ts} +6 -0
  36. package/lib/{pager → components/pager}/table_pager.component.d.ts +4 -1
  37. package/lib/{pager → components/pager}/table_pager.component.loc.d.ts +0 -0
  38. package/lib/core/handlers/classes/ColumnMetadataHandler.d.ts +158 -0
  39. package/lib/core/handlers/classes/DynamicModeHandler.d.ts +31 -0
  40. package/lib/core/handlers/classes/ExportHandler.d.ts +20 -0
  41. package/lib/core/handlers/classes/HierarchyModeHandler.d.ts +38 -0
  42. package/lib/core/handlers/classes/ItemsHandler.d.ts +41 -0
  43. package/lib/core/handlers/classes/ReportModeHandler.d.ts +19 -0
  44. package/lib/core/handlers/classes/RowGroupingHandler.d.ts +114 -0
  45. package/lib/core/handlers/classes/SelectionHandler.d.ts +153 -0
  46. package/lib/core/handlers/classes/UtilitiesHandler.d.ts +66 -0
  47. package/lib/core/handlers/index.d.ts +9 -0
  48. package/lib/{models → domain/configuration}/EsTableDefaultable.d.ts +0 -0
  49. package/lib/{models → domain/configuration}/EsTableModuleConfig.d.ts +0 -0
  50. package/lib/domain/internals/classes/EsTableColumn.d.ts +2 -0
  51. package/lib/es-table.module.d.ts +1 -1
  52. package/lib/tokens.d.ts +1 -1
  53. package/package.json +1 -1
  54. package/public-api.d.ts +5 -5
  55. package/esm2015/lib/es_table.component.js +0 -3453
  56. package/esm2015/lib/es_table.component.loc.js +0 -35
  57. package/esm2015/lib/es_td.component.js +0 -106
  58. package/esm2015/lib/es_th.component.js +0 -150
  59. package/esm2015/lib/models/EsTableDefaultable.js +0 -4
  60. package/esm2015/lib/models/EsTableModuleConfig.js +0 -4
  61. package/esm2015/lib/pager/table_pager.component.js +0 -92
  62. package/esm2015/lib/pager/table_pager.component.loc.js +0 -22
@@ -1,16 +1,17 @@
1
1
  import { QueryList, ChangeDetectorRef, EventEmitter, OnChanges, SimpleChanges, ElementRef, TemplateRef } from '@angular/core';
2
2
  import { ControlValueAccessor, NgControl } from '@angular/forms';
3
- import { HashingService, UtilityService, ExportService, MessageService, DateService } from '@esfaenza/extensions';
3
+ import { UtilityService, ExportService, MessageService, DateService } from '@esfaenza/extensions';
4
4
  import { LocalizationService } from '@esfaenza/localizations';
5
5
  import { PreferencesService } from '@esfaenza/preferences';
6
6
  import { ContextMenuComponent } from '@esfaenza/ngx-contextmenu';
7
- import { AppSearch, AppOrdering, GenericItem, EsTableColumnsDefinition, CornerMenuOption, ReportResult, ReportColumn, EsTableOperationDefinition, EsTableColumn, GroupPager } from './domain';
8
- import { EsTd } from './es_td.component';
9
- import { EsTdDirective } from './directives/es_td.directive';
10
- import { EsThDirective } from './directives/es_th.directive';
11
- import { ItemsSelection } from './domain/externals/classes/appsearch/ItemsSelection';
12
- import { Group } from "./domain/externals/classes/appsearch/Group";
13
- import { EsTableDefaultable } from './models/EsTableDefaultable';
7
+ import { AppSearch, AppOrdering, EsTableColumnsDefinition, CornerMenuOption, ReportResult, EsTableOperationDefinition, EsTableColumn, GroupPager, GroupRouteFragment } from '../../domain';
8
+ import { EsTd } from '../es-td/es_td.component';
9
+ import { EsTdDirective } from '../../directives/es_td.directive';
10
+ import { EsThDirective } from '../../directives/es_th.directive';
11
+ import { ItemsSelection } from '../../domain/externals/classes/appsearch/ItemsSelection';
12
+ import { Group } from "../../domain/externals/classes/appsearch/Group";
13
+ import { EsTableDefaultable } from '../../domain/configuration/EsTableDefaultable';
14
+ import { ExportHandler, ColumnMetadataHandler, DynamicModeHandler, HierarchyModeHandler, ItemsHandler, ReportModeHandler, RowGroupingHandler, SelectionHandler, UtilitiesHandler } from '../../core/handlers';
14
15
  /** Componente che permette di rappresentare una griglia di valori */
15
16
  export declare class EsTableComponent implements ControlValueAccessor, OnChanges {
16
17
  ngControl: NgControl;
@@ -18,14 +19,22 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
18
19
  private deafults;
19
20
  locale: string;
20
21
  lc: LocalizationService;
21
- private cdr;
22
- private hashExts;
22
+ cdr: ChangeDetectorRef;
23
+ private utilities_H;
23
24
  private utiExts;
24
25
  private expExts;
25
26
  private dateExts;
26
27
  private msgExts;
28
+ export_H: ExportHandler;
29
+ columnMetadata_H: ColumnMetadataHandler;
30
+ dynamicMode_H: DynamicModeHandler;
31
+ hierarchyMode_H: HierarchyModeHandler;
32
+ items_H: ItemsHandler;
33
+ reportMode_H: ReportModeHandler;
34
+ rowGrouping_H: RowGroupingHandler;
35
+ selection_H: SelectionHandler;
27
36
  /** @ignore */
28
- constructor(ngControl: NgControl, prefService: PreferencesService, deafults: EsTableDefaultable, locale: string, lc: LocalizationService, cdr: ChangeDetectorRef, hashExts: HashingService, utiExts: UtilityService, expExts: ExportService, dateExts: DateService, msgExts: MessageService);
37
+ constructor(ngControl: NgControl, prefService: PreferencesService, deafults: EsTableDefaultable, locale: string, lc: LocalizationService, cdr: ChangeDetectorRef, utilities_H: UtilitiesHandler, utiExts: UtilityService, expExts: ExportService, dateExts: DateService, msgExts: MessageService);
29
38
  /** View finale su cui bindarsi lato Frontend, il tipo può essere IAppSearch<any> (per la **viewMode**), any[] (per l'**arrayMode**) e ReportDefinition per la **reportMode** */
30
39
  View: any;
31
40
  /** Modello da cui l'es-table mostra i pulsanti di paginazione in basso a destra */
@@ -396,7 +405,12 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
396
405
  * - Selezione: non cambia nulla
397
406
  * - Paginazione: cambia a livello root quindi viene ricaricato tutto comunque, stesso vale per le paginazioni interne
398
407
  */
399
- private groupSearchRequestsCache;
408
+ groupSearchRequestsCache: {
409
+ path: string;
410
+ route: GroupRouteFragment[];
411
+ view: AppSearch<any>;
412
+ group_column: string;
413
+ }[];
400
414
  /** Variabile d'appoggio per capire se c'è bisogno di ri-effettuare una ricerca o meno */
401
415
  private ResearchNeeded;
402
416
  /** Colonne visibili della vista attuale. Valorizzato di default al numero massimo di colonne supportate dalla tabella per le casistiche in assenza di custom cells */
@@ -408,35 +422,14 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
408
422
  /** In caso di Row Grouping qui viene salvata la vista principale dei gruppi base */
409
423
  MainGroupView: AppSearch<any>;
410
424
  /** Conteggio base degli oggetti. In modalità normale viene resettato ad ogni nuova View inserita, in modalità RowGrouping viene resettato solo ad una nuova View di livello "0" */
411
- private BaseItemsCount;
412
- /** Cache per salvare per ogni chiave di ogni gruppo chi è il gruppo rappresentato */
413
- private rgGroupCache;
414
- /** Cache per salvare per ogni chiave di ogni gruppo chi sono gli oggetti sottostanti, non dei sottogruppi */
415
- private rgItemCache;
416
- /** Cache per salvare per ogni chiave di ogni gruppo chi sono gli oggetti sottostanti, non dei sottogruppi */
417
- private rgChildGroupsCache;
418
- /** Cache di selezione Hash - Oggetto per la variabile **items** dell'itemSelector. Facilita le operazioni di lookup via hash*/
419
- private itemsCache;
420
- /** Cache di selezione Hash - Oggetto per la variabile **groups** dell'itemSelector. Facilita le operazioni di lookup via hash */
421
- private groupsCache;
422
- /** Cache di selezione Hash - Oggetto per la variabile **exclusions** dell'itemSelector. Facilita le operazioni di lookup via hash */
423
- private exclusionsCache;
424
- /** Cache di selezione Hash - Oggetto per la variabile **group_exclusions** dell'itemSelector. Facilita le operazioni di lookup via hash */
425
- private group_exclusionsCache;
426
- /** Cache di selezione Hash - Oggetto per la variabile **items** dell'itemSelector. Facilita le operazioni di lookup via indice*/
427
- private i_itemsCache;
428
- /** Cache di selezione Hash - Oggetto per la variabile **groups** dell'itemSelector. Facilita le operazioni di lookup via indice */
429
- private i_groupsCache;
430
- /** Cache di selezione Hash - Oggetto per la variabile **exclusions** dell'itemSelector. Facilita le operazioni di lookup via indice */
431
- private i_exclusionsCache;
432
- /** Cache di selezione Hash - Oggetto per la variabile **group_exclusions** dell'itemSelector. Facilita le operazioni di lookup via indice */
433
- private i_group_exclusionsCache;
425
+ BaseItemsCount: any;
434
426
  /** Indica se ci sono delle colonne pinnate e visibili. Serve per poter settare tutte le colonne prima che arrivino dati a pinned*/
435
427
  HasPinnedColumns: boolean;
436
428
  /** Larghezza calcolata del container delle colonne pinnate */
437
429
  PinnedContainerWidth: number;
438
430
  /** Indica se nonostante siamo in modalità array sono stati individuati dei gruppi. In tal caso es-table si comporta da pseudo backend ed effettua le aggregazioni e raggruppamenti completamente lato client */
439
431
  ArrayGrouping: boolean;
432
+ /** Opzioni di paginazione */
440
433
  PagerOptions: {
441
434
  PagerCount: number;
442
435
  ShowCount: boolean;
@@ -450,14 +443,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
450
443
  ngOnInit(): void;
451
444
  /** @ignore */
452
445
  ngAfterViewInit(): void;
453
- /**
454
- * Se l'Input è null (valore non settato) vede se c'è un default con cui valorizzarlo. Se non c'è utilizza il valore di fallback (qualora fornito)
455
- *
456
- * @param {T} inputValue Valore dell'Input
457
- * @param {T} defaultValue Valore di default impostato da configurazione
458
- * @param {T} fallbackValue Valore dell'Input per quando non è stato assegnato dal programmatore e non ha un default
459
- */
460
- private InputOrDefault;
461
446
  /** @ignore */
462
447
  ngOnDestroy(): void;
463
448
  /** @ignore */
@@ -479,44 +464,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
479
464
  private finalizeContext;
480
465
  /** Genera le informzioni di paginazione per la vista globale dell'es-table */
481
466
  private setupPagingInformations;
482
- /**
483
- * Ripulisce le cache di selezione
484
- *
485
- * @todo: SELECTION
486
- */
487
- private clearSelectionCaches;
488
- /**
489
- * In base alla modalità specificata (ArrayMode, ViewMode, ecc...) questo metodo recupera l'array di oggetti da bindare ad interfaccia
490
- *
491
- * @param {boolean} onlyselected [false] Indica di prendere solo gli oggetti selezionati
492
- * @param {boolean} refreshPaging [false] Indica se aggiornare le informazioni di paginazione o meno
493
- * @param {boolean} allIfPossible [false] Indica se prendere tutti gli oggetti quaora possibile, usato solo in ArrayMode
494
- *
495
- * @returns {any[]} Lista degli oggetti su cui effettuare il bind lato interfaccia
496
- *
497
- * @todo: ITEMS
498
- */
499
- private getItemsByMode;
500
- /**
501
- * @ignore
502
- *
503
- * @todo: ITEMS
504
- */
505
- private getViewItemsBySource;
506
- /**
507
- * Helper per effettuare il caching delle aggregazioni. Le sposta da una lista di **GroupAggregation** a una **<Map<string, Map<string, string>>**
508
- *
509
- * @todo: ROWGROUPING
510
- */
511
- private cacheAggregations;
512
- /**
513
- * Metodo che prende tutti gli oggetti di cui dispone divisi in bucket da 100 elementi
514
- *
515
- * @returns {any[][]} Matrice di array Nx100
516
- *
517
- * @todo: ITEMS
518
- */
519
- private getItemSlices;
520
467
  /**
521
468
  * Metodo che gestisce l'endless scroll e in base a quanto la tabella è stata scrollata aggiunge degli elementi extra a **TMPBoundSource**
522
469
  *
@@ -532,72 +479,12 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
532
479
  * Per poter distinguere le chiamate a questo metodo: Dopo il setTimeout se uso gli EsTd/EsTh vecchi, senza il setTimeout se uso le nuove direttive
533
480
  */
534
481
  private internalPostBoundSource;
535
- /**
536
- * Se in modalità array applica gli ordinamenti ASC-DESC delle colonne
537
- *
538
- * @todo: INTERNALDB
539
- */
540
- private arrayModeReviewOrderings;
541
- /**
542
- * Se in modalità array applica i raggruppamenti definiti lato row-grouping
543
- *
544
- * @param {ths: EsTh[] | EsThDirective[]} ths Header
545
- *
546
- * @todo: ROW GROUPING
547
- */
548
- private arrayModeReviewGroupings;
549
- /**
550
- * Data la definizione dei gruppi da generare da una lista di oggetti, suddivide gli oggetti passati in gruppi e sottogruppi
551
- *
552
- * @param {Group[]} grps Definizione dei gruppi
553
- * @param {number} currentIndex Indice di elaborazione. Al livello 0 ho tutti gli oggetti e devo generare i primi gruppi, a livello 1 ho tutti i gruppi principali e devo
554
- * elaborare i sottogruppi, e così via ricorsivamente...
555
- * @param {any[]} items Oggetti da raggruppare
556
- * @param {GroupOrAggregation[]} aggregations Info di aggregazione
557
- * @param {any} parent Riferimento al gruppo padre
558
- *
559
- * @todo: INTERNALDB
560
- */
561
- private getGroupsRecursive;
562
- /**
563
- * Data una lista di oggetti genera le aggregazioni specificate. Si considera di avere tutti gli oggetti
564
- *
565
- * @param {any[]} items Oggetti di cui calcolare le aggregazione
566
- * @param {GroupOrAggregation[]} aggregations Aggergazioni da generare
567
- *
568
- * @todo: INTERNALDB
569
- */
570
- private generateAggregations;
571
- /**
572
- * Data una lista di oggetti effettua dei raggruppamenti in base alla proprietà **field**, restituendo un oggetto del tipo { Gruppo1: oggetti[], Gruppo2: oggetti[], ecc... }
573
- *
574
- * @param {any[]} array Lista degli oggetti da raggruppare
575
- * @param {string} field Campo su cui effettuare i raggruppamenti
576
- *
577
- * @returns {{ [id: string]: any[] }} Dizionario dei gruppi
578
- *
579
- * @todo: INTERNALDB
580
- */
581
- private groupBy;
582
482
  /**
583
483
  * Effettua il binding degli oggetti pervenuti da questa chiamata con gli oggetti effettivamente da graficare
584
484
  *
585
485
  * @param {any} view View da cui sono arrivati gli oggetti. Può essere o un array se sono in **arrayMode** o una AppSearch<T> se sono in **viewMode**
586
486
  */
587
487
  private bindDisplayToLoadedItemsOrGroups;
588
- /**
589
- * In modalità rowgrouping quando mi arriva un nuovo blocco di oggetti devo aggiungerlo alla vista attuale:
590
- *
591
- * 1) Se non viene richiesto il dettaglio di alcun gruppo significa che devo considerare mi siano arrivati tutti i gruppi principali
592
- * 2) Se viene richiesto il dettaglio di un gruppo diverso dall'ultimo devo aggiungere dopo al gruppo cliccato la lista dei sottogruppi
593
- * 2) Se viene richiesto il dettaglio dell'ultimo gruppo devo aggiungere dopo al gruppo cliccato la lista degli oggetti
594
- *
595
- * @param {any} view AppSearch<T> da cui sono arrivati gli oggetti
596
- * @param {number} groupingKeys Livelli di raggruppamento da aspettarsi sui dati
597
- *
598
- * @todo: ROWGROUPING
599
- */
600
- private handleNewDataOnRowGrouping;
601
488
  /**
602
489
  * Metodo richiamato solo quando **TMPRowTDs** e **TMPRowTHs** sono completamente generati ed aggiustati. Serve per collegarli alle variabili usate lato binding HTML
603
490
  */
@@ -607,41 +494,8 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
607
494
  *
608
495
  * @param {any[]} items Oggetti da selezionare o deselezionare
609
496
  * @param {boolean} select **true** per selezionarli, **false** per non toccarli
610
- *
611
- * @todo: SELECTION
612
497
  */
613
498
  setSelectionStatus(items: any[], select: boolean): void;
614
- /**
615
- * Se non ho l'Input **DynamicRowColumnsDefinition** in modalità dinamica lo riempio con il default nome della colonna = testo della colonna
616
- */
617
- private eventuallyReviewDynamicColumns;
618
- /**
619
- * Partendo dagli **EsThs** estrappolo la lista di **EsTableColumn** che questa tabella dovrà eventualmente gestire per Visibilità e Ordine
620
- *
621
- * Costo: 1 scan EsThs
622
- *
623
- * @param {EsTh[] | EsThDirective[]} ths Colonne della tabella
624
- */
625
- private reviewColumnsList;
626
- /**
627
- * Prende i th e i td in modalità diretive e li ordina in base a se ci sono colonne fixed o meno
628
- */
629
- private moveFixedColumnsAtTheBeginning;
630
- /**
631
- * In base alla configurazione delle colonne calcola le dimenioni delle colonne pinnate
632
- */
633
- private evaluatePinnedColumnsWidth;
634
- /**
635
- * Helper per spostare un oggetto di un array da un indice all'altro, in place
636
- */
637
- private arrayMove;
638
- /**
639
- * Terminato il binding delle colonne da **reviewColumnsList** e della **View** dal **writeValue** questo metodo si occupa
640
- * dell'allineamento delle informazioni fra le colonne calcolate internamente e le informazioni sulle colonne che arrivano dall'AppSearch
641
- *
642
- * @param {AppSearch<any>} view AppSearch da utilizzare per questa operazione
643
- */
644
- private alignColumnsIfLoadedView;
645
499
  /**
646
500
  * Metodo che gestisce il cambio di Ordinamento di una colonna
647
501
  *
@@ -655,24 +509,7 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
655
509
  * @param {boolean} resetsPage Indica al listener che deve resettare il numero di pagina
656
510
  * @param {AppSearch<any>} viewOverride Override della view da emettere per questa ricerca
657
511
  */
658
- private emitSearchRequest;
659
- /**
660
- * In base alla visibilità registrata nelle **ColumnsList** questo metodo si occupa di prendere tutti i **EsThs** ed **EsTds** relativi e nasonderli/mostrarli
661
- *
662
- * Costo: 1 scan ColumnsList, 1 scan EsThs, 1 scan EsTds
663
- *
664
- * @param {EsTh[] | EsThDirective[]} ths Header della tabella
665
- * @param {EsTd[] | EsTdDirective[]} tds Celle della tabella
666
- * @param {AppSearch<any>} view AppSearch da utilizzare per questa operazione
667
- */
668
- private refreshColumnsVisibility;
669
- /**
670
- * Allinea gli ordinamenti dati fra le **EsThs** e le informazioni all'interno della View bindata
671
- *
672
- * @param {AppSearch<any>} view AppSearch da utilizzare per questa operazione
673
- * @param {EsTh[] | EsThDirective[]} ths Colonne della tabella
674
- */
675
- private alignHeadersOrdering;
512
+ emitSearchRequest(resetsPage: boolean, viewOverride?: AppSearch<any>): void;
676
513
  /**
677
514
  * Partendo dagli **EsTds** bindati genera, all'interno del dizionario **TMPRowTDs** tutti i contesti dei vari oggetti.
678
515
  *
@@ -694,60 +531,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
694
531
  * @param {EsTh[] | EsThDirective[]} ths Colonne della tabella
695
532
  */
696
533
  private evaluateRowThs;
697
- private evaluateHeadersGroupingInfos;
698
- /**
699
- * Genera gli header groups da una lista di info sui th all'interno della variabile **TMPRowThGroups**
700
- */
701
- private evaluateHeaderGroups;
702
- /**
703
- * Calcola il numero di salti da un header foglia all'ultimo parent della catena
704
- */
705
- private jumpsToFinalParent;
706
- /**
707
- * Data una direttiva EsTh restituisce la lista delle aggregazioni richiesta per questa colonna o il gruppo che rappresenta
708
- *
709
- * @param {EsThDirective} th Direttiva
710
- *
711
- * @returns {GroupOrAggregation[]} Lista dei gruppi o aggregazioni relativi alla Direttiva passata
712
- */
713
- private getGroupAggregations;
714
- /**
715
- * Data una direttiva con un formato restituisce tutte le coppie Funzione di Aggregazione - Formato
716
- *
717
- * @param {EsThDirective} th Direttiva EsTh di cui calcolare le funzioni di aggregazione usate
718
- *
719
- * @returns {{ func: string, format: string }[]} Lista delle funzioni di aggregazione rilevate
720
- */
721
- private getEsThDirectiveListOfAggregations;
722
- /**
723
- * Metodo che genera l'ordine di default delle colonne
724
- *
725
- * @param {AppSearch<any>} view AppSearch da utilizzare per questa operazione
726
- */
727
- private generateDefaultOrder;
728
- /**
729
- * Applica l'ordine specificato alle varie colonne
730
- *
731
- * @param {AppSearch<any>} view AppSearch da utilizzare per questa operazione
732
- * @param {boolean} finalize Se **true** significa che non mi aspetto di dover effettuare altre operazioni e posso renderizzare la situazione in base ai RowContext
733
- * Senza finalize significa che mi aspetto altre operazioni che prima o poi richiameranno questa funzione col finalize.
734
- *
735
- * Ad esempio, una volta selezionato ordinamento fisico/logico delle colonne so che parte un altra ricerca che mi rivalorizzerà da "writeValue", che già chiama questa funzione.
736
- * Mettendo solo la chiamata da "writeValue" come "finalizzante" mi assicuro che smanattamenti a frontend non causino flickering fino a quando non servono
737
- */
738
- private applyOrdering;
739
- /**
740
- * Ottiene un elemento di separazione fra Gruppi che serve per paginare le ricerche all'interno di ogni singolo gruppo
741
- *
742
- * @param {AppSearch<any>} view View utilizzata per la ricerca. Me ne salvo i parametri nel separatore attuale dato che ne ho bisogno per caricare altri elementi
743
- * facenti riferimento allo stesso contesto
744
- * @param {string} parent Parent path che rappresenta a quale gruppo è affibbiato questo separatore
745
- * @param {GroupRouteFragment[]} route Route path che rappresenta a quale gruppo è affibbiato questo separatore
746
- * @param {number} level Livello del gruppo di cui questo elemento è separatore, viene usato per applicare la classe "est-lvl-{{level}}"
747
- *
748
- * @returns {any} Elemento di separazione contenente tutti i bind per presentare una paginazione sotto questo gruppo lato interfaccia
749
- */
750
- private getGroupSeparator;
751
534
  /**
752
535
  * Sposta la ricerca di una pagina in avanti (o indietro)
753
536
  *
@@ -762,30 +545,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
762
545
  * @param {any} pager Elemento di separazione su cui è effettuata la ricerca
763
546
  */
764
547
  goToPageGroup(page: number, pager: GroupPager): void;
765
- /**
766
- * Data una colonna effettua la riemissione di tutte le ricerche relative.
767
- *
768
- * Es. Ho 2 campi di gruppo e ho espanso fino a vedere i valori fino ad un livello qualsiasi.
769
- * Clicco l'ordinamento sul secondo gruppo.
770
- * Tutte le ricerche relative ai primi gruppi devono essere rieseguite. Quando i risultati arriveranno ci penserà il metodo **bindDisplayToLoadedItemsOrGroups**
771
- * a tagliare via gli oggetti non più visualizzati
772
- *
773
- * @param {string} column Colonna su cui si è effettuata un'operazione di ordinamento
774
- * @param {AppOrdering[]} orderings Direttive di ordinamento da applicare alle varie sottoricerche
775
- *
776
- * @todo: Testare
777
- */
778
- private emitRowGroupingSearches;
779
- /**
780
- * Helper che calcola il contenuto di una cella relativa a un gruppo riga, tenendo conto del formato delle eventuali aggregazioni
781
- *
782
- * @param {Group} grp Gruppo di cui mostrare le celle
783
- * @param {string} cell Cella attuale di cui calcolare il testo
784
- * @param {EsThDirective} header Header relativo alla cella attuale, utilizzata per identificare le informazioni di aggregazione
785
- *
786
- * @returns {string} Testo finale calcolato per la **cell** corrente, in base alle aggregazioni di **header**
787
- */
788
- private getGroupCellDisplay;
789
548
  /**
790
549
  * Gestisce i click sulla tabella solo per le righe a gruppo.
791
550
  * O rimuove gli elementi attualmente presenti o carica il contenuto del gruppo
@@ -795,224 +554,12 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
795
554
  * @returns {boolean} **true** se l'operaizone è andata a buon fine, **false** altrimenti
796
555
  */
797
556
  handleGroupClick(group: Group): boolean;
798
- /**
799
- * Funzione che dato un valore lo formatta in base al tipo
800
- *
801
- * @param {string} value Valore che generalemnte può essere una data o un numero
802
- * @param {string} fromat Formato su cui formattare il valore. Può essere ad esempio "small", "long" "verylong" per le date o F{0-9} per i numeri decimali
803
- *
804
- * @returns {string} Valore dell'aggregazione formattato come si deve
805
- */
806
- private formatAggregationValue;
807
- /**
808
- * All'interno della dialog "Ordinamento e Visibilità Colonne" mette la colonna specificata prima della colonna precedente
809
- *
810
- * @param {EsTableColumn} columnItem Colonna da spostare
811
- */
812
- sendUp(columnItem: EsTableColumn): void;
813
- /**
814
- * All'interno della dialog "Ordinamento e Visibilità Colonne" mette la colonna specificata dopo la colonna successiva
815
- *
816
- * @param {EsTableColumn} columnItem Colonna da spostare
817
- */
818
- sendDown(columnItem: EsTableColumn): void;
819
- /**
820
- * All'interno della dialog "Ordinamento e Visibilità Colonne" pinna la colonna specificata
821
- *
822
- * @param {EsTableColumn} columnItem Colonna da spostare
823
- */
824
- pinOrUnpinColumn(columnItem: EsTableColumn): void;
825
- /**
826
- * All'interno della dialog "Ordinamento e Visibilità Colonne" inverte le impostazioni di visibilità della colonna
827
- *
828
- * @param {EsTableColumn} columnItem Colonna da spostare
829
- */
830
- columnClicked(item: EsTableColumn): void;
831
- /**
832
- * All'apertura della dialog "Ordinamento e Visibilità Colonne" ricarica le informazioni attuali per permettere la modifica
833
- */
834
- resetColumnVisSelection(): void;
835
- /**
836
- * Riaggiorna le **OrderDirectives** con le informazioni in **ColumnsList**
837
- */
838
- private refreshColumnOrdering;
839
- /**
840
- * Effettua la selezione o meno del check globale (**globalColVisCheck**) di visibilità in base a se tutte le **TMPColumnsList** sono visibili o no
841
- */
842
- updateGlobalColVisCheck(): void;
843
- /**
844
- * Funzione che effettua la conferma della visibilità e dell'ordine delle colonne.
845
- *
846
- * Questa selezione viene inoltre salvata nelle preferenze (**@esfaenza/preferences**), qualora l'Input **SavePreferences** fosse valorizzato
847
- *
848
- * @returns {boolean} **true** se non ci sono problemi, **false** altrimenti
849
- */
850
- confirmColumnVisibilitySelection(): boolean;
851
- /**
852
- * Sul click nella checkbox di selezione globale si scorrono tutte le colonne e si impostano al valore della check globale
853
- */
854
- globalColVisCheckChanged(): void;
855
- /**
856
- * Data una lista di oggetti assegno il livello gerarchico rispetto alla lista di oggetti passata
857
- *
858
- * @param {any[]} objs Lista di oggetti a cui aggiungere l'informazione del livello gerarchico
859
- */
860
- private assignHierarchyLevels;
861
- /**
862
- * Per ognuno degli oggetti passati gli assegna un livello di gerarchia in base a **ParentKey** e **OwnKey**
863
- *
864
- * @param {any[]} objs Oggetti a cui assegnare il livello di gerarchia
865
- * @param {number} levelToAssign Livello che sta assegnando attualmente questa iterazione (dato che è ricorsiva)
866
- *
867
- * @returns {number} Numero di oggetti a cui è stato assegnato un livello gerarchico
868
- */
869
- private assignLevel;
870
- /**
871
- * Funzione che permette di effettuare l'espansione di un parent quando la tabella funziona in modalità gerarchica
872
- *
873
- * @param {string} key Chiave del parent da espandere
874
- */
875
- expandParent(key: string): void;
876
- /**
877
- * Funzione che permette di effettuare il collapse di un parent quando la tabella funziona in modalità gerarchica
878
- *
879
- * @param {string} key Chiave del parent da collassare
880
- */
881
- collapseParent(key: string): void;
882
- /**
883
- * Collassa ricorsivamente tutti i figli di un parent identificato dalla **parentKey**
884
- *
885
- * @param {string} parentKey Chiave del parent di cui collassare i figli
886
- */
887
- private collapseChildOfParent;
888
- /**
889
- * Valuta quali elementi devono essere marcati come selezionati nella vista attuale. Si basa sull'oggetto **selection** interno all'AppSearch
890
- *
891
- * @param {any[]} items Oggetti di cui valutare la selezione
892
- * @param {ItemsSelection<any>} selectionItem Oggetti di selezione derivante dalla view o dall'oggetto per Array
893
- */
894
- private evaluateSelection;
895
- /**
896
- * Valuta quali elementi devono essere marcati come selezionati nella vista attuale. Si basa sull'oggetto **arraymodeSelection** dell'es-table
897
- *
898
- * @param {any[]} array Lista di oggetti di cui valutare la selezione in modalità array
899
- */
900
- private arrayModeEvaluateSelection;
901
- /**
902
- * Implementazione agnostica della valutazione delle selezioni degli oggetti. Richiede gli oggetti della vista attuale e l'itemSelector
903
- *
904
- * @param {any[]} items Oggetti di cui aggiornare lo stato di selezione
905
- * @param {ItemsSelection<any>} selectionItem Oggetto contenente lo stato attuale di selezione
906
- */
907
- private handleSelectionEvaluation;
908
- /**
909
- * Dato un oggetto trova la cella di cache in cui è registrato e aggiorna il contenuto
910
- *
911
- * @param {any} item Oggetto da aggiornare
912
- */
913
- private rehidrateCache;
914
- /**
915
- * Dato un gruppo controlla ricorsivamente l'albero di cui fa parte se c'è stata una inclusione o esclusione diretta
916
- *
917
- * @param {any} grp Gruppo da controllare
918
- *
919
- * @returns {'none' | 'excluded' | 'included'}
920
- * 'none' se non ci sono informazioni su inclusioni o esclusioni
921
- * 'included' se il gruppo controllato è stato incluso in maniera esplicita dall'albero dei gruppi padri
922
- * 'excluded' se il gruppo controllato è stato escluso in maniera esplicita dall'albero dei gruppi padri
923
- */
924
- private parentTreeStatus;
925
557
  /**
926
558
  * Gestisce la selezione globale degli oggetti, sia per pagina che a livello di **SelectAll**
927
559
  *
928
560
  * @param {boolean} forcedVal Valore forzato di check da assegnare agli oggetti
929
561
  */
930
562
  globalCheckChanged(forcedVal?: boolean): void;
931
- /**
932
- * Helper per gestire la selezione di N elementi utilizzando la Cache di selezione ed eventualmente aggiornando il concetto di "all selection"
933
- *
934
- * Vunziona sia in modalità Array che in modalità View Semplice o View Avanzata (con le Custom Cells)
935
- *
936
- * @param {any[]} items Oggetti da selezionare o deselezionare
937
- * @param {boolean} forcedVal Valore forzato di check da assegnare agli oggetti
938
- * @param {boolean} globalCheck Valore del check globale
939
- *
940
- * @returns {ItemsSelection<any>} Oggetto di selezione aggiornato con le informazioni sull'ultima operazione effettuata
941
- */
942
- handleItemsSelection(items: any[], forcedVal?: boolean, globalCheck?: boolean): ItemsSelection<any>;
943
- /**
944
- * Dato L'oggetto di selezione, l'oggetto da selezionare/deselezionare e tutti i parametri del caso effettua le operazioni che servono.
945
- *
946
- * Logica semplificata rispetto all'originale **performSelectionOperations** per lavorare in una modalità in cui tutti gli elementi sono caricati (**ArrayGrouping** = true)
947
- */
948
- private performSimpleSelectionOperations;
949
- /**
950
- * Helper per selezionare un gruppo e, ricorsivamente, se tutti i gruppi sottostanti al parent sono selezionati, selezionare i gruppi padri
951
- *
952
- * @param {any} group Gruppo da selezionare
953
- */
954
- private selectGroup;
955
- /**
956
- * Dato L'oggetto di selezione, l'oggetto da selezionare/deselezionare e tutti i parametri del caso effettua le operazioni che servono.
957
- *
958
- * La logica di questa funzione è nata essenzialmente da spam di trial & error ed è stata testata solo fino a due livelli di raggruppamento,
959
- * qualsiasi cosa vada oltre non è 100% detto che funzioni...
960
- */
961
- private performSelectionOperations;
962
- /**
963
- * Helper per evitare di riscrivere ogni santa volta array.splice(array.indexof(item), 1);
964
- */
965
- private removeItem;
966
- /**
967
- * Helper per evitare di riscrivere ogni santa volta array.push(item); e la gestione della
968
- */
969
- private addItem;
970
- /**
971
- * Ottiene il trittico di selezione: L'array degli oggetti e le due cache
972
- */
973
- private getTriptic;
974
- /**
975
- * Dato un oggetto restituisce il gruppo di cui fa parte, se esiste
976
- *
977
- * @param {any} item Oggetto di cui trovare il gruppo
978
- */
979
- private getItemGroup;
980
- /**
981
- * Data la chiave di un gruppo restituisce tutti gli oggetti con quella chiave
982
- *
983
- * @param {any} group Chiave da cercare
984
- * @param {'selected' | 'unselected'} status Stato degli elementi, selezionati o no
985
- * @param {boolean} recursive Indica se cercare solo gli elementi direttamente collegati o se prendere anche quelli dei gruppi figli
986
- *
987
- * @returns {any[]} Oggetti di tipo **_item** facenti capo alla chiave **groupKey**
988
- */
989
- private getGroupItems;
990
- /**
991
- * Data la chiave di un gruppo restituisce tutti gli oggetti con quella chiave
992
- *
993
- * @param {any} group Gruppo di cui cercare il parent
994
- *
995
- * @returns {any} Oggetto di tipo **_group** rappresentante il parent del **group** attuale
996
- */
997
- private getGroupParent;
998
- /**
999
- * Data la chiave di un gruppo restituisce tutti i gruppi figli
1000
- *
1001
- * @param {string} group Gruppo che rappresenta il padre di cui cercare i figli
1002
- * @param {'selected' | 'unselected'} status Stato dei gruppi, selezionati o no
1003
- * @param {boolean} recursive Indica se cercare solo i gruppi direttamente collegati o se prendere anche quelli dei gruppi figli
1004
- *
1005
- * @returns {any[]} Oggetti di tipo **_group** facenti capo alla chiave **groupKey**
1006
- */
1007
- private getGroupChildGroups;
1008
- /**
1009
- * Finalizza le informazioni di selezione del **ItemsSelection** corrente
1010
- */
1011
- private finalizeSelectionInformations;
1012
- /**
1013
- * Compatta una cache di indici
1014
- */
1015
- private compactIndexMap;
1016
563
  /**
1017
564
  * Gestisce i click sulla tabella, gestendo eventualmente anche gli Shift + Click per selezionare un range di oggetti
1018
565
  *
@@ -1022,16 +569,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
1022
569
  * @returns {boolean} **true** se l'operaizone è andata a buon fine, **false** altrimenti
1023
570
  */
1024
571
  handleClick(event: any, item: any): boolean;
1025
- /**
1026
- * Valuta la quantità di oggetti che sono stati selezionati al termine di un evento di selezione
1027
- *
1028
- * @returns {number} Numero di oggetti selezionati
1029
- */
1030
- private evaluateSelected;
1031
- /**
1032
- * Gestisce il comando di "Seleziona tutto in tutte le pagine" o il suo contrario, cioè "Reimposta selezione"
1033
- */
1034
- selectAllOrResetSelection(): void;
1035
572
  /**
1036
573
  * Sposta la ricerca di una pagina in avanti (o indeitro)
1037
574
  *
@@ -1053,31 +590,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
1053
590
  * Evento richiamato sul cambio della paginazione. Verrà richiamato l'evento **emitSearchRequest** con la vista del separatore
1054
591
  */
1055
592
  onGroupItemsPerPageChanged(pager: GroupPager, newIpp: number): void;
1056
- /**
1057
- * Effettua l'esportazione dei dati
1058
- *
1059
- * @param {string} format Formato di esportazione. Letto solo in modalità Report della tabella
1060
- */
1061
- tryExport(format?: string): void;
1062
- /**
1063
- * Metodo che effettivamente genera gli header e i dati per l'esportazione con **ngx-csv**
1064
- *
1065
- * @param {any[]} items Oggetti da esportare
1066
- */
1067
- private setupExport;
1068
- /**
1069
- * Sul click dell'Header di una colonna questo metodo si occupa di applicare l'ordinamento successivo e di notificare con **emitSearchRequest**
1070
- * il bisogno di aggiornare i dati da parte del componente che utilizza la tabella
1071
- *
1072
- * Utilizzato solo in modalità REport
1073
- *
1074
- * @param {ReportColumn} clm Colonna del report per cui ordinare
1075
- */
1076
- setupNextOrderAndSearch(clm: ReportColumn): void;
1077
- /**
1078
- * Metodo che si occupa di gestire la grafica della tabella in base alle informazioni di ordinamento colonne e paginazione contenuti nel modello
1079
- */
1080
- private reviewReportBindings;
1081
593
  /**
1082
594
  * Metodo che gestisce la modifica del tempo specificato per l'aggiornamento automatico
1083
595
  */
@@ -1097,28 +609,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
1097
609
  * @returns {TemplateRef<any>} Template da usare per la colonna
1098
610
  */
1099
611
  findEsTd(column: string): TemplateRef<any>;
1100
- /**
1101
- * Metodo di supporto alla creazione di un router link parametrizzato all'oggetto corrente utilizzato nella modalità dinamica
1102
- *
1103
- * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
1104
- * @param {string[]} parameterProps Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
1105
- * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
1106
- * @param {GenericItem} item Oggetto generico collegato a questo contesto
1107
- *
1108
- * @returns {any} Router link generato in base al parametri
1109
- */
1110
- generateRouterLink(path: string, parameterProps: string[], item: GenericItem): any;
1111
- /**
1112
- * Crea un router link
1113
- *
1114
- * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
1115
- * @param {string[]} pars Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
1116
- * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
1117
- * @param {GenericItem} item Oggetto generico collegato a questo contesto
1118
- *
1119
- * @returns {any} Router link generato in base al parametri
1120
- */
1121
- private getRouterLink;
1122
612
  /**
1123
613
  * Equivalente del metodo **addToPage** riadattato per la modalità array
1124
614
  *
@@ -1131,18 +621,6 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
1131
621
  * @param {number} page Pagina a cui navigare
1132
622
  */
1133
623
  arrayGoToPage(page: number): void;
1134
- /**
1135
- * Metodo per effettuare il refresh della paginazione sul cambiamento degli oggetti da visualizzare in una singola pagina.
1136
- *
1137
- * Vale solo per la modalità Array
1138
- *
1139
- * @param {number} pageSize Dimensione della pagina
1140
- */
1141
- refreshPaging(pageSize: number): void;
1142
- /**
1143
- * Genera le informazioni di paginazione e taglia la View in modalità array per mostrare solo gli oggetti della pagina specificata
1144
- */
1145
- private adaptViewToPaging;
1146
624
  /**
1147
625
  * Gestore dei click sulle celle per le quali era impostata una azione custom da **CustomCellActionsOn**
1148
626
  *
@@ -1158,33 +636,17 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
1158
636
  * @param {string} cornerid Codice dell'operazione selezionata
1159
637
  */
1160
638
  cornerActionClicked(cornerid: string): void;
1161
- /** Helper che identifica se il td attuale è di tipo **EsTd**. In caso contrario è da considerarsi **EsTdDirective** */
1162
- private isEsTd;
1163
- /** Helper che identifica se il th attuale è di tipo **EsTh**. In caso contrario è da considerarsi **EsThDirective** */
1164
- private isEsTh;
1165
- /** Impostazione modalità dell'EsTable */
639
+ /**
640
+ * Impostazione modalità dell'EsTable
641
+ *
642
+ * @param {'array' | 'view' | 'report'} mode Modalità da impostare
643
+ **/
1166
644
  private setMode;
1167
645
  /**
1168
646
  * Helper per effettuare chiamate interne di allineamento alla funzione **writeValue**,
1169
647
  * impostando prima **internalWriteCall** in modo da non effettuare operazioni inutili
1170
648
  */
1171
- private internalWriteValue;
1172
- /**
1173
- * Date le informazioni di paginazione ottiene l'array dei pulsanti
1174
- *
1175
- * @param {number} maxBtns Numero massimo di pulsanti da visualizzare
1176
- * @param {number} page Pagina corrente
1177
- * @param {number} lastPage Ultima pagina disponibile
1178
- *
1179
- * @returns {any[]} Pseudo-array di pulsanti a cui ci si può bindare lato HTML
1180
- */
1181
- private getPagesArray;
1182
- /**
1183
- * Calcola l'hash di un oggetto qualsiasi
1184
- *
1185
- * @param {any[]} items Oggetti per cui calcolare l'hash
1186
- */
1187
- private calculateHash;
649
+ internalWriteValue(): void;
1188
650
  /**
1189
651
  * Metodo eventualmente richiamabile anche dal componente esterno che permette di forzare un refresh della tabella
1190
652
  */