Using a Map to drive Insert Filtered Rows

I received an inquiry asking about using the Insert Filtered rows with other selectors including Icons and Maps. While Xcelsius only provided Insert Filtered Rows for a few selectors, there is a way to leverage this functionality by combining another new feature for Xcelsius 2008- A bindable Selected Item field. As you know, all selectors default to the first label which was hardcoded in the SWF model. With Xcelsius 2008, you can bind the selector’s “Selected Item” field in the Behavior tab. In other words, you can use another component to dictate which selector label is triggered, without having to click on it.
In less than 10 minutes, I was able to convert the existing Insert Filtered Rows example using a map to dictate the selection. To accomplish this, I did the following:

  1. Replaced the List Box, with a Label Based Menu. I did this because the label based menu can be made invisible on the screen.
  2. Setup the Insert Filtered Rows Option for the Label Based Menu.
  3. Created a list of Labels for my map in the Excel Sheet. This is the only feature that we will lose when using other components to drive insert filtered rows.
  4. Bound my map to the labels and created an insert cell, where the map will insert the state that is selected. In my example, this is cell M5.
  5. In the Label Based Menu, I navigated to the Behavior tab, within the Properties Sheet.
  6. Finally, I bound my Selected Item to M5.

Because the map is inserting into M5, this control is actually driving the selector instead of an end user clicking on it. The nice thing, is the selector will match the label, or use a number index.

Here is the result:

Download Source Files

Did you like this? Share it:

Xcelsius 2008 Cross Domain Policy Changes

Like many of you, I cracked open Xcelsius 2008 dove right into the Data Manger to make sure all of my existing connections work. When trying Xcelsius out with Xport Wizard, I got Error #2032 which for some reason didn’t surprise me since there have been major changes to the Flash Player security since the previous version of Xcelsius. After double checking my crossdomain.xml file, I set out to figure out what security setting Adobe has changed with Flex. I quickly found that the cross domain policy file requires some minor changes, which actually provides a lot more control over who has access to your data from a SWF. The cross domain policy should look like the following:

In the XML file, I have used a wildcard (*). This allows a SWF located on any machine to access your data source. You can certainly use an IP address or domain name to restrict access rather to opening it up completely. I always start with the wildcard to make sure my dashboard works, then start restricting access as necessary.

Save this code as crossdomain.xml and place it in the root directory of the application server that provides data to your SWF.

Here is a whitepaper with everything you need to know about Flash player security:
http://www.adobe.com/devnet/flashplayer/articles/flash_player_9_security.pdf

Did you like this? Share it:

Using Insert Filtered Rows in Xcelsius 2008

For years, I have asked for an insert-range or insert filtered rows feature and Xcelsius 2008 has finally delivered what is now one of my favorite new features. Insert filtered rows leverages the same fields as other insert-in options but in a different way that I will explain in this article.

Download Source Files

To start with, I have a query that returns 230 rows of data that is organized by state. Each state has 5-15 rows associated. In Xcelsius 4.5, I would have combined a selector with a ton of lookup logic to get a filtered range of data that I could plot. Now with a few clicks, I eliminate all of the logic to create the same exact effect.

1. With Xcelsius 2008 up and running and my data inserted, I first insert my List Box selector.

2. Navigate to the Properties window and under in Insertion Type, select Filtered Rows.

3. The first thing that we want to do is define our Labels. With all other Insertion Types, there is a 1-1 relationship between the cells you select and the labels that are displayed. With insert filtered rows this is much different. The left column containing my labels (make sure you always have your labels on the left hand side), has 230 rows, so I select the entire 230 rows (B6:B235).

4. You will notice that Xcelsius will automatically generate the unique list of labels in your selector. If you have blank rows at the end of your range, make sure you go to the Behavior Tab and enable Ignore End Blanks (In this example I don’t).

5. Now you will associate Source Data with your labels. Select the source data range. Because Xcelsius uses a row index to track and match your labels with the source data, you do not need to include your labels column (B6:E235). However, to capture which label I selected, I did include the labels column.

6. The final step is to bind your Destination which will be a range of data. Because the number of potential values changes based on the selection you make in my example, I selected a larger range of 40 rows just to be safe (G6:J40).

7. To display the filtered range, I used a simple column chart and enabled Ignore End blanks within the Property window’s behavior tab.

You can take this concept many steps further using multiple selectors to create a cascading effect as shown below. While this new feature is wonderful in alleviating the need for lots of logic, the same Xcelsius rules apply as you construct more complex dashboards. You don’t want to get carried away and try linking this up to 10,000 rows of data because it will start to impact performance.

Download Source Files

Did you like this? Share it:

Looking for Xcelsius 2008 Contributions

Sorry for the lack of posts the last few weeks. I have been wrapping up a few chapters about Xcelsius 2008 for a book that should be out sometime this year.

I am accepting any contributors who are interested in posting articles to this blog. I don’t syndicate content from other blogs, but if you do want to post here, you are more than welcome to link to your own blog. Content must be specific to data visualization, design, dashbaords, or Xcelsius.

thanks,

Ryan Goodman

Did you like this? Share it:

Xcelsius 2008 SDK is available

For those of you who are not aware, one of the huge benefits of the Xcelsius re-architecture is that customers can integrate custom components. Since all Xcelsius components and properties sheets are written in Flex, Business Objects/SAP have provided some basic documentation for Flex developers to write components. I have longed for this capability for a long time and intend to create some components to fill in missing Xcelsius functionality. It seems the first release of Xcelsius SDK has not exposed too much functionality but it is up to us to push the envelope.

Please add your component wish list here and I will see what I can do to making them happen as we learn the new SDK. Here are a few ideas to stimulate some ideas.

  • Tree control selector
  • Bullet chart
  • Spark Lines
  • Video component
  • Enhanced maps
  • Built-in caclulations
  • Scorecard component (table with built in icons)
  • Waterfall Chart
  • Timeline Chart
Did you like this? Share it:

Introducing the Xcelsius 2008 Tab Set Component

Xcelsius 2008 introduced a Tab Set component, which is a container methodology for visually grouping components together. The first version of these components alleviates the need for setting up dynamic visibility for every component. The first time you try it out it can be a little tricky to learn how to navigate and use this great new functionality.

1. Tabs:
Once you have added the component to the canvas, you will use the tabs to navigate and add canvases the same way your end users will during runtime. I think this is the most difficult thing for existing Xcelsius users to get used to since there was a traditional disconnect between “design” mode and “preview” mode. There is a property sheet for the tab-set that is accessed by double clicking on any one of the tabs located at the top of your tab-set. You have control over color and position within this property sheet.

Tip-To move the entire tab-set itself you will click and drag the tabs, and not the canvas area.

2. Canvases:
When you use this component, think of each tab as a link to an independent canvas. Each canvas has its own property sheet where you can bind the tab name, change scrollbar behaviors, and change the color. You have to click inside the canvas to activate it and modify the properties.

Adding and Removing Components:
Adding a component into the tab set is as simple as dragging and dropping components into the canvas area. You will get scroll bars if the content exceeds the size of the tab set canvas. I found that the best approach is to lay your content out together outside of the tab set, then at the end drag the entire group inside and size accordingly. It can be a bit of a hassle fighting with the scroll bars sometimes.

Tab Set Enhancement Requests
Unfortunately you can not have dynamic tabs that show up based on a dynamic visibility concept. This is the first and most obvious feature that most of us will probably like to see one day. Right now you only have dynamic visibility control over the entire tab-set itself.

The other nice-to-have feature is some type of selector insert-in functionality when a tab is selected. This would allow us to drive other actions once a tab is selected.

Let me know what you think…

Did you like this? Share it:

Switch to our mobile site