Np... thank Claude... it's all his :-)
On Sat, Nov 22, 2008 at 12:31 AM, Sefi Ninio <[EMAIL PROTECTED]> wrote:
> 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/
>>
>
>
>
--
Brendan Meutzner
http://www.meutzner.com/blog/