I am needing to use spreadsheet data in my Xcelsius project and also use
Flex to create custom components. I was able to successfully build and
deploy a Flex custom component into Xcelsius, however, this component
used hard-coded data inside the Flex source to compile the charts. This
is not a workable solution for us as we need to be able to use the
inherent data in Xcelsius spreadsheets to bind to the custom components
we bring into Xcelsius.
So...how can I bind the spreadsheet data from Xcelsius to the custom
Flex component charts/graphs to create a visualization or population of
the graph? Xcelsius graphs are able to use the properties panel to
create "titles" and create the data connection, however, my new custom
component from Flex does not have this properties panel available. This
panel is empty. Is there a way to either create properties to use or
enable Xcelsius to bind inherent properties to my custom components?
I found in the book "Xcelsis 2008: Dashboard Best Practices", written
by Loren Abdulezer who is also connected with Xcelsius Journal, that is
states to modify a line of code from a previous example in the book.
The instructions don't directly fix the problem because they only
address the example used in the book and not a generic, custom
application. Here is the abridged code from the previous sample
BasicHorizontalSlider.as:
package com.anl.book.basicslider
{
import mx.controls.HSlider;
import mx.controls.Label;
[CxInspectableList ("title", "showTitle")]
[Inspectable(defaultValue="showTitle", type="String")]
[Inspectable(defaultValue="Title", type="String")]
.
.
.
There is also a get/set function for each "title" and "showTitle"
public function get title():String{...}
public function set title(value:String):void):String{...}
public function get showTitle():String{...}
public function set showTitle(value:String):void):String{...}
.
.
.
The steps for the fix are as follows:
1. Change the line of code in the BasicHorizontalSlider.as file from
[CxInspectableList("title","showTitle")] to
[CxInspectableList("title","showTitle","value")]
2. Save file
3. Re-compile the SWF
4. Rebuld the .xlx file for Xcelsius
5. Load the new component
I suppose my question would be how does this solution get modified to
my example or for any other example in the future? The previous sample
referenced by BasicHorizontalSlider.as is a app which displays a
sliding bar displaying the x-value in a tooltip as you drag the control
left and right. So, then is the element CxInspectableList the variable
which needs to be changed per usage?
Support from SAP, on a separate discussion thread I am having, has
stated the following in a separate discussion thread on their boards:
When the Xcelsius 2008 Default Property Sheet loads for your add-on this
is what is does:
* Looks for the
[CxInspectableList(+propertyName+,propertyName2,+...+)]
meta data in your add-on class
* So you must have a property in your add-on class for each name in
CxInspectableList.
* The property sheet will have an entry for each name in
CxInspectableList -- the data type is picked up from the Inspectable
meta-data for each property.
* You can define a property in Flex as a public var (and Flex
generates a getter and setter for you) or you create your own getter
and setter as we do for the majority of our properties.
* The reason you see us you our own getter and setter (for example
with the title) is so we can detect when the title has been changed (so
the setter has been called) and do something to update our add-on
display.
So for each property that you want to see in the Xcelsius 2008 Default
Property Sheet you need to:
* Create the property in your add-on, add the http://Inspectable
<http://inspectable/> (...+) meta data for your property.
* Add the property name to CxInspectableList
* Re-compile your SWF.
* Re-package your XLX
* Re-import the XLX into Xcelsius
Then if you have done things correctly you should see your new property
in the add-on property sheet.
My code snippet for the attempted fix, as instructed by SAP's support,
is as follows:
public var scores:String;
public var names:String;
public var scoreValues:Number;
[Inspectable(defaultValue="true")]
[CxInspectable("scores","names","scoreValues")]
Somewhere I am doing something wrong, however, I cant determine where
my errors are located...hmmmmmm.
Does the fact that I am wanting to databind to a BarChart have an effect
of the coding syntax? If in my first example the code was
straightforward for using only one linear value of data to populate a
sliding control bar, I would presume the syntax for a bar chart would
be contain more variables and be slightly more complex?
Any suggestions?
Thanks in advance.
Alex Dove