通过DataGear的参数化数据集、图表事件处理和看板API功能,可以很方便地制作联动异步加载图表的数据可视化看板。

首先,新建一个参数化SQL数据集,如下所示:

SELECT
COL_NAME, --地区名
COL_VALUE, --地区指标数值
FROM
T_ANALYSIS
WHERE
<#if 上级地区名??>
COL_PARENT='${上级地区名}'
<#else>
COL_PARENT='中国'
</#if>

参数:

名称        类型     必填
上级地区名 字符串 否

T_ANALYSIS表数据示例:

COL_NAME     COL_VALUE   COL_PARENT
山东 160 中国
北京 200 中国
...
朝阳区 195 北京
海淀区 200 北京
...
青岛市 10 山东
济南市 160 山东

然后,使用上述数据集,新建两个图表,第一个是展示全国指标的地图图表:

图表类型:基本地图
数据集列标记:
COL_NAME:地区名称 (name)
COL_VALUE:指标数值 (value)

第二个是展示指定地区指标的柱状图:

图表类型:基本柱状图
数据集列标记:
COL_NAME:名称 (name)
COL_VALUE:数值 (value)

然后,新建可视化看板,填写如下看板模板内容:

<!DOCTYPE html>
<html dg-loadable-chart-widgets="[第二个图表ID]">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.dg-chart{
display: inline-block;
width: 600px;
height: 500px;
}
#loadChartWrapper{
position:absolute;
top:0;
left:650px;
width:400px;
height:300px;
box-shadow: 0px 0px 6px #474747;
-webkit-box-shadow: 0px 0px 6px #474747;
display:none;
}
#loadChart{
position:absolute;
top:2em;
left:0;
right:0;
bottom:0;
}
</style>
<script type="text/javascript">
function chartClickHandler(chartEvent)
{
//获取点击的地区名
var name = chartEvent.data.name;
$("#chartTitle").html(name); //图表已加载,直接刷新数据
if(dashboard.renderedChart("loadChart"))
{
var chart = dashboard.chartOf("loadChart");
chart.dataSetParamValueFirst(0, name);
chart.refreshData();
$("#loadChartWrapper").show();
}
//图表未加载
else
{
dashboard.loadChart($("#loadChart"), "[第二个图表ID]",function(chart)
{
chart.dataSetParamValueFirst(0, name);
$("#loadChartWrapper").show();
});
}
}
$(function()
{
$("#removeChartBtn").click(function()
{
dashboard.removeChart("loadChart");
$("#loadChartWrapper").hide();
});
});
</script>
</head>
<body class="dg-dashboard">
<div style="position: absolute;left:1;top:1;font-size:12px;">
DataGear <br>
http://www.datagear.tech
</div>
<div style="font-size:2em;text-align:center;margin-bottom:5px;">DataGear 看板示例</div>
<p> </p>
<div style="position:relative;">
<div class="dg-chart" dg-chart-on-click="chartClickHandler"
dg-chart-disable-setting="true"
dg-chart-widget="[第一个图表ID]">
<!--全国指标--></div> <div id="loadChartWrapper">
<div id="chartTitle" style="position:absolute;top:2px;left:4px;font-weight:bold;"></div>
<button id="removeChartBtn" style="position:absolute;top:2px;right:2px;">X</button>
<div id="loadChart" dg-chart-disable-setting="true"
dg-chart-options="{title:{show:false},legend:{show:false},grid:{top:30}}">
<!--待加载的图表元素--></div>
</div>
</div>
</body>
</html>

点击【保存并展示】按钮,打开看板展示页面,完成!!!

注意,上述模板中的“[第一个图表ID]”、“[第二个图表ID]”要替换为实际的ID。

效果图如下所示:

官网地址:http://www.datagear.tech

源码地址:

Gitee:https://gitee.com/datagear/datagear

Github:https://github.com/datageartech/datagear

DataGear 制作联动异步加载图表的数据可视化看板的更多相关文章

  1. 使用getJSON()方法异步加载JSON格式数据

    使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...

  2. 异步加载回来的数据不受JS控制了

    写成下面这种方式时,异步加载回来的数据不受JS控制 $(."orderdiv").click(function(){ $(this).find(".orderinfo&q ...

  3. Unity跳转场景进度条制作教程(异步加载)

    Unity跳转场景进度条制作 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  4. jsTree 的简单用法--异步加载和刷新数据

    首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...

  5. 【vue】获取异步加载后的数据

    异步请求的数据,对它做一些处理,需要怎么做呢?? axios 异步请求数据,得到返回的数据, 赋值给变量 info .如果要对 info 的数据做一些处理后再赋值给 hobby ,直接在 axios ...

  6. 实用ExtJS教程100例-010:ExtJS Form异步加载和提交数据

    ExtJS Form 为我们提供了两个方法:load 和 submit,分别用来加载和提交数据,这两个方法都是异步的. 系列ExtJS教程持续更新中,点击查看>>最新ExtJS教程目录 F ...

  7. jquery.datatable.js与CI整合 异步加载(大数据量处理)

    http://blog.csdn.net/kingsix7/article/details/38928685 1.CI 控制器添加方法 $this->show_fields_array=arra ...

  8. LayUi 树形组件tree 实现懒加载模式,展开父节点时异步加载子节点数据

    LayUi框架中树形组件tree官方还在持续完善中,目前最新版本为v2.5.5 官方树形组件目前还不支持懒加载方式,之前我修改一版是通过reload重载实例方法填充子节点数据方式,因为递归页面元素时存 ...

  9. antd二级联动异步加载

    /** * Created by Admin on 2016/9/19. * 批量导入 */ import React, {Component, PropTypes} from "react ...

  10. Angular4中利用promise异步加载gojs

    GoJS是一个实现交互类图表(比如流程图,树图,关系图,力导图等等)的JS库 gojs提供了angular的基本例子,不过是离线版 https://github.com/NorthwoodsSoftw ...

随机推荐

  1. UOS可能的来源

    1050a 行业版 是基于 阿里的Anolis 1050d 企业版 是基于debian 1050e 欧拉版 是基于华为欧拉 euler

  2. 文心一言 VS 讯飞星火 VS chatgpt (186)-- 算法导论14.1 3题

    三.用go语言,写出OS-SELECT的非递归版本. 文心一言: 下面是使用Go语言编写的OS-SELECT的非递归版本: func OS_SELECT(T *Node, k int) *Node { ...

  3. 从DevOps状态报告看技术团队的文化建设

    本文源自一次内部分享,借由此机会又把历年的DevOps状态报告翻看了一遍,其实大多数时候我们对于DevOps的理解都在于流程,工具,实践这些看得见摸得着的东西,但就像文末的几点思考所说的那样,我们一直 ...

  4. git日志输出相关命令

    git log 默认输出所有的日志 git log 默认输出所有的日志 git 日志输出--只看最近的两条或者三条 有些时候我们可能只需要看最近的2或者3条日志 git log -2 日志输出--只看 ...

  5. 【发现一个小问题】坑爹的官方日志库`golang.org/x/exp/slog`,凭啥不让我设置debug级别日志

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 一个代码使用了官方的日志库"golang.org ...

  6. Golang并发控制方式有几种?

    Go语言中的goroutine是一种轻量级的线程,其优点在于占用资源少.切换成本低,能够高效地实现并发操作.但如何对这些并发的goroutine进行控制呢? 一提到并发控制,大家最先想到到的是锁.Go ...

  7. Unity2019使用Gradle命令行(编译)出安卓包

    在我所经历的项目组中有这几种方法来生成APK 直接在Unity生成APK,可以接入SDK 使用Unity导出Android Studio工程手动生成APK 使用Unity导出Android Studi ...

  8. Collectors.toMap的暗坑与避免方式

    使用Java的stream中的Collectors可以很方便地做容器间的转换,可以少写很多代码.但是其中有暗含的坑需要注意和避免,本文探讨Collectors.toMap(JDK8版本). Colle ...

  9. Oracle私网mtu滚动修改实施方案

    之前测试遇到过mtu修改不能滚动的情况,目前在自己测试环境重新反复验证发现正常是可以滚动的,下面梳理下整个实施方案: 环境:RHEL6 + Oracle 11.2.0.4 RAC(2 nodes) / ...

  10. Sliver C2 实战 vulntarget-f

    ‍ 网络拓扑 host ip1 ip2 ubuntu(自用) 192.168.130.14 / centos 192.168.130.3 10.0.10.2 ubuntu1 10.0.10.3 10. ...