Well anyway, it works great.
Thanks a lot for your help.

Sefi

On Fri, Nov 21, 2008 at 11:55 PM, Brendan Meutzner <[EMAIL PROTECTED]>wrote:

>   I think the package was available for 2.0.1 build... I can't remember
> exactly, it was quite a while ago...
>
>
> Brendan
>
>
>
> On Fri, Nov 21, 2008 at 2:28 PM, Sefi Ninio <[EMAIL PROTECTED]> wrote:
>
>>   Thanks a lot.
>> Where did you get the original LineSeries code? All I have is the swc
>> file...
>>
>>
>> On Fri, Nov 21, 2008 at 10:20 PM, Brendan Meutzner <[EMAIL PROTECTED]>wrote:
>>
>>>   package range_charts.extended_series
>>> {
>>> import mx.charts.HitData;
>>> import mx.charts.chartClasses.CartesianTransform;
>>>  import mx.charts.series.LineSeries;
>>> import mx.charts.series.items.LineSeriesItem;
>>>  import mx.graphics.IStroke;
>>> import mx.graphics.LinearGradientStroke;
>>> import mx.graphics.Stroke;
>>>
>>> public class CustomLineSeries extends LineSeries
>>> {
>>>  override public function
>>> findDataPoints(x:Number,y:Number,sensitivity:Number):Array
>>>     {
>>>         // esg, 8/7/06: if your mouse is over a series when it gets
>>> added and displayed for the first time, this can get called
>>>         // before updateData, and before and render data is constructed.
>>> The right long term fix is to make sure a stubbed out
>>>         // render data is _always_ present, but that's a little
>>> disruptive right now.
>>>         if (interactive == false || !renderData)
>>>             return [];
>>>         var pr:Number = getStyle("radius");
>>>         var minDist2:Number  = pr + sensitivity;
>>>         minDist2 *= minDist2;
>>>         var minItem:LineSeriesItem = null;
>>>         var pr2:Number = pr * pr;
>>>
>>>         var len:int = renderData.filteredCache.length;
>>>          if (len == 0)
>>>             return [];
>>>          if(sortOnXField == true)
>>>         {
>>>             var low:Number = 0;
>>>             var high:Number = len;
>>>             var cur:Number = Math.floor((low+high)/2);
>>>
>>>             var bFirstIsNaN:Boolean = isNaN(renderData.filteredCache[0]);
>>>
>>>             while (true)
>>>             {
>>>                 var v:LineSeriesItem = renderData.filteredCache[cur];
>>>                 if (!isNaN(v.yFilter) && !isNaN(v.xFilter))
>>>                 {
>>>                     //var dist:Number = (v.x  - x)*(v.x  - x) + (v.y -
>>> y)*(v.y -y);
>>>                     var dist:Number = (v.x - x)*(v.x - x) ;
>>>                     if (dist <= minDist2)
>>>                     {
>>>                         minDist2 = dist;
>>>                         minItem = v;
>>>                     }
>>>                 }
>>>
>>>  if (v.x < x || (isNaN(v.x) && bFirstIsNaN))
>>>                 {
>>>                     low = cur;
>>>                     cur = Math.floor((low + high)/2);
>>>                     if (cur == low)
>>>                         break;
>>>                 }
>>>                 else
>>>                 {
>>>                     high = cur;
>>>                     cur = Math.floor((low + high)/2);
>>>                     if (cur == high)
>>>                         break;
>>>                 }
>>>             }
>>>         }
>>>         else
>>>         {
>>>             var i:uint;
>>>             for (i=0;i<len;i++)
>>>             {
>>>                v = renderData.filteredCache[i];
>>>                if (!isNaN(v.yFilter) && !isNaN(v.xFilter))
>>>                 {
>>>                    //dist = (v.x  - x)*(v.x  - x) + (v.y - y)*(v.y -y);
>>>                    dist = (v.x - x)*(v.x - x) ;
>>>                    if (dist <= minDist2)
>>>                    {
>>>                        minDist2 = dist;
>>>                        minItem = v;
>>>                    }
>>>                 }
>>>            }
>>>         }
>>>
>>>         if (minItem)
>>>         {
>>>             var hd:HitData = new
>>> HitData(createDataID(minItem.index),Math.sqrt(minDist2),minItem.x,minItem.y,minItem);
>>>              var istroke:IStroke = getStyle("lineStroke");
>>>             if (istroke is Stroke)
>>>                 hd.contextColor = Stroke(istroke).color;
>>>             else if (istroke is LinearGradientStroke)
>>>             {
>>>                 var gb:LinearGradientStroke =
>>> LinearGradientStroke(istroke);
>>>                 if (gb.entries.length > 0)
>>>                     hd.contextColor = gb.entries[0].color;
>>>             }
>>>             hd.dataTipFunction = formatDataTip;
>>>             return [ hd ];
>>>         }
>>>         return [];
>>>     }
>>>
>>>
>>>     private function formatDataTip(hd:HitData):String
>>>     {
>>>         var dt:String = "";
>>>
>>>         var n:String = displayName;
>>>         if (n && n != "")
>>>             dt += "<b>" + n + "</b><BR/>";
>>>          var xName:String =
>>> dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS).displayName;
>>>         if (xName != "")
>>>             dt += "<i>" + xName+ ":</i> ";
>>>         dt +=
>>> dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS).formatForScreen(
>>>             LineSeriesItem(hd.chartItem).xValue) + "\n";
>>>
>>>         var yName:String =
>>> dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).displayName;
>>>         if (yName != "")
>>>             dt += "<i>" + yName + ":</i> ";
>>>         dt +=
>>> dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).formatForScreen(
>>>             LineSeriesItem(hd.chartItem).yValue) + "\n";
>>>
>>>         return dt;
>>>     }
>>>
>>>
>>> }
>>> }
>>>
>>>
>>>
>>> <custom_series:CustomLineSeries id="baseSeries" name="Reading Value"
>>> xField="readingDate" yField="reading" displayName="Reading Value"
>>> stroke="{new Stroke(0xFF0000, 0)}"
>>>                fill="{new SolidColor(0xFF0000, 0.6)}" lineStroke="{new
>>> Stroke(0xFF0000, 1)}" form="curve" interpolateValues="false"
>>>                 lineSegmentRenderer="mx.charts.renderers.LineRenderer"
>>> radius="2"
>>>                    />
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Nov 21, 2008 at 1:48 PM, Sefi Ninio <[EMAIL PROTECTED]>wrote:
>>>
>>>>   Hi Brendan,
>>>>
>>>> Could you maybe paste your implementation of the extending class?
>>>>
>>>> Thanks,
>>>> Sefi
>>>>
>>>> On Fri, Nov 21, 2008 at 8:41 PM, Sefi Ninio <[EMAIL PROTECTED]>wrote:
>>>>
>>>>> Hi Brendan
>>>>>
>>>>> Thanks for the reply, I'll give it a try.
>>>>>
>>>>> Sefi
>>>>>
>>>>>
>>>>> On Fri, Nov 21, 2008 at 6:34 PM, Brendan Meutzner <[EMAIL PROTECTED]
>>>>> > wrote:
>>>>>
>>>>>>   Claude Hussenet has come up with a solution for this.  Here's the
>>>>>> past post.
>>>>>>
>>>>>> http://tech.groups.yahoo.com/group/flexcoders/message/90045
>>>>>>
>>>>>> I've used and it works great.
>>>>>>
>>>>>>
>>>>>> Brendan
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Nov 21, 2008 at 4:56 AM, Sefi Ninio <[EMAIL PROTECTED]>wrote:
>>>>>>
>>>>>>>   Hey,
>>>>>>>
>>>>>>> I have a chart set up and using dataTipFunction to format the
>>>>>>> datatips. It works great.
>>>>>>> However, what I'd really like, is to display the datatips for all the
>>>>>>> series for the current x axis value the mouse pointer is over (and only
>>>>>>> those).
>>>>>>> Example: if the mouse pointer is over x value 10, and I have 3 line
>>>>>>> series in that chart, then all 3 points correlating to x value 10 will 
>>>>>>> have
>>>>>>> their datatips visible.
>>>>>>>
>>>>>>> There are a few issues with this:
>>>>>>> 1. I don't have an easy way to translate mouse pointer location on
>>>>>>> mouse over to the relevant x axis value.
>>>>>>> 2. Once I (hopefully) get the x value, I'd also have to have all y
>>>>>>> values for the series (relatively simple).
>>>>>>> 3. If I get here, I'll have to think of a way to cause the points to
>>>>>>> show their datatip and ofcourse clear all previous open datatips...
>>>>>>>
>>>>>>> any ideas on either of those points?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Sefi
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Brendan Meutzner
>>>>>> http://www.meutzner.com/blog/
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Brendan Meutzner
>>> http://www.meutzner.com/blog/
>>>
>>
>>
>
>
> --
> Brendan Meutzner
> http://www.meutzner.com/blog/
>   
>

Reply via email to