Скрыть элементы графика на основе некоторого значения
У меня есть график с ItemRenderer для отображения текста. У меня рендерер работает правильно. Теперь, что я хочу показать / скрыть некоторые графики, если они ниже / выше некоторого значения. Я использую компонент "Метка" в качестве "itemRenderer" и переопределяю функцию "данные" (см. Ниже мой компонент визуализации...).
Если размер поставщика данных на диаграмме больше 100, я хочу скрыть все "события" с "низкой" степенью серьезности. Для этого мне нужно получить ссылку на поставщика данных, но не знаю, как...?
Кто-нибудь сталкивался с этой проблемой?
public class EventChartItemRenderer extends Label
{
private var chartItem:ChartItem;
private var evtLblTxt:String;
private var txtBorderColor:uint;
private var showHide:Boolean;
public function EventChartItemRenderer()
{
super();
}
override public function set data(val:Object):void {
chartItem = val as ChartItem;
var event:DeviceEventDetails = chartItem.item as DeviceEventDetails;
if(event.severity == 2){
evtLblTxt = "2";
txtBorderColor = 0xFFD685;
showHide = false;
}else if(event.severity == 4){
evtLblTxt = "4";
txtBorderColor = 0xE68D53;
showHide = true;
}else if(event.severity == 6){
evtLblTxt = "6";
txtBorderColor = 0xB870DB;
showHide = true;
}
}
override public function get data():Object {
return chartItem;
}
override protected function commitProperties():void {
super.commitProperties();
if(!showHide) return;
this.text = evtLblTxt;
this.setStyle("color", txtBorderColor);
this.setStyle("fontWeight", "bold");
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(!showHide) return;
var rc:Rectangle = new Rectangle(0, 0, unscaledWidth, unscaledHeight);
var g:Graphics = graphics;
g.clear();
g.moveTo(rc.left, rc.top);
g.lineStyle(1, txtBorderColor, 0.8);
g.lineTo(rc.width, rc.top);
g.lineTo(rc.width, rc.bottom+4);
g.lineTo(rc.left, rc.bottom+4);
g.lineTo(rc.left, rc.top);
g.endFill();
}
}
Это на самом деле chartItem.element. И вам необходимо привести его к "ChartElement", потому что "элемент" относится к интерфейсу "IChartElement" и имеет доступ к свойству "dataProvider". 'ChartDataProvider' предназначен только для записи. Итак, правильный способ доступа к нему...
(chartItem.element as ChartElement).dataProvider.
1 ответ
ChartItem
имеет IChartElement
свойство с доступом к поставщику данных диаграммы:
chartItem.item.chartDataProvider.length > 100