lucas.Yan 发表于 2024-9-26 15:50:49

【嵌入式集成】 DIV集成中如何动态更改仪表板参数 - setParameter()

本帖最后由 lucas.Yan 于 2024-9-27 11:06 编辑

       Wyn 商业智能软件紧跟嵌入式分析发展趋势,除了具备将现有模块直接嵌入的能力(如整个仪表板或单个图表嵌入、仪表板设计器嵌入、分析门户嵌入、OEM 安装包嵌入等)之外,同时还提供了丰富的 API,可以满足您个性化的嵌入需求实现深度集成。       当我们在开发自定义可视化插件的时候,可以通过Visual API接口去利用提供好的一些api来帮助我们去做工具提示,交叉筛选,管理选择状态等。而现在我们新增了接口方法parameterService.setParameter();功能介绍:       通过这个方法我们可以改变仪表板的静态参数值(非绑定类型),就是说如果我们设置的一些参数没有被绑定在一些筛选器或者数据列当中。我们就可以通过调用这个方法来改变这个仪表板参数的值,是不是很神奇。
接口文档链接;效果演示:


接下来让我们来看看我们该如何在自定义插件开发中使用这个方法。
使用步骤:Step1:准备开发环境首先我们要参考可视化插件开发流程将开发环境准备好开发流程文档
Step2:修改capabilities.json修改capabilities.json文件中的options内容,其中watchParameter用于定义参数映射,具体可以参考文档{
    "dataBinding": {
    },
    "options": {
      "visual": [
            {
                "type": "interaction",
                "watchParameter": {
                  "roles": [
                        {
                            "name": "target",
                            "display": "target",
                            "displayNameKey": "targetLabel"
                        }
                  ],
                  "staticOnly": true
                }
            }
      ]
    },
    "actions": [],
    "analysis": []
}
修改之后我们就可以在组件右侧的属性面板增加绑定参数的选项。
Step3:修改visual.ts文件import '../style/visual.less';

const formTemplate = `
<form data-role="formEle" class="control-form">
<div class="form-row">
    <input class="field-control"type="text" placeholder="--- Unset ---" data-role="paraValue">
</div>
<div class="form-row">
    <button data-role="subBtn">Submit</button>
</div>
<div class="block-layer"></div>
</form>
`;

export default class Visual extends WynVisual {
private inputEle: HTMLInputElement;
private btnEle: HTMLButtonElement;
private targetPara;

constructor(dom: HTMLDivElement, private host: VisualNS.VisualHost, options: VisualNS.IVisualUpdateOptions) {
    super(dom, host, options);
    dom.innerHTML = formTemplate;

    this.inputEle = dom.querySelector('');
    this.btnEle = dom.querySelector('');
    this.btnEle.addEventListener('click', (e) => {
      e.preventDefault();
      host.parameterService.setParameter({
      name: this.targetPara.meta.name,
      value: ,
      });
      host.commandService.execute([{
      name: 'Jump', //Drill or 'Jump'
      payload: {
          "target": "abc"
      },

      }]);
    })

    this.render();
}

private render() {
    if (this.targetPara) {
      this.inputEle.value = this.targetPara.value;
      this.inputEle.disabled = false;
      this.btnEle.disabled = false;
    } else {
      this.inputEle.value = '';
      this.inputEle.disabled = true;
      this.btnEle.disabled = true;
    }
}

public update(options: VisualNS.IVisualUpdateOptions) {
    this.targetPara = options.watchedParameters['target'];
    this.render();
}

public onDestroy(): void {

}

public getInspectorHiddenState(options: VisualNS.IVisualUpdateOptions): string[] {
    return null;
}

public getActionBarHiddenState(options: VisualNS.IVisualUpdateOptions): string[] {
    return null;
}

public getColorAssignmentConfigMapping(dataViews: VisualNS.IDataView[]): VisualNS.IColorAssignmentConfigMapping {
    return null;
}
}
从初始的模板代码上我们进行修改,通过编写一个input框和一个button提交按钮来输入提交要改变的参数值,通过button的点击事件的回调来触发parameterService.setParameter()方法将输入的参数值传入Wyn,从而修改仪表板参数。
看了它的功能介绍,大家脑海里面是不是有了很多奇思妙想和之前没有办法解决的问题,现在让我们下载示例试试这个神奇的方法吧。


页: [1]
查看完整版本: 【嵌入式集成】 DIV集成中如何动态更改仪表板参数 - setParameter()