UNPKG

survey-analytics

Version:

SurveyJS analytics Library.

209 lines (208 loc) 6.84 kB
import { SurveyModel, Question, Event, EventBase } from "survey-core"; import { IPermission, QuestionLocation, ITableState, IColumn, IColumnData } from "./config"; import { Details } from "./extensions/detailsextensions"; import { ITableExtension, TableExtensions } from "./extensions/tableextensions"; export interface ITableOptions { [index: string]: any; /** * Specifies whether to use question names instead of question titles as column headings. * * Default value: `false` */ useNamesAsTitles?: boolean; /** * Specifies the delimiter used to separate multiple choice items in a list. * * Default value: `", "` */ itemsDelimiter?: string; /** * A callback function that allows you to customize a question's display value in the table. * * Parameters: * * - `options.question`: `Question`\ * The question for which the callback is executed. * - `options.displayValue`: `any`\ * The question's display value. You can modify this parameter to change the output. */ onGetQuestionValue?: (options: { question: Question; displayValue: any; }) => void; } export type TabulatorFilter = { field: string; type: string; value: any; }; export type TabulatorSortOrder = { field: string; direction: undefined | "asc" | "desc"; }; export type GetDataUsingCallbackFn = (params: { filter?: Array<TabulatorFilter>; sort?: Array<TabulatorSortOrder>; offset?: number; limit?: number; callback?: (response: { data: Array<Object>; totalCount: number; error?: any; }) => void; }) => void; export type GetDataUsingPromiseFn = (params: { filter?: Array<TabulatorFilter>; sort?: Array<TabulatorSortOrder>; offset?: number; limit?: number; }) => Promise<{ data: Array<Object>; totalCount: number; error?: any; }>; export type GetDataFn = GetDataUsingCallbackFn | GetDataUsingPromiseFn; export declare class TableEvent extends EventBase<Table> { } export declare abstract class Table { protected _survey: SurveyModel; protected data: Array<Object> | GetDataFn; protected _options: ITableOptions; protected _columnsData: Array<IColumnData>; static showFilesAsImages: boolean; static haveCommercialLicense: boolean; protected tableData: any; protected extensions: TableExtensions; private haveCommercialLicense; protected _columns: Array<IColumn>; constructor(_survey: SurveyModel, data: Array<Object> | GetDataFn, _options?: ITableOptions, _columnsData?: Array<IColumnData>); protected renderResult: HTMLElement; protected currentPageSize: number; protected currentPageNumber: number; protected _rows: TableRow[]; protected isColumnReorderEnabled: boolean; getTableData(): Array<any>; /** * Sets pagination selector content. */ paginationSizeSelector: number[]; onColumnsVisibilityChanged: TableEvent; onColumnsLocationChanged: TableEvent; onRowRemoved: TableEvent; renderDetailActions: (container: HTMLElement, row: TableRow) => HTMLElement; getData(): Object[] | GetDataFn; get survey(): SurveyModel; get options(): ITableOptions; abstract applyFilter(value: string): void; abstract applyColumnFilter(columnName: string, value: string): void; abstract sortByColumn(columnName: string, direction: string): void; render(targetNode: HTMLElement | string): void; enableColumnReorder(): void; disableColumnReorder(): void; getPageNumber(): number; setPageNumber(value: number): void; /** * Returns current page size. */ getPageSize(): number; /** * Sets current page size. */ setPageSize(value: number): void; getCreatedRows(): TableRow[]; clearCreatedRows(): void; get useNamesAsTitles(): boolean; get itemsDelimiter(): string; protected buildColumns: (survey: SurveyModel) => IColumn[]; private isNonValueQuestion; isColumnVisible(column: IColumn): boolean; get columns(): Array<IColumn>; set columns(columns: Array<IColumn>); private isInitTableDataProcessingValue; get isInitTableDataProcessing(): boolean; protected initTableData(data: Object[] | GetDataFn): void; protected processLoadedDataItem(item: any): any; moveColumn(from: number, to: number): void; setColumnLocation(columnName: string, location: QuestionLocation): void; getColumnByName(columnName: string): IColumn; setColumnVisibility(columnName: string, isVisible: boolean): void; setColumnWidth(columnName: string, width: string | number): void; removeRow(row: TableRow): void; /** * Returns current locale of the table. * If locales more than one, the language selection dropdown will be added in the toolbar */ get locale(): string; /** * Sets locale for table. */ set locale(newLocale: string); getLocales(): Array<string>; refresh(hard?: boolean): void; destroy(): void; get isRendered(): boolean; /** * Table state getter. */ get state(): ITableState; /** * Table state setter. */ set state(newState: ITableState); /** * Resets table state. */ resetState(): void; private updateColumnsFromData; /** * Fires when table state changed. */ onStateChanged: TableEvent; /** * Gets table permissions. */ get permissions(): IPermission[]; /** * Sets table permissions. */ set permissions(permissions: IPermission[]); /** * Fires when permissions changed */ onPermissionsChangedCallback: any; protected get allowSorting(): boolean; allowExtension(extension: ITableExtension): boolean; } export declare abstract class TableRow { protected table: Table; protected extensionsContainer: HTMLElement; protected detailsContainer: HTMLElement; constructor(table: Table, extensionsContainer: HTMLElement, detailsContainer: HTMLElement); details: Details; extensions: TableExtensions; private detailedRowClass; private isDetailsExpanded; onToggleDetails: Event<(sender: TableRow, options: any) => any, TableRow, any>; /** * Returns row's html element */ abstract getElement(): HTMLElement; /** * Returns data, which is displayed in the row. */ abstract getRowData(): any; /** * Returns position of row in the table's data. */ abstract getDataPosition(): number; protected isSelected: boolean; render(): void; openDetails(): void; closeDetails(): void; toggleDetails(): void; getIsSelected(): boolean; toggleSelect(): void; remove(): void; private onColumnLocationChangedCallback; destroy(): void; }