[英]Make a bar in a chart remain highlighted when it is clicked in Ext JS?
在Ext.chart.Chart
,當單擊一個條形時,我希望它保持突出顯示,直到單擊另一個條形。 我怎么做?
雖然我認為您的問題不完整並且您可以向我們提供一些代碼,但我創建了一個Sencha Fiddle來向您展示如何突出顯示條形圖中的項目。
在我為您提供一些代碼之前,我想告訴您我的步驟是什么。 我從來沒有使用過圖表庫,所以我從空白開始。 我幾乎不需要侵入 dom,並且將 ExtJs 視為一個成熟的框架,我理所當然地認為 ExtJs 將為我提供您所要求的功能。
itemclick
是否是itemclick
事件?series
上配置一個 itemclick 偵聽器。 文檔告訴我,當我想使用 itemevents 時,我必須配置一個ItemEvents
插件。itemclick
series
並在chart
上配置plugin
,我看看提供了哪些參數。 太好了,系列和點擊的項目已經提供。 現在,我可以使用setHighlightItem()
中的series
,以hightlight
點擊的項目。itemclick
我可以調用series.setHighlightItem(item)
但它不起作用。 為什么? 我必須配置highlight
嗎? 是的。highlight
設置為 true 或配置對象(對於某些樣式)后,它就像一個魅力。Ext.application({
name: 'Fiddle',
launch: function() {
Ext.create('Ext.Container', {
renderTo: Ext.getBody(),
width: 600,
height: 400,
layout: 'fit',
items: {
xtype: 'cartesian',
// hightlight item on click
//interactions: 'itemhighlight', // --> don't set an interaction
plugins: {
ptype: 'chartitemevents',
moveEvents: true
},
// eo hightlight item on click
store: {
fields: ['name', 'value'],
data: [{
name: 'metric one',
value: 10
}, {
name: 'metric two',
value: 7
}, {
name: 'metric three',
value: 5
}, {
name: 'metric four',
value: 2
}, {
name: 'metric five',
value: 27
}]
},
axes: [{
type: 'numeric',
position: 'left',
title: {
text: 'Sample Values',
fontSize: 15
},
fields: 'value'
}, {
type: 'category',
position: 'bottom',
title: {
text: 'Sample Values',
fontSize: 15
},
fields: 'name'
}],
series: {
type: 'bar',
xField: 'name',
yField: 'value',
style: {
fill: 'blue'
},
// hightlight item on click
highlight: {
strokeStyle: 'black',
lineDash: [5, 3]
},
listeners: {
itemclick: function(series, item, event, eOpts) {
series.setHighlightItem(item);
}
}
// eo hightlight item on click
}
}
});
}
});
對於ExtJS的6.x中,可以覆蓋(或延伸)的updateHighlightItem
的方法Ext.chart.AbstractChart
:
Ext.override(Ext.chart.AbstractChart, {
updateHighlightItem: function (newHighlightItem, oldHighlightItem) {
if (!newHighlightItem || newHighlightItem === oldHighlightItem) {
this.setHighlightItem(oldHighlightItem);
return
}
if (oldHighlightItem) {
oldHighlightItem.series.setAttributesForItem(oldHighlightItem, {highlighted: false});
}
if (newHighlightItem) {
newHighlightItem.series.setAttributesForItem(newHighlightItem, {highlighted: true});
this.fireEvent('itemhighlight', this, newHighlightItem, oldHighlightItem);
}
this.fireEvent('itemhighlightchange', this, newHighlightItem, oldHighlightItem);
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.