import * as i0 from '@angular/core'; import { EventEmitter, OnInit, AfterViewInit, OnDestroy, DoCheck, IterableDiffers, KeyValueDiffers, KeyValueChanges, ElementRef } from '@angular/core'; import { LoggerService } from '@sowatech/shared/logger'; import { DsDatasourceDefaultConfig, IDatasourceDefaultCSVConfig, PaginationInfoVariant } from '@sowatech/shared/shared-config'; import { Subject } from 'rxjs'; import * as i9 from '@angular/common'; import { DatePipe } from '@angular/common'; import { SelectItem } from '@sowatech/shared/@types'; import { I18nService } from '@sowatech/shared/utilities'; import * as i10 from '@angular/forms'; import * as i11 from '@sowatech/shared/global-keyboard-shortcuts'; declare class ISortItem { fieldname: string; reverse: boolean; } declare class SortItem implements ISortItem { constructor(sortItemData: ISortItem); constructor(fieldname: string); constructor(fieldname: string, reverse: boolean); fieldname: string; reverse: boolean; static createSortItems(src: ISortItem[]): SortItem[]; } declare class IFilterItem { fieldnames: string[]; fieldvalues: string[]; filterOperator: FilterOperator; } declare class FilterItem implements IFilterItem { constructor(filterItemData: IFilterItem); constructor(fieldnames: Array, fieldvalue: string, filterOperator?: FilterOperator); constructor(fieldnames: Array, fieldvalues: Array, filterOperator?: FilterOperator); fieldnames: string[]; fieldvalues: string[]; filterOperator: FilterOperator; fieldnamesAreEqual(fieldnames: string[]): boolean; fieldnamesAreEqual(fieldname: string): boolean; get hasFieldValue(): boolean; valueMatchesFilter(comparer: (filtervalue: string) => boolean): boolean; static createFilterItems(src: IFilterItem[]): FilterItem[]; equals(other: FilterItem): boolean; clone(): FilterItem; } declare enum FilterOperator { StartsWith = 0, IsEqual = 1, Contains = 2, IsGreaterOrEqual = 3, IsLessOrEqual = 4 } declare class PaginationInfo { currentPageIndex: number; currentPageNumOfItems: number; maxPageIndex: number; totalNumOfItems: number; pageSize: number; /** falls gesetzt, wird beim externalRefresh der PageIndex anhand der Id raus gesucht */ goToPageOfId?: string; } interface AggregateItem { fieldname: Extract; operator: AggregateFunctionOperator; includedData: 'selected' | 'all'; } declare class AggregateParam { items: AggregateItem[]; /** falls includedData = 'selected' */ selectedIds: string[]; /** * wenn `true`: Beim Refresh werden nur die Aggregatfunktionen aktualisiert zurück gegeben. * Es werden nicht die Daten neu geladen. */ aggregatesOnly: boolean; } /** * - 'page' - normaler refresh, bei dem 1 Page zurückgegeben wird * - 'aggregate-data' - refresh, bei dem nur die aggregate items geladen werden * - 'csv-export' - lädt alle datensätze für den csv-export */ type ExternalRefreshMode = 'page' | 'aggregate-data' | 'csv-export'; declare class RefreshParams { paginationInfo: PaginationInfo; sortItems: SortItem[]; filterItems: FilterItem[]; aggregateParam: AggregateParam; idField?: string; mode?: ExternalRefreshMode; } interface AggregateResult { fieldname: Extract; operator: AggregateFunctionOperator; value: number; } declare class RefreshResult { refreshParams: RefreshParams; data: T[]; aggregateResults?: AggregateResult[]; } type AggregateFunctionOperator = 'sum' | 'min' | 'max' | 'count'; type AggregateFunctionFieldConfig = { fieldname?: Extract; aggregateFunctions?: AggregateFunctionConfig[]; includedAggregateData?: 'selected' | 'all'; unit?: string; digitInfo?: string; }; type AggregateFunctionDefinition = { defaultPrefix: string; calc: (values: number[]) => number | undefined; }; interface AggregateFunctionConfig { operator: AggregateFunctionOperator; /** @default GridColumn.unit */ unit?: string; /** @default GridColumn.digitInfo */ format?: string; /** @default AggregateFunctionDefinition.defaultPrefix // aus shared (z.B. 'sum' => 'Σ ') */ prefix?: string; } /**Refresh Mechanismus, der in der Datasource benutzt wird */ declare enum RefreshType { /** * Der Datasource werden alle Daten übergeben und sie kümmert sich selbst um das Managen der Daten */ internal = 0, /** *In der Datasource wird ein Asynchroner Callback ("externalRefresh") gesetzt, der mit RefreshParams ein RefreshResult lädt */ externalRefreshCallback = 1, /** * Das Laden der Daten passiert außerhalb der Datasource. * Es wird von einem Output (refreshResultRequested) ausgelöst und das Ergebnis wird per Input (externalRefreshResult) in die Datasource übergeben */ externalRefreshInput = 2 } /** * Helfer für AggregateFunctions. * Hier muss über die `init` Methode die datasource gesetzt werden * und es muss die `getVisibleColumns` methode von außen gesetzt werden */ declare class AggregateFunctionsService { private readonly subscriptions; readonly values: Partial>; private listDatasource; getConfigs?: () => AggregateFunctionFieldConfig[]; init(listDatasource: DatasourceComponent): void; recalc({ refreshIfNotVisible }?: { refreshIfNotVisible?: boolean; }): void; cleanUp(): void; getAggregateItems(): AggregateItem[]; getAggregateItemsForSelectedData(): AggregateItem[]; setByRefreshResult(result: RefreshResult): void; getValue(fieldName: keyof ListItem, operator: AggregateFunctionOperator): number | undefined; private getConfigsForSelectedData; private tryRecalcWithExternalRefresh; private recalcWithExternalRefresh; private recalcClientSide; private resetValues; private getColumnResult; private getAggregateValuesOfColumn; private getValuesOfSelectedItems; private getTypedValue; private columnHasAggregateFunctions; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } declare const aggregateFunctionImplementations: Record; type AggregateFunctionValue = { operator: AggregateFunctionOperator; value: number | undefined; }; declare class DatasourceCSVService { private datePipe; private configService; private readonly locale; constructor(datePipe: DatePipe, configService: DsDatasourceDefaultConfig, locale: string); generateAndDownloadCSV(csvData: Model[], filename: string, config?: CSVConfig): void; private generateCSV; private createCSV; private removeNewline; private removeSeparator; private buildHeaderRow; private buildRow; private getContent; private isSelectItemArray; private createCell; private applyQuotes; private formatCSVField; private applyConfig; private readonly utf8BOM; private executeDownload; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface CSVConfig extends IDatasourceDefaultCSVConfig { columns?: Array; } interface CSVColumn { fieldname: Extract; text?: string; digitsInfo?: digitsInfo; dateformat?: DateFormat; type?: string; lookups?: Array | Array; trueValueText?: string; falseValueText?: string; } type digitsInfo = `${number}.${number}-${number}`; type DateFormat = string; declare class FilterHelper { private loggerService; constructor(loggerService: LoggerService); private filterStrategies; private items; onFilterItems: Subject; get filterItems(): Array; private getItemByFieldNames; getFirstValueByFieldname(fieldnames: string[], filterOperator: FilterOperator): string | null; clear(): void; add(filterItems: Array): any; add(filterItem: FilterItem): any; set(filterItems: Array): any; set(filterItem: FilterItem): any; execute(dataSourceBackup: Array, dataSource: Array): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class PaginationHelper { constructor(config: DsDatasourceDefaultConfig); init(dsPaginationChangedEmitter: Subject): void; private paginationChangedEmitter; get paginationInfo(): PaginationInfo; pageSize: number; setPageSize(pageSize: number, data: Array): void; private _currentPageIndex; get currentPageIndex(): number; set currentPageIndex(value: number); private totalNumOfItems; private _maxPageIndex; get maxPageIndex(): number; private recalcMaxPageIndexAndTotalNum; execute(data: any[]): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class RefreshParamsStoreHelper { private readonly userProperties; private readonly destroyRef; init(storeKey: string, onAfterViewInit: Subject, onFilterItems: Subject>, onSortItems: Subject>, onPaginationChanged: Subject, onSelectionChanged: Subject>, refreshDatasource: (filterItems: FilterItem[], sortItems: SortItem[], pageIndex?: number, selectedIds?: any[], pageSize?: number) => void): void; private storeKey; clearStorage(): void; loadFromStorage(): void; private refreshDatasource; private get filterItemsStoreKey(); private onDatasourceFilterChanged; private get sortItemsStoreKey(); private onDatasourceSortChanged; private get paginationStoreKey(); private onDatasourcePaginationChanged; private get pageSizeStoreKey(); private get selectionStoreKey(); private onDatasourceSelectionChanged; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } type Id = any; declare class SelectionListHelper { private loggerService; constructor(loggerService: LoggerService); private selectedIds; private onSelectedIdsChanged; private onFocusedIdChanged; private onFocus; init(dsSelectedIdsChangedEmitter: Subject>, dsFocusedIdChangedEventEmitter: Subject, dsFocusEventEmitter: Subject): void; private doSelectionAndFocusChanged; private doSelectionChanged; private doFocusChanged; set(ids: Id[]): any; set(id: Id): any; add(ids: Id[]): any; add(id: Id): any; remove(id: Id): void; clear(): void; contains(id: Id): boolean; getSelectedIds(): Id[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class SortHelper { private fixedItems; private items; onSortItems: EventEmitter; get sortItems(): Array; clear(): void; add(sortItem: SortItem): void; setItem(sortItem: SortItem): void; setItems(sortItems: SortItem[]): void; /** @returns HasChanges */ setFixedItems(sortItems: SortItem[]): boolean; private fixedItemsChanged; execute(dataSource: Array): void; private getItemByFieldName; private getFixedItemByFieldName; private sortByMultiple; private compare; private emitSortItems; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } type FieldName = Extract; type ModelId = any; declare class DatasourceComponent implements OnInit, AfterViewInit, OnDestroy, DoCheck { private loggerService; private selectionList; private sortHelper; private filterHelper; private paginationHelper; private refreshParamsStoreHelper; private iterableDiffers; private keyValueDiffers; private config; private csvService; aggregateFunctions: AggregateFunctionsService; constructor(loggerService: LoggerService, selectionList: SelectionListHelper, sortHelper: SortHelper, filterHelper: FilterHelper, paginationHelper: PaginationHelper, refreshParamsStoreHelper: RefreshParamsStoreHelper, iterableDiffers: IterableDiffers, keyValueDiffers: KeyValueDiffers, config: DsDatasourceDefaultConfig, csvService: DatasourceCSVService, aggregateFunctions: AggregateFunctionsService); private readonly subscriptions; ngOnInit(): void; private onAfterViewInit; ngAfterViewInit(): void; ngDoCheck(): void; ngOnDestroy(): void; set sourceData(data: Model[]); /** Liste der Datensätze für die Datasource. Im Gegensatz zum `src` Input, wird das Array nicht direkt bearbeitet */ readonly models: i0.InputSignal; set _changeTracking(value: boolean); private hasChangeTracking; set doSetPageSize(value: number); storeKey: string; idfield: FieldName; set sortBy(fieldname: FieldName); autoSelect: boolean; /** * Refresh Mechanismus, der in der Datasource benutzt wird * @default internal */ refreshType: i0.ModelSignal; /** externalRefreshCallback oder externalRefreshInput */ isExternalRefresh: i0.Signal; private refreshTypeEffectFn; onAfterRefresh: Subject; onBeforeRefresh: Subject; onAfterInitDatasoure: Subject; set externalRefresh(method: (params: RefreshParams) => Promise | RefreshResult>); get externalRefresh(): (params: RefreshParams) => Promise | RefreshResult>; private _externalRefresh; readonly externalRefreshParams: i0.WritableSignal; readonly refreshResultRequested: i0.OutputEmitterRef; readonly externalRefreshResult: i0.InputSignal | RefreshResult>; private externalRefreshResultEffectFn; dataBackup: Model[]; private dataBackupIterableDiffer; private dataItemDifferDictionary; private initDataBackupDiffer; private getDataItemId; dataChanged: EventEmitter; private dataBackupChanged; get dataFiltered(): Model[]; get hasData(): boolean; data: Model[]; private readonly dataChange$; readonly dataSignal: i0.Signal; getDataItem(id: ModelId): Model; getDataDistinct(fieldname: string): Model[]; focusNextOrFirstRow(): void; focusPreviousRow(): void; initDataSource(data: Model[]): Promise; autoSelectFirstItem(): void; private autoDetectIdField; private blockedRefreshRequested; private blockCounter; get refreshIsBlocked(): boolean; addRefreshBlocker(): void; removeRefreshBlocker(catchUpRefresh?: boolean): void; private catchUpRefresh; refresh(): Promise; private afterRefresh; refreshAggregateFunctionsExternal(): Promise; private doInternalRefresh; getExternalRefreshParams(): RefreshParams; private externalRefreshRunning; private nextExternalRefresh?; private doExternalRefresh; private requestNewRefreshResult; private emitRefreshResultRequested; private setExternalRefreshParams; /**Für Inline Updates der externalRefreshParams */ private updateExternalRefreshParams; private handleRefreshResult; private handleExternalRefreshResult; private pushModelsToArray; private getNextExternalRefreshResult; externalDataItem2ViewModel: (externalDataItem: ExternalRefreshDto) => Model; private getPageIndexById; downloadDataAsCSV(fileName?: string, config?: CSVConfig, csvData?: Model[]): Promise; private assembleCSVName; private getCSVData; private externalCSVDataRefresh; private getCsvExportRefreshParams; setSort(field: string): void; get onSortItems(): Subject>; getSortItems(): Array; sortAsc(fieldname: string, addSorting?: boolean): void; sortDesc(fieldname: string, addSorting?: boolean): void; sort(sortItems: SortItem | SortItem[]): void; clearSort(): void; setFixedSort(fieldnames: string[]): void; get onFilterItems(): Subject>; setFilter(filterItems: Array): any; setFilter(fieldnames: string | string[], fieldvalues: string | string[], filteroperator?: FilterOperator): any; addFilter(filterItems: FilterItem[]): any; addFilter(fieldnames: string | string[], fieldvalues: string | string[], filteroperator?: FilterOperator): any; private filterItemsEqual; clearFilter(): void; getFilterItems(): Array; getFirstFilterValueByFieldname(fieldnames: string[], filterOperator: FilterOperator): string; readonly onSelectedIdsChanges: Subject; readonly onFocusedIdChanges: Subject; readonly onFocus: Subject; readonly notFoundSelectedIds: i0.WritableSignal; private initSelectionList; private checkSelectedIdsCanBeFound; get selectedCount(): number; get selectedIds(): ModelId[]; isSelected(id: ModelId): boolean; private focusAfterRefreshId; focusAfterRefresh(id: ModelId): void; focus(id: ModelId, gotoPage?: boolean): Promise; get focusedId(): ModelId; get focusedItem(): Model; setSelection(ids: ModelId[]): any; setSelection(id: ModelId): any; addSelection(ids: ModelId[]): any; addSelection(id: ModelId): any; removeSelection(id: ModelId): void; toggleSelection(id: ModelId): void; clearSelection(): void; selectAll(): void; onPaginationChanged: Subject; private initPaginationHelper; setPageSize(pageSize: number): void; get paginationInfo(): PaginationInfo; gotoPage(pageIndex: number): void; gotoPageOfFocusedItem(): Promise; get currentPageIndex(): number; get maxPageIndex(): number; toggleAllFilteredSelected(selectAllFiltered: boolean): void; private initRefreshParamsStoreHelper; private refreshParamsStore; private deepCopy; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "ds-datasource", never, { "sourceData": { "alias": "src"; "required": false; }; "models": { "alias": "models"; "required": false; "isSignal": true; }; "_changeTracking": { "alias": "changeTracking"; "required": false; }; "doSetPageSize": { "alias": "pageSize"; "required": false; }; "storeKey": { "alias": "store-key"; "required": false; }; "idfield": { "alias": "idfield"; "required": false; }; "sortBy": { "alias": "sortBy"; "required": false; }; "autoSelect": { "alias": "autoSelect"; "required": false; }; "refreshType": { "alias": "refreshType"; "required": false; "isSignal": true; }; "externalRefreshResult": { "alias": "externalRefreshResult"; "required": false; "isSignal": true; }; }, { "refreshType": "refreshTypeChange"; "onAfterRefresh": "onAfterRefresh"; "onBeforeRefresh": "onBeforeRefresh"; "onAfterInitDatasoure": "onAfterInitDatasoure"; "refreshResultRequested": "refreshResultRequested"; }, never, never, false, never>; } declare class DataChangeEvent { dataItemChanges: { [id: string]: KeyValueChanges; }; } declare class DatasourceSelectionCheckboxComponent implements OnInit, OnDestroy { private subscriptions; ngOnInit(): void; ngOnDestroy(): void; datasource: DatasourceComponent; allowMultiSelect: boolean; selectId: any; /** Html Id Attribute for Input */ ariaLabel: string; disable: boolean; checkboxControl: ElementRef; private toogleIsCheckedIfNesseary; private _isChecked; private multiSelectIsChecked; set isChecked(value: boolean); get isChecked(): boolean; private onSelectedIdsChanges; onClick($event: MouseEvent): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class DatasourceFilterDirective implements OnInit, OnDestroy { private readonly logger; protected readonly dataCyFilterSignal: i0.WritableSignal; set dsfilter(filter: string | Array); filterMinLength: number; private get inputWithCheckedProperty(); private assertInputWithCheckedProperty; set setDatasource(value: DatasourceComponent); set filterOperatorAsString(value: string); filterTrueValue: string; defaultFilterValues: string; private datasource; filterFields: string | string[]; filterOperator: FilterOperator; private filterInput; get filterValue(): string; private get isInputChecked(); private subscriptions; ngOnInit(): void; ngOnDestroy(): void; private initDefaultFilter; private onFilterChanged; private resetFilter; onBlur(): void; onChange(): void; onInput(): void; private setOldValueFromDatasource; private resetOldValueToEmpty; private timeout; /** selbstgebauter debounce */ private timeoutFilter; private oldFilter; private addFilter; private isEmpty; private allEmpty; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class DatasourceFilterdisplayComponent implements OnInit, OnDestroy { private subscriptions; isFilterSet: boolean; ngOnInit(): void; ngOnDestroy(): void; datasource: DatasourceComponent; filterFieldsVisible: boolean; filterText: string; private onDatasourceFilterChanged; private isFilterSetCheck; private createFilterText; clearFilter(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class DatasourceSortDirective implements OnInit, OnDestroy { sortField: string; datasource: DatasourceComponent; setIconLeft: boolean; sortIconAlign: 'left' | 'right'; private nativeElement; constructor(el: ElementRef); private subscriptions; ngOnInit(): void; ngOnDestroy(): void; private onTableSortingChanged; private setClassNone; private setClassAsc; private setClassDesc; private setClassIconLeft; private removeClass; private addClass; protected onClick(event: PointerEvent): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class DatasourcePaginationInfoComponent implements OnDestroy { private loggerService; private i18n; constructor(loggerService: LoggerService, i18n: I18nService); set setDatasource(value: DatasourceComponent); variant: 'default' | 'compact'; private readonly subscriptions; ngOnDestroy(): void; private datasource; itemNumberFrom: number; itemNumberTo: number; itemNumberTotal: number; private paginationChanged; getDataFromToDisplayText(from: number, to: number, total: number): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class DatasourcePaginationComponent implements OnDestroy { private readonly subscriptions; ngOnDestroy(): void; pageItems: Array; pageSize: number; totalNumOfItems: number; set setDatasource(datasource: DatasourceComponent); variant: PaginationInfoVariant; /** Da this.datasource.currentPageIndex 0-basiert ist, speichert diese Variable die tatsächliche Seitenzahl (currentPageIndex + 1) */ selectedPage: number; private datasource; hasPrevious: boolean; hasNext: boolean; previousPage(): void; nextPage(): void; updateSelectedPage(pageNumber: number): void; gotoPage(event: MouseEvent, pageIndex: number): void; private paginationChanged; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class PageItem { text: string; pageIndex: number; isCurrent: boolean; } declare class DatasourcePaginationSizeSelectorComponent implements OnInit, OnDestroy { constructor(config: DsDatasourceDefaultConfig); private subscriptions; ngOnInit(): void; ngOnDestroy(): void; set _pageSizes(values: Array); pageSizes: Array; set _pageSize(value: number); set setDatasource(datasource: DatasourceComponent); private datasource; datasourceDataCount: number; pageSize: number; setPageSize(value?: number): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class DatasourceModule { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { AggregateParam, DatasourceCSVService, DatasourceComponent, DatasourceFilterDirective, DatasourceFilterdisplayComponent, DatasourceModule, DatasourcePaginationComponent, DatasourcePaginationInfoComponent, DatasourcePaginationSizeSelectorComponent, DatasourceSelectionCheckboxComponent, DatasourceSortDirective, FilterItem, FilterOperator, IFilterItem, ISortItem, PageItem, PaginationInfo, RefreshParams, RefreshResult, RefreshType, SortItem, aggregateFunctionImplementations }; export type { AggregateFunctionConfig, AggregateFunctionDefinition, AggregateFunctionFieldConfig, AggregateFunctionOperator, AggregateItem, AggregateResult, CSVColumn, CSVConfig, DateFormat, ExternalRefreshMode, digitsInfo };