import { type DashboardAttributeFilterConfigMode, type DashboardAttributeFilterItem, type DashboardAttributeFilterSelectionMode, type DashboardTextAttributeFilter, type DateFilterGranularity, type DateFilterType, type DateString, type EmptyValues, type FilterContextItem, type IAttributeElements, type IAttributeFilter, type IDashboardAttributeFilterByDate, type IDashboardAttributeFilterConfig, type IDashboardAttributeFilterParent, type IDateFilter, type ILowerBoundedFilter, type IUpperBoundedFilter, type MeasureValueFilterCondition, type ObjRef } from "@gooddata/sdk-model"; import { type IDashboardFilter } from "../../types.js"; import { type IDashboardCommand } from "./base.js"; /** * Payload type for {@link ChangeDateFilterSelection} command. * * @public */ export type DateFilterSelection = { /** * The reference to date data set to which date filter belongs. * If not defined it refers to so. called common date filter which data set is defined per widget */ readonly dataSet?: ObjRef; /** * Indicates whether the filter should select absolute or relative values. * * @remarks * - Absolute values: `from` and `to` props should be exact dates on the defined granularity * - Relative values: `from` and `to` are offsets on the defined granularity */ readonly type: DateFilterType; /** * Date filter granularity. For absolute dates this indicates what is the expected input format. * * @remarks * - Date = MM/DD/YYYY * - Month = MM/YYYY * - Year = YYYY * - Quarter = Q#/YYYY * - Week = WW/YYYY */ readonly granularity: DateFilterGranularity; /** * The start date. If absolute date filter, then `from` is the formatted start date. * * @remarks * If relative date filter, then `from` is offset from today. * * If not specified, then the start date is unbounded. * * See `granularity` prop for more on date format. */ readonly from?: DateString | number; /** * The end date. If absolute date filter, then `to` is formatted end date. * * @remarks * If relative date filter, then `to` is offset from today. * * If not specified, then the end date is current date. * * See `granularity` prop for more on date format */ readonly to?: DateString | number; /** * The localId of the DateFilterOption selected. */ readonly dateFilterOptionLocalId?: string; /** * Determines if this command should change working (staged for application) filters or applied filters (used to compute data). */ readonly isWorkingSelectionChange?: boolean; /** * Specify the local identifier of date filter */ readonly localIdentifier?: string; /** * Additional bound for the relative date filter * @alpha */ readonly boundedFilter?: IUpperBoundedFilter | ILowerBoundedFilter; /** * How to treat undefined (empty) date values. * * @alpha */ readonly emptyValueHandling?: EmptyValues; }; /** * Command for date filter selection change. * * @remarks * See {@link changeDateFilterSelection} and {@link applyDateFilter} factory functions you can use to create * this command more easily from raw data and {@link @gooddata/sdk-model#IDateFilter}, respectively. * * @public */ export type ChangeDateFilterSelection = IDashboardCommand & { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.CHANGE_SELECTION"; readonly payload: DateFilterSelection; }; /** * Creates the ChangeDateFilterSelection command. * * @remarks * Dispatching this command will result in change of dashboard's date filter, or error in case of invalid * update (e.g. hidden date filter option by dateFilterConfig). * * @param type - date filter type; absolute filters use exact start and end dates, while relative filters use offsets from today * @param granularity - granularity on which the filter works; days, weeks, months, quarters or years. * @param from - start date; if not specified, then the start date will be unbounded * @param to - end date; if not specified, then the end date will be unbounded * @param dateFilterOptionLocalId - localId of the {@link @gooddata/sdk-backend-spi#IDateFilterOption} selected * @param localIdentifier - localId of the date filter * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @param dataSet - * @param isWorkingSelectionChange - * @param boundedFilter - * @see {@link ChangeDateFilterSelection} for a more complete description of the different parameters * * @public */ export declare function changeDateFilterSelection(type: DateFilterType, granularity: DateFilterGranularity, from?: DateString | number, to?: DateString | number, dateFilterOptionLocalId?: string, correlationId?: string, dataSet?: ObjRef, isWorkingSelectionChange?: boolean, localIdentifier?: string, boundedFilter?: IUpperBoundedFilter | ILowerBoundedFilter, emptyValueHandling?: EmptyValues): ChangeDateFilterSelection; /** * Creates the ChangeDateFilterSelection command. * * @remarks * Dispatching this command will result in change of dashboard's date filter, or error in case of invalid * update (e.g. hidden date filter option by dateFilterConfig). * * All parameters for {@link ChangeDateFilterSelection} command is derived from the provided date filter. * * See {@link ChangeDateFilterSelection} for a more complete description of the different parameters * * @param filter - date filter to apply * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @public */ export declare function applyDateFilter(filter: IDateFilter, correlationId?: string): ChangeDateFilterSelection; /** * This convenience function will create ChangeDateFilterSelection configured so that the date filter will be * unbounded - showing data for 'All Time'. * * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @param dataSet - * @param isWorkingSelectionChange - * @param localIdentifier - * * @public */ export declare function clearDateFilterSelection(correlationId?: string, dataSet?: ObjRef, isWorkingSelectionChange?: boolean, localIdentifier?: string, emptyValueHandling?: EmptyValues): ChangeDateFilterSelection; /** * Payload of the {@link IAddAttributeFilter} command. * @beta */ export type AddAttributeFilterPayload = { readonly displayForm: ObjRef; readonly index: number; /** * Specify parent filters whose selected values will be used to narrow * down the selection in this newly added filter. * * @privateRemarks * XXX: not needed in the initial version; would be good for API completeness */ readonly parentFilters?: ReadonlyArray; /** * Specify the initial selection of attribute elements. If not provided all * elements will be selected by default. * * @privateRemarks * XXX: not needed in the initial version; would be good for API completeness */ readonly initialSelection?: IAttributeElements; /** * Specify if the initial selection of attribute elements is a negative one: * if true, the elements selected should NOT be included in teh results. * * @privateRemarks * XXX: not needed in the initial version; would be good for API completeness */ readonly initialIsNegativeSelection?: boolean; /** * Selection mode which defines how many elements can be in attributeElements. * Default value is 'multi' if property is missing. */ readonly selectionMode?: DashboardAttributeFilterSelectionMode; /** * Specify the visibility mode of attribute filter */ readonly mode?: DashboardAttributeFilterConfigMode; /** * Specify the local identifier of attribute filter */ readonly localIdentifier?: string; /** * Specify the primary display form of attribute filter. * If provided it is used for filter definition and displayForm param is used only for UI representation */ readonly primaryDisplayForm?: ObjRef; /** * Specify custom title of attribute filter */ readonly title?: string; }; /** * @beta */ export interface IAddAttributeFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.ADD"; readonly payload: AddAttributeFilterPayload; } /** * Creates the AddAttributeFilter command. Dispatching this command will result in the addition * of another attribute filter to the dashboard's filter bar, at desired position, * or error in case of invalid update (e.g. wrong or duplicated displayForm) * * The filter will be set for the display form provided by reference. When created, the filter will be * no-op - all the elements will be selected. * @remarks Does not support adding text filters. * * @param displayForm - specify attribute display form which will be used for filtering * @param index - specify index among the attribute filters at which the new filter should be placed. * The index starts at zero and there is convenience that index of -1 would add the filter at the end. * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing. * @param selectionMode - single or multi value selection mode of the filter. * @param mode - specify the visibility mode of attribute filter * @param initialSelection - specify the initial selection of attribute elements * @param initialIsNegativeSelection - specify if the initial selection of attribute elements is a negative one * @param localIdentifier - local identifier * @param primaryDisplayForm - specify the primary display form of attribute filter * @param title - specify custom title of attribute filter * @beta */ export declare function addAttributeFilter(displayForm: ObjRef, index: number, correlationId?: string, selectionMode?: DashboardAttributeFilterSelectionMode, mode?: DashboardAttributeFilterConfigMode, initialSelection?: IAttributeElements, initialIsNegativeSelection?: boolean, localIdentifier?: string, primaryDisplayForm?: ObjRef, title?: string): IAddAttributeFilter; /** * Payload of the {@link IAddTextAttributeFilter} command. * @beta */ export interface IAddTextAttributeFilterPayload { /** * The text attribute filter to add (arbitrary or match). */ readonly filter: DashboardTextAttributeFilter; /** * Index among the attribute filters at which the new filter should be placed. * Index of -1 adds the filter at the end. */ readonly index: number; /** * Specify the visibility mode of the attribute filter. */ readonly mode?: DashboardAttributeFilterConfigMode; } /** * @beta */ export interface IAddTextAttributeFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.TEXT_ATTRIBUTE_FILTER.ADD"; readonly payload: IAddTextAttributeFilterPayload; } /** * Creates the AddTextAttributeFilter command. Dispatching this command will result in the addition * of a text attribute filter (arbitrary or match) to the dashboard's filter bar, at desired position, * or error in case of invalid update (e.g. wrong or duplicated displayForm). * * @param filter - the text attribute filter to add (IDashboardArbitraryAttributeFilter or IDashboardMatchAttributeFilter) * @param index - specify index among the attribute filters at which the new filter should be placed. * The index starts at zero and there is convenience that index of -1 would add the filter at the end. * @param correlationId - specify correlation id to use for this command * @param mode - specify the visibility mode of attribute filter * @beta */ export declare function addTextAttributeFilter(filter: DashboardTextAttributeFilter, index: number, correlationId?: string, mode?: DashboardAttributeFilterConfigMode): IAddTextAttributeFilter; /** * Payload of the {@link IRemoveAttributeFilters} command. * @beta */ export interface IRemoveAttributeFiltersPayload { /** * XXX: we do not necessarily need to remove multiple filters atm, but this should * be very easy to do and adds some extra flexibility. */ readonly filterLocalIds: string[]; } /** * @beta */ export interface IRemoveAttributeFilters extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.REMOVE"; readonly payload: IRemoveAttributeFiltersPayload; } /** * Creates the RemoveAttributeFilters command. Dispatching this command will result in the removal * of dashboard's attribute filter with the provided local identifier. * * @param filterLocalId - dashboard attribute filter's local identifier * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @beta */ export declare function removeAttributeFilter(filterLocalId: string, correlationId?: string): IRemoveAttributeFilters; /** * Creates the RemoveAttributeFilters command. Dispatching this command will result in the removal * of dashboard's attribute filters with the provided local identifiers. * * @param filterLocalIds - an array of dashboard attribute filter's local identifiers * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @beta */ export declare function removeAttributeFilters(filterLocalIds: string[], correlationId?: string): IRemoveAttributeFilters; /** * Payload of the {@link IMoveAttributeFilter} command. * @beta */ export type MoveAttributeFilterPayload = { /** * Local identifier of the filter to move. */ readonly filterLocalId: string; /** * Index to move the filter to. */ readonly index: number; }; /** * @beta */ export interface IMoveAttributeFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.MOVE"; readonly payload: MoveAttributeFilterPayload; } /** * Creates the MoveAttributeFilter command. Dispatching this command will result in move of the dashboard attribute * filter with the provided local id to a new spot. The new spot is defined by index. For convenience the index * of -1 means move to the end of the attribute filter list. * * @param filterLocalId - dashboard filter's local identifier * @param index - specify index among the attribute filters at which the new filter should be placed. * The index starts at zero and there is convenience that index of -1 would add the filter at the end. * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @beta */ export declare function moveAttributeFilter(filterLocalId: string, index: number, correlationId?: string): IMoveAttributeFilter; /** * Attribute filter selection type for {@link ChangeAttributeFilterSelectionPayload}. * * @public */ export type AttributeFilterSelectionType = "IN" | "NOT_IN"; /** * Payload type for {@link ChangeAttributeFilterSelection} command. * * @public */ export type ChangeAttributeFilterSelectionPayload = { /** * Dashboard attribute filter's local identifier. */ readonly filterLocalId: string; /** * Selected attribute elements. */ readonly elements: IAttributeElements; /** * Selection type. Either 'IN' for positive selection or 'NOT_IN' for negative selection (All except selected items). */ readonly selectionType: AttributeFilterSelectionType; /** * Determines if this command should change working (staged for application) filters or applied filters (used to compute data). * Default is false - command changes applied filters. */ readonly isWorkingSelectionChange?: boolean; /** * Internal value, specifies that filter change was caused by displayAsLabel * ad-hoc migration, the param will be removed once the usage of displayAsLabel is migrated on database * metadata level. */ readonly isResultOfMigration?: boolean; /** * Indicates if the current filter selection is invalid. * When true, the filter's localId should be added to filtersWithInvalidSelection array in state. * When false, the filter's localId should be removed from filtersWithInvalidSelection array. */ readonly isSelectionInvalid?: boolean; }; /** * Command for attribute filter selection change. * * @remarks * See {@link changeAttributeFilterSelection} and {@link applyAttributeFilter} factory functions you can use to create * this command more easily from raw data and {@link @gooddata/sdk-model#IAttributeFilter}, respectively. * * @public */ export type ChangeAttributeFilterSelection = IDashboardCommand & { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.CHANGE_SELECTION"; readonly payload: ChangeAttributeFilterSelectionPayload; }; /** * Creates the ChangeAttributeFilterSelection command for applied filters. * * @remarks * Dispatching this command will result in application of element selection for the dashboard attribute filter * with the provided id, or error in case of invalid update (e.g. non-existing filterLocalId). * * The attribute elements can be provided either using their URI (primary key) or value. Together with the * elements you must indicate the selection type - either 'IN' or 'NOT_IN'. * * If you want to change working filters use {@link changeWorkingAttributeFilterSelection}. * See {@link ChangeAttributeFilterSelectionPayload.isWorkingSelectionChange} for details. * * @remarks see {@link resetAttributeFilterSelection} for convenience function to select all attribute elements of * particular filter. * * See also {@link applyAttributeFilter} for convenient function when you have an {@link @gooddata/sdk-model#IAttributeFilter} instance. * * @example * ``` * const selectionType = isPositiveAttributeFilter ? "IN" : "NOT_IN"; * ``` * * To create this command without a need to calculate the payload values from a {@link @gooddata/sdk-model#IFilter} object, * we recommend to use {@link applyAttributeFilter} command creator instead. * * @param filterLocalId - dashboard attribute filter's local id * @param elements - elements * @param selectionType - selection type. either 'IN' or 'NOT_IN' * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @param isSelectionInvalid - * * @public */ export declare function changeAttributeFilterSelection(filterLocalId: string, elements: IAttributeElements, selectionType: AttributeFilterSelectionType, correlationId?: string, isSelectionInvalid?: boolean): ChangeAttributeFilterSelection; /** * Creates the ChangeAttributeFilterSelection command for adhoc migrated attribute filter. * * @remarks * Dispatching this command will result in application of element selection for the dashboard attribute filter * with the provided id, or error in case of invalid update (e.g. non-existing filterLocalId). * * The attribute elements can be provided either using their URI (primary key) or value. Together with the * elements you must indicate the selection type - either 'IN' or 'NOT_IN'. * * @remarks see {@link resetAttributeFilterSelection} for convenience function to select all attribute elements of * particular filter. * * See also {@link applyAttributeFilter} for convenient function when you have an {@link @gooddata/sdk-model#IAttributeFilter} instance. * * @example * ``` * const selectionType = isPositiveAttributeFilter ? "IN" : "NOT_IN"; * ``` * * To create this command without a need to calculate the payload values from a {@link @gooddata/sdk-model#IFilter} object, * we recommend to use {@link applyAttributeFilter} command creator instead. * * @param filterLocalId - dashboard attribute filter's local id * @param elements - elements * @param selectionType - selection type. either 'IN' or 'NOT_IN' * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @internal */ export declare function changeMigratedAttributeFilterSelection(filterLocalId: string, elements: IAttributeElements, selectionType: AttributeFilterSelectionType, correlationId?: string): ChangeAttributeFilterSelection; /** * Creates the ChangeAttributeFilterSelection command for working filter. * * @remarks * Dispatching this command will result in changing working element selection for the dashboard attribute filter * with the provided id, or error in case of invalid update (e.g. non-existing filterLocalId). * * The attribute elements can be provided either using their URI (primary key) or value. Together with the * elements you must indicate the selection type - either 'IN' or 'NOT_IN'. * * If you want to change applied filters use {@link changeAttributeFilterSelection}. * See {@link ChangeAttributeFilterSelectionPayload.isWorkingSelectionChange} for details. * * @remarks see {@link resetAttributeFilterSelection} for convenience function to select all attribute elements of * particular filter. * * See also {@link applyAttributeFilter} for convenient function when you have an {@link @gooddata/sdk-model#IAttributeFilter} instance. * * @example * ``` * const selectionType = isPositiveAttributeFilter ? "IN" : "NOT_IN"; * ``` * * To create this command without a need to calculate the payload values from a {@link @gooddata/sdk-model#IFilter} object, * we recommend to use {@link applyAttributeFilter} command creator instead. * * @param filterLocalId - dashboard attribute filter's local id * @param elements - elements * @param selectionType - selection type. either 'IN' or 'NOT_IN' * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @param isSelectionInvalid - * * @public */ export declare function changeWorkingAttributeFilterSelection(filterLocalId: string, elements: IAttributeElements, selectionType: AttributeFilterSelectionType, correlationId?: string, isSelectionInvalid?: boolean): ChangeAttributeFilterSelection; /** * Creates the ChangeAttributeFilterSelection command. * * @remarks * Dispatching this command will result in application of element selection for the dashboard attribute filter * with the provided id, or error in case of invalid update (e.g. non-existing `filterLocalId`). * * The {@link ChangeAttributeFilterSelectionPayload}'s `selectionType` and `elements` are derived from the * provided attribute filter. * * To convert {@link IDashboardFilter} to {@link @gooddata/sdk-model#IFilter} use {@link dashboardAttributeFilterToAttributeFilter}. * Converted filter can be used within the command's payload. * * @param filterLocalId - dashboard attribute filter's local id * @param filter - attribute filter to apply * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @public */ export declare function applyAttributeFilter(filterLocalId: string, filter: IAttributeFilter, correlationId?: string): ChangeAttributeFilterSelection | ReplaceAttributeFilterItemSelection | undefined; /** * A convenience function that will create ChangeAttributeFilterSelection command that will select all * elements of the dashboard attribute filter with the provided local id. * * @remarks * This is same as creating the ChangeAttributeFilterSelection command with empty elements and NOT_IN selection type. * * @param filterLocalId - dashboard attribute filter's local id * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @public */ export declare function resetAttributeFilterSelection(filterLocalId: string, correlationId?: string): ChangeAttributeFilterSelection; /** * Payload type for {@link ReplaceAttributeFilterItemSelection} command. * * @internal */ export type ReplaceAttributeFilterItemSelectionPayload = { /** * Dashboard attribute filter's local identifier. */ readonly filterLocalId: string; /** * The full replacement filter item (can be standard, arbitrary, or match attribute filter). */ readonly filter: DashboardAttributeFilterItem; /** * Determines if this command should change working (staged for application) filters or applied filters. * Default is false - command changes applied filters. */ readonly isWorkingSelectionChange?: boolean; /** * Specifies if filter selection is invalid (e.g. text filter with missing value/literal). */ readonly isSelectionInvalid?: boolean; }; /** * Command for replacing an attribute filter item's selection. * * @remarks * This command replaces the entire filter item in the filter context. It supports all attribute filter * types including standard element-based, arbitrary text, and match text filters. * * @public */ export type ReplaceAttributeFilterItemSelection = IDashboardCommand & { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER_ITEM.REPLACE_SELECTION"; readonly payload: ReplaceAttributeFilterItemSelectionPayload; }; /** * Creates the ReplaceAttributeFilterItemSelection command for applied filters. * * @remarks * Dispatching this command will result in replacement of the attribute filter item with the provided * filter in the dashboard filter context. * * @param filterLocalId - dashboard attribute filter's local id * @param filter - the replacement filter item * @param correlationId - specify correlation id to use for this command * * @internal */ export declare function replaceAttributeFilterItemSelection(filterLocalId: string, filter: DashboardAttributeFilterItem, correlationId?: string, isSelectionInvalid?: boolean): ReplaceAttributeFilterItemSelection; /** * Creates the ReplaceAttributeFilterItemSelection command for working filters. * * @param filterLocalId - dashboard attribute filter's local id * @param filter - the replacement filter item * @param correlationId - specify correlation id to use for this command * * @internal */ export declare function replaceWorkingAttributeFilterItemSelection(filterLocalId: string, filter: DashboardAttributeFilterItem, correlationId?: string, isSelectionInvalid?: boolean): ReplaceAttributeFilterItemSelection; /** * Payload of the {@link ISetAttributeFilterDependentDateFilters} command. * @beta */ export type SetAttributeFilterDependentDateFiltersPayload = { readonly filterLocalId: string; readonly dependentDateFilters: ReadonlyArray; }; /** * @beta */ export interface ISetAttributeFilterDependentDateFilters extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_DEPENDENT_DATE_FILTERS"; readonly payload: SetAttributeFilterDependentDateFiltersPayload; } /** * Creates the SetAttributeFilterDependentDateFilters command. Dispatching this command will result in setting a * relationship between one dashboard attribute filters and one or more date filters. * * When an attribute filter has a dependent date filter set up, the attribute elements that will be available in the attribute * filter will be influenced by the selection in the date filter. The attribute filter will show only those elements * for which a link exists to the selected elements in the dependent date filter. * * * @param filterLocalId - local id of filter that will be a child in the relationship * @param dependentDateFilters - * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @beta */ export declare function setAttributeFilterDependentDateFilters(filterLocalId: string, dependentDateFilters: IDashboardAttributeFilterByDate[], correlationId?: string): ISetAttributeFilterDependentDateFilters; /** * Payload of the {@link ISetAttributeFilterParents} command. * @beta */ export type SetAttributeFilterParentsPayload = { readonly filterLocalId: string; readonly parentFilters: ReadonlyArray; }; /** * @beta */ export interface ISetAttributeFilterParents extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_PARENTS"; readonly payload: SetAttributeFilterParentsPayload; } /** * Creates the SetAttributeFilterParents command. Dispatching this command will result in setting a parent-child * relationship between two or more dashboard attribute filters. * * When an attribute filter has a parent set up, the attribute elements that will be available in the child * filter will be influenced by the selection in the parent. The child filter will show only those elements * for which a link exists to the selected elements in the parent. * * Take for example a model where there are continent and country attributes. You add continent and * country as filters onto a dashboard and establish parent-child relationship between them. When users select * some continents in the filter, the country filter will only show elements for countries on the selected * contents. * * @param filterLocalId - local id of filter that will be a child in the relationship * @param parentFilters - definition of the relationship to parent, this contains local id of the parent filter and * one or more 'over' attributes. The 'over' attributes will be included when querying * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @beta */ export declare function setAttributeFilterParents(filterLocalId: string, parentFilters: IDashboardAttributeFilterParent[], correlationId?: string): ISetAttributeFilterParents; /** * Payload of the {@link ChangeFilterContextSelection} command. * @public */ export type ChangeFilterContextSelectionPayload = { /** * Filters to apply to the current dashboard filter context. */ filters: (IDashboardFilter | FilterContextItem)[]; /** * Attribute filter configs with additional props */ attributeFilterConfigs?: IDashboardAttributeFilterConfig[]; /** * For filters not mentioned in the payload reset to All items selected/All time? Defaults to false. */ resetOthers: boolean; /** * Optional tab local identifier to apply filters to a specific tab. * If not provided, filters will be applied to the currently active tab. * * @remarks * When specified, the command will apply filters to the specified tab instead of the active tab. * If the tab does not exist, the command will fail with an error. * * @internal */ tabLocalIdentifier?: string; }; /** * Command for changing multiple filters at once. * * @remarks * See {@link changeFilterContextSelection} for a factory function that will help you create this command. * * @public */ export type ChangeFilterContextSelection = IDashboardCommand & { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.CHANGE_SELECTION"; readonly payload: ChangeFilterContextSelectionPayload; }; /** * Creates the {@link ChangeFilterContextSelection} command. * * @remarks * Dispatching this command will result into setting provided dashboard filters to the current dashboard filter context. * * Only filters that are stored in the filter context can be applied (filters that are visible in the filter bar). * Filters will be matched via display form ref, duplicities will be omitted. * Date filter that does not match any visible option by the current date filter config will be also omitted. * * @public * @param filters - attribute filters and date filter to apply. * @param resetOthers - If true, filters not mentioned in the payload will be reset to All items selected/All time. Defaults to false. * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns change filter selection command */ export declare function changeFilterContextSelection(filters: (IDashboardFilter | FilterContextItem)[], resetOthers?: boolean, correlationId?: string): ChangeFilterContextSelection; /** * Params for {@link changeFilterContextSelectionByParams} command. * * @public */ export type ChangeFilterContextSelectionParams = { filters: (IDashboardFilter | FilterContextItem)[]; attributeFilterConfigs?: IDashboardAttributeFilterConfig[]; resetOthers?: boolean; correlationId?: string; /** * Optional tab local identifier to apply filters to a specific tab. * If not provided, filters will be applied to the currently active tab. * * @internal */ tabLocalIdentifier?: string; }; /** * Creates the {@link ChangeFilterContextSelection} command. * * @remarks * Dispatching this command will result into setting provided dashboard filters to the current dashboard filter context. * * Only filters that are stored in the filter context can be applied (filters that are visible in the filter bar). * Filters will be matched via display form ref, duplicities will be omitted. * Date filter that does not match any visible option by the current date filter config will be also omitted. * * @param params - params for the command creator * @internal * TODO: next major release can remove ByParams suffix and use this implementation instead of original cmd creator + other creators can be rewritten to use params object * https://gooddata.atlassian.net/browse/STL-700 */ export declare function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs, resetOthers, correlationId, tabLocalIdentifier }: ChangeFilterContextSelectionParams): ChangeFilterContextSelection; /** * @beta */ export interface ISetAttributeFilterDisplayFormPayload { filterLocalId: string; displayForm: ObjRef; isWorkingSelectionChange?: boolean; isResultOfMigration?: boolean; } /** * @beta */ export interface ISetAttributeFilterDisplayForm extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_DISPLAY_FORM"; readonly payload: ISetAttributeFilterDisplayFormPayload; } /** * Creates the {@link ISetAttributeFilterDisplayForm} command. * * @remarks * Dispatching the commands will result into setting provided display form as a selected * display form for the attribute filter. * * * @beta * @param filterLocalId - local identifier of the filter the display form is changed for * @param displayForm - newly selected display form * @param isWorkingSelectionChange - determines if command updates working filter context or applied filter context. Applied filter context is default. * @param isResultOfMigration - internal value, specifies that filter change was caused by displayAsLabel * ad-hoc migration, the param will be removed once the usage of displayAsLabel is migrated on database * metadata level. * @returns change filter display form command */ export declare function setAttributeFilterDisplayForm(filterLocalId: string, displayForm: ObjRef, isWorkingSelectionChange?: boolean, isResultOfMigration?: boolean): ISetAttributeFilterDisplayForm; /** * Payload of the {@link ISetAttributeFilterTitle} command. * @beta */ export interface ISetAttributeFilterTitlePayload { /** * Local identifier of the filter to rename. */ filterLocalId: string; /** * Title of the filter. */ title?: string; } /** * Command for changing attribute filter title. * @beta */ export interface ISetAttributeFilterTitle extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_TITLE"; readonly payload: ISetAttributeFilterTitlePayload; } /** * Creates the {@link ISetAttributeFilterTitle} command. * * @remarks * Dispatching the commands will result into setting provided title as a selected * title for the attribute filter. * * * @beta * @param filterLocalId - local identifier of the filter the display form is changed for * @param title - newly added title * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns change filter title command */ export declare function setAttributeFilterTitle(filterLocalId: string, title?: string, correlationId?: string): ISetAttributeFilterTitle; /** * @beta */ export interface ISetAttributeFilterSelectionModePayload { filterLocalId: string; selectionMode: DashboardAttributeFilterSelectionMode; } /** * @beta */ export interface ISetAttributeFilterSelectionMode extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_SELECTION_MODE"; readonly payload: ISetAttributeFilterSelectionModePayload; } /** * Creates the {@link ISetAttributeFilterSelectionMode} command. * * @remarks * Dispatching the commands will result into setting provided selection mode as a selected * selection mode for the attribute filter. * * * @beta * @param filterLocalId - local identifier of the filter the selection mode is changed for * @param selectionMode - newly selected selection mode * @returns change filter selection mode command */ export declare function setAttributeFilterSelectionMode(filterLocalId: string, selectionMode: DashboardAttributeFilterSelectionMode): ISetAttributeFilterSelectionMode; /** * Payload of the {@link IAddDateFilter} command. * * @alpha */ export interface IAddDateFilterPayload { readonly index: number; readonly dateDataset: ObjRef; } /** * @alpha */ export interface IAddDateFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.ADD"; readonly payload: IAddDateFilterPayload; } /** * Creates the AddDateFilter command. Dispatching this command will result in the addition * of another date filter with defined dimension to the dashboard's filter bar, at desired position, * or error in case of invalid update (e.g. wrong or duplicated date dimension/data set) * * The filter will be set for the date dimension provided by reference. When created, the filter will be * no-op - all time filter. * * @param dateDataset - specify date dimension/data set which will be used for filtering of all widgets * @param index - specify index among the filters at which the new filter should be placed. * The index starts at zero and there is convenience that index of -1 would add the filter at the end. * @param correlationId - specify correlation id to use for this command. this will be included in all * * @alpha */ export declare function addDateFilter(dateDataset: ObjRef, index: number, correlationId?: string): IAddDateFilter; /** * Payload of the {@link IRemoveDateFilters} command. * @beta */ export interface IRemoveDateFiltersPayload { /** * XXX: we do not necessarily need to remove multiple filters atm, but this should * be very easy to do and adds some extra flexibility. */ readonly dataSets: ObjRef[]; } /** * @beta */ export interface IRemoveDateFilters extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.REMOVE"; readonly payload: IRemoveDateFiltersPayload; } /** * Creates the RemoveDateFilters command. Dispatching this command will result in the removal * of dashboard's date filter with the provided date data set. * * @param dataSet - dashboard date filter's date data set ref * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * @beta */ export declare function removeDateFilter(dataSet: ObjRef, correlationId?: string): IRemoveDateFilters; /** * Payload of the {@link IMoveDateFilter} command. * @beta */ export type MoveDateFilterPayload = { /** * Data set of the filter to move. */ readonly dataSet: ObjRef; /** * Index to move the filter to. */ readonly index: number; }; /** * @beta */ export interface IMoveDateFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.MOVE"; readonly payload: MoveDateFilterPayload; } /** * Creates the MoveDateFilter command. Dispatching this command will result in move of the dashboard date * filter with the provided dataSet to a new spot. The new spot is defined by index. For convenience the index * of -1 means move to the end of the filter list. * * @param dataSet - dashboard filter's dataSet - no duplicates allowed * @param index - specify index among the draggable filters (attribute filters and date filters with dataSet) at which the new filter should be placed. * The index starts at zero and there is convenience that index of -1 would add the filter at the end. * @param correlationId - specify correlation id to use for this command. this will be included in all * events that will be emitted during the command processing * * @beta */ export declare function moveDateFilter(dataSet: ObjRef, index: number, correlationId?: string): IMoveDateFilter; /** * Payload of the {@link ISaveFilterView} command. * @alpha */ export interface ISaveFilterViewPayload { readonly name: string; readonly isDefault: boolean; } /** * Command for snapshotting current filter context and saving it as a filter view. * * @remarks * See {@link saveFilterView} for a factory function that will help you create this command. * * @alpha */ export interface ISaveFilterView extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.SAVE"; readonly payload: ISaveFilterViewPayload; } /** * Creates the {@link ISaveFilterView} command. * * @remarks * Dispatching this command will result into snapshotting of the current dashboard filter context into a * filter view that will be persisted. User can later apply it to the filter context to restore it to the * saved state. * * @alpha * @param name - name of the filter view under which it will be listed in UI. * @param isDefault - determine if new filter view should be set as a default. * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns save filter view command */ export declare function saveFilterView(name: string, isDefault: boolean, correlationId?: string): ISaveFilterView; /** * Payload of the {@link IDeleteFilterView} command. * @alpha */ export interface IDeleteFilterViewPayload { readonly ref: ObjRef; } /** * Command for deletion of a saved filter view. * * @remarks * See {@link deleteFilterView} for a factory function that will help you create this command. * * @alpha */ export interface IDeleteFilterView extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.DELETE"; readonly payload: IDeleteFilterViewPayload; } /** * Creates the {@link IDeleteFilterView} command. * * @remarks * Dispatching this command will result into deletion of the persisted filter view. * * @alpha * @param ref - ref of the filter view that must be deleted * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns delete filter view command */ export declare function deleteFilterView(ref: ObjRef, correlationId?: string): IDeleteFilterView; /** * Payload of the {@link IApplyFilterView} command. * @alpha */ export interface IApplyFilterViewPayload { readonly ref: ObjRef; } /** * Command for application of a saved filter view. * * @remarks * See {@link applyFilterView} for a factory function that will help you create this command. * * @alpha */ export interface IApplyFilterView extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.APPLY"; readonly payload: IApplyFilterViewPayload; } /** * Creates the {@link IApplyFilterView} command. * * @remarks * Dispatching this command will result into application of the persisted filter view. * * @alpha * @param ref - ref of the filter view that must be applied to the filter context. * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns delete filter view command */ export declare function applyFilterView(ref: ObjRef, correlationId?: string): IApplyFilterView; /** * Payload of the {@link ISetFilterViewAsDefault} command. * @alpha */ export interface ISetFilterViewAsDefaultPayload { readonly ref: ObjRef; readonly isDefault: boolean; } /** * Command for setting a saved filter view as a default one or removing the default status from it. * * @remarks * See {@link setFilterViewAsDefault} for a factory function that will help you create this command. * * @alpha */ export interface ISetFilterViewAsDefault extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS"; readonly payload: ISetFilterViewAsDefaultPayload; } /** * Creates the {@link ISetFilterViewAsDefault} command. * * @remarks * Dispatching this command will result into setting of the persisted filter view as a default one when * dashboard filter context is loaded or unsetting it from being applied automatically on load. * * @alpha * @param ref - ref of the filter view that must be set as a default one. * @param isDefault - determine if filter view identified by the provided ref should be marked as a default * one. If yes, any existing filter view for the same user and dashboard will be marked as non default * as only one can be set as default at the same time. * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns delete filter view command */ export declare function setFilterViewAsDefault(ref: ObjRef, isDefault: boolean, correlationId?: string): ISetFilterViewAsDefault; /** * Command for refreshing of the cache with saved filter views from persistent storage. * * @remarks * See {@link reloadFilterViews} for a factory function that will help you create this command. * * @alpha */ export interface IReloadFilterViews extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.RELOAD"; } /** * Creates the {@link IReloadFilterViews} command. * * @remarks * Dispatching this command will result with refreshing of the cache with saved filter views from * persistent storage and updating the local cache in redux store. * * @alpha * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns delete filter view command */ export declare function reloadFilterViews(correlationId?: string): IReloadFilterViews; /** * Command for applying all working filters staged for application. * Usually used with setting dashboardApplyFiltersMode: ALL_AT_ONCE * * @remarks * See {@link applyFilterContextWorkingSelection} for a factory function that will help you create this command. * * @alpha */ export interface IApplyFilterContextWorkingSelection extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.APPLY_WORKING_SELECTION"; } /** * Creates the {@link IApplyFilterContextWorkingSelection} command. * * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns apply all filters command * * @alpha */ export declare function applyFilterContextWorkingSelection(correlationId?: string): IApplyFilterContextWorkingSelection; /** * Command for resetting all working filters. * It resets the working filters in to same state as applied filters. * * @remarks * This command ot usually used with setting dashboardApplyFiltersMode: ALL_AT_ONCE * * If you want to reset applied filters too, you may use {@link changeFilterContextSelection} and pass all available filters to it. * * @remarks * See {@link applyFilterContextWorkingSelection} for a factory function that will help you create this command. * * @alpha */ export interface IResetFilterContextWorkingSelection extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.RESET_WORKING_SELECTION"; } /** * Creates the {@link IResetFilterContextWorkingSelection} command. * * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing. * @returns apply reset working filters command * * @alpha */ export declare function resetFilterContextWorkingSelection(correlationId?: string): IResetFilterContextWorkingSelection; /** * Payload of the {@link IAddMeasureValueFilter} command. * * @alpha */ export interface IAddMeasureValueFilterPayload { readonly index: number; readonly measure: ObjRef; readonly localIdentifier?: string; readonly title?: string; readonly mode?: DashboardAttributeFilterConfigMode; } /** * Command for adding a new dashboard measure value filter. * * @alpha */ export interface IAddMeasureValueFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.ADD"; readonly payload: IAddMeasureValueFilterPayload; } /** * Creates the AddMeasureValueFilter command. * * @param measure - catalog measure whose value should be filtered * @param index - position among draggable filters where the new filter should be placed * @param correlationId - correlation id propagated through emitted events * @param localIdentifier - optional local identifier for the new filter * @param title - optional custom title for the new filter * @param mode - optional visibility mode for the new filter * * @alpha */ export declare function addMeasureValueFilter(measure: ObjRef, index: number, correlationId?: string, localIdentifier?: string, title?: string, mode?: DashboardAttributeFilterConfigMode): IAddMeasureValueFilter; /** * Payload of the {@link IRemoveMeasureValueFilters} command. * * @alpha */ export interface IRemoveMeasureValueFiltersPayload { /** * Local identifiers of the measure value filters to remove. The command processes them as a * single batch — every entry must reference an existing dashboard MVF or the command fails. */ readonly localIdentifiers: string[]; } /** * Command for removing one or more measure value filters in a single batch. * * @alpha */ export interface IRemoveMeasureValueFilters extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.REMOVE"; readonly payload: IRemoveMeasureValueFiltersPayload; } /** * Backwards-compatible alias for the batch command shape. * * @alpha */ export type IRemoveMeasureValueFilter = IRemoveMeasureValueFilters; /** * Creates the RemoveMeasureValueFilters command for a single filter. * * @alpha * @param localIdentifier - local identifier of the measure value filter * @param correlationId - correlation id propagated through emitted events * @returns remove measure value filter command */ export declare function removeMeasureValueFilter(localIdentifier: string, correlationId?: string): IRemoveMeasureValueFilters; /** * Creates the RemoveMeasureValueFilters command for a batch of filters. The handler processes * them in one pass — each removal emits its own `DashboardMeasureValueFilterRemoved` event and * the whole batch settles with a single `DashboardFilterContextChanged`. * * @alpha * @param localIdentifiers - local identifiers of the measure value filters to remove * @param correlationId - correlation id propagated through emitted events */ export declare function removeMeasureValueFilters(localIdentifiers: string[], correlationId?: string): IRemoveMeasureValueFilters; /** * Payload of the {@link IMoveMeasureValueFilter} command. * * @alpha */ export type MoveMeasureValueFilterPayload = { /** * Local identifier of the measure value filter to move. */ readonly localIdentifier: string; /** * Index among draggable filters to move the filter to. */ readonly index: number; }; /** * Command for moving a measure value filter. * * @alpha */ export interface IMoveMeasureValueFilter extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.MOVE"; readonly payload: MoveMeasureValueFilterPayload; } /** * Creates the MoveMeasureValueFilter command. * * @alpha * @param localIdentifier - local identifier of the measure value filter * @param index - target index among draggable filters * @param correlationId - correlation id propagated through emitted events * @returns move measure value filter command */ export declare function moveMeasureValueFilter(localIdentifier: string, index: number, correlationId?: string): IMoveMeasureValueFilter; /** * Payload of the {@link IChangeMeasureValueFilterCondition} command. * * @alpha */ export interface IChangeMeasureValueFilterConditionPayload { /** * Local identifier of the measure value filter to update. */ readonly localIdentifier: string; /** * New conditions to apply on the filter. When empty or undefined, the filter is treated * as "All" (no filtering). */ readonly conditions?: MeasureValueFilterCondition[]; /** * Indicates that the change should be staged in the working filter context. */ readonly isWorkingSelectionChange?: boolean; } /** * Command for changing the condition definition of an existing measure value filter. * * @alpha */ export interface IChangeMeasureValueFilterCondition extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.CHANGE_CONDITION"; readonly payload: IChangeMeasureValueFilterConditionPayload; } /** * Creates the ChangeMeasureValueFilterCondition command. * * @remarks * Dispatching this command updates the conditions of an existing measure value filter. To clear * the filter (set it back to "All"), pass undefined or an empty array. * * @param localIdentifier - local identifier of the measure value filter to update * @param conditions - new conditions to apply, or undefined to clear * @param correlationId - correlation id propagated through emitted events * * @alpha */ export declare function changeMeasureValueFilterCondition(localIdentifier: string, conditions?: MeasureValueFilterCondition[], correlationId?: string): IChangeMeasureValueFilterCondition; /** * Creates the ChangeMeasureValueFilterCondition command for working filter context changes. * * @alpha * @param localIdentifier - local identifier of the measure value filter to update * @param conditions - new conditions to apply, or undefined to clear * @param correlationId - correlation id propagated through emitted events * @returns change measure value filter condition command */ export declare function changeWorkingMeasureValueFilterCondition(localIdentifier: string, conditions?: MeasureValueFilterCondition[], correlationId?: string): IChangeMeasureValueFilterCondition; /** * Payload of the {@link ISetMeasureValueFilterDimensionality} command. * * @alpha */ export interface ISetMeasureValueFilterDimensionalityPayload { /** * Local identifier of the measure value filter to update. */ readonly localIdentifier: string; /** * Fixed dashboard-level dimensionality to apply. When empty or undefined, the filter * falls back to widget-level granularity inheritance. */ readonly dimensionality?: ObjRef[]; } /** * Command for changing the dashboard-level dimensionality of an existing measure value filter. * * @alpha */ export interface ISetMeasureValueFilterDimensionality extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.SET_DIMENSIONALITY"; readonly payload: ISetMeasureValueFilterDimensionalityPayload; } /** * Creates the {@link ISetMeasureValueFilterDimensionality} command. * * @alpha * @param localIdentifier - local identifier of the measure value filter to update * @param dimensionality - fixed dashboard-level dimensionality, or undefined to inherit per-widget granularity * @param correlationId - correlation id propagated through emitted events * @returns set measure value filter dimensionality command */ export declare function setMeasureValueFilterDimensionality(localIdentifier: string, dimensionality?: ObjRef[], correlationId?: string): ISetMeasureValueFilterDimensionality; /** * Payload of the {@link ISetMeasureValueFilterTitle} command. * * @alpha */ export interface ISetMeasureValueFilterTitlePayload { /** * Local identifier of the measure value filter to update. */ filterLocalId: string; /** * Custom title to set. Pass undefined to reset to the default metric title. */ title?: string; } /** * Command for changing measure value filter title. * * @alpha */ export interface ISetMeasureValueFilterTitle extends IDashboardCommand { readonly type: "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.SET_TITLE"; readonly payload: ISetMeasureValueFilterTitlePayload; } /** * Creates the {@link ISetMeasureValueFilterTitle} command. * * @alpha * @param filterLocalId - local identifier of the measure value filter * @param title - custom title, or undefined to reset to the default metric title * @param correlationId - correlation id propagated through emitted events * @returns change measure value filter title command */ export declare function setMeasureValueFilterTitle(filterLocalId: string, title?: string, correlationId?: string): ISetMeasureValueFilterTitle; //# sourceMappingURL=filters.d.ts.map