J'ai un problème de zoom sur un graphique linéaire avec une dateTimeAxis comme axe horizontal. Je veux effectuer un zoom avant et arrière, en définissant les attributs minimum et maximum de la dateTimeAxis avec un curseur. Les étiquettes de date changent comme il se doit, mais les lignes disparaissent lorsque je règle le minimum ou le maximum.Zoom sur le graphique linéaire
est ici une partie du code que j'ai:
private function updateBoundariesFromSlider():void
{
leftBoundary = slider.values[0];
rightBoundary = slider.values[1];
updateMainData();
}
private function updateMainData():void
{
dateAxis.minimum = new Date(leftBoundary);
dateAxis.maximum = new Date(rightBoundary);
}
public function setChartData(data:XML, shown:Array, minDate:Date, maxDate:Date):void
{
globalLeftBoundary = minDate.getTime();
globalRightBoundary = maxDate.getTime();
leftBoundary = minDate.getTime();
rightBoundary = maxDate.getTime();
for each(var s:String in shown)
{
var localXML:XMLList = data.track.(type == s);
// Create the new series and set its properties.
var localSeries:LineSeries = new LineSeries();
localSeries.dataProvider = localXML;
localSeries.yField = "value";
localSeries.xField = "time";
localSeries.displayName = s;
mySeries.push(localSeries);
}
hAxis = new DateTimeAxis();
hAxis.dataUnits = "minutes";
hAxis.dataInterval = 1;
hAxis.labelFunction = showLabel;
hAxis.alignLabelsToUnits = true;
hAxis.parseFunction = createDate;
//hAxis.minimum = new Date(leftBoundary);
//hAxis.maximum = new Date(rightBoundary);
Alert.show((new Date(leftBoundary)).toString());
dateAxis = hAxis;
}
private function createDate(s:String):Date {
var dateTime:Array = s.split(" ");
var date:Array = dateTime[0].split("-");
var time:Array = dateTime[1].split(":");
var newDate:Date = new Date(date[0],date[1],date[2],time[0],time[1],time[2]);
return newDate;
}
<mx:LineChart id="lineChart" left="10" top="10" bottom="47" right="10" series="{mySeries}" horizontalAxis="{dateAxis}" />
<mx:Legend dataProvider="{lineChart}" height="23" bottom="16" left="10" id="legend" width="100"/>
<flexlib:HSlider id="slider" height="25"
allowTrackClick="true" allowThumbOverlap="false"
liveDragging="true" change="updateBoundariesFromSlider()"
showDataTip="false"
showTrackHighlight="true"
thumbCount="2" snapInterval="0"
values="{[leftBoundary, rightBoundary]}"
minimum="{globalLeftBoundary}" maximum="{globalRightBoundary}"
right="50" left="198" y="155"
/>
Le problème est-ce que j'ai mes données dans xml, pas ArrayCollection :( – Biroka
Une collection de tableau encapsule un tableau, un XMLListCollection encapsule un XMLList.Les deux sont ListCollectionView, et les deux peuvent prendre e une fonction de filtre. J'ai mis à jour l'exemple ci-dessus pour utiliser un XMLListCollection au lieu d'un ArrayCollection. –
pourquoi les gens n'ont-ils pas voté pour FLEX? Apparemment, les développeurs FLEX sont trop occupés à sortir leurs cheveux pour upvote quoi que ce soit! LOL – D3vtr0n