接口说明文档:https://smartbi.feishu.cn/docx/XWaddBPPYoJXmvxZQLkcJH08nif


## BaseAdHocAnalysisExtender 基类

透视分析扩展点需继承此类,在自定义的 Extender 类中可通过 this 指针调用 BaseAdHocAnalysisExtender 中的方法

|                       | <strong>名称</strong> | <strong>参数</strong> | <strong>返回值</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | --------------------- | ----------------------- | --------------------- |
| <strong>方法</strong> | on                    | 事件、事件回调        | -                       | 添加接口监听事件      |

### 二开接口

#### AD_HOC_ANALYSIS_ON_INIT

<strong>触发时机:</strong>透视分析界面初始化时

<strong>作用</strong>:暂无对外接口

|                           | <strong>名称</strong> | <strong>类型</strong> | <strong>说明</strong> |
| ------------------------- | --------------------- | --------------------- | --------------------- |
| <strong>输入参数</strong> | adHocAnalysisImpl     | IAdHocAnalysis        | 即席查询对象          |

#### AD_HOC_DATA_PANEL_ON_INIT

<strong>触发时机:</strong>左侧数据来源选择面板初始化时

<strong>作用:</strong>对下拉菜单进行加减、禁用切换数据源

|                           | <strong>名称</strong> | <strong>类型</strong> | <strong>说明</strong> |
| ------------------------- | --------------------- | --------------------- | --------------------- |
| <strong>输入参数</strong> | adHocDataPanelImpl    | IAdHocDataPanel       | 数据来源面板对象      |

<strong>示例代码</strong>

```typescript
this.on(AD_HOC_DATA_PANEL_ON_INIT, async (impl) => {
        // 禁止切换数据集
        if (!impl.getCurrentDatasetId()) {
                impl.setSelectDatasetDisabled(true)
        }
        // 屏蔽数据面板下拉部分菜单
        impl.setDropDownBtnsFilter(menu => {
                // 屏蔽编辑和切换数据集菜单
                return menu.id !== 'EDIT' && menu.id !== 'SWITCH_DATASET'
        })
    })
  }
```

#### AD_HOC_SAVE_DIALOG_ON_INIT

<strong>触发时机:</strong>保存弹窗初始化时

<strong>作用:</strong>指定用户的可保存的目录

|                           | <strong>名称</strong> | <strong>类型</strong> | <strong>说明</strong> |
| ------------------------- | --------------------- | --------------------- | --------------------- |
| <strong>输入参数</strong> | saveDialogImpl        | ISaveDialog           | 保存弹窗对象          |

<strong>示例代码</strong>

```typescript
this.on(AD_HOC_SAVE_DIALOG_ON_INIT, async (saveDialogImpl) => {
    saveDialogImpl.setNodeFilter((node) => {
      return node.id != 'PUBLIC_ANALYSIS'
    })
  })
```

#### AD_HOC_DATASET_SELECTOR_ON_INIT

<strong>触发时机:</strong>左侧数据来源选择面板初始化时

<strong>作用:</strong>对数据来源选择进行限制

|                           | <strong>名称</strong>    | <strong>类型</strong> | <strong>说明</strong> |
| ------------------------- | ------------------------ | --------------------- | --------------------- |
| <strong>输入参数</strong> | adHocDatasetSelectorImpl | IAdHocDatasetSelector | 选择数据集弹窗对象    |

<strong>示例代码</strong>

```typescript
this.on(AD_HOC_DATASET_SELECTOR_ON_INIT, async (impl) => {
   impl.setRootNodeId('DEFAULT_TREENODE')
}
```

#### AD_HOC_TOOLBAR_ON_INIT

<strong>触发时机:</strong>工具栏初始化时

<strong>作用:</strong>对工具栏增加自定义项,删除某项

|                           | <strong>名称</strong> | <strong>类型</strong> | <strong>说明</strong> |
| ------------------------- | --------------------- | --------------------- | --------------------- |
| <strong>输入参数</strong> | toolbarImpl           | IDQueryToolbar        | 工具栏对象            |

<strong>示例代码</strong>

```typescript
this.on(AD_HOC_TOOLBAR_ON_INIT, async (toolbarImpl) => {
    // 添加自定义按钮
    toolbarImpl.addItem({
        id: 'test',
        label: '自定义按钮',
        icon: 'sx-icon-data-panel-toggle',
        handler: () => {
            alert('点击自定义按钮')
        }
    })
 })
```

## 接口对象

### IAdHocAnalysisQuery(透视分析界面)

暂无

### IAdHocDataPanel(数据面板)

IAdHocDataPanel 继承 [IDatasetPanel](https://smartbi.feishu.cn/docx/NMCmdBVh0ogQBDx3maOc0lVin2g#WVJadvRxDoHiPlxAGYQcxn04nNd)

### ISaveDialog(保存弹窗)

见:[ISaveDialog](https://smartbi.feishu.cn/docx/NMCmdBVh0ogQBDx3maOc0lVin2g#BRJtd7zU3osgeGx1wwPczYubnly)

### IAdHocDatasetSelector(选择数据集弹窗)

IAdHocDatasetSelector 继承 [IDatasetSelector](https://smartbi.feishu.cn/docx/NMCmdBVh0ogQBDx3maOc0lVin2g#QjnEd8SwPoqwX4x0aOwcg4msnKf)

### IAdHocToolbar(工具栏)

IAdHocToolbar 继承 [IBaseToolbar](https://smartbi.feishu.cn/docx/NMCmdBVh0ogQBDx3maOc0lVin2g#MZpFdg1O2oKLVLxntd2c1ecintd)

## 二开示例

[【透视分析】二开示例](https://smartbi.feishu.cn/docx/BRtedkGueosLDVxdunccqOSsnGh)