Hi,

I have created a custom chart component with dynamic series.

Everything but the VWAP series is shown.

I have tried created an empty array, assign series to it then set the series of 
the priceAreaChart instead of pushing them one by one. To no avail.

I have tried using invalidateSeriesStyles() as well.

Any clue ?



                override protected function commitProperties():void
                {
                        super.commitProperties();

                        
                        if(isTextColorStyleChanged)
                        {
                                isTextColorStyleChanged = false;
                                
                                pricesAreaChart.setStyle("color", 
textColorData);
                                pricesHLOCChart.setStyle("color", 
textColorData);
                                tradeVolumesChart.setStyle("color", 
textColorData);
                                legend.setStyle("color", textColorData);
                        }
                        
                        if(isFontFamilyStyleChanged)
                        {
                                isFontFamilyStyleChanged = false;
                                
                                pricesAreaChart.setStyle("fontFamily", 
fontFamilyData);
                                pricesHLOCChart.setStyle("fontFamily", 
fontFamilyData);
                                tradeVolumesChart.setStyle("fontFamily", 
fontFamilyData);
                                legend.setStyle("fontFamily", fontFamilyData);
                        }
                        
                        if(isFontWeightStyleChanged)
                        {
                                isFontWeightStyleChanged = false;
                                
                                pricesAreaChart.setStyle("fontWeight", 
fontWeightData);
                                pricesHLOCChart.setStyle("fontWeight", 
fontWeightData);
                                tradeVolumesChart.setStyle("fontWeight", 
fontWeightData);
                                legend.setStyle("fontWeight", fontWeightData);
                        }
                        
                        if(isFontSizeStyleChanged)
                        {
                                isFontSizeStyleChanged = false;
                                
                                pricesAreaChart.setStyle("fontSize", 
fontSizeData);
                                pricesHLOCChart.setStyle("fontSize", 
fontSizeData);
                                tradeVolumesChart.setStyle("fontSize", 
fontSizeData);
                                legend.setStyle("fontSize", fontSizeData);
                        }
                        
                        if(this._bDataDirty)
                        {
                                this._bDataDirty = false;                       

                                // Reset charts series
                                
                                pricesAreaChart.series = [];    
                                pricesHLOCChart.series = [];
                                tradeVolumesChart.series = [];
                                
                                // Remove Dynamic skin parts
        
                                for each(var dynamicSkinPartObject:Object in 
dynamicPartsInstances) {
                                        
removeDynamicPartInstance(dynamicSkinPartObject.partName, 
dynamicSkinPartObject.instance);                                      
                                }
                                
                                dynamicPartsInstances = [];
                                
                                // Remove all the data children (dingbats) from 
the DataDrawingCanvas in the annotationElements
                                
                                pricesAreaForegroundCanvas.removeAllChildren();
                                pricesHLOCForegroundCanvas.removeAllChildren();
                                
                                // Create dingbats for the alert being 
investigated
                                createDingBats();
                                
                                // Create charts series
                                
                                var columnSet:ColumnSet = new ColumnSet();
                                columnSet.type = "stacked";
                                
                                for each(var item:StockDataItemDTO in 
dataProvider)
                                {
                                        if(item.data)
                                        {
                                                // Create one data tip per 
market
                                                //createDataTip(item);
        
                                                
//#######################################
                                                // Each StockDataItem 
represents a market
                                                
//#######################################
                                                
                                                
//-------------------------------------------------------------------------
                                                // Top chart: Spread, Level 1, 
VWAP - AreaSeries, LineSeries and HLOCSeries
                                                
//-------------------------------------------------------------------------
        
                                                // Spread area
                                                
                                                var spreadAreaSeries:AreaSeries 
= new AreaSeries();
                                                
                                                spreadAreaSeries.dataProvider = 
item.data;
                                                spreadAreaSeries.xField = 
"date";
                                                spreadAreaSeries.yField = 
"high";
                                                spreadAreaSeries.minField = 
"low";
                                                
                                                var spreadAreaStroke:IStroke = 
new SolidColorStroke(item.areaColor, 1, 1);
                                                var 
spreadAreaFill:LinearGradient = new LinearGradient();
                                                var spreadAreaRatio:Number = 
0.0;
                                                spreadAreaFill.rotation = 90;
                                                var gradientEntries:Array = [];
                                                
                                                for each(var spreadColor:Number 
in item.areaFill)
                                                {
                                                        var 
gradientEntry:GradientEntry = new GradientEntry(spreadColor, spreadAreaRatio, 
1.0);
                                                        
gradientEntries.push(gradientEntry);                                    
                                                        spreadAreaRatio += 0.33;
                                                }
                                                
                                                spreadAreaFill.entries = 
gradientEntries;
        
                                                
spreadAreaSeries.setStyle("areaStroke", spreadAreaStroke);
                                                
spreadAreaSeries.setStyle("areaFill", spreadAreaFill);
                                                
spreadAreaSeries.setStyle("form", formData);
                                                
pricesAreaChart.series.push(spreadAreaSeries);
                                                
                                                
BindingUtils.bindProperty(spreadAreaSeries, "visible", item, 
"isSpreadDisplayed");
                                                
                                                
                                                // Level 1 (Price)
                                                        
                                                var priceLineSeries:LineSeries 
= new LineSeries();
                                                
                                                priceLineSeries.dataProvider = 
item.data;
                                                priceLineSeries.xField = "date";
                                                priceLineSeries.yField = 
"price";
                                                var priceLineStroke:IStroke = 
new SolidColorStroke(item.priceColor, 1, 1);
                                                
priceLineSeries.setStyle("lineStroke", priceLineStroke);
                                                var priceLineFilter:GlowFilter 
= new GlowFilter(0xFFFFFF, 2, 2, 2, 2, 1); // Glow the color of vwapColor
                                                //priceLineSeries.filters = 
[priceLineFilter];
                                                
priceLineSeries.setStyle("form", formData);
                                                
pricesAreaChart.series.push(priceLineSeries);
        
                                                
BindingUtils.bindProperty(priceLineSeries, "visible", item, 
"isLevel1Displayed");
        
                                                // VWAP line
                                                        
                                                var vwapLineSeries:LineSeries = 
new LineSeries();
                                                
                                                vwapLineSeries.dataProvider = 
item.data;
                                                vwapLineSeries.xField="date";
                                                vwapLineSeries.yField="vwap";
                                                var vwapLineStroke:IStroke = 
new SolidColorStroke(0xFFFFFF, 1, 1); // Line the same color for all markets 
(default is white)
                                                
vwapLineSeries.setStyle("lineStroke", vwapLineStroke);
                                                var vwapFilter:GlowFilter = new 
GlowFilter(item.priceColor, 2, 2, 2, 2, 1); // Glow the color of vwapColor
                                                //vwapLineSeries.filters = 
[vwapFilter];
                                                vwapLineSeries.setStyle("form", 
formData);
                                                
pricesAreaChart.series.push(vwapLineSeries);
                                                
                                                
BindingUtils.bindProperty(vwapLineSeries, "visible", item, "isVWAPDisplayed");
                                                
                                                // HLOC
                                                
                                                var hlocSeries:HLOCSeries = new 
HLOCSeries();
                                                
                                                hlocSeries.dataProvider = 
item.data;
                                                hlocSeries.xField="date";
                                                hlocSeries.openField="open" 
                                                hlocSeries.highField="high" 
                                                hlocSeries.lowField="low" 
                                                hlocSeries.closeField="close"
                                                
hlocSeries.setStyle("openTickLength", 7);
                                                
hlocSeries.setStyle("closeTickLength", 7);
                                                var hlocLineStroke:IStroke = 
new SolidColorStroke(item.hlocColor, 1, 1);
                                                
hlocSeries.setStyle("lineStroke", hlocLineStroke);
                                                var closeTickStroke:IStroke = 
new SolidColorStroke(item.closeTickColor, 1, 1);
                                                
hlocSeries.setStyle("closeTickStroke", closeTickStroke);
                                                var openTickStroke:IStroke = 
new SolidColorStroke(item.openTickColor, 1, 1);
                                                
hlocSeries.setStyle("openTickStroke", openTickStroke);
                                                
                                                var highLineSeries:LineSeries = 
new LineSeries();
                                                
                                                highLineSeries.dataProvider = 
item.data;
                                                highLineSeries.xField = "date";
                                                highLineSeries.yField = "high";
                                                
highLineSeries.setStyle("lineStroke", spreadAreaStroke);
                                                highLineSeries.setStyle("form", 
formData);
                                                
                                                var lowLineSeries:LineSeries = 
new LineSeries();
                                                
                                                lowLineSeries.dataProvider = 
item.data;
                                                lowLineSeries.xField = "date";
                                                lowLineSeries.yField = "low";
                                                
lowLineSeries.setStyle("lineStroke", spreadAreaStroke);
                                                lowLineSeries.setStyle("form", 
formData);
                                                
                                                
pricesHLOCChart.series.push(hlocSeries);
                                                
pricesHLOCChart.series.push(vwapLineSeries);                    // Same VWAP 
line series as the AreaChart
                                                
pricesHLOCChart.series.push(highLineSeries);
                                                
pricesHLOCChart.series.push(lowLineSeries);
                                                
                                                
//----------------------------------------------
                                                // Bottom chart: Volume of 
trades - ColumnSeries
                                                
//----------------------------------------------
                                                
                                                var 
volumeColumnSeries:ColumnSeries = new ColumnSeries();
                                                
                                                volumeColumnSeries.dataProvider 
= item.data;
                                                
volumeColumnSeries.xField="date";
                                                
volumeColumnSeries.yField="volume";
                                                
volumeColumnSeries.setStyle("stroke", spreadAreaStroke); // Same values as the 
spread
                                                
volumeColumnSeries.setStyle("fill", spreadAreaFill);     // Same values as the 
spread
                                                volumeColumnSeries.displayName 
= item.marketName;
                                                
columnSet.series.push(volumeColumnSeries);
                                        }
                                }
                                
                                tradeVolumesChart.series = columnSet.series;

                                
//-------------------------------------------------------------------------------------------------------------------------
                                // Update the timeline dataProvider with the 
first item whose data is not null (the date range for all markets is the same)
                                
//-------------------------------------------------------------------------------------------------------------------------
                                
                                var dataProviderAC:ArrayCollection = 
dataProvider as ArrayCollection;
                                var itemData:ArrayCollection;
                                
                                if(dataProviderAC.length > 0)
                                {
                                        for each(var market:StockDataItemDTO in 
dataProviderAC)
                                        {
                                                if(market.data)
                                                {
                                                        itemData = market.data; 
                                                        timeLine.dataProvider = 
itemData;
                                                        
                                                        break;
                                                }
                                        }
                                }
                        }       
                        
                        // Reset price at time of order line on both price and 
HLOC canvases
                        
                        pricesAreaBackgroundCanvas.clear();
                        pricesHLOCBackgroundCanvas.clear();

                        invalidateDisplayList();
                }

Best regards,
Karl.



Reply via email to