[flexcoders] Re: Displaying additional child nodes in Datatip
Tim, It works!!! Hooray!!! You Rock!!! Thank you so much for all your help. Monette --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: Three time's a charm: var series:LineSeries = LineSeries( o.element ); var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries == series ) { break; } } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Cleaner: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: So, maybe something like this: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( var a:int = 0; a myChart.series.length; a++ ) { var lineSeries:LineSeries = myChart.series[ a ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { seriesIndex = a; break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Easy enough, create a dictionary (id or name) when the series's are created; with the index. And/Or you can get the count from myChart.series.length. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of
[flexcoders] Re: Displaying additional child nodes in Datatip
My pleasure Monette. -TH --- In flexcoders@yahoogroups.com, Monette monett...@... wrote: Tim, It works!!! Hooray!!! You Rock!!! Thank you so much for all your help. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Three time's a charm: var series:LineSeries = LineSeries( o.element ); var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries == series ) { break; } } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Cleaner: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: So, maybe something like this: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( var a:int = 0; a myChart.series.length; a++ ) { var lineSeries:LineSeries = myChart.series[ a ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { seriesIndex = a; break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Easy enough, create a dictionary (id or name) when the series's are created; with the index. And/Or you can get the count from myChart.series.length. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote:
[flexcoders] Re: Displaying additional child nodes in Datatip
Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while loop working? Thanks so much for your help Tim! Monette private function dtFunction( o:HitData ):String var s:String; for (var a:int=0; a 3; a++) { var index:int = (LineSeries(o.element).id == s + a)? 0 : 1; s = b + LineSeries(o.element).displayName + /b \n; s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + o.item.session[index].bookrate + \n ; s += bStatus:/b + o.item.session[index].status + \n ; } return s; } --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: Assuming that you have assigned an id to each series (baseline,2009-8), you could use something like this: private function dtFunction( o:HitData ):String { var index:int = ( LineSeries( o.element ).id == baseline ) ? 0 : 1; var s:String = bBook rate:/b + o.item.session[ index ].bookrate; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session sessionnameBaseline/sessionname books0/books bookrate2/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate6/bookrate statusred/status /session /week week name=2 session sessionnameBaseline/sessionname books0/books bookrate3/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate1/bookrate statusred/status /session /week /items What are your thoughts? Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Yeah, you're very close. Now it's just a matter of xml. I'd start by tracing o. If the children are still in o, then drill down. Otherwise, you'll have to go and find the nodes; like you're trying below. Some things that you can start with: trace( o.toXMLString() ); var myXMLChildren:XMLList = o.children(); o.child(myProperty)[0].valueOf(); -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Below is my DataTipFunction. The commented part on top works fine. However, there is additional information that I need to include from the XML file into the data tip. When I mouse over the datapoint I would like to retrieve from the XML file the additional child nodes that correspond with that datapoint. I feel that I am very close and missing one piece. How can I accomplish this dynamically by displaying the correct data for the series? Note, I can have more than 1 series in the XML data file. private function DTPFunction(o:HitData):String { //WORKS for data that is used on the chart x and y values //var s:String; //s = b + LineSeries(o.element).displayName + /b \n; //s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + series. o.item.session.bookrate + \n ; //s += bStatus:/b + o.item.session.status + \n ; //END WORKS var s:String; var a:int=0; var fNode:XML = chart.dataProvider[0]; if ((LineSeries(o.element).displayName) == fNode.child('sessionname')) { s = b + o.item.session.sessionname[a] + /b \n; s += bBooks:/b + o.item.session.books[a] + \n + bBook rate:/b + o.item.session.bookrate[a] + \n ; s += bStatus:/b + o.item.session.status[a] + /size\n ; a++ } return s; } Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: If the dataTipFunction doesn't give you enough flexibility, you could try a dataTipRenderer. In either case, you can drill down to the child
[flexcoders] Re: Displaying additional child nodes in Datatip
Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monett...@... wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while loop working? Thanks so much for your help Tim! Monette private function dtFunction( o:HitData ):String var s:String; for (var a:int=0; a 3; a++) { var index:int = (LineSeries(o.element).id == s + a)? 0 : 1; s = b + LineSeries(o.element).displayName + /b \n; s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + o.item.session[index].bookrate + \n ; s += bStatus:/b + o.item.session[index].status + \n ; } return s; } --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Assuming that you have assigned an id to each series (baseline,2009-8), you could use something like this: private function dtFunction( o:HitData ):String { var index:int = ( LineSeries( o.element ).id == baseline ) ? 0 : 1; var s:String = bBook rate:/b + o.item.session[ index ].bookrate; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session sessionnameBaseline/sessionname books0/books bookrate2/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate6/bookrate statusred/status /session /week week name=2 session sessionnameBaseline/sessionname books0/books bookrate3/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate1/bookrate statusred/status /session /week /items What are your thoughts? Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Yeah, you're very close. Now it's just a matter of xml. I'd start by tracing o. If the children are still in o, then drill down. Otherwise, you'll have to go and find the nodes; like you're trying below. Some things that you can start with: trace( o.toXMLString() ); var myXMLChildren:XMLList = o.children(); o.child(myProperty)[0].valueOf(); -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Below is my DataTipFunction. The commented part on top works fine. However, there is additional information that I need to include from the XML file into the data tip. When I mouse over the datapoint I would like to retrieve from the XML file the additional child nodes that correspond with that datapoint. I feel that I am very close and
[flexcoders] Re: Displaying additional child nodes in Datatip
This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while loop working? Thanks so much for your help Tim! Monette private function dtFunction( o:HitData ):String var s:String; for (var a:int=0; a 3; a++) { var index:int = (LineSeries(o.element).id == s + a)? 0 : 1; s = b + LineSeries(o.element).displayName + /b \n; s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + o.item.session[index].bookrate + \n ; s += bStatus:/b + o.item.session[index].status + \n ; } return s; } --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Assuming that you have assigned an id to each series (baseline,2009-8), you could use something like this: private function dtFunction( o:HitData ):String { var index:int = ( LineSeries( o.element ).id == baseline ) ? 0 : 1; var s:String = bBook rate:/b + o.item.session[ index ].bookrate; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session sessionnameBaseline/sessionname books0/books bookrate2/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate6/bookrate statusred/status /session /week week name=2 session sessionnameBaseline/sessionname books0/books bookrate3/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate1/bookrate statusred/status /session /week /items What are your thoughts? Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Yeah, you're very close. Now it's just a matter of xml. I'd start by tracing o. If the children are still in o, then drill down. Otherwise, you'll have to go and find the nodes; like you're trying below. Some things that you can start with: trace( o.toXMLString() ); var
[flexcoders] Re: Displaying additional child nodes in Datatip
Easy enough, create a dictionary (id or name) when the series's are created; with the index. And/Or you can get the count from myChart.series.length. -TH --- In flexcoders@yahoogroups.com, Monette monett...@... wrote: This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while loop working? Thanks so much for your help Tim! Monette private function dtFunction( o:HitData ):String var s:String; for (var a:int=0; a 3; a++) { var index:int = (LineSeries(o.element).id == s + a)? 0 : 1; s = b + LineSeries(o.element).displayName + /b \n; s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + o.item.session[index].bookrate + \n ; s += bStatus:/b + o.item.session[index].status + \n ; } return s; } --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Assuming that you have assigned an id to each series (baseline,2009-8), you could use something like this: private function dtFunction( o:HitData ):String { var index:int = ( LineSeries( o.element ).id == baseline ) ? 0 : 1; var s:String = bBook rate:/b + o.item.session[ index ].bookrate; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session sessionnameBaseline/sessionname books0/books bookrate2/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate6/bookrate statusred/status /session /week week name=2 session sessionnameBaseline/sessionname books0/books bookrate3/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate1/bookrate statusred/status /session /week /items What are your thoughts? Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote:
[flexcoders] Re: Displaying additional child nodes in Datatip
So, maybe something like this: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( var a:int = 0; a myChart.series.length; a++ ) { var lineSeries:LineSeries = myChart.series[ a ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { seriesIndex = a; break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: Easy enough, create a dictionary (id or name) when the series's are created; with the index. And/Or you can get the count from myChart.series.length. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while loop working? Thanks so much for your help Tim! Monette private function dtFunction( o:HitData ):String var s:String; for (var a:int=0; a 3; a++) { var index:int = (LineSeries(o.element).id == s + a)? 0 : 1; s = b + LineSeries(o.element).displayName + /b \n; s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + o.item.session[index].bookrate + \n ; s += bStatus:/b + o.item.session[index].status + \n ; } return s; } --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Assuming that you have assigned an id to each series (baseline,2009-8), you could use something like this: private function dtFunction( o:HitData ):String { var index:int = ( LineSeries( o.element ).id == baseline ) ? 0 : 1; var s:String = bBook rate:/b + o.item.session[ index ].bookrate; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session
[flexcoders] Re: Displaying additional child nodes in Datatip
Cleaner: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: So, maybe something like this: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( var a:int = 0; a myChart.series.length; a++ ) { var lineSeries:LineSeries = myChart.series[ a ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { seriesIndex = a; break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Easy enough, create a dictionary (id or name) when the series's are created; with the index. And/Or you can get the count from myChart.series.length. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while loop working? Thanks so much for your help Tim! Monette private function dtFunction( o:HitData ):String var s:String; for (var a:int=0; a 3; a++) { var index:int = (LineSeries(o.element).id == s + a)? 0 : 1; s = b + LineSeries(o.element).displayName + /b \n; s +=
[flexcoders] Re: Displaying additional child nodes in Datatip
Three time's a charm: var series:LineSeries = LineSeries( o.element ); var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries == series ) { break; } } -TH --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: Cleaner: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( seriesIndex = 0; seriesIndex myChart.series.length; seriesIndex++ ) { var lineSeries:LineSeries = myChart.series[ seriesIndex ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: So, maybe something like this: private function dtFunction( o:HitData ):String { var series:LineSeries = LineSeries( o.element ) as LineSeries; var seriesIndex:int; for ( var a:int = 0; a myChart.series.length; a++ ) { var lineSeries:LineSeries = myChart.series[ a ] as LineSeries; if ( lineSeries.displayName == series.displayName ) { seriesIndex = a; break; } } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; return s; } -TH --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Easy enough, create a dictionary (id or name) when the series's are created; with the index. And/Or you can get the count from myChart.series.length. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: This will work. However, the series count is not limited to just 3 series, it's count is dynamic depending on the amount of data collected. So the code needs to check how many series exists and then generate the datatip for the different series data points. It is easy for me to accomplish this in VB.NET or vbscript but I am just having problems accomplishing what I need in AS. --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Ok, good. Not sure exactly what you're trying to do, but it's basically the same type of thing as the data function. It's all about getting to right data for the series. Here's some code for getting individual values and for calculating totals for the week private function dtFunction( o:HitData ):String { var seriesId:String = LineSeries( o.element ).id; var seriesIndex:int; switch ( seriesId ) { case s0: seriesIndex = 0; break; case s1: seriesIndex = 1; break; case s2: seriesIndex = 2; break; default: break; } var totalBooksForWeek:int = 0; for ( var a:int = 0; a 3; a++ ) { var sessionBooks:int = o.item.session[ a ].books; totalBooksForWeek += sessionBooks; } var s:String = b + LineSeries( o.element ).displayName + /b\n; s += bBooks:/b + LineSeriesItem( o.chartItem ).yValue + \n; s += bBook rate:/b + o.item.session[ seriesIndex ].bookrate + \n; s += bStatus:/b + o.item.session[ seriesIndex ].status + \n; s += bTotal Books for All Sessions:/b + totalBooksForWeek + \n; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Almost there! I assigned an id to each series - s1, s2, s3 etc. Below I am trying to loop for the total amount of series. The values show up for bookrate and status but they are the incorrect values for some of the datapoints. If I define a as 0, 1 or 3 without the loop the values are correct for just that particular series. Why isn't the for loop or while
[flexcoders] Re: Displaying additional child nodes in Datatip
Below is my DataTipFunction. The commented part on top works fine. However, there is additional information that I need to include from the XML file into the data tip. When I mouse over the datapoint I would like to retrieve from the XML file the additional child nodes that correspond with that datapoint. I feel that I am very close and missing one piece. How can I accomplish this dynamically by displaying the correct data for the series? Note, I can have more than 1 series in the XML data file. private function DTPFunction(o:HitData):String { //WORKS for data that is used on the chart x and y values //var s:String; //s = b + LineSeries(o.element).displayName + /b \n; //s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + series. o.item.session.bookrate + \n ; //s += bStatus:/b + o.item.session.status + \n ; //END WORKS var s:String; var a:int=0; var fNode:XML = chart.dataProvider[0]; if ((LineSeries(o.element).displayName) == fNode.child('sessionname')) { s = b + o.item.session.sessionname[a] + /b \n; s += bBooks:/b + o.item.session.books[a] + \n + bBook rate:/b + o.item.session.bookrate[a] + \n ; s += bStatus:/b + o.item.session.status[a] + /size\n ; a++ } return s; } Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: If the dataTipFunction doesn't give you enough flexibility, you could try a dataTipRenderer. In either case, you can drill down to the child nodes there. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: The line chart displays multiple series created with the seriesDataFunction (assigning the x and y points). The XML file includes additional child nodes per item that I would like to include in the datatip. How do I include those items? When I use o.item.rate, it lists all the rates for each series in the datatip. Thanks. Monette
[flexcoders] Re: Displaying additional child nodes in Datatip
Yeah, you're very close. Now it's just a matter of xml. I'd start by tracing o. If the children are still in o, then drill down. Otherwise, you'll have to go and find the nodes; like you're trying below. Some things that you can start with: trace( o.toXMLString() ); var myXMLChildren:XMLList = o.children(); o.child(myProperty)[0].valueOf(); -TH --- In flexcoders@yahoogroups.com, Monette monett...@... wrote: Below is my DataTipFunction. The commented part on top works fine. However, there is additional information that I need to include from the XML file into the data tip. When I mouse over the datapoint I would like to retrieve from the XML file the additional child nodes that correspond with that datapoint. I feel that I am very close and missing one piece. How can I accomplish this dynamically by displaying the correct data for the series? Note, I can have more than 1 series in the XML data file. private function DTPFunction(o:HitData):String { //WORKS for data that is used on the chart x and y values //var s:String; //s = b + LineSeries(o.element).displayName + /b \n; //s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + series. o.item.session.bookrate + \n ; //s += bStatus:/b + o.item.session.status + \n ; //END WORKS var s:String; var a:int=0; var fNode:XML = chart.dataProvider[0]; if ((LineSeries(o.element).displayName) == fNode.child('sessionname')) { s = b + o.item.session.sessionname[a] + /b \n; s += bBooks:/b + o.item.session.books[a] + \n + bBook rate:/b + o.item.session.bookrate[a] + \n ; s += bStatus:/b + o.item.session.status[a] + /size\n ; a++ } return s; } Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: If the dataTipFunction doesn't give you enough flexibility, you could try a dataTipRenderer. In either case, you can drill down to the child nodes there. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: The line chart displays multiple series created with the seriesDataFunction (assigning the x and y points). The XML file includes additional child nodes per item that I would like to include in the datatip. How do I include those items? When I use o.item.rate, it lists all the rates for each series in the datatip. Thanks. Monette
[flexcoders] Re: Displaying additional child nodes in Datatip
Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session sessionnameBaseline/sessionname books0/books bookrate2/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate6/bookrate statusred/status /session /week week name=2 session sessionnameBaseline/sessionname books0/books bookrate3/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate1/bookrate statusred/status /session /week /items What are your thoughts? Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb timh...@... wrote: Yeah, you're very close. Now it's just a matter of xml. I'd start by tracing o. If the children are still in o, then drill down. Otherwise, you'll have to go and find the nodes; like you're trying below. Some things that you can start with: trace( o.toXMLString() ); var myXMLChildren:XMLList = o.children(); o.child(myProperty)[0].valueOf(); -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Below is my DataTipFunction. The commented part on top works fine. However, there is additional information that I need to include from the XML file into the data tip. When I mouse over the datapoint I would like to retrieve from the XML file the additional child nodes that correspond with that datapoint. I feel that I am very close and missing one piece. How can I accomplish this dynamically by displaying the correct data for the series? Note, I can have more than 1 series in the XML data file. private function DTPFunction(o:HitData):String { //WORKS for data that is used on the chart x and y values //var s:String; //s = b + LineSeries(o.element).displayName + /b \n; //s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + series. o.item.session.bookrate + \n ; //s += bStatus:/b + o.item.session.status + \n ; //END WORKS var s:String; var a:int=0; var fNode:XML = chart.dataProvider[0]; if ((LineSeries(o.element).displayName) == fNode.child('sessionname')) { s = b + o.item.session.sessionname[a] + /b \n; s += bBooks:/b + o.item.session.books[a] + \n + bBook rate:/b + o.item.session.bookrate[a] + \n ; s += bStatus:/b + o.item.session.status[a] + /size\n ; a++ } return s; } Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: If the dataTipFunction doesn't give you enough flexibility, you could try a dataTipRenderer. In either case, you can drill down to the child nodes there. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: The line chart displays multiple series created with the seriesDataFunction (assigning the x and y points). The XML file includes additional child nodes per item that I would like to include in the datatip. How do I include those items? When I use o.item.rate, it lists all the rates for each series in the datatip. Thanks. Monette
[flexcoders] Re: Displaying additional child nodes in Datatip
Assuming that you have assigned an id to each series (baseline,2009-8), you could use something like this: private function dtFunction( o:HitData ):String { var index:int = ( LineSeries( o.element ).id == baseline ) ? 0 : 1; var s:String = bBook rate:/b + o.item.session[ index ].bookrate; return s; } -TH --- In flexcoders@yahoogroups.com, Monette monett...@... wrote: Tim, Your recommendation sounds so simple and logical but I am not getting it to work. My problem is parsing the XML and returning the correct info for the datapoints. Following, is a sample of my XML file: items week name=1 session sessionnameBaseline/sessionname books0/books bookrate2/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate6/bookrate statusred/status /session /week week name=2 session sessionnameBaseline/sessionname books0/books bookrate3/bookrate statusred/status /session session sessionname2009-8/sessionname books0/books bookrate1/bookrate statusred/status /session /week /items What are your thoughts? Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: Yeah, you're very close. Now it's just a matter of xml. I'd start by tracing o. If the children are still in o, then drill down. Otherwise, you'll have to go and find the nodes; like you're trying below. Some things that you can start with: trace( o.toXMLString() ); var myXMLChildren:XMLList = o.children(); o.child(myProperty)[0].valueOf(); -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: Below is my DataTipFunction. The commented part on top works fine. However, there is additional information that I need to include from the XML file into the data tip. When I mouse over the datapoint I would like to retrieve from the XML file the additional child nodes that correspond with that datapoint. I feel that I am very close and missing one piece. How can I accomplish this dynamically by displaying the correct data for the series? Note, I can have more than 1 series in the XML data file. private function DTPFunction(o:HitData):String { //WORKS for data that is used on the chart x and y values //var s:String; //s = b + LineSeries(o.element).displayName + /b \n; //s += bBooks:/b + LineSeriesItem(o.chartItem).yValue + \n + bBook rate:/b + series. o.item.session.bookrate + \n ; //s += bStatus:/b + o.item.session.status + \n ; //END WORKS var s:String; var a:int=0; var fNode:XML = chart.dataProvider[0]; if ((LineSeries(o.element).displayName) == fNode.child('sessionname')) { s = b + o.item.session.sessionname[a] + /b \n; s += bBooks:/b + o.item.session.books[a] + \n + bBook rate:/b + o.item.session.bookrate[a] + \n ; s += bStatus:/b + o.item.session.status[a] + /size\n ; a++ } return s; } Thanks. Monette --- In flexcoders@yahoogroups.com, turbo_vb TimHoff@ wrote: If the dataTipFunction doesn't give you enough flexibility, you could try a dataTipRenderer. In either case, you can drill down to the child nodes there. -TH --- In flexcoders@yahoogroups.com, Monette monettemm@ wrote: The line chart displays multiple series created with the seriesDataFunction (assigning the x and y points). The XML file includes additional child nodes per item that I would like to include in the datatip. How do I include those items? When I use o.item.rate, it lists all the rates for each series in the datatip. Thanks. Monette
[flexcoders] Re: Displaying additional child nodes in Datatip
If the dataTipFunction doesn't give you enough flexibility, you could try a dataTipRenderer. In either case, you can drill down to the child nodes there. -TH --- In flexcoders@yahoogroups.com, Monette monett...@... wrote: The line chart displays multiple series created with the seriesDataFunction (assigning the x and y points). The XML file includes additional child nodes per item that I would like to include in the datatip. How do I include those items? When I use o.item.rate, it lists all the rates for each series in the datatip. Thanks. Monette