在MSTR中使用ECharts作为VI模板(2)-- 数据筛选器
在上一篇中(点击这里查看),我们创建了一个最简单的ECharts VI,但是当添加筛选器的时候发现对这个VI完全不起作用。
因而,本篇就要介绍如何给VI做数据筛选以及如何使用VI作为数据筛选器。
本篇内容包括:
- 数据接口
- 将VI用作筛选器
- 代码整理及优化
- 最终效果
1. 数据接口
1.1 数据接口API
MSTR的数据接口包括以下几个:
- mstrmojo.models.templates.DataInterface
- mstrmojo.models.templates.Titles
- mstrmojo.models.templates.Title
- mstrmojo.models.templates.Headers
- mstrmojo.models.templates.Header
- mstrmojo.models.templates.MetricValue
想要了解详情,可以查看这里 。用法都很简单的,看下说明就懂了。这里以DataInterface 为例进行说明。
其实在第一篇中我们已经用到了这个接口,用来获取用户传递过来的数据。其中使用到了getRawData这个函数。语法如下:
- getRawData(format, params)
format 上一篇已介绍,就是获取数据的格式(树形或表)
params 根据数据格式不同有所不同,其中有一个 hasSelection 是大家共有的,表示是否包含筛选,这就是我们今天要用到的参数。这个值默认是false,我们将其设置为true就可以使筛选器起作用。
1.2 获取筛选后的数据
上一篇中只要更改一个地方,就可以是筛选器起作用了。这里顺便让数据的标题显示出来
var rawData = this.dataInterface.getRawData(mstrmojo.models.template.DataInterface. ENUM_RAW_DATA_FORMAT.ROWS_ADV, {hasSelection: true,hasTitleName:true});
1.3 调试
这里要简单讲一下调试,来看看获取的数据结构到底是怎样的。这里我用的火狐浏览器。其他浏览器也差不多。
打开上一篇创建的Dashboard,然后添加筛选器,再按下F12打开调试。然后在调试器下找到我们创建的TestECharts.js,可以发现这里的代码其实就是我们在Plot Code里面写的。设置一个断点,再次刷新数据。
我们看下rawData:
headers 表示数据项的标题,也就是每个数据所对应的维度的值。其中name就是维度的值,tname就是维度的名称。
values 表示数据也就是度量值。name就是度量值的名称,rv是实际的值,v就是显示的值。
还有个mericSelector是将VI用作筛选器用的,稍后再提。
一般也就用到这几个。
1.4 筛选效果
测试一下筛选器吧,已经可以看到效果。3月份的数据被我勾选掉了。
2. 将VI用作筛选器
将VI用作筛选器需要用到EChats的Click事件以及MSTR中applyselection回调。下面这段代码几乎是照抄官方文档,而且几乎所有图表都适用,只要复制粘贴即可。
this.addUseAsFilterMenuItem();
me=this;
myChart.on('click', function (d) {if(window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.selectionDataJSONString) { // mobile端d.selection.messageType = "selection";window.webkit.messageHandlers.selectionDataJSONString.postMessage(rawData[d.dataIndex].metricSelector);} else {me.applySelection(rawData[d.dataIndex].metricSelector); // web端}
});
其中的 metricSelector 就是上一节提到的,我们根本不用关心里面是啥,就这么用就行了。
不过要注意的是,当原始数据获取采用树形结构时,就不是 metricSelector 了,而要把它换成 attributeSelector,就是这么简单。
3. 代码整理及优化
最终代码如下:
//Div名称和高宽配置 var divName="main" + parseInt(Math.random()*100000000); var margin = {top : 10,right : 10,bottom : 30,left : 30}, width = parseInt(this.width, 10) - margin.left- margin.right, height = parseInt(this.height, 10) - margin.top - margin.bottom;//删除已有的图形 if(this.domNode.childNodes.length>=1){for(i=0;i < this.domNode.childNodes.length;i++){this.domNode.removeChild(this.domNode.childNodes[i]);} }//使用D3创建一段Div d3.select(this.domNode).append("div").attr("ID",divName).style("height",height + "px").style("width",width + "px");//初始化Echarts对象 var myChart = echarts.init(document.getElementById(divName));//获取数据 var rawData = this.dataInterface.getRawData(mstrmojo.models.template.DataInterface. ENUM_RAW_DATA_FORMAT.ROWS_ADV, {hasSelection: true,hasTitleName:true}); var xTitle=[]; var xValue=[]; for(i=0;i < rawData.length;i++){xTitle[i]=rawData[i].headers[0]["name"];xValue[i]=rawData[i].values[0]["rv"]; }//数据筛选 this.addUseAsFilterMenuItem(); me=this; myChart.on('click', function (d) {if(window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.selectionDataJSONString) { // mobile端d.selection.messageType = "selection";window.webkit.messageHandlers.selectionDataJSONString.postMessage(rawData[d.dataIndex].metricSelector);} else {me.applySelection(rawData[d.dataIndex].metricSelector); // web端} });// 指定图表的配置项和数据 var option = {title: {text: 'ECharts示例'},tooltip: {},legend: {data:['销量']},xAxis: {data: xTitle},yAxis: {},series: [{name: '销量',type: 'bar',data: xValue}] };// 使用刚指定的配置项和数据显示图表。 myChart.setOption(option);
4. 最终效果
来测试下,添加一个VI,然后将我们创建的图形作为筛选器。试着点击一下我们的柱形图,筛选效果就出来了。
5. 参考
DataInterface API
在MSTR中使用ECharts作为VI模板(2)-- 数据筛选器相关推荐
- 在MSTR中使用ECharts作为VI模板(1)-- 创建第一个ECharts的VI模板
一不小心竟然把自己写的文章给改了,我晕啊.只能重写.... MSTR(MicroStrategy)是一个BI的工具,其默认的VI(视觉效果模板)很有限.官方推荐使用D3.js虽然强大,可实在很复杂,对 ...
- sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行
sql server 快照 In the last articles, we have learned Configuring Snapshot and Transactional SQL Serve ...
- Django工程中使用echarts怎么循环遍历显示数据
前言: 后面要开发测试管理平台,需要用到数据可视化,所以研究了一下 先看下最后的图吧,单击最上方的按钮可以控制柱状图显隐 views.py # -*- coding: utf-8 -*- from _ ...
- ECharts 全新大版本 4.0 正式发布 即将支持微信小程序中使用ECharts
2018年1月16日,ECharts (echarts.baidu.com)发布了最新大版本 4.0,新版本在产品的性能.功能.易用性等各个方面进行了全面提升.和 ECharts 4.0 一起发布的还 ...
- 创建了一个表之后怎么再次在表中添加字段和字段显示位置_筛选数据透视表中的数据...
[推荐阅读]资料下载QQ群:562718785(软件下载.精美PPT模板下载) [Excel视频教学]求和及快速求和 [Excel视频教学]跨表快速求和 [Excel视频教学]函数-相对绝对混合引用 ...
- 如何更新 Exchange2003 SP2 中的智能邮件筛选器版本
概要 本文介绍了可用于维护 Microsoft Exchange 2003 Service Pack 2 (SP2) 所附带的智能邮件筛选器版本 2 的更新过程. 在每月的第一个和第三个星期三,将通过 ...
- tableau获取筛选器值_认识Tableau中的筛选器
Tableau中的筛选器: (1)提取筛选器(2)数据源筛选器(3)上下文筛选器(4)维度筛选器(5)度量筛选器(6)参数筛选器(7)表计算筛选器(8)页面筛选器 对筛选器进行简单的分类: 数据层(提 ...
- IIS 7中ISAPI筛选器配置
Internet 服务器应用程序编程接口 (ISAPI) 筛选器是一种可以添加到 IIS 中以增强 Web 服务器行为的程序.ISAPI 筛选器会接收向 Web 服务器发出的每个 HTTP 请求并向服 ...
- 计算机表格怎样筛选男女,excel表格数据男女筛选-EXCEL表格中选择性别怎么做 就是如何做筛选 ,比如......
如何将一张EXCEL表格中同时符合2个条件的数据筛选... 利用excel的数据有效性功能可以达到目标,以下步骤以excel2007为例. 1.首先在电脑上打开目标表格文件,选中目标单元格. 2.然后 ...
最新文章
- 使用阿里云的maven私服的setting.xml, 提高maven项目jar下载速度
- html中open打开新网页,JavaScript-打开新窗口(window.open)
- Nodejs开发微信公众号中控服务
- 计算机网络09年考研题,计算机网络考研真题及答案
- python字典生成式_【IT专家】Python 简化for循环:列表,集合与字典生成式
- 服务端程序的初步实现
- annotation-config vs component-scan – Spring Core--转
- 经验 | 非科班出身怎么转行计算机?
- 命令行添加删除tomcat服务
- Java 什么是静态内部类
- Python基础之内置函数(二)
- Windows 7下的虚拟光驱
- excel冻结窗口_怎么设置excel2007冻结窗口
- java ftps 证书_FTPS (FTP over SSL) vs. SFTP (SSH 文件传输协议): 我们如何做出选择
- 怎样在电脑上设置路由器的WiFi密码
- linux下find命令的详细说明
- .7z文件 合并、解压
- 组织的目的是使平凡的人做出不平凡的事 --- 彼得.德鲁克 《卓有成效的管理者》
- Androidnbsp;滑动屏幕效果学习之Gestur…
- 在原生开发中控制HTML5视频