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/
>  
>

Reply via email to