import { Attribute, DataSource, Filter, FilterRelations, Measure } from '@sisense/sdk-data'; import { ExecuteQueryParams, QueryState } from '../../../domains/query-execution/types'; import { HookEnableParam } from '../../../shared/hooks/types'; import { GenericDataOptions } from '../../../types'; /** * State of a query execution retrieving data of a custom widget. */ export type CustomWidgetQueryState = QueryState; /** * Parameters for executing a query for a custom widget. * Contains only data-related properties needed for query execution, * excluding event handlers and other non-query props. */ export interface ExecuteCustomWidgetQueryParams extends HookEnableParam, Pick { /** Data source for the query */ dataSource?: DataSource; /** Data options defining dimensions and measures */ dataOptions: GenericDataOptions; /** Filters to apply to the query */ filters?: Filter[] | FilterRelations; /** Highlight filters */ highlights?: Filter[]; } /** * Utility function for converting data options to parameters for executing a query. * * @example * ```ts * import { extractDimensionsAndMeasures } from '@sisense/sdk-ui'; * import { measureFactory } from '@sisense/sdk-data'; * import * as DM from './sample-ecommerce'; * * const { dimensions, measures } = extractDimensionsAndMeasures({ * category: [DM.Commerce.Condition], * value: [measureFactory.sum(DM.Commerce.Revenue)], * }); * ``` * * @group Dashboards */ export declare function extractDimensionsAndMeasures(dataOptions: GenericDataOptions): { dimensions: Attribute[]; measures: Measure[]; }; /** * {@link useExecuteCustomWidgetQuery} without tracking to be used inside other hooks or components in Compose SDK. * * @internal */ export declare function useExecuteCustomWidgetQueryInternal({ dataSource, dataOptions, filters, highlights, count, offset, ungroup, onBeforeQuery, }: ExecuteCustomWidgetQueryParams): CustomWidgetQueryState; /** * React hook that takes a custom widget component's props and executes a data query. * * @example * Used inside a {@link CustomWidgetComponent} to fetch the data it needs to render, based on * the `dataSource`/`dataOptions`/`filters` props supplied by the dashboard: * * ```tsx * import { CustomWidgetComponent, useExecuteCustomWidgetQuery } from '@sisense/sdk-ui'; * * const MyTableWidget: CustomWidgetComponent = (props) => { * const { data } = useExecuteCustomWidgetQuery(props); * if (!data) return null; * * return ( * * * * {data.columns.map((column, i) => ( * * ))} * * * * {data.rows.map((row, i) => ( * * {row.map((cell, j) => ( * * ))} * * ))} * *
{column.name}
{cell.text}
* ); * }; * * export default MyTableWidget; * ``` * * @group Queries */ export declare const useExecuteCustomWidgetQuery: (args_0: ExecuteCustomWidgetQueryParams) => QueryState;