You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

242 lines
6.4 KiB

var ECharts = {
ChartDataFormate: {
FormateNOGroupData: function (data) {
//data的格式如上的Result1,这种格式的数据,多用于饼图、单一的柱形图的数据源
var categories = [];
var datas = [];
for (var i = 0; i < data.length; i++) {
categories.push(data[i].name || "");
datas.push({ name: data[i].name, value: data[i].value || 0 });
}
return { category: categories, data: datas };
},
FormateGroupData: function (data, type, is_stack) {
//data[{name:"",value:"",group:""},...]
//data的格式如上的Result2,type为要渲染的图表类型:可以为line,bar,is_stack表示为是否是堆积图,这种格式的数据多用于展示多条折线图、分组的柱图
var chart_type = 'line';
if (type)
chart_type = type || 'line';
var xAxis = [];
var group = [];
var series = [];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < xAxis.length && xAxis[j] != data[i].name; j++);
if (j == xAxis.length)
xAxis.push(data[i].name);
for (var k = 0; k < group.length && group[k] != data[i].group; k++);
if (k == group.length)
group.push(data[i].group);
}
for (var i = 0; i < group.length; i++) {
var temp = [];
for (var j = 0; j < data.length; j++) {
if (group[i] == data[j].group) {
if (type == "map") {
temp.push({ name: data[j].name, value: data[i].value });
} else {
temp.push(data[j].value);
}
}
}
switch (type) {
case 'bar':
var series_temp = { name: group[i], data: temp, type: chart_type };
series_temp = $.extend({}, {
markPoint: {
data: [
{ type: 'max', name: '最大值' },
{ type: 'min', name: '最小值' }
]
},
markLine: {
data: [
{ type: 'average', name: '平均值' }
]
}
}, series_temp);
break;
case 'map':
var series_temp = {
name: group[i], type: chart_type, mapType: 'china', selectedMode: 'multiple',
itemStyle: {
normal: { label: { show: true } },
emphasis: { label: { show: true } }
},
data: temp
};
break;
case 'line':
var series_temp = { name: group[i], data: temp, type: chart_type };
if (is_stack)
series_temp = $.extend({}, { stack: 'stack' }, series_temp);
series_temp = $.extend({}, {
markPoint: {
data: [
{ type: 'max', name: '最大值' },
{ type: 'min', name: '最小值' }
]
},
markLine: {
data: [
{ type: 'average', name: '平均值' }
]
}
}, series_temp);
break;
default:
var series_temp = { name: group[i], data: temp, type: chart_type };
}
series.push(series_temp);
}
return { category: group, xAxis: xAxis, series: series };
}
}
,
ChartOptionTemplates: {
CommonOption: {
title: {
text: '智能图表',
left: "40%"
},
//通用的图表基本配置
tooltip: {
trigger: 'item'//tooltip触发方式:axis以X轴线触发,item以每一个数据项触发
},
toolbox: {
show: true,
orient: 'vertical',
left: 'left',
top: 'top',
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
saveAsImage: { show: true }
}
}
},
CommonLineOption: {//通用的折线图表的基本配置
title: {
text: '智能图表',
left: "40%"
},
tooltip: {
trigger: 'axis'
},
calculable: true,
toolbox: {
show: true,
//orient : 'vertical',
left: 'right',
top: 'top',
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
magicType: ['line', 'bar'],//支持柱形图和折线图的切换
saveAsImage: { show: true }
}
}
},
Pie: function (data, name) {
//data:数据格式:{name:xxx,value:xxx}...
var pie_datas = ECharts.ChartDataFormate.FormateNOGroupData(data);
var option = {
tooltip: {
trigger: 'item',
formatter: '{b} : {c} ({d}/%)',
show: true
},
legend: {
orient: 'vertical',
x: 'left',
data: pie_datas.category
},
calculable: true,
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: true },
restore: { show: true },
saveAsImage: { show: true }
}
},
series: [
{
name: name || "",
type: 'pie',
radius: '65%',
center: ['50%', '50%'],
data: pie_datas.data
}
]
};
return $.extend({}, ECharts.ChartOptionTemplates.CommonOption, option);
},
Lines: function (data, name, is_stack) {
//data:数据格式:{name:xxx,group:xxx,value:xxx}...
var stackline_datas = ECharts.ChartDataFormate.FormateGroupData(data, 'line', is_stack);
var option = {
legend: {
data: stackline_datas.xAxis
},
xAxis: [{
type: 'category', //X轴均为category,Y轴均为value
data: stackline_datas.xAxis,
boundaryGap: false//数值轴两端的空白策略
}],
yAxis: [{
type: 'value',
splitArea: { show: true }
}],
series: stackline_datas.series
};
return $.extend({}, ECharts.ChartOptionTemplates.CommonLineOption, option);
},
Bars: function (data, name, is_stack) {
//data:数据格式:{name:xxx,group:xxx,value:xxx}...
var bars_dates = ECharts.ChartDataFormate.FormateGroupData(data, 'bar', is_stack);
var option = {
legend: { data: bars_dates.category },
xAxis: [{
type: 'category',
data: bars_dates.xAxis
}],
yAxis: [{
type: 'value'
}],
toolbox: bars_dates.toolbox,
series: bars_dates.series
};
return $.extend({}, ECharts.ChartOptionTemplates.CommonLineOption, option);
},
Maps: function (data, name, is_stack) {
//data:数据格式:{name:xxx,group:xxx,value:xxx}...
var maps_dates = ECharts.ChartDataFormate.FormateGroupData(data, 'map', is_stack);
var option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left',
data: ['iphone3', 'iphone4', 'iphone5']
},
visualMap: {
min: 0,
max: 2500,
left: 'left',
top: 'bottom',
text: ['高', '低'], // 文本,默认为数值文本
calculable: true
},
series: maps_dates.series
};
return $.extend({}, ECharts.ChartOptionTemplates.CommonOption, option);
}
}
};