diff --git a/plugin.xml b/plugin.xml
index f1d5fd5..f0c925a 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -3,7 +3,7 @@
com.finebi.plugin.tptj.ivan.chart.demo.amap
yes
- 0.0.4
+ 0.0.5
11.0~11.0
2021-08-30
DEMO
@@ -13,6 +13,7 @@
0.0.2: 图表DEMO_EK 数据处理接口
0.0.3: 图表DEMO_EK 页面刷新接口
0.0.4: 图表DEMO_EK 保存配置接口
+ 0.0.5: 图表DEMO_EK Click联动
]]>
6.0~
com.finebi.plugin.tptj.ivan.chart.demo.amap
diff --git a/src/main/java/com/finebi/plugin/tptj/ivan/chart/demo/amap/MapHotComponentProvider.java b/src/main/java/com/finebi/plugin/tptj/ivan/chart/demo/amap/MapHotComponentProvider.java
index 26f4f7a..bf9e28c 100644
--- a/src/main/java/com/finebi/plugin/tptj/ivan/chart/demo/amap/MapHotComponentProvider.java
+++ b/src/main/java/com/finebi/plugin/tptj/ivan/chart/demo/amap/MapHotComponentProvider.java
@@ -85,7 +85,7 @@ public class MapHotComponentProvider extends AbstractCustomComponentProvider {
*/
@Override
public boolean needDataProcess(CustomComponentContext customComponentContext) {
- return true;
+ return false;
}
/**
diff --git a/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/config/config.json b/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/config/config.json
index 63b6a9d..c3ccedf 100644
--- a/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/config/config.json
+++ b/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/config/config.json
@@ -1,12 +1,12 @@
{
"dataRegions": [
- {
- "name": "lat",
- "text": "Plugin-DEMO_WEB_LAT"
- },
{
"name": "lng",
"text": "Plugin-DEMO_WEB_LNG"
+ },
+ {
+ "name": "lat",
+ "text": "Plugin-DEMO_WEB_LAT"
}
],
"attrRegions": [
diff --git a/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/js/chart.js b/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/js/chart.js
index 65149fc..c9d807d 100644
--- a/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/js/chart.js
+++ b/src/main/resources/com/finebi/plugin/tptj/ivan/chart/demo/amap/js/chart.js
@@ -15,12 +15,37 @@
dom.style.width = document.body.clientWidth + "px";
dom.style.height = document.body.clientHeight + "px";
+ const {
+ // 数据,若横纵轴多指标时图表属性有维度字段,dataModels 为以图表属性为分组的多组数据
+ dataModels,
+ // 横纵轴拖入字段的维度 id
+ dataMapping,
+ // 图表属性拖入字段的维度 id
+ chartAttrMapping,
+ // 图表点击值
+ clicked
+ } = data;
+
+ const {
+ // 组件 id
+ widgetId,
+ // 全局样式中图表最终样式
+ globalStyles,
+ // 图表属性配置所选值
+ chartAttr,
+ // 图表样式配置所选值
+ chartStyle,
+ // 图标属性中使用形状时的图标映射
+ symbolIconMap,
+ // 自定义保存的值(saveSessionCallback)
+ customConfig
+ } = config;
+
// 获取配置项
- const mapAttribute = config["chartStyle"]["mapProp"]["value"];
+ const mapAttribute = chartStyle["mapProp"]["value"];
// 地图组件初始化
let map;
- let customConfig = config.customConfig;
if (customConfig != null && JSON.stringify(customConfig).length > 2) {
// 读取保存的配置
map = new AMap.Map(dom, {
@@ -41,7 +66,7 @@
map.setMapStyle(styleName);
// 获取全部的经纬度点数据
- const points = _getAllPoint(data.dataMapping, data.dataModels[0]);
+ const points = _getAllPoint(dataMapping, dataModels[0]);
if (points != null) {
// 创建聚合点图层
@@ -68,58 +93,93 @@
saveSessionCallback(conf);
extensionCallBack('refresh');
}
- }
- /**
- * 自定义聚合点样式
- * @param context
- * @private
- */
- function _renderCarClusterMarker(context) {
- let count = context.count;
- let factor = context.count / count;
- const div = document.createElement('div');
- const Hue = 180 - factor * 180;
- let bgColor;
- if (context.count < 10) {
- bgColor = 'hsla(108,100%,40%,1)';
- } else if (context.count < 100) {
- bgColor = 'hsl(201,100%,40%)';
- } else if (context.count < 1000) {
- bgColor = 'hsla(36,100%,50%,1)';
- } else if (context.count < 10000) {
- bgColor = 'hsla(0,100%,60%,1)';
- } else {
- bgColor = 'hsla(0,100%,40%,1)';
+ /**
+ * 自定义聚合点样式
+ * @param context
+ * @private
+ */
+ function _renderCarClusterMarker(context) {
+ let count = context.count;
+ let factor = context.count / count;
+ const div = document.createElement('div');
+ const Hue = 180 - factor * 180;
+ let bgColor;
+ if (context.count < 10) {
+ bgColor = 'hsla(108,100%,40%,1)';
+ } else if (context.count < 100) {
+ bgColor = 'hsl(201,100%,40%)';
+ } else if (context.count < 1000) {
+ bgColor = 'hsla(36,100%,50%,1)';
+ } else if (context.count < 10000) {
+ bgColor = 'hsla(0,100%,60%,1)';
+ } else {
+ bgColor = 'hsla(0,100%,40%,1)';
+ }
+ const fontColor = 'hsla(' + Hue + ',100%,90%,1)';
+ const borderColor = bgColor;
+ const shadowColor = 'hsla(' + Hue + ',100%,90%,1)';
+ div.style.backgroundColor = bgColor;
+ const size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20);
+ div.style.width = div.style.height = size + 'px';
+ div.style.border = 'solid 1px ' + borderColor;
+ div.style.borderRadius = size / 2 + 'px';
+ div.style.boxShadow = '0 0 5px ' + shadowColor;
+ div.innerHTML = context.count;
+ div.style.lineHeight = size + 'px';
+ div.style.color = fontColor;
+ div.style.fontSize = '14px';
+ div.style.textAlign = 'center';
+ context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2));
+ context.marker.setContent(div)
+ }
+
+ /**
+ * 自定义非聚合点样式
+ * @param context
+ * @private
+ */
+ function _renderMarker(context) {
+ var content = '
';
+ var offset = new AMap.Pixel(-9, -9);
+ context.marker.setContent(content)
+ context.marker.setOffset(offset)
+ let datum = context.data[0];
+ let id = datum.idId;
+ const val = [
+ {
+ dId: datum.idId,
+ text: datum.idVal,
+ },
+ // {
+ // dId: datum.lngId,
+ // text: datum.lngVal,
+ // },
+ // {
+ // dId: datum.latId,
+ // text: datum.latVal,
+ // }
+ ];
+
+ /**
+ * dId: 当前维度的Id
+ * value: 当前维度和之前维度的id及对应值 (不是全部的维度信息!)
+ */
+ const currentClicked = {
+ dId: id,
+ value: val
+ };
+
+ context.marker.on('click', ev => {
+ debugger;
+ // 触发联动
+ extensionCallBack(
+ 'click',
+ currentClicked
+ );
+ })
}
- const fontColor = 'hsla(' + Hue + ',100%,90%,1)';
- const borderColor = bgColor;
- const shadowColor = 'hsla(' + Hue + ',100%,90%,1)';
- div.style.backgroundColor = bgColor;
- const size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20);
- div.style.width = div.style.height = size + 'px';
- div.style.border = 'solid 1px ' + borderColor;
- div.style.borderRadius = size / 2 + 'px';
- div.style.boxShadow = '0 0 5px ' + shadowColor;
- div.innerHTML = context.count;
- div.style.lineHeight = size + 'px';
- div.style.color = fontColor;
- div.style.fontSize = '14px';
- div.style.textAlign = 'center';
- context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2));
- context.marker.setContent(div)
- }
- /**
- * 自定义非聚合点样式
- * @param context
- * @private
- */
- function _renderMarker(context) {
- var content = '';
- var offset = new AMap.Pixel(-9, -9);
- context.marker.setContent(content)
- context.marker.setOffset(offset)
}
/**
@@ -130,8 +190,8 @@
* @private
*/
function _getAllPoint(dataMapping, dataModel) {
- let lngId = dataMapping['lat'];
- let latId = dataMapping['lng'];
+ let lngId = dataMapping['lng'];
+ let latId = dataMapping['lat'];
let files = dataModel.fields;
let rowCount = dataModel.rowCount
@@ -139,14 +199,16 @@
let lngIndex;
let latIndex;
+ let idIndex;
// demo这里没有考虑多维度多指标的情况,具体根据实际情况进行修改
files.forEach((item, index) => {
if (lngId.indexOf(item.id) >= 0) {
lngIndex = index;
- }
- if (latId.indexOf(item.id) >= 0) {
+ } else if (latId.indexOf(item.id) >= 0) {
latIndex = index;
+ } else {
+ idIndex = index;
}
})
@@ -154,6 +216,12 @@
for (let i = 0; i < rowCount; i++) {
points.push({
lnglat: [colData[lngIndex][i], colData[latIndex][i]],
+ lngId: files[lngIndex].id,
+ latId: files[latIndex].id,
+ idId: files[idIndex].id,
+ lngVal: colData[lngIndex][i],
+ latVal: colData[latIndex][i],
+ idVal: colData[idIndex][i],
})
}
diff --git a/说明/0.0.5/0.0.5.zip b/说明/0.0.5/0.0.5.zip
new file mode 100644
index 0000000..8918dc0
Binary files /dev/null and b/说明/0.0.5/0.0.5.zip differ
diff --git a/说明/0.0.5/fine-plugin-com.finebi.plugin.tptj.ivan.chart.demo.amap-0.0.5.zip b/说明/0.0.5/fine-plugin-com.finebi.plugin.tptj.ivan.chart.demo.amap-0.0.5.zip
new file mode 100644
index 0000000..a8f4e1c
Binary files /dev/null and b/说明/0.0.5/fine-plugin-com.finebi.plugin.tptj.ivan.chart.demo.amap-0.0.5.zip differ