Изменить начало и конец Flex LineChart данных JSON с помощью ползунка - PullRequest
0 голосов
/ 01 марта 2011

Мой файл данных JSON ise data.txt

[ 
    {
        "sayim":"1",
        "x":"400",
        "y":"5",
        "z":"-6"

    },

    {
        "sayim":"2",
        "x":"4",
        "y":"-40",
        "z":"700"
    },

    {
        "sayim":"3",
        "x":"5",
        "y":"-5",
        "z":"500"
    },

    {
        "sayim":"4",
        "x":"1400",
        "y":"50",
        "z":"-6"
    },

    {
        "sayim":"5",
        "x":"4",
        "y":"5",
        "z":"6"
    }
]

и моя цель состоит в том, чтобы создать ползунок, который может изменять начало и конец графического объекта, это похоже на то, что показано на рисунке 6 в этом веб-сайт

и вот коды MXML;

 .
                            ..
                            ...
                            jsonDataArray = JSON.decode(urlLoader.data);    
            proceed();
            }
         private function proceed():void
            {

                dgg.dataProvider = jsonDataArray;
            }

        ]]>
    </mx:Script>
<mx:HSlider  minimum="1" maximum="30" id="daySlider" snapInterval="1" thumbCount="2" values="[1,30]" /> 
    <mx:LineChart id="dgg" width="1000" height="500" horizontalCenter="0" > 
        <mx:series> 
    <mx:LineSeries xField="sayim" yField="x" displayName="X Bileşeni" /> 
    <mx:LineSeries xField="sayim" yField="y" displayName="Y Bileşeni" /> 
    <mx:LineSeries xField="sayim" yField="z" displayName="Z Bileşeni" /> 
        </mx:series> 
    </mx:LineChart> 
    <mx:Legend dataProvider="{dgg}" />

Проблема в определении «dataProvider» в LineChart, я написал этот код, но он все еще не работает,

dataProvider="{dgg(sayim>=daySlider.values[0] && sayim<=daySlider.values[1])}"

Какой правильный код для управления LineChart с помощью ползунка.

1 Ответ

0 голосов
/ 01 марта 2011

Вы немного смешиваете свои метафоры.

В этой статье он использует EcmaScript For Xml (E4X) для привязки XML-запроса к dataProvider. «Точки» в этой строке очень важны, потому что они предполагают свободное дерево XML. Он также использует синтаксис запроса на day, который может быть выполнен только с объектами XML. Таким образом, следующая привязка работает, только если stockData имеет тип данных XML.

dataProvider="{stockData..day.(num >= daySlider.value )}"

Однако в вашем случае ваши данные представлены в формате JSON, поэтому ваши объекты не в той форме, в которой будет работать вышеуказанный запрос.

Кроме того, вы устанавливаете dataProvider для вызова функции dgg, но dgg является LineChart, а не функцией.

В вашем случае я бы порекомендовал упаковать ваши данные в ArrayCollection и использовать filterFunction, чтобы определить, как фильтровать эти данные. Затем напрямую свяжитесь с ArrayCollection и измените функцию фильтра с помощью refresh(). Вы можете увидеть пример этого здесь: http://www.flex -blog.com / arraycollection-filter-example /

Удачи

...