柱状图使用

[TOC]

柱状图使用

例子

具体的学习例子,见官方的sdk例子,地址:extjs/sdk/ext-6.5.3/build/examples/kitchensink/?classic#column-basic

简单粗暴,直接将其items(cartesian)复制过来,然后在其上面更改。将一些函数内的数具注释掉。刚开始,进可能的使用较少的功能。先将整个图显示出来再说。然后再深入每个配置项,调节功能。

每项的参数分析

store

以date作为x轴,注意2019-01-01重复了,实际上,同名的,只有最后一个起作用。但是数字,显示,两个都会显示。具体见图。

data:[
	{'date':'2019-07-01','basehospital':'华山医院','price':'11','count':'1'},
	{'date':'2019-07-01','basehospital':'华山医院','price':'13','count':'1'},
	{'date':'2019-07-02','basehospital':'华山医院','price':'22','count':'1'},
]

1562227106896

axes

设置横轴、纵轴。Ext.chart.axis.Axis xtype: axis的一个实例

axes: [{
	type: 'numeric',
	position: 'left',
	minimum: 0,
	titleMargin: 20,
	title: {
		text: '人次'
	},
	// listeners: {
	// 	rangechange: 'onAxisRangeChange'
	// }
}, {
	type: 'category',
	position: 'bottom', //显示在底部
	title:'日期'
}],

series,设置数据源

series: {
	type: 'bar',
	xField: 'date',
	yField: 'price',
	// style: {
	// 	minGapWidth: 20  //每个柱状图的间隔
	// },
	highlight: {//每个轴的高亮
		strokeStyle: 'black',  //选择时的边框颜色
		fillStyle: 'gold'  //选择时的高亮
	},
	label: {
		field: 'price',
		display: 'insideEnd',
		// renderer: 'onSeriesLabelRender'
	}
},

图表自带预览功能

这个功能自Ext.draw.Container继承而来,具体的实现比较荣长,可以在控制台输出,就能跳到对应的代码位置。

{
	text:"预览",
	handler:function(){
		var chart = me.down('cartesian');
		chart.preview();
	}
}

错误处理

sencha app build testing模式下打包,能显示具体的报错信息。如下,提示,某个依赖的组件未认出。

1562235669387

解决方法:

添加依赖,如下。大概就这么多。

requires:[
		'Ext.chart.axis.Numeric',
		'Ext.chart.axis.Category',
		'Ext.chart.series.Bar',
		'Ext.chart.interactions.ItemHighlight',
	],

之前一直以为是项目的配置有问题,但是添加了依赖了啊。

1562236182844

数据处理

由于每次都要频繁的从后台加载数据,所以略做了优化,将请求的参数作为缓存的键值,对数据进行缓存。

me.cacheData={}  //在组件init的时候,进行初始化。   而不是直接在属性上初始化,避免多个公用一个。

var cacheKey=query['start_date']+'#'+query['stop_date'];
//尝试读取缓存,如果存在,直接读缓存,并处理
if(me.cacheData[cacheKey]){
	me.analysisData(me.cacheData[cacheKey]);
	return ;
}
//如果不存在,则发送ajax请求
...