@nova-ui/dashboards
Version:
Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and
140 lines (139 loc) • 6.87 kB
TypeScript
import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
import { AfterViewInit, ChangeDetectorRef, ElementRef, NgZone, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from "@angular/core";
import { BehaviorSubject, Subject } from "rxjs";
import { EventBus, IDataField, IDataSource, IEvent, ISelection, ISortedItem, LoggerService, PaginatorComponent, SelectorService, TableAlignmentOptions, TableComponent, VirtualViewportManager } from "@nova-ui/bits";
import { PizzagnaService } from "../../pizzagna/services/pizzagna.service";
import { TableFormatterRegistryService } from "../../services/table-formatter-registry.service";
import { WidgetConfigurationService } from "../../services/widget-configuration.service";
import { PaginatorFeatureAddonService } from "./addons/paginator-feature-addon.service";
import { SearchFeatureAddonService } from "./addons/search-feature-addon.service";
import { VirtualScrollFeatureAddonService } from "./addons/virtual-scroll-feature-addon.service";
import { ITableWidgetColumnConfig, ITableWidgetConfig, ScrollType } from "./types";
import * as i0 from "@angular/core";
/**
* @ignore
*/
export declare class TableWidgetComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {
eventBus: EventBus<IEvent>;
dataSource: IDataSource;
private widgetConfigurationService;
changeDetector: ChangeDetectorRef;
pizzagnaService: PizzagnaService;
viewportManager: VirtualViewportManager;
zone: NgZone;
private el;
private logger;
private searchAddon;
paginatorAddon: PaginatorFeatureAddonService;
virtualScrollAddon: VirtualScrollFeatureAddonService;
private formattersRegistryService;
private selectorService;
static lateLoadKey: string;
widgetData: any[];
componentId: string;
configuration: ITableWidgetConfig;
dataFields: IDataField[];
totalItems: number;
indentFromTop: number;
sortable: boolean;
delayedMousePresenceDetectionEnabled: boolean;
elementClass: string;
tableData: any[];
headers: string[];
sortedColumn: ISortedItem;
columns: ITableWidgetColumnConfig[];
columnsWidthMap: Map<string, number | undefined>;
scrollType: ScrollType;
tableContainerHeight: number;
isSearchEnabled: boolean;
searchTerm$: Subject<string>;
searchValue: string;
onDestroy$: Subject<void>;
tableUpdate$: Subject<void>;
mousePresent$: BehaviorSubject<boolean>;
rowHeight: number;
selection: ISelection;
table: TableComponent<any>;
paginator: PaginatorComponent;
vscrollViewport?: CdkVirtualScrollViewport;
tableRows: QueryList<ElementRef>;
private sortFilter;
private totalPages;
private lastPageFetched;
isBusy: boolean;
private sortableSet;
private formatters;
private tableWidgetHeight;
private readonly defaultColumnAlignment;
private idle;
constructor(eventBus: EventBus<IEvent>, dataSource: IDataSource, widgetConfigurationService: WidgetConfigurationService, changeDetector: ChangeDetectorRef, pizzagnaService: PizzagnaService, viewportManager: VirtualViewportManager, zone: NgZone, el: ElementRef, logger: LoggerService, searchAddon: SearchFeatureAddonService, paginatorAddon: PaginatorFeatureAddonService, virtualScrollAddon: VirtualScrollFeatureAddonService, formattersRegistryService: TableFormatterRegistryService, selectorService: SelectorService);
get headerTooltipsEnabled(): boolean;
private _scrollBuffer;
set scrollBuffer(value: number);
private _range;
get range(): number;
set range(value: number);
get interactive(): boolean;
get clickableRow(): boolean;
get hasVirtualScroll(): boolean;
get hasPaginator(): boolean;
ngOnChanges(changes: SimpleChanges): void;
resolveScrollType(changes: SimpleChanges): void;
ngOnInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
/** Checks if table should be displayed */
shouldDisplayTable(): boolean;
dataTrackBy(): (index: any, item: any) => any;
columnTrackBy(index: number, item: ITableWidgetColumnConfig): string;
/**
* Handles updating of columns.
* @param configuration
*/
updateColumns(configuration: ITableWidgetConfig): void;
/**
* Takes widgetData from back-end, columns which are provided in table widget config and dataFields and maps them to data-format
* which is acceptable by table component.
* Also it can merge multiple data fields into one column. If you provide more than one dataFieldId in your
* widget config, they will be merged to an object with needed data. This data can be passed to formatter and displayed
* in one column.
* @param widgetData
* @param columns
* @param dataFields
* @returns any[]
*/
mapTableData(widgetData: any[], columns: ITableWidgetColumnConfig[], dataFields: IDataField[]): any[];
/**
* Handles change of sorting. Gets sorted column from columns array.
* @param event
*/
onSortOrderChanged(event: ISortedItem): void;
onSelectionChange(event: ISelection): void;
onInteraction(row: any, event: MouseEvent): void;
onSearchInputChanged(searchTerm: string): void;
getColumnAlignment(column: ITableWidgetColumnConfig): TableAlignmentOptions;
private setSortFilter;
/**
* Checks if column id has changed or if sorting order has changed
* @param configuration
*/
private isSortByUpdated;
/**
* Updates table columns and maps table data.
*/
private updateTable;
/**
* Registers sorter filter.
*/
private registerSorter;
private setSortableSet;
private flushTableData;
private scrollTypeChanged;
private getTableScrollRange;
onPagerAction(page: any): void;
private initPrefetchAddon;
private resolveSortBy;
private resolveSearch;
static ɵfac: i0.ɵɵFactoryDeclaration<TableWidgetComponent, [null, { optional: true; }, { optional: true; }, null, null, null, null, null, null, null, null, null, null, null]>;
static ɵcmp: i0.ɵɵComponentDeclaration<TableWidgetComponent, "nui-table-widget", never, { "widgetData": { "alias": "widgetData"; "required": false; }; "componentId": { "alias": "componentId"; "required": false; }; "configuration": { "alias": "configuration"; "required": false; }; "dataFields": { "alias": "dataFields"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "indentFromTop": { "alias": "indentFromTop"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "delayedMousePresenceDetectionEnabled": { "alias": "delayedMousePresenceDetectionEnabled"; "required": false; }; "elementClass": { "alias": "elementClass"; "required": false; }; "range": { "alias": "range"; "required": false; }; }, {}, never, never, false, never>;
}