热力图新增动态数据解析

qianming 3 years ago
parent aa8fba3c33
commit 0bfdb5f18d

@ -122,13 +122,13 @@ export default {
chartType == "widget-funnel" chartType == "widget-funnel"
) { ) {
return this.piechartFn(params.chartProperties, data); return this.piechartFn(params.chartProperties, data);
} else if (chartType == "widget-text") { } else if (chartType == "widget-text") {
return this.widgettext(params.chartProperties, data) return this.widgettext(params.chartProperties, data)
} else if (chartType == "widget-stackchart") { } else if (chartType == "widget-stackchart") {
return this.stackChartFn(params.chartProperties, data) return this.stackChartFn(params.chartProperties, data)
} else if (chartType == "widget-heatmap") { } else if (chartType == "widget-coord") {
return this.heatmapChartFn(params.chartProperties, data) return this.coordChartFn(params.chartProperties, data)
}else { } else {
return data return data
} }
}, },
@ -180,7 +180,7 @@ export default {
Object.keys(dataGroup).forEach(item => { Object.keys(dataGroup).forEach(item => {
const data = new Array(xAxisList.length).fill(0) const data = new Array(xAxisList.length).fill(0)
dataGroup[item].forEach(res => { dataGroup[item].forEach(res => {
data[xAxisList.indexOf(res[xAxisField])]= res[key] data[xAxisList.indexOf(res[xAxisField])] = res[key]
}) })
series.push({ series.push({
name: yAxisList[item], name: yAxisList[item],
@ -227,18 +227,25 @@ export default {
return ananysicData; return ananysicData;
}, },
// 坐标系数据解析 // 坐标系数据解析
heatmapChartFn(chartProperties,data){ coordChartFn(chartProperties, data) {
const ananysicData = {}; const ananysicData = {};
const series = []; let series = [];
//全部字段字典值 //全部字段字典值
const types = Object.values(chartProperties) const types = Object.values(chartProperties)
//x轴字段、y轴字段 //x轴字段、y轴字段、数值字段
const xAxisField = Object.keys(chartProperties)[types.indexOf('xAxis')] const xAxisField = Object.keys(chartProperties)[types.indexOf('xAxis')]
const yAxisField = Object.keys(chartProperties)[types.indexOf('yAxis')] const yAxisField = Object.keys(chartProperties)[types.indexOf('yAxis')]
const dataField = Object.keys(chartProperties)[types.indexOf('series')]
//x轴数值去重y轴去重 //x轴数值去重y轴去重
const xAxisList = this.setUnique(data.map(item => item[xAxisField])) const xAxisList = this.setUnique(data.map(item => item[xAxisField]))
const yAxisList = this.setUnique(data.map(item => item[yAxisField])) const yAxisList = this.setUnique(data.map(item => item[yAxisField]))
ananysicData["xAxis"] = xAxisList;
ananysicData["yAxis"] = yAxisList;
for (const i in data) {
series[i] = [data[i][xAxisField], data[i][yAxisField], data[i][dataField]];
}
ananysicData["series"] = series;
return ananysicData;
}, },
setUnique(arr) { setUnique(arr) {
let newArr = []; let newArr = [];

@ -295,96 +295,6 @@ export const widgetHeatmap = {
}, },
], ],
}, },
{
name: '图设置',
list: [
{
type: 'el-switch',
label: '图例',
name: 'isShowLegend',
required: false,
placeholder: '',
value: false,
},
{
type: 'el-input-number',
label: '最小值',
name: 'dataMin',
required: false,
placeholder: '',
value: 0,
},
{
type: 'el-input-number',
label: '最大值',
name: 'dataMax',
required: false,
placeholder: '',
value: 5000,
},
{
type: 'vue-color',
label: '数值颜色',
name: 'lengedColor',
required: false,
placeholder: '',
value: '#fff',
},
{
type: 'el-input-number',
label: '图例大小',
name: 'lengedFontSize',
required: false,
placeholder: '',
value: 12,
},
{
type: 'el-input-number',
label: '图例宽度',
name: 'lengedWidth',
required: false,
placeholder: '',
value: 12,
},
{
type: 'el-select',
label: '横向位置',
name: 'lateralPosition',
required: false,
placeholder: '',
selectOptions: [
{code: 'center', name: '居中'},
{code: 'left', name: '左对齐'},
{code: 'right', name: '右对齐'},
],
value: 'center'
},
{
type: 'el-select',
label: '纵向位置',
name: 'longitudinalPosition',
required: false,
placeholder: '',
selectOptions: [
{code: 'top', name: '顶部'},
{code: 'bottom', name: '底部'},
],
value: 'top'
},
{
type: 'el-select',
label: '布局前置',
name: 'layoutFront',
required: false,
placeholder: '',
selectOptions: [
{code: 'vertical', name: '竖排'},
{code: 'horizontal', name: '横排'},
],
value: 'horizontal'
},
],
},
{ {
name: '数值设定', name: '数值设定',
list: [ list: [
@ -482,6 +392,96 @@ export const widgetHeatmap = {
}, },
], ],
}, },
{
name: '图设置',
list: [
{
type: 'el-switch',
label: '图例',
name: 'isShowLegend',
required: false,
placeholder: '',
value: false,
},
{
type: 'el-input-number',
label: '最小值',
name: 'dataMin',
required: false,
placeholder: '',
value: 0,
},
{
type: 'el-input-number',
label: '最大值',
name: 'dataMax',
required: false,
placeholder: '',
value: 5000,
},
{
type: 'vue-color',
label: '数值颜色',
name: 'lengedColor',
required: false,
placeholder: '',
value: '#fff',
},
{
type: 'el-input-number',
label: '图例大小',
name: 'lengedFontSize',
required: false,
placeholder: '',
value: 12,
},
{
type: 'el-input-number',
label: '图例宽度',
name: 'lengedWidth',
required: false,
placeholder: '',
value: 12,
},
{
type: 'el-select',
label: '横向位置',
name: 'lateralPosition',
required: false,
placeholder: '',
selectOptions: [
{code: 'center', name: '居中'},
{code: 'left', name: '左对齐'},
{code: 'right', name: '右对齐'},
],
value: 'center'
},
{
type: 'el-select',
label: '纵向位置',
name: 'longitudinalPosition',
required: false,
placeholder: '',
selectOptions: [
{code: 'top', name: '顶部'},
{code: 'bottom', name: '底部'},
],
value: 'top'
},
{
type: 'el-select',
label: '布局前置',
name: 'layoutFront',
required: false,
placeholder: '',
selectOptions: [
{code: 'vertical', name: '竖排'},
{code: 'horizontal', name: '横排'},
],
value: 'horizontal'
},
],
},
{ {
name: '自定义配色', name: '自定义配色',
list: [ list: [
@ -643,7 +643,7 @@ export const widgetHeatmap = {
required: false, required: false,
placeholder: '', placeholder: '',
relactiveDom: 'dataType', relactiveDom: 'dataType',
chartType: 'widget-heatmap', chartType: 'widget-coord',
relactiveDomValue: 'dynamicData', relactiveDomValue: 'dynamicData',
dictKey: 'COORD_PROPERTIES', dictKey: 'COORD_PROPERTIES',
value: '', value: '',

@ -346,23 +346,13 @@ export default {
getEchartData(val) { getEchartData(val) {
const data = this.queryEchartsData(val); const data = this.queryEchartsData(val);
data.then((res) => { data.then((res) => {
this.renderingFn( this.renderingFn(res);
res.map((item) => {
return [item.x, item.y, item.data];
})
);
}); });
}, },
renderingFn(val) { renderingFn(val) {
let x = 0, this.options.xAxis.data = val.xAxis;
y = 0; this.options.yAxis.data = val.yAxis;
val.forEach((element) => { this.options.series[0].data = val.series;
x = element[0] > x ? element[0] : x;
y = element[1] > y ? element[1] : y;
});
this.options.xAxis.data = [...Array(x + 1).keys()];
this.options.yAxis.data = [...Array(y + 1).keys()];
this.options.series[0].data = val;
}, },
}, },
}; };

Loading…
Cancel
Save