gpt4 book ai didi

extjs4:如何向图表添加自定义监听器和工具提示?

转载 作者:行者123 更新时间:2023-12-04 21:50:18 26 4
gpt4 key购买 nike

我正在创建一个雷达图来显示数据,它工作得很好。但是,出现在图例中的标题可能会非常长。现在我有它在图例中显示标题的缩短版本,但我希望这样当用户在图例标题上进行鼠标悬停时,工具提示或气泡会弹出一段时间,显示完整的标题/标签。从我在 API 文档中看到的内容来看,我可以看到您可以向整个图表添加一个监听器,而不仅仅是在图例标题上。

但是,您可以单击图例项来显示/隐藏数据,因此有某种类型的收听功能。任何想法如何向以下雷达图的图例添加自定义鼠标悬停监听器?

Ext.define("COM.view.portlet.RadarChart", {
extend : "Ext.panel.Panel",
alias : "widget.myradarchart",
requires: ["Ext.chart.theme.Base", "Ext.chart.series.Series"],

initComponent: function () {
//@fixme: Why is the first radar not show x-axis lines?
Ext.apply(this, {
layout: "fit",
width: 600,
height: 300,
items: {
xtype: 'chart',
style: 'background:#fff',
theme: 'Category2',
insetPadding: 20,
animate: true,
store: 'Seoradar',
legend: {
position: "bottom"
//ADDING LISTENERS HERE DOESN'T WORK
},
axes: [{
type: "Radial",
position: "radial",
maximum: 100,
label: {
font: "11px Arial",
display : "none"
}
}],
series: [{
showInLegend : true,
showMarkers : true,
markerConfig: {
radius : 2,
size : 2
},
type : 'radar',
xField : 'name',
yField : 'site0',
style: {
opacity: 0.4
}
},{
showInLegend : true,
showMarkers : true,
type : 'radar',
xField : 'name',
yField : 'site1',
style: {
opacity: 0.4
}
}]
}
});
this.callParent(arguments);
}

});

最佳答案

如果您想将此事件从图表中删除,您可以将其从系列中推高
对图表说:

       {
'type' : 'line',
'axis' : 'left',
'highlight' : true,
'listeners' : {
'itemmousedown' : function(event){
event.series.chart.fireEvent('itemmousedown', event);
}
}
}

所以在你的 Controller 中你可以说:
this.control({
'chart' : {
'itemmousedown' : function(event){
//do your stuff here
}
}
});

!!注意力!!

我注意到这些 mousedown 事件是在另一个上下文而不是 UI 上下文中执行的,所以我无法在事件处理程序的上下文中显示一个窗口。
我不得不通过使用 setTimeout 并将事件对象保存在某处来解决这个问题。
我想这可能是因为在某些浏览器上 SVG 渲染是硬件加速的。

关于extjs4:如何向图表添加自定义监听器和工具提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com