J'ai flex 4, zend & php. J'essaie de générer un graphique w/5 ans de données & puis laissez l'utilisateur (sans faire un autre appel au serveur) obtenir un graphique 1 an w/les mêmes données. (En d'autres termes, la valeur de 1 an des données est un sous-ensemble des 5 ans). Je peux obtenir le graphique initial de 5 ans mais quand j'essaie d'appliquer un filtre, comme ci-dessous, je ne reçois aucune donnée. Qu'est-ce que je fais mal?Flex Chart ne filtre pas
J'ai le code suivant:
`
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:datadata="services.datadata.*">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
protected function getData(event:FlexEvent):void
{
getDataResult.token = dataData.getData();
}
public function filterByRange(item:Object):Boolean
{
var result:Boolean = true;
if (item.date.time > 2007-01-01 && item.date.time < 2008-12-31){
result = false;
}
return result;
dg.refresh();
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="dg" filterFunction="filterByRange" list="{getDataResult.lastResult}" />
<s:CallResponder id="getDataResult"/>
<datadata:DataData id="dataData" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
</fx:Declarations>
<mx:AreaChart id="areachart1" width="100%" height="100%" creationComplete="getData(event)" dataProvider="{dg}" showDataTips="true">
<mx:series>
<mx:AreaSeries yField="price" id="areaSeries" xField="date"/>
</mx:series>
<mx:horizontalAxis>
<mx:DateTimeAxis/>
</mx:horizontalAxis>
</mx:AreaChart>
`
C'est ce que mon code PHP ressemble. Rappelez-vous, j'utilise Zend.
`
public function getData() {
$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename");
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->date, $row->price);
while (mysqli_stmt_fetch($stmt)) {
$row->date = new DateTime($row->date);
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->date, $row->price);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
`
N'avez-vous aucune donnée à afficher dans le tableau, même sans le filtre? Si vous définissez un point d'arrêt sur un gestionnaire de résultat pour getDataResult, voyez-vous les données? Est-ce que les objets dans ArrayCollection ont des propriétés correctes pour le prix et la date? –
Essayez de lier la propriété de liste ArrayCollection au lieu de source à getDataResult.lastResult (ou source à lastResult.source). Il semble que le résultat est déjà un ArrayCollection et que la source ne prend qu'un Array. – Dave
Flex renvoie une variable datetime formatée comme: "Mon Sep 5 20:00:00 GMT-0400 2005" ..... comment puis-je obtenir une date> ou
kristen