[flexcoders] CodeProject for Flex?
I've used the CodeProject site (http://www.codeproject.com/) a fair bit, particularly for .Net development. I was wondering if there is anything remotely similar for Flex development? If there isn't, would others find a resource of this kind useful?
[flexcoders] Re: Clipping of charts
Isn't this what the filterData property of the Series class is for? If you set it to false then data points outside the x and y axis ranges won't be filtered out. Graham --- In flexcoders@yahoogroups.com, Josh McDonald [EMAIL PROTECTED] wrote: I too am surprised that this can't be more easily done, it's something I get asked for nearly every time we have a barchart. -J On Thu, Mar 13, 2008 at 2:14 AM, Brendan Meutzner [EMAIL PROTECTED] wrote: Maybe allowing them to change the vertical axis between Logarithmic and Linear might be an easier solution for this? Brendan On Wed, Mar 12, 2008 at 11:11 AM, Andrej van der Zee [EMAIL PROTECTED] wrote: Yes that's what I just did. I had to take some special actions for the datatips since it should still give the original values, and not the chopped ones. I am doing this to give the user the option through a slider to set the X-axis so that the smaller bars (which are stacked and composed of subbars) become better visible. I my setup, sometimes it is just one large bar that makes it hard to see the smaller stacked ones. Cheers, Andrej --- Brendan Meutzner [EMAIL PROTECTED] bmeutzner%40gmail.com wrote: Just off the top of my head, I believe the cause of this is when the bar chart renderer goes to draw, it's getting NaN values because the transform methods used to get x,y position against axis values don't exist. My suggestion, if you know the maximum value of your axis, retool your dataProvider struct to reset the yField value of your series data to that maximum. That'd be the easiest way. Out of curiosity... why are you setting the maximum manually if it's causing this problem? Brendan On Wed, Mar 12, 2008 at 8:37 AM, mavdzee [EMAIL PROTECTED] mavdzee%40yahoo.co.uk wrote: Hi, I noticed that if I have a BarChart and set the maximum manually to a value smaller than some bars in the chart (and hence don't fit in the chart), then these bars are completely dropped from the chart. Is there an easy way to show these bars anyway and fill it to the manually set maximum? Cheers, Andrej -- Brendan Meutzner http://www.meutzner.com/blog/ __ Sent from Yahoo! Mail. The World's Favourite Email http://uk.docs.yahoo.com/nowyoucan.html -- Brendan Meutzner http://www.meutzner.com/blog/ -- Therefore, send not to know For whom the bell tolls, It tolls for thee. :: Josh 'G-Funk' McDonald :: 0437 221 380 :: [EMAIL PROTECTED]
[flexcoders] Re: SpiderChart
I've not heard the term Spider Chart before but I think http://mark-shepherd.com/blog/springgraph-flex-component/ is the type of chart you mean. Graham --- In flexcoders@yahoogroups.com, lruinelli [EMAIL PROTECTED] wrote: Hello, does it exist in flex any SpiderChart implementation example? This is a very used type of chart...I need it for my application, but I think is quite stupid develop a custom component by zero...if something already exists! thanks Saluti Lorenzo
[flexcoders] Re: Datatip date scaling problem:
Try setting your own function as the chart's datatip function. I'm pretty sure it's detailed in both the Live Docs and the language reference. --- In flexcoders@yahoogroups.com, Zhu Haifeng [EMAIL PROTECTED] wrote: Hi, I am trying to plot a simple scalable line chart with date as x-axis and some value as y-axis. I used DateTimeAxis for the x-axis and it is able to nicely scale the labels to fit the axis width when I scale the data range. However, as the label rescales, so does the date in the datatip: therefore I get the dates of many data points to be the same... For example, as I make the range larger, the axis label becomes Jan 06, Feb 06, etc., instead of each consecutive date - which is fine. However, the date of the datatip for that entire month also becomes Jan 06 instead of each individual date. Is there anyway I can correct this? Below is my code: mx:VBox verticalGap=0 width=70% verticalScrollPolicy=off horizontalAlign=right mx:CartesianChart id=bigChart showDataTips=true dataProvider={mainData} width=100% height=100% mx:horizontalAxis mx:DateTimeAxis dataUnits=days / /mx:horizontalAxis mx:horizontalAxisRenderer mx:AxisRenderer showLine=false / /mx:horizontalAxisRenderer mx:verticalAxis mx:LinearAxis baseAtZero=false/ /mx:verticalAxis mx:verticalAxisRenderer mx:AxisRenderer styleName=vAxis visible=true / /mx:verticalAxisRenderer mx:series mx:LineSeries yField=GLUCOSE xField=DATE form=curve/ /mx:series mx:annotationElements mx:Canvas width=100% height=100% buttonMode=true mouseDown=setMouseDown(bigChart) / /mx:annotationElements /mx:CartesianChart
[flexcoders] Re: charting stacked areas and unstacked lines on datetime x axis
Hi Mike, It sounds to me as though you are wanting to producing what is essentially a specialisation of a line series. Would it perhaps make sense to extend the line series class so that it draws the wedge area? That way you wouldn't have to use what seems like a hacky approach. Graham P.S. its an interesting feature that lines are only rendered when both ends are within the xy ordinates of the axes can be solved by setting the filterData property of the series to false. But there is some bugginess that results from doing that, so only do it if it's really necessary. --- In flexcoders@yahoogroups.com, mcoulten [EMAIL PROTECTED] wrote: Hello Flex Coders!! I have just joined the group as I've got stuck on this Flex charting problem. I need to plot a line that ends with a wedge shaped area - looking like a broom on its side, brush to the right, and then plot some dashed lines across the same chart. The minField property doesnt seem to work on a DateTimeAxis (requires a category) so that was no good. Using a stacked area chart did work and by setting the series I wanted to appear as a just a line with an area but no fill and then setting the y axis minimum to 0 so the line didnt plot from the last non zero data point to the x axis worked OK (its an interesting feature that lines are only rendered when both ends are within the xy ordinates of the axes). But then when I tried to add a non stacked line the compiler could not resolve the stacked and unstacked series together. I tried defining them as a secondseries group tag on a 2y axis as well. No joy. On looking into stacking classes these are all topped with warnings that they are not for normal use. Anyone got a good idea on how to get my lines plotting unstacked but over the top of some stacked areas? Thanks Mike
[flexcoders] Re: charting stacked areas and unstacked lines on datetime x axis
I've not done exactly what you are looking for but I've done some extensions of LineSeries so if you get stuck feel free to ask. Graham --- In flexcoders@yahoogroups.com, mcoulten [EMAIL PROTECTED] wrote: yes, that sounds like a good approach, anyone done it already? always worth asking ;-) Thanks Graham Mike --- In flexcoders@yahoogroups.com, g_odds g_odds@ wrote: Hi Mike, It sounds to me as though you are wanting to producing what is essentially a specialisation of a line series. Would it perhaps make sense to extend the line series class so that it draws the wedge area? That way you wouldn't have to use what seems like a hacky approach. Graham P.S. its an interesting feature that lines are only rendered when both ends are within the xy ordinates of the axes can be solved by setting the filterData property of the series to false. But there is some bugginess that results from doing that, so only do it if it's really necessary. --- In flexcoders@yahoogroups.com, mcoulten mcoulten@ wrote: Hello Flex Coders!! I have just joined the group as I've got stuck on this Flex charting problem. I need to plot a line that ends with a wedge shaped area - looking like a broom on its side, brush to the right, and then plot some dashed lines across the same chart. The minField property doesnt seem to work on a DateTimeAxis (requires a category) so that was no good. Using a stacked area chart did work and by setting the series I wanted to appear as a just a line with an area but no fill and then setting the y axis minimum to 0 so the line didnt plot from the last non zero data point to the x axis worked OK (its an interesting feature that lines are only rendered when both ends are within the xy ordinates of the axes). But then when I tried to add a non stacked line the compiler could not resolve the stacked and unstacked series together. I tried defining them as a secondseries group tag on a 2y axis as well. No joy. On looking into stacking classes these are all topped with warnings that they are not for normal use. Anyone got a good idea on how to get my lines plotting unstacked but over the top of some stacked areas? Thanks Mike
[flexcoders] Re: Scaling Custom Components
If you just want to remove all the children, do something like this: while (this.numChildren() 0) this.removeChildAt(0); --- In flexcoders@yahoogroups.com, Alex Harui [EMAIL PROTECTED] wrote: Nope, it is essentially an array. If I have var a:Array = [ Nate, Alex]; a[2] = Bjorn; a.shift(); a[2] is no longer Bjorn, you are now at a[1]. From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Bjorn Schultheiss Sent: Tuesday, March 27, 2007 6:19 PM To: flexcoders@yahoogroups.com Subject: Re: [flexcoders] Scaling Custom Components Hey Alex, if 0 == childA can you insert childB at 99 for example. if so if you remove childA does childB's index change? can you ensure that you're child will remain at an index? On 28/03/2007, at 11:12 AM, Alex Harui wrote: Children renumber after one is removed 0 = childA 1 = childB 2 = childC After removeChildAt(0) 0 = childB 1 = childC Look at the code for removeAllChildren. It will either removeChildAt(0) j times or iterate backwards. From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Nate Pearson Sent: Tuesday, March 27, 2007 5:22 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Scaling Custom Components I have a custom component that adds multiple shapes during UpdateDisplayList. When I scale the browser it calls update display list and draws over all of my shapes. I have tried: j = this.numChildren; for (i=0; ij; i++){ this.removeChildAt(i); } Before I write redraw my shapes in UpdateDisplayList. I always get an outofbounds error after i exceed numAutomationChildren(?). If i try the same loop with numAutomationChildren nothing disappears. It won't let me call this.removeAllChildren (i think because I'm extending an UIComponent and not a Container)! Isnt there a way for me to get all those shapes outta there? Maybe I'm taking the wrong approach. Thanks in advance, Nate
[flexcoders] Re: Charts - Rotated labels not visible on horizontal axis
Does the chart work correctly if you have no label rotation? Graham --- In flexcoders@yahoogroups.com, deepbits [EMAIL PROTECTED] wrote: Hi there, I am trying to use labelRotation (45) on a Horizontal Axis but it does not work. Background: I get data for the charts through an HTTPService, so there is a few seconds lag between the graph (the axis legend etc.) appearing and it getting populated with data. My horizontal axis is a datetime axis. I see the following strange behavior. When the graph appears without any data, the horizontal axis label is rotated to 45. At this time there is just one label at the right end point of the axis 2 jan 1970. I assume this is some default value which Flex is assuming. But when I do get the data and the chart gets drawn, the labels are no longer visible(!!!) and also the formatting that I had done on the horizontal axis is lost. The standard formatting with the thick gray line takes effect. The expected output would be to see all the labels rotated to an angle of 45. Can someone help me to understand why this is happening and set this right? Thanks Deepa.
[flexcoders] Re: Strange List behaviour
Thanks for all your help. Doug, your idea gave me a different idea of something to try which seems to work mx:Model id=listData {listService.lastResult.things} /mx:Model mx:List id=list dataProvider={listData.thing} labelField=name / I still don't understand why that works and what I previously had doesn't, because you are referencing exactly the same object (i.e. an array) but in a different way. I guess it's all to do with the crazy Model... --- In flexcoders@yahoogroups.com, Doug Lowder [EMAIL PROTECTED] wrote: It seems to me that you need to specify a property of the model as the list's dataprovider, instead of using the model itself. I haven't tested this, but I'd be curious to see what happens if you try the following changes: mx:Model id=listData things{listService.lastResult.things.thing}/things /mx:Model mx:List id=list dataProvider={listData.things} labelField=name / --- In flexcoders@yahoogroups.com, g_odds g_odds@ wrote: I am attempting to populate a List from Model filled by the result of an HTTPService. However, the list only shows one entry as [object Object], [object Object],... As far as I am aware that is the result of a toString() on a collection. But why is the List not using that collection to populate itself properly (as I want it to, hehe). Thanks in advance for any help. Graham The code: ... mx:HTTPService id=listService url=... / mx:Model id=listData {listService.lastResult.things.thing} /mx:Model mx:List id=list dataProvider={listData} labelField=name / ... and the XML that results from the HTTPService send: things thing nameMyName/name valueMyValue/value thing ... things
[flexcoders] Strange List behaviour
I am attempting to populate a List from Model filled by the result of an HTTPService. However, the list only shows one entry as [object Object], [object Object],... As far as I am aware that is the result of a toString() on a collection. But why is the List not using that collection to populate itself properly (as I want it to, hehe). Thanks in advance for any help. Graham The code: ... mx:HTTPService id=listService url=... / mx:Model id=listData {listService.lastResult.things.thing} /mx:Model mx:List id=list dataProvider={listData} labelField=name / ... and the XML that results from the HTTPService send: things thing nameMyName/name valueMyValue/value thing ... things
[flexcoders] Re: Strange List behaviour
I need the model because I use the data elsewhere as well. I thought the labelField property of List told it which property to use for labels (hence my setting it to name). I also don't think I need another layer of properties in the List result because I should be able to use Objects (so I can get the value property of the Object from the List without having to do lots of silly stuff). Graham --- In flexcoders@yahoogroups.com, Tom Chiverton [EMAIL PROTECTED] wrote: On Wednesday 07 Mar 2007, g_odds wrote: I am attempting to populate a List from Model filled by the result of an HTTPService. However, the list only shows one entry as [object Object], [object Object],... As far as I am aware that is the result Firstly, you don't need the Model tag: mx:List id=list dataProvider={listService.lastResult.things.things} labelField=name / Maybe you need to tell List what properties it should be using for labels. It also looks like you maybe need one extra level of properties in the service results. -- Tom Chiverton Helping to enormously embrace ubiquitous experiences On: http://thefalken.livejournal.com This email is sent for and on behalf of Halliwells LLP. Halliwells LLP is a limited liability partnership registered in England and Wales under registered number OC307980 whose registered office address is at St James's Court Brown Street Manchester M2 2JF. A list of members is available for inspection at the registered office. Any reference to a partner in relation to Halliwells LLP means a member of Halliwells LLP. Regulated by the Law Society. CONFIDENTIALITY This email is intended only for the use of the addressee named above and may be confidential or legally privileged. If you are not the addressee you must not read it and must not use any information contained in nor copy it nor inform any person other than Halliwells LLP or the addressee of its existence or contents. If you have received this email in error please delete it and notify Halliwells LLP IT Department on 0870 365 8008. For more information about Halliwells LLP visit www.halliwells.com.
[flexcoders] Re: Custom Component Styles
Hi Stephen, The link you posted was what I was attempted to point people to in my first post. What I posted is indeed similar to what the Live Docs suggest but with a fairly vital twist. That suggested by the Live Docs means if a user defines only one of the component's style attributes using a css file then none of the defaults will be set (if you look at the code with that in mind it's quite clear why), thereby forcing the user to define all style attributes in the css file. Where as the code I posted (picked up from the charting code) allows the component to behave as those created for the framework, i.e. use the default value for any style attribute not specified by the user's css file. Hope that clears things up. Graham --- In flexcoders@yahoogroups.com, Stephen Gilson [EMAIL PROTECTED] wrote: Hi Graham, Isn't that similar to the example in the docs here: http://livedocs.adobe.com/flex/201/html/skinstyle_149_7.html Stephen From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of g_odds Sent: Monday, February 26, 2007 11:55 AM To: flexcoders@yahoogroups.com Subject: [flexcoders] Re: Custom Component Styles It would appear the link I gave is broken. But nevermind, I have found the solution by delving through the framework source code, where the developers do it differently from what is documented in the Live Docs. The solution is to use something along the lines of: private static var stylesInitialised:Boolean = initStyles(); private static function initStyles():Boolean { var sd:CSSStyleDeclaration = StyleManager.getStyleDeclaration(AreaZoom); if (!sd) { sd = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(AreaZoom, sd, false); } sd.defaultFactory = function():void { this.borderColour = 0x017C98; this.borderAlpha = 1; this.fillColour = 0x96CEFD; this.fillAlpha = 0.2; } return true; } Graham --- In flexcoders@yahoogroups.com mailto:flexcoders%40yahoogroups.com , g_odds g_odds@ wrote: I have been looking through the Adobe documentation for a few hours now and have no suggestion of how to achieve what I want to do. I have a custom component that has some custom style attributes. I would like these style attributes to have default values. So, I followed what is described in the Live Docs (http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/js/html/wwhelp.h tm?href=Part2_DevApps_048_1.html http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/js/html/wwhelp.h tm?href=Part2_DevApps_048_1.html ). All is fine and dandy, except for a (rather major?) problem. This method of setting defaults forces someone using the component to set all the style values or none, because if they set a single style attribute the default values are not set for any of the other attributes. Am I missing something or is this styling malarky complicated? Cheers, Graham
[flexcoders] Re: Chart annotationElements based on series data
Seeing as the annotation element would be tied so tightly to the details of the individual series, would it maybe be an idea to create your own series that draws the series and, optionally, the curve annotation? That way it'd simplify accessing the series data too. The downside would be that you end up with something that's maybe not particularly flexible. Graham --- In flexcoders@yahoogroups.com, Ely Greenfield [EMAIL PROTECTED] wrote: There's no obvious way to do what you're doing. The annotation element has access to the chart, so you could iterate over the series of the chart, and ask for their data. To get access to what is currently visible on screen, you could ask for their renderData, then look at the filteredCache inside of that. Of course, now you're tying your annotation element pretty tightly to the details and implementation of the individual series. Ely. From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of durnelln Sent: Monday, February 26, 2007 7:45 AM To: flexcoders@yahoogroups.com Subject: [flexcoders] Chart annotationElements based on series data Hi all - and hopefully Ely ;-) I have a LineChart containing a LineSeries which updates automagically from an arrayCollection - works great. I have also created a simple annotationElements element which renders a horizontal line across the chart at a configured value. What I'm trying to do now is to create a more complex annotationElement which draws a nice curve across the chart based on the data point values. So this time I need to access the data values themselves to perform some calculations. How do I get hold of the lineseries data values from my annotationElement? Similarly, is there a way to retrieve only the data points that are currently visible on the chart? I've had a quick poke around the charting help files and source code but I'm only getting more confused... Thanks, Nick.
[flexcoders] Custom Component Styles
I have been looking through the Adobe documentation for a few hours now and have no suggestion of how to achieve what I want to do. I have a custom component that has some custom style attributes. I would like these style attributes to have default values. So, I followed what is described in the Live Docs (http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part2_DevApps_048_1.html). All is fine and dandy, except for a (rather major?) problem. This method of setting defaults forces someone using the component to set all the style values or none, because if they set a single style attribute the default values are not set for any of the other attributes. Am I missing something or is this styling malarky complicated? Cheers, Graham
[flexcoders] Re: Custom Component Styles
It would appear the link I gave is broken. But nevermind, I have found the solution by delving through the framework source code, where the developers do it differently from what is documented in the Live Docs. The solution is to use something along the lines of: private static var stylesInitialised:Boolean = initStyles(); private static function initStyles():Boolean { var sd:CSSStyleDeclaration = StyleManager.getStyleDeclaration(AreaZoom); if (!sd) { sd = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(AreaZoom, sd, false); } sd.defaultFactory = function():void { this.borderColour = 0x017C98; this.borderAlpha = 1; this.fillColour = 0x96CEFD; this.fillAlpha = 0.2; } return true; } Graham --- In flexcoders@yahoogroups.com, g_odds [EMAIL PROTECTED] wrote: I have been looking through the Adobe documentation for a few hours now and have no suggestion of how to achieve what I want to do. I have a custom component that has some custom style attributes. I would like these style attributes to have default values. So, I followed what is described in the Live Docs (http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part2_DevApps_048_1.html). All is fine and dandy, except for a (rather major?) problem. This method of setting defaults forces someone using the component to set all the style values or none, because if they set a single style attribute the default values are not set for any of the other attributes. Am I missing something or is this styling malarky complicated? Cheers, Graham
[flexcoders] Re: Apparent Bug in LineCharts - filterData property Kills Data Tips
Extend the LineSeries class. Override the findDataPoitns function. In its body, paste a copy of that from the original LineSeries class. Change the if (!isNaN(v.yFilter) !isNaN(v.xFilter)) to if (!isNaN(v.yNumber) !isNaN(v.xNumber)). Replace all _renderData references with just renderData. I thought that last bit was obvious because I assumed you'd actually looked at the source code properly. Graham --- In flexcoders@yahoogroups.com, thegiffman [EMAIL PROTECTED] wrote: Have you figured out a way to do this by extending the LineSeries class, rather than replacing it? I can copy the code in LineSeries to my own file, and have the compiler use that, rather than the internal one. Then I can do the fix. However, I cannot actually do it by extending LineSeries, because findDataPoints references private variables and functions (like nearly all the mx functions we'd like to extend :-( ). --- In flexcoders@yahoogroups.com, g_odds g_odds@ wrote: I noticed this bug several weeks ago and fortunately I managed to find the problem and create a workaround. You'll have to have a poke around in the LineSeries source code to fully understand what I'm saying here. You need to extend the LineSeries class and extend the findDataPoints function. In the LineSeries' findDataPoints function the if (!isNaN(v.yFilter) !isNaN(v.xFilter)) condition will fail because when filterData = false and the filterCache function of the series is called (this happens when the min or max of an axis is set because the mapping changes) the .yFilter and xFilter properties will be set to NaN for the points. That makes sense in it's own way, but the upshot of that is that the minItem variable is never set and, therefore, an empty array will always be returned. So the fix is to copy the code from the LineSeries source code and in your overriding function change the if (!isNaN(v.yFilter) !isNaN(v.xFilter)) condition to if (!isNaN(v.yNumber) !isNaN(v.xNumber)). So yes, this is a nasty little hack but I haven't found any other way to solve the problem. Hope that helps, Graham --- In flexcoders@yahoogroups.com, thegiffman thegiffman@ wrote: If I take the standard line chart demo code, and add showDataTips to the line chart, they display normally. Yet, the moment I set filterData to false on one of the LineSeries, it kills data tips for this series. I think this is a bug in the charting components, as the data tips and the filterData attribute do not conflict for column charts. ?xml version=1.0? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; mx:Script![CDATA[ import mx.collections.ArrayCollection; [Bindable] public var expenses:ArrayCollection = new ArrayCollection([ {Month: Jan, Profit: 2000, Expenses: 1500, Amount: 450}, {Month: Feb, Profit: 1000, Expenses: 200, Amount: 600}, {Month: Mar, Profit: 1500, Expenses: 500, Amount: 300} ]); ]]/mx:Script mx:LineChart id=myChart dataProvider={expenses} showDataTips=true mx:seriesFilters mx:Array/ /mx:seriesFilters mx:horizontalAxis mx:CategoryAxis dataProvider={expenses} categoryField=Month/ /mx:horizontalAxis mx:series mx:LineSeries yField=Profit displayName=Profit filterData=false/ mx:LineSeries yField=Expenses displayName=Expenses/ mx:LineSeries yField=Amount displayName=Amount/ /mx:series /mx:LineChart /mx:Application
[flexcoders] Re: Negative plane in Column Chart
In Ely Greenfield's Chart Sampler application (http://demo.quietlyscheming.com/ChartSampler/app.html) in the Axes category, the Linear sample produces negative columns using the sliders if that's what you are after. The source is available. Graham --- In flexcoders@yahoogroups.com, Mikhail Shevchuk [EMAIL PROTECTED] wrote: How to implement such a thing? Simple defining negative values doesn't help. These columns just not displayed. If this is impossible within Column Chart, could you please advise me where should I look for? Thanks. -- A vivid and creative mind characterizes you.
[flexcoders] Re: Apparent Bug in LineCharts - filterData property Kills Data Tips
Hehe, sorry, I didn't mean to come across as a meanie. An annoyance at work put me in a bad mood. I'm glad that's helped. Graham --- In flexcoders@yahoogroups.com, thegiffman [EMAIL PROTECTED] wrote: It wasn't for lack of looking or trying. I saw that _renderData has a public getter, but I was still stuck on: hd.dataTipFunction = formatDataTip; formatDataTip is a private function. But then, of course, the contents of formatDataTip don't access anything private... Doh! Thanks, Graham. - Giff
[flexcoders] Re: Tutorial zoom in a linechart
You could filter the data provider so it only has the data points that are on the screen. Graham --- In flexcoders@yahoogroups.com, Dana Gutride [EMAIL PROTECTED] wrote: Does anybody have any ideas on how to do this? On 2/20/07, Dana Gutride [EMAIL PROTECTED] wrote: I have an additional question on this topic. If you just reset the min and max on the horizontal axis, how would you get the vertical axis to recalculate the min/max values that it should show? I've tried calling validateNow() on the chart, but it seems to still take into account the entire set of data behind the line series instead of just what's currently visible. Dana On 2/7/07, Ely Greenfield [EMAIL PROTECTED] wrote: Hi Graham. That would work just fine. It forces the chart to do some extra work, b/c it still has to process those out of bounds data values far enough to decide they're out of bounds. So be alert for performance issues. But other than that, it should work fine. Ely. -- *From:* flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] *On Behalf Of *g_odds *Sent:* Wednesday, February 07, 2007 1:04 AM *To:* flexcoders@yahoogroups.com *Subject:* [flexcoders] Re: Tutorial zoom in a linechart Everywhere seems to use the slicing the data set style approach. Why would one not set the minimum and maximum of an axis to do this? Graham --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.com, Brendan Meutzner bmeutzner@ wrote: As Mikhail pointed out, if by zoom you mean changing the range shown along the horizontal axis, this example should help. Just right click to view the source: http://examples.adobe.com/flex2/inproduct/sdk/dashboard/dashboard.html Brendan On 2/7/07, Mikhail Shevchuk mikhail.shevchuk@ wrote: I suppose that it is not difficult to implement. During zooming, just store smaller (zoomed area, relatively to the whole chart) array collection and change a dataprovider for the component. 2007/2/7, bcncgn3 oliver.bruehl@: I have linechart and i want that the user can zoom in in the horizontal axis selecting an area on the chart? Someone knows a tutorial which explains how to program this? -- A vivid and creative mind characterizes you. -- Brendan Meutzner Stretch Media - RIA Adobe Flex Development brendan.meutzner@ http://www.stretchmedia.ca
[flexcoders] Re: Apparent Bug in LineCharts - filterData property Kills Data Tips
I noticed this bug several weeks ago and fortunately I managed to find the problem and create a workaround. You'll have to have a poke around in the LineSeries source code to fully understand what I'm saying here. You need to extend the LineSeries class and extend the findDataPoints function. In the LineSeries' findDataPoints function the if (!isNaN(v.yFilter) !isNaN(v.xFilter)) condition will fail because when filterData = false and the filterCache function of the series is called (this happens when the min or max of an axis is set because the mapping changes) the .yFilter and xFilter properties will be set to NaN for the points. That makes sense in it's own way, but the upshot of that is that the minItem variable is never set and, therefore, an empty array will always be returned. So the fix is to copy the code from the LineSeries source code and in your overriding function change the if (!isNaN(v.yFilter) !isNaN(v.xFilter)) condition to if (!isNaN(v.yNumber) !isNaN(v.xNumber)). So yes, this is a nasty little hack but I haven't found any other way to solve the problem. Hope that helps, Graham --- In flexcoders@yahoogroups.com, thegiffman [EMAIL PROTECTED] wrote: If I take the standard line chart demo code, and add showDataTips to the line chart, they display normally. Yet, the moment I set filterData to false on one of the LineSeries, it kills data tips for this series. I think this is a bug in the charting components, as the data tips and the filterData attribute do not conflict for column charts. ?xml version=1.0? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; mx:Script![CDATA[ import mx.collections.ArrayCollection; [Bindable] public var expenses:ArrayCollection = new ArrayCollection([ {Month: Jan, Profit: 2000, Expenses: 1500, Amount: 450}, {Month: Feb, Profit: 1000, Expenses: 200, Amount: 600}, {Month: Mar, Profit: 1500, Expenses: 500, Amount: 300} ]); ]]/mx:Script mx:LineChart id=myChart dataProvider={expenses} showDataTips=true mx:seriesFilters mx:Array/ /mx:seriesFilters mx:horizontalAxis mx:CategoryAxis dataProvider={expenses} categoryField=Month/ /mx:horizontalAxis mx:series mx:LineSeries yField=Profit displayName=Profit filterData=false/ mx:LineSeries yField=Expenses displayName=Expenses/ mx:LineSeries yField=Amount displayName=Amount/ /mx:series /mx:LineChart /mx:Application
[flexcoders] Re: Adding annotationElements programatically
I believe you programmatically add to and remove from annotationElements in a similar fashion to how it is done for series, i.e. var temp:Array = annotationElements; temp.push(myNewAnnotationElement); annotationElements = temp; Try that and see if it solves the problem. Cheers, Graham --- In flexcoders@yahoogroups.com, durnelln [EMAIL PROTECTED] wrote: I am also trying to add annotationElements programatically and have a slightly different problem. My annotationElement uses its dataTransform object to convert data values into screen coordinates. If added to the chart's annotationElements in MXML it works fine. However when I try to add it programatically in Actionscript (as below) the annotationElement is instantiated but its dataTranform remains null. Am I missing something? Is there an extra step required to set up the annotationElement's dataTransform object? Thanks, Nick. --- In flexcoders@yahoogroups.com, Daniel Tuppeny d.tuppeny@ wrote: My problem was this: payChart.annotationElements.push(bfl); It doesn't seem to work, but this: payChart.annotationElements = payChart.annotationElements.concat(bfl); does. Seems a little ott (because I'm guessing this will re-render the other annotationElements on the graph), but it works! From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Daniel Tuppeny Sent: 26 July 2006 10:24 To: flexcoders@yahoogroups.com Subject: [flexcoders] Adding annotationElements programatically Hi all, I've got this in my chart, which works: chart:annotationElements bestfit:Linear dataProvider={pmService.GetBestFitLines.lastResult.LinearBestFit} / /chart:annotationElements But now I want to do it programatically, so I've removed it, and added this script: var bfl:Quadratic = new Quadratic(); payChart.annotationElements.push(bfl); bfl.dataProvider = pmService.GetBestFitLines.lastResult.QuadraticBestFit; // Added to try and force things to update! payChart.invalidateDisplayList(); payChart.invalidateProperties(); payChart.invalidateSeriesStyles(); But the best fit line never appears. I can't provide the source for Quadratic, because there are many base classes, but it's basically a class inheriting from ChartElement which does some drawing in updateDisplayList! Am I doing something wrong? The information contained in this e-mail and/or any attachments is confidential and intended only for the individual(s) to which it is addressed. If you are not named as an addressee you must not disclose, copy or take any action in reliance of this transmission. This e- mail and its attachments have been scanned for viruses by MessageLabs Ltd. __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ [Inbound Mail Scanned by MessageLabs] __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
[flexcoders] Re: How to hide both Axes of a chart?
Hi Lei, Try setting the following in your chart: mx:horizontalAxisRenderer mx:AxisRenderer showLabels=false showLine=false tickPlacement=none / /mx:horizontalAxisRenderer mx:verticalAxisRenderer mx:AxisRenderer showLabels=false showLine=false tickPlacement=none / /mx:verticalAxisRenderer Hope that works, Graham --- In flexcoders@yahoogroups.com, anewgene [EMAIL PROTECTED] wrote: Hi, group, In my use case, I need to hide both axes of a chart? Is there a easy way to do that? I think it should be very simple, but I didn't find any luck from flex online docs. Thanks, Lei (a newcomer)
[flexcoders] Re: Series Effects do not dispatch start events (bug?)
Righto. So it would appear that the reason for this is that the play() function of the SeriesInterpolateInstance, SeriesSlideInstance and SeriesZoomInstance classes are missing the call to super.play() which would result in the effectStart event being dispatched. If you need this event dispatched then you have to extend the factory and instance class along the lines of this: package { import mx.charts.effects.SeriesInterpolate; public class TSFSeriesInterpolate extends SeriesInterpolate { public function TSFSeriesInterpolate(target:Object = null) { super(target); instanceClass = TSFSeriesInterpolateInstance; } } } import mx.charts.effects.effectClasses.SeriesInterpolateInstance; import mx.events.EffectEvent; class TSFSeriesInterpolateInstance extends SeriesInterpolateInstance { public function TSFSeriesInterpolateInstance(target:Object) { super(target); } override public function play():void { // The next six lines are what occurs in the EffectInstance's // play() function, so because the hierarchy of play() functions // is broken we must do these ourselves. playCount++; dispatchEvent(new EffectEvent(EffectEvent.EFFECT_START, false,false,this)); if (target) target.dispatchEvent(new EffectEvent(EffectEvent.EFFECT_START, false, false, this)); super.play(); } } Cheers, Graham --- In flexcoders@yahoogroups.com, g_odds [EMAIL PROTECTED] wrote: It would appear that from SeriesEffect downwards in the object hierarchy, none dispatch an effectStart event when played. I have checked this by using exactly the same code except for changing the effect type and only series effects appear to exhibit this behaviour. I'm sifting through the source to find out why but so far I haven't spotted anything. Thanks in advance for any help. Graham
[flexcoders] Re: Series Effects do not dispatch start events (bug?)
Oops, drop the playCount++ line. --- In flexcoders@yahoogroups.com, g_odds [EMAIL PROTECTED] wrote: Righto. So it would appear that the reason for this is that the play() function of the SeriesInterpolateInstance, SeriesSlideInstance and SeriesZoomInstance classes are missing the call to super.play() which would result in the effectStart event being dispatched. If you need this event dispatched then you have to extend the factory and instance class along the lines of this: package { import mx.charts.effects.SeriesInterpolate; public class TSFSeriesInterpolate extends SeriesInterpolate { public function TSFSeriesInterpolate(target:Object = null) { super(target); instanceClass = TSFSeriesInterpolateInstance; } } } import mx.charts.effects.effectClasses.SeriesInterpolateInstance; import mx.events.EffectEvent; class TSFSeriesInterpolateInstance extends SeriesInterpolateInstance { public function TSFSeriesInterpolateInstance(target:Object) { super(target); } override public function play():void { // The next six lines are what occurs in the EffectInstance's // play() function, so because the hierarchy of play() functions // is broken we must do these ourselves. playCount++; dispatchEvent(new EffectEvent(EffectEvent.EFFECT_START, false,false,this)); if (target) target.dispatchEvent(new EffectEvent(EffectEvent.EFFECT_START, false, false, this)); super.play(); } } Cheers, Graham --- In flexcoders@yahoogroups.com, g_odds g_odds@ wrote: It would appear that from SeriesEffect downwards in the object hierarchy, none dispatch an effectStart event when played. I have checked this by using exactly the same code except for changing the effect type and only series effects appear to exhibit this behaviour. I'm sifting through the source to find out why but so far I haven't spotted anything. Thanks in advance for any help. Graham
[flexcoders] Re: Chart annotations and mouse events
I raised this same question a while back. The problem is that those custom annotations draw a transparent rectangle over the chart and, therefore, the topmost one will catch all the mouse events. The solution is to not draw the transparent rectangle and to attach the the event listener to the chart. You need to do a bit of bounds checking in this case because this will catch clicks on the labels and axes as well but that is the solution. Cheers, Graham --- In flexcoders@yahoogroups.com, durnelln [EMAIL PROTECTED] wrote: Hi all, I am hoping to build a suite of custom chart annotations and allow the user to turn each one off and on as required. As a starting point I had a look at Ely's wonderful chart sampler on quietlyscheming.com and how he created his custom annotation (the one which shows crosshairs when the mouse is over the chart and allows the user to select a range). I thought to start with I'd split this functionality into two - i.e. have separate annotation elements for the crosshairs and the range selector - this way the user could use one or the other (or both). The problem is that each annotation element works fine on its own but if they are both added to the chart's annotationElements array then only the one on top seems to receive mouse events, i.e: mx:annotationElements test:RangeSelector/ test:Crosshairs/ /mx:annotationElements ...gives me only crosshairs, and: mx:annotationElements test:Crosshairs/ test:RangeSelector/ /mx:annotationElements ...gives me the ability to select the range but no crosshairs appear. Does anyone know how I can capture mouse events in *all* active annotation elements? Thanks, Nick.
[flexcoders] Re: Exporting Charts as Image
You can turn the chart into a bitmap in your Flex App and send that back to the server, from which you can push it to the clipboard or do whatever you want to do with it. Graham --- In flexcoders@yahoogroups.com, Igor Costa [EMAIL PROTECTED] wrote: Pratek you could be more specify to your request? In overall request, I suggest you to use an ColdFusion to generate kind of request, but based on the Coldfusion charts not in Flex. Flex Chartings SDK only allows you to generate interactive graphics not send them throw e-mails add. But if you need to print the all you can use the Flex PrintJob. Best. -- Igor Costa On 2/14/07, ., Prateek (MSAS Sys Dev IBD) [EMAIL PROTECTED] wrote: Hi All We are using Flex charts in our web app. We also have a need to export the chart as an image so that the same can be embedded in an email sent out to users. Any pointers ? Thanks Prateek -- NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error. -- Igor Costa www.igorcosta.org www.igorcosta.com skype: igorpcosta
[flexcoders] Series Effects do not dispatch start events (bug?)
It would appear that from SeriesEffect downwards in the object hierarchy, none dispatch an effectStart event when played. I have checked this by using exactly the same code except for changing the effect type and only series effects appear to exhibit this behaviour. I'm sifting through the source to find out why but so far I haven't spotted anything. Thanks in advance for any help. Graham
[flexcoders] Re: Tutorial zoom in a linechart
Everywhere seems to use the slicing the data set style approach. Why would one not set the minimum and maximum of an axis to do this? Graham --- In flexcoders@yahoogroups.com, Brendan Meutzner [EMAIL PROTECTED] wrote: As Mikhail pointed out, if by zoom you mean changing the range shown along the horizontal axis, this example should help. Just right click to view the source: http://examples.adobe.com/flex2/inproduct/sdk/dashboard/dashboard.html Brendan On 2/7/07, Mikhail Shevchuk [EMAIL PROTECTED] wrote: I suppose that it is not difficult to implement. During zooming, just store smaller (zoomed area, relatively to the whole chart) array collection and change a dataprovider for the component. 2007/2/7, bcncgn3 [EMAIL PROTECTED]: I have linechart and i want that the user can zoom in in the horizontal axis selecting an area on the chart? Someone knows a tutorial which explains how to program this? -- A vivid and creative mind characterizes you. -- Brendan Meutzner Stretch Media - RIA Adobe Flex Development [EMAIL PROTECTED] http://www.stretchmedia.ca
[flexcoders] Re: Tutorial zoom in a linechart
That seems like a reasonable answer, yeah. I'm doing it using the min-max setting and it seems to work fine with big datasets. Admittedly it all starts to get a bit slow when there are 3 or more series (each has thousands of data points) but it has other side-effects that are desirable in my application. I'll post a link to it when my boss lets me. Graham --- In flexcoders@yahoogroups.com, Brendan Meutzner [EMAIL PROTECTED] wrote: I would guess that performance on rendering the chart would be faster passing it a smaller dataset to work with... setting the minimum and maximum would still require that the chart filter out non-visible data... just a guess though... Brendan On 2/7/07, g_odds [EMAIL PROTECTED] wrote: Everywhere seems to use the slicing the data set style approach. Why would one not set the minimum and maximum of an axis to do this? Graham --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.com, Brendan Meutzner bmeutzner@ wrote: As Mikhail pointed out, if by zoom you mean changing the range shown along the horizontal axis, this example should help. Just right click to view the source: http://examples.adobe.com/flex2/inproduct/sdk/dashboard/dashboard.html Brendan On 2/7/07, Mikhail Shevchuk mikhail.shevchuk@ wrote: I suppose that it is not difficult to implement. During zooming, just store smaller (zoomed area, relatively to the whole chart) array collection and change a dataprovider for the component. 2007/2/7, bcncgn3 oliver.bruehl@: I have linechart and i want that the user can zoom in in the horizontal axis selecting an area on the chart? Someone knows a tutorial which explains how to program this? -- A vivid and creative mind characterizes you. -- Brendan Meutzner Stretch Media - RIA Adobe Flex Development brendan.meutzner@ http://www.stretchmedia.ca -- Brendan Meutzner Stretch Media - RIA Adobe Flex Development [EMAIL PROTECTED] http://www.stretchmedia.ca
[flexcoders] Series mouse trackball
Does anyone have any suggestions for how I might approach something similar to the trackballs that can be found on both the Yahoo and Google financial charts? There is a little circle on the chart's series that follows the x coordinate of the mouse but the y coordinate of the series. I have had a little mess about making a ChartElement that uses the findDataPoints method but I cannot seem to essentially ignore the mouse's y coordinate. Thanks in advance for any help/suggestions.
[flexcoders] Re: Line Chart: Out of range data points appear broken
Try setting the filterData property to false. Graham --- In flexcoders@yahoogroups.com, dkhvost [EMAIL PROTECTED] wrote: Hi all, I have a problem with the Linechart / Lineseries. I have a simple linechart which contains datavalues over time and 0 -100 y axis range. If I change the y axis range to let's say 50 - 80 then the connecting lines to the data points outside the range dissapear which creates a very bad visual effect which consists of broken line segment cluttering the charting screen. Thank You, Dennis
[flexcoders] Axis on right-hand side only?
I've been hunting through the documentation but cannot find how to make a chart that has a single vertical axis on the right-hand side rather than on the default, left-hand side. Am I missing something built-in or is this not currently supported?
[flexcoders] Chart datatips bug?
I'm not sure if this is a genuine bug or me missing something. If I create a chart with a series that has its filterData property set to false, data tips appear just fine along the series. However, as soon as I set the minimum and/or maximum of either of the chart's axes the data tips no longer appear. Any ideas?
[flexcoders] Re: Line Chart and Line shadows
Set the chart's series filters to an empty array. mx:LineChart ... mx:seriesFilters mx:Array / /mx:seriesFilters /mx:LineChart --- In flexcoders@yahoogroups.com, Mikhail Shevchuk [EMAIL PROTECTED] wrote: Hello, flexcoders! Is there any way to disable the shadow line effect in Line Chart component? -- A vivid and creative mind characterizes you.
[flexcoders] ChartElement Effect
I have an extension of ChartElement that draws what amounts to a little flag on the parent chart. What I have so far been unable to do is to get it to use a Resize effect when you click on it. I have managed to get other effects to play on it but that one does not seem to do anything. The updateDisplayList function has the following lines to draw the chart element: graphics.moveTo(point.x,point.y); graphics.beginFill(0x96CEFD,.6); graphics.lineStyle(2,0x017C98); graphics.lineTo(point.x , point.y - 30); graphics.lineTo(point.x + 25, point.y - 30); graphics.lineTo(point.x + 25, point.y - 15); graphics.lineTo(point.x , point.y - 15); graphics.endFill(); Any suggestions for how to get a resize effect on it?
[flexcoders] Two ChartElement extension classes that catch MouseDowns (Charting)
I have created two classes that extend ChartElement, one for zooming and one for panning. Both work as wanted if applied separately to a chart using the annotationElements. However, if I apply both only one of the two will ever catch a MouseDown rather than both. I worked out how to implement the classes in the first place by looking at the InteractiveBubble example on the Quietly Scheming website (http://www.quietlyscheming.com/blog/charts/interactive-bubble-chart/). The jist is that I have overridden the updateDisplayList(..) function with the following to ensure the Pan or Zoom catches the mouse event: override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth,unscaledHeight); graphics.clear(); graphics.moveTo(0,0); graphics.beginFill(0,0); graphics.drawRect(0,0,unscaledWidth,unscaledHeight); } Clearly the problem I am having when I have two classes using this same technique being used at the same time is because one of the rectangles is on top of the other. I realise that combining the pan and zoom into a single class, as is done in the Quietly Scheming example, would solve the problem but it is not appropriate for my intensions. Does anyone have any suggestions for a clean solution?