///
import { ILicenseInfoOptions } from '@devexpress/analytics-core/analytics-internal';
import { Dashboard } from '../model/dashboard';
import { AjaxRemoteServiceOptions, FetchRemoteServiceOptions, IExtension } from './common-interfaces';
import { DashboardControl } from './dashboard-control';
export type ExtensionCreator = (dashboardControl: DashboardControl, extensionOptions?: {
[index: string]: {};
}) => IExtension;
export type ExtensionDictionary = {
[index: string]: ExtensionCreator;
};
export type ExtensionOptions = {
[index: string]: Object | false | ExtensionCreator;
};
export declare var defaultExtensions: ExtensionDictionary;
export declare var designerExtensions: ExtensionDictionary;
export declare var extensionNameMap: {
[key: string]: string;
};
export type WorkingMode = 'Designer' | 'Viewer' | 'ViewerOnly';
export type LimitVisibleDataMode = 'Designer' | 'DesignerAndViewer' | 'None';
export interface DashboardControlOptions {
workingMode?: WorkingMode;
initialDashboardId?: string;
dashboardId?: string;
initialDashboardState?: string;
loadDefaultDashboard?: boolean;
encodeHtml?: boolean;
useNeutralFilterMode?: boolean;
limitVisibleDataMode?: LimitVisibleDataMode;
showConfirmationOnBrowserClosing?: boolean;
resizeByTimer?: boolean;
allowMaximizeItems?: boolean;
endpoint?: string;
ajaxRemoteService?: AjaxRemoteServiceOptions;
fetchRemoteService?: FetchRemoteServiceOptions;
onInitializing?: (args: DashboardControlArgs) => void;
onBeforeRender?: (args: DashboardControlArgs) => void;
onDashboardInitializing?: (args: DashboardInitializingArgs) => void;
onDashboardInitialized?: (args: DashboardInitializedArgs) => void;
onDashboardStateChanged?: (args: DashboardStateChangedArgs) => void;
onItemBeginUpdate?: (args: DashboardItemUpdateArgs) => void;
onItemEndUpdate?: (args: DashboardItemUpdateArgs) => void;
onDashboardBeginUpdate?: (args: DashboardUpdateArgs) => void;
onDashboardEndUpdate?: (args: DashboardUpdateArgs) => void;
onOptionChanged?: (args: DashboardOptionChangedArgs) => void;
dataRequestOptions?: DataRequestOptions;
useCardLegacyLayout?: boolean;
extensions?: ExtensionOptions | false;
nonce?: string;
_licenseOptions?: ILicenseInfoOptions;
}
export interface DashboardOptionChangedArgs {
name: keyof T;
fullName: string;
value: any;
}
export type DashboardControlEvents = {
initializing: DashboardControlArgs;
beforeRender: DashboardControlArgs;
dashboardInitializing: DashboardInitializingArgs;
dashboardInitialized: DashboardInitializedArgs;
dashboardStateChanged: DashboardStateChangedArgs;
itemBeginUpdate: DashboardItemUpdateArgs;
itemEndUpdate: DashboardItemUpdateArgs;
dashboardBeginUpdate: DashboardUpdateArgs;
dashboardEndUpdate: DashboardUpdateArgs;
optionChanged: DashboardOptionChangedArgs;
};
export interface DataRequestOptions {
itemDataRequestMode?: ItemDataRequestMode;
itemDataLoadingMode?: ItemDataLoadingMode;
}
export type ItemDataLoadingMode = 'Always' | 'OnDemand';
export type ItemDataRequestMode = 'SeparateRequests' | 'BatchRequests';
export type RefreshItemsArgs = string | Array;
export type DashboardControlArgs = {
component: DashboardControl;
};
export type DashboardUpdateArgs = {
component: DashboardControl;
dashboardId: string;
};
export type DashboardItemUpdateArgs = {
component: DashboardControl;
dashboardId: string;
itemName: string;
};
export type DashboardInitializedArgs = {
component: DashboardControl;
dashboardId: string;
dashboard: Dashboard;
};
export type DashboardStateChangedArgs = {
component: DashboardControl;
dashboardId: string;
dashboard: Dashboard;
stateString: string;
};
export type DashboardInitializingArgs = {
component: DashboardControl;
dashboardId: string;
dashboard: Dashboard;
ready: JQueryPromise;
};