import { ALLOW_EMBED_PAGES } from '../constants'; export interface Payload { type: string; data?: any; [key: string]: any; } /** 转发接口参数格式 */ export interface RequestPayload { url: string; method: string; params?: Record; body?: Record; } /** * 比较关系 */ export declare enum EAttrOp { EQ = "=", /** * 不等于不含 null */ NE = "!=", /** * 不等于含 null */ NEQ_CONTAIN_NULL = "not_equal_contain_null", /** * 历史原因:string类型要新增一个 不等于不含null * 不等于不含 null(analysis base string 的 != 是含null的,因此需要增加一个 not_equal_not_contain_null) */ NEQ_NOT_CONTAIN_NULL = "not_equal_not_contain_null", GT = ">", LT = "<", GE = ">=", LE = "<=", /** * 包含 */ CONTAIN = "contain", /** * 自定义包含 */ CUSTOM_CONTAIN = "custom_contain", /** * 不包含 * sass 中的语义是 不包含(含null) * 私有化 中的语义是 不包含(不含null) */ NOT_CONTAIN = "not_contain", /** * 不包含不含null * sass 环境 */ NOT_CONTAIN_NOT_CONTAIN_NULL = "not_contain_not_contain_null", /** * 不包含含null * 私有化环境,NOT_CONTAIN */ NOT_CONTAIN_CONTAIN_NULL = "not_contain_contain_null", /** * 包含 */ LIST_CONTAIN = "list_contain", /** * 不包含 */ LIST_NOT_CONTAIN = "list_not_contain", /** * 范围 */ BETWEEN = "between", /** * 固定范围 */ TIME_FIXED = "time_fixed", /** * 不在固定范围 */ TIME_NOT_FIXED = "time_not_fixed", /** * 在当前时间 */ TIME_RELATIVE_TO_TODAY = "time_relative_to_today", /** * 不在当前时间 */ TIME_NOT_RELATIVE_TO_TODAY = "time_not_relative_to_today", /** * 在今天和 */ TIME_WITH_TODAY = "time_with_today", /** * 不在今天和 */ TIME_NOT_WITH_TODAY = "time_not_with_today", /** * 在事件发生(仅作为事件过滤条件时才有) */ TIME_RELATIVE_TO_EVENT = "time_relative_to_event", /** * 不在事件发生(仅作为事件过滤条件时才有) */ TIME_NOT_RELATIVE_TO_EVENT = "time_not_relative_to_event", /** * 为空 */ IS_NULL = "is_null", /** * 不为空 */ IS_NOT_NULL = "is_not_null", /** * 正则匹配 */ MATCH = "match", /** * 正则不匹配 */ NOT_MATCH = "not_match", /** * 时间 */ TIME = "time" } /** * 允许嵌出的页面 */ export declare type EmbedPage = (typeof ALLOW_EMBED_PAGES)[number]; export declare type IndicatorType = 'events' | 'event_users' | 'events_per_user' | 'uv_per_au' | 'pv_per_au' | 'sum' | 'avg' | 'per_user' | 'pct' | 'sum_per_au' | 'min' | 'max' | 'distinct' | 'distinct_user_attr'; export declare enum MetaPropertyType { /** * 用户属性 */ PROFILE = "profile", /** * 事件公共属性 */ COMMON_PARAM = "common_param", /** * 事件一般属性 */ EVENT_PARAM = "event_param", /** * 业务维度属性 */ ITEM_PARAM = "item_param", /** * 用户标签 */ USER_TAG = "user_tag", /** * CDP 的用户标签,私有化联合部署时用到。 * 对于调用方来说无感知,会和 user_tag 一起请求。 */ CDP_TAG = "cdp_tag", /** * 用户分群。 * 注意,通常要和 CDP_COHORT 一起使用 */ COHORT = "cohort", /** * 私有化的用户属性。 * 一个坑点。 * TODO:给它抹平干掉 @huangtianyu */ USER_PROFILE = "user_profile", /** * 脱离事件的属性 */ PARAM = "param", /** * CDP 的用户分群,私有化联合部署时用到。 */ CDP_COHORT = "cdp_cohort", /** * 自定义属性分组 */ CUSTOM_PROPERTY_GROUP = "custom_property_group" } export declare enum MetaPropertyComposeType { ORIGIN = "origin", /** * 表示是虚拟属性,虚拟属性在属性列表中需要加个 ICON 区分 */ VIRTUAL = "virtual", /** * 仅 Tea-next 使用的 */ PROFILE = "profile", /** * 仅维度表使用 */ ITEM = "item" } export interface EmbedRenderOptions { /** * 渲染 Finder 应用的容器 */ targetNode: HTMLElement; /** * 嵌入的 Finder 应用 ID */ appId?: number; /** * 嵌入的 Finder 查询快照 ID */ resultId?: string; /** * 嵌入的 Finder 项目 ID */ projectId?: number; /** * 引入页面的 Host * * 例如你需要接入 xxx.datarangers-onpremise.volces.com 提供的 Finder 页面,请传入 host: "//xxx.datarangers-onpremise.volces.com" * * ?: 如置空则默认为同域,并使用当前环境的 host */ host?: string; /** * Finder 应用的路径。默认是 `'/datafinder'` */ basePath?: string; /** * 嵌入页面是否跨域。默认会根据传入的 host 自动判断 */ crossOrigin?: boolean; /** * 如传入了 dorToken,则会通过 dorToken 作为鉴权方式渲染页面 */ dorToken?: string; /** * 接入方来源 */ from?: string; /** * 是否需要 minibase 的重定向 */ needsMinibaseRedirect?: boolean; /** * 嵌入页面中 Finder 请求代理的接口地址,在 crossOrigin 为 true 时使用 */ proxyPath?: string; /** * 嵌入的 Finder 模块页面 * * 如传入了 reportId,则默认为 report 页面。否则默认为 dashboard。 */ page?: EmbedPage | string; /** * 看板 ID * * - 在看板相关页面中生效 */ dashboardId?: string; /** * 图表 ID * * - 在图表相关页面中生效 */ reportId?: string; /** * 筛选器 ID * * - 在看板相关页面中生效 */ filterId?: number; /** * 自定义嵌入页面内请求的 headers */ customRequestHeaders?: Record; /** * 嵌入页面的额外 query params */ embedQueryParams?: { hideTitleAndOps?: boolean; hideBelongTo?: boolean; hideFilter?: boolean; showPeriod?: boolean; showFilterButton?: boolean; [key: string]: any; }; /** * 渲染 iframe 节点时的自定义 attrs。 * * 默认为 `{ width: '100%', height: '100%', frameBorder: '0' }` */ iframeOptions?: Omit; /** * 嵌入页面渲染成功时的回调 */ onSuccess?: () => void; /** * 嵌入页面渲染失败时的回调 */ onError?: (reason: string) => void; interfaceSetting?: { /** 是否开启手动查询,不传则沿用租户的配置 */ manualCompute?: boolean; /** 标题栏 */ analysisHeader?: { /** 标题及右侧操作按钮 */ title?: IModuleStatus; operators?: IModuleStatus; } & IModuleStatus; queryModules?: { /** 查询配置区左上角操作按钮 */ leftOperators?: { regionSelect?: IModuleStatus; sceneSelect?: IModuleStatus; sessionSelect?: IModuleStatus; subjectSelect?: IModuleStatus; analysisSubjectSelect?: IModuleStatus; filterSampleSelect?: IModuleStatus; } & IModuleStatus; /** 查询配置区右上角刷新按钮 */ refreshButton?: IModuleStatus; /** 事件选择区配置 */ event?: { /** 配置的操作符将会被过滤掉 */ filterIndicators?: IndicatorType[]; /** 过滤特定属性分组,支持多个维度,只要命中一个规则,就会被禁用 */ filterAttrGroups?: { /** 按属性类型过滤 */ property_type?: MetaPropertyType[]; /** 按名称过滤 */ property_compose_type?: MetaPropertyComposeType[]; /** 按名称过滤 */ name?: string[]; }; /** 禁用算子的提示文案 */ filterIndicatorsTooltip?: string; /** 禁用属性分组的提示文案 */ filterAttrGroupsTooltip?: string; /** 属性分组白名单,支持多个维度,只有命中规则才会可选 */ attrGroupsWhiteList?: { /** 按属性类型过滤 */ property_type?: MetaPropertyType[]; /** 按名称过滤 */ property_compose_type?: MetaPropertyComposeType[]; /** 按名称过滤 */ name?: string[]; }; }; filters: { readonly?: boolean; tooltip?: string; }; generalGroupBy: any; }; analysisConfig?: { /** * 一般指标 + 组合指标个数上限 */ MAX_EVENT_COUNT?: number; /** * 全局筛选个数上限 */ MAX_GLOBAL_FILTER_COUNT?: number; /** * 属性分组个数上限 */ MAX_GROUP_COUNT?: number; }; }; /** * 获得原始的链接,而不是展示嵌出链接 */ showOriginUrl?: boolean; locale: 'en_US' | 'zh_CN' | 'ja_JP'; } export interface IModuleStatus { hide?: boolean; disabled?: boolean; value?: T; } export interface FilterType { /** 本期只支持配置属性过滤 */ filter?: { property_type: MetaPropertyType; name: string; preset?: boolean; }; operation: EAttrOp; operationValues: string[]; }