Actionscript :: Detect When BarChart Finishes Rendering In Flex?
Oct 26, 2011
Is there a way to detect when a BarChart finishes rendering? I am trying to add a snapshot of the BarChart to a PDF file but before doing this I need to wait until the BarChart has finished loading.
Is there a way to create a BarChart (in the background) without adding it to the current view? I basically have a chart that I need to convert to an image and add it to a PDF report (using AlivePDF).
In my application, I am using a BarChart to display data. However, the text in the category axis can be too long to display on the chart, so flex adjusts the font size automatically to the point that the data is either unreadable, or the text is partially visible.The length of the text varies every time new data comes in, so I can't set the gutterLeft attribute to a static value at runtime.Two things that come to my mind are:Change the gutter dynamically according to new data/Have a scroll bar on the categoryaxis so that if any text won't fit in the space, the user can scroll to see it.[code]
I'm trying to use a BarChart in Flex. I'd like it to order the bars according to the order of the ArrayCollection I fed it. i.e. data at index 0 should be the first bar on top.However, Flex is giving me the exact reverse order. i.e. data at index 0 is not the last bar in bottom. How could I tell the BarChart to reverse the order other than reversing the order of my ArrayCollection?Here's the block of code in my script tag:
[Bindable] private var optionsArray:ArrayCollection = new ArrayCollection([ new VotingOption('Yes, it rocks!', 'yes', 5),
<Projectlist><Project> <ProjectName>Alcoswitch - ToggleSwitches </ProjectName> <ProjectStatusname>Planning</ProjectStatusname> </Project><Project><ProjectName> Transverse Wedge</ProjectName> [Code] ..... My X-Axis shows multiple values of In-Progress, but I just need one. Is it possible to represent such relationship using BarChart. Any other Flex chart is Advisable.
When a user clicks on a button, i need to calculate some values, put them on the "myCalculatedValue" and add another BarSeries as a comparison. I'm doing this:
var barSerie:BarSeries = new BarSeries(); barSerie.dataProvider = model.myList;[code].....
But the BarChart does not change at all. Is there some way to refresh the chart after adding the new BarSeries?
add a click event handler to the vertical axis (or any axis) of a barchart in flex? If I add the handler to the BarChart itself, it looks as though the event doesn't fire unless you click on the actual chart, not the axes.
This task doesn't seem too tough, but it has been blocking me for the last couple hours. I am doing a stacked bar chart, and I want the labels to be horizontally and vertically centered within each Bar Segment. The labels are set to be "inside". Such, you can easily center the label horizontally by setting label-align:middle, but there doesn't seem to be anything that can handle the vertical aspect.
Next approach was to create a custom component of the Bar Chart, but that go extremely messy when I was messing with the rendering functions. I thought it would be just modifying this line: v.labelY=v.y + barSeries.seriesRenderData.renderedYOffset - barSeries.seriesRenderData.renderedHalfWidth; but it hasn't worked. Attached is what the bar chart looks like now. And just to clarify, I would like these labels(manual in the picture) to be vertically centered.
I'm using a lineseries chart, but it gets fairly slow to re-render when I add a new point when the total # of points is ~1200 points. Granted, this is running on a fairly slow PC (~600 MHz). Reading the Flex documentation on how to speed up rendering (turning off dropshadows, turning off filterData, etc...) doesnt seem to help. I bound my chart to an ArrayCollection (rather than the array I used before which I manually updated) and it doesnt seem to be any faster. Adobe's documentation seems to have me believe that the Chart looks only at what changed since the last time it was updated, but i'm only adding one point!
If their info is correct, why does it take significantly longer (5 seconds) to update one point when I have ~1200 points then when I only have 2 points (instantaneous)? FYI - When I add a new point to my ArrayCollection, I have to do a "AC.refresh()" to get the DataBinding to pick up the new data.
I have a component that has a sub-component they both use a shared variable from the model. The shared variable needs to be set by the parent component before it can be used by the child component. I did like this in the parent component:
But for some reason when the code inside myCustomComponent tries to use myVariable for the first time I get a "null" object error. This means I guess that the child component gets rendered before the group1_activateHandler gets called and consequently myVariable gets set.
What should I do to ensure that the parent container initializes the variable before the child component gets created?
I'm currently upgrading an app from Flex 4.1 to 4.5.We've noticed that the Arial font is rendered differently between the two versions when used at small sizes.Here's a simple app example:
I have created a MyTreeItemrenderer extending TreeItemrenderer.
However, I do not want any label, folder, disclosure icon nor icon. I want to dispaly every node of the tree with my own graphic like eg: a line, round image etc.,
I'm using a spark list to render data which I get from a web service.is there an event which fires after the list has finished rendering all the data ?I want to show a loading image to the user until the list finishes.
I have a TextInput control which has a search functionality for the people in the system.It works fine. All I need is to style it in such a way that, it will be having search image on the right, which when clicked, will search. Its actually for look and feel part of the application, which will make the search box look much better.
It is exactly similar behavior implemented in search box embedded in Firefox.
i have a datagrid which contains a number of itemrenderers, it is populated each time a user does a search. Is there an event which can tell me when the datagrid has completed rendering all new rows and item renderers?
I need to trigger an event once everything has been created so that i can resize then container which holds the grid.
Currently im using DataGridEvent.HEADER_RELEASE and CollectionEvent.COLLECTION_CHANGE events to manage this however the problem with these events is that they get called as each new row is being added to the datagrid.
I have an mx:TileList which is bound to an ArrayCollection.I have some code that displays a "Loading..." message before modifying the ArracyCollection and some code after that hides the loading message.For small data sets, it works fine. However, I noticed with an array size of about 50~ and larger, flex will hide my loading message before the TileList is finished rendering the new data and I'm left with a blank screen for an odd second.Is there an event I can listen to that is called after the TileList is finished re-rendering? Code looks something like this:
loading_message.visible = true; for each (var x:Object in new_data) { tile_list_data.append(x); // bound to my_tile_list component[code]..........
In this example, loading_message appear, disappear, and then the flex app will lag before finally revealing the updated TileList.
The dataProvider for my grid contains several objects. Some of which have a Number value, and some Boolean values under field 'value' (other fields are used in other columns).I would like to be able to render differently for each data-type, i.e. have a checkBox for booleans, and a label for numbers. Furthermore, I would like to be able to edit these fields differently, unchecking the checkbox for booleans, and using a numericStepper for Numbers.
Just FYI, I decided to go with AdvancedDataGrid, to take advantage of the styleFunction property, nothing more..Tried to used spark-states, which didn't seem to work as I'm using an AdvancedDataGrid. I'm not sure what the problem was.
Beginner Question: I am using the IFrame Component for Flex in Flex 4. The code below works when it is put at the top of the scrolling area. However, if I put it where it below the viewable area it will not render. I am a complete beginner to Flex. The interesting thing is when I resize the window while the HBox is in view, the Iframe will load. But scrolling to it will not. Below is my code. I have made sure everything is visible=true but it seems like I need to add a listener or somehow trick it to think that the window has been resized to get it to render. Anyone with an idea how to fix this?
I have a datagrid which displays details for a product. For a particular product i need to display its Id current status(Available/ Not) and which category it belongs to. The category part is a bit different from what it seems to be like. Product A can belong to Category A, B and C while product B belongs A ,c and D and so on. Structure of this table would be something like The category columns are retrieved from database and passed as parameter to construct the columns dynamically in Datagrid. I have defined the following Datastructure on UI to handle this.
Product{ var productId:String; var productName:String; var status:String; var categoryList:ArrayCollection; }
I am not sure if this will be able to solve my problem. I think I will need to have a Map containing category Names and if it is applicable for that product.
I'm developing on Flex 4. I have a datagrid container and custom itemrenderer with a text field, a button and a few boxes. Every time some data is displayed, the app stalls for a second or two before rendering completely. Is there any way to make it render more fluidly or render one after another...?