Hi Claudiu,

Here is part of the existing code of the custom component.

Data is invalidated in the dataProvider setter and used in commitProperties:


                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;                       
                                
                                // Update the time line start and end time
                                
                                timeLine.startTime = minTime;
                                timeLine.endTime = maxTime;

                                // Reset charts series
                                
                                pricesAreaChart.series = [];    
                                pricesHLOCChart.series = [];
                                tradeVolumesChart.series = [];
                                
                                // Reset change watchers to prevent memory 
leaks as we do no set useWeakReference to true
                                
                                for each(var changeWatcher:ChangeWatcher in 
changeWatchers)
                                {
                                        changeWatcher.unwatch();
                                        changeWatcher = null;
                                }
                                
                                changeWatchers = [];
                                
                                // Remove Dynamic skin parts
        
                                for each(var dynamicSkinPartObject:Object in 
dynamicPartsInstances) {
                                        
removeDynamicPartInstance(dynamicSkinPartObject.partName, 
dynamicSkinPartObject.instance);                                      
                                }
                                
                                dynamicPartsInstances = [];
                                
                                // Create charts series
                                
                                var columnSet:ColumnSet = new ColumnSet();
                                columnSet.type = "stacked";
                                
                                for each(var item:StockDataItemDTO in 
dataProvider)
                                {
                                        if(item.data)
                                        {
                        if(item.isPrimary) {
                            timeLineAreaSeries.dataProvider = 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, 0.4);
                                                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, 
0.1);
                                                        
gradientEntries.push(gradientEntry);                                    
                                                        spreadAreaRatio += 0.33;
                                                }
                                                
                                                spreadAreaFill.entries = 
gradientEntries;
        
                                                
spreadAreaSeries.setStyle("areaFill", spreadAreaFill);
                                                
spreadAreaSeries.setStyle("form", formData);
                                                
pricesAreaChart.series.push(spreadAreaSeries);
                                                
                                                
changeWatchers.push(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, 0.6, 5, 5, 1, 1); // Glow the color of vwapColor
                                                //priceLineSeries.filters = 
[priceLineFilter];
                                                
priceLineSeries.setStyle("form", formData);
                                                
pricesAreaChart.series.push(priceLineSeries);
        
                                                
changeWatchers.push(BindingUtils.bindProperty(priceLineSeries, "visible", item, 
"isLevel1Displayed"));

                        if(item.isPrimary) {
                            
changeWatchers.push(BindingUtils.bindSetter(priceLineSeriesVisibleChanged, 
item, "isLevel1Displayed"));
                        }

                        priceLineSeries.addEventListener(FlexEvent.HIDE, 
seriesHideShowHandler);
                        priceLineSeries.addEventListener(FlexEvent.SHOW, 
seriesHideShowHandler);

                                                // VWAP line
                                                        
                                                var vwapLineSeries1:LineSeries 
= new LineSeries();
                                                
                                                vwapLineSeries1.dataProvider = 
item.data;
                                                vwapLineSeries1.xField="date";
                                                vwapLineSeries1.yField="vwap";
                                                var vwapLineStroke:IStroke = 
new SolidColorStroke(0xFFFFFF, 1, 1); // Line the same color for all markets 
(default is white)
                                                
vwapLineSeries1.setStyle("lineStroke", vwapLineStroke);
                                                var vwapFilter:GlowFilter = new 
GlowFilter(item.priceColor, 0.6, 5, 5, 1, 1); // Glow the color of vwapColor
                                                //vwapLineSeries1.filters = 
[vwapFilter];
                                                
vwapLineSeries1.setStyle("form", formData);
                                                
pricesAreaChart.series.push(vwapLineSeries1);
                                                
                                                
changeWatchers.push(BindingUtils.bindProperty(vwapLineSeries1, "visible", item, 
"isVWAPDisplayed"));
                                                
                                                
                                                var highLineSeries1:LineSeries 
= new LineSeries();
                                                
                                                highLineSeries1.dataProvider = 
item.data;
                                                highLineSeries1.xField = "date";
                                                highLineSeries1.yField = "high";
                                                
highLineSeries1.setStyle("lineStroke", spreadAreaStroke);
                                                
highLineSeries1.setStyle("form", formData);
                                                
                                                var lowLineSeries1:LineSeries = 
new LineSeries();
                                                
                                                lowLineSeries1.dataProvider = 
item.data;
                                                lowLineSeries1.xField = "date";
                                                lowLineSeries1.yField = "low";
                                                
lowLineSeries1.setStyle("lineStroke", spreadAreaStroke);
                                                lowLineSeries1.setStyle("form", 
formData);
                                                
                                                
pricesAreaChart.series.push(highLineSeries1);
                                                
pricesAreaChart.series.push(lowLineSeries1);
                                                
                                                
changeWatchers.push(BindingUtils.bindProperty(highLineSeries1, "visible", item, 
"isSpreadDisplayed"));
                                                
changeWatchers.push(BindingUtils.bindProperty(lowLineSeries1, "visible", item, 
"isSpreadDisplayed"));

                                                
                                                // 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 highLineSeries2:LineSeries 
= new LineSeries();
                                                
                                                highLineSeries2.dataProvider = 
item.data;
                                                highLineSeries2.xField = "date";
                                                highLineSeries2.yField = "high";
                                                
highLineSeries2.setStyle("lineStroke", spreadAreaStroke);
                                                
highLineSeries2.setStyle("form", formData);
                                                
                                                var lowLineSeries2:LineSeries = 
new LineSeries();
                                                
                                                lowLineSeries2.dataProvider = 
item.data;
                                                lowLineSeries2.xField = "date";
                                                lowLineSeries2.yField = "low";
                                                
lowLineSeries2.setStyle("lineStroke", spreadAreaStroke);
                                                lowLineSeries2.setStyle("form", 
formData);
                                                
                                                
pricesHLOCChart.series.push(hlocSeries);
                                                
pricesHLOCChart.series.push(highLineSeries2);
                                                
pricesHLOCChart.series.push(lowLineSeries2);
                                                
                                                
changeWatchers.push(BindingUtils.bindProperty(highLineSeries2, "visible", item, 
"isSpreadDisplayed"));
                                                
changeWatchers.push(BindingUtils.bindProperty(lowLineSeries2, "visible", item, 
"isSpreadDisplayed"));

                                                // VWAP line
                                                
                                                var vwapLineSeries2:LineSeries 
= new LineSeries();
                                                
                                                vwapLineSeries2.dataProvider = 
item.data;
                                                vwapLineSeries2.xField="date";
                                                vwapLineSeries2.yField="vwap";
                                                var vwapLineStroke:IStroke = 
new SolidColorStroke(0xFFFFFF, 1, 1); // Line the same color for all markets 
(default is white)
                                                
vwapLineSeries2.setStyle("lineStroke", vwapLineStroke);
                                                var vwapFilter:GlowFilter = new 
GlowFilter(item.priceColor, 0.6, 5, 5, 1, 1); // Glow the color of vwapColor
                                                //vwapLineSeries2.filters = 
[vwapFilter];
                                                
vwapLineSeries2.setStyle("form", formData);
                                                
pricesHLOCChart.series.push(vwapLineSeries2);
                                                
                                                
changeWatchers.push(BindingUtils.bindProperty(vwapLineSeries2, "visible", item, 
"isVWAPDisplayed"));

                        //----------------------------------------------
                        // Bottom chart: Volume of trades - ColumnSeries
                        //----------------------------------------------

                        if(currentAlertType.levelOneVolume)
                        {
                            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);

                            
changeWatchers.push(BindingUtils.bindProperty(volumeColumnSeries, "visible", 
item, "isLevel1Displayed"));

                            tradeVolumesChart.visible = true;
                            tradeVolumesChart.includeInLayout = true;

                            pricesAreaChart.height = 200;
                            pricesHLOCChart.height = 200;
                        }
                        else
                        {
                            tradeVolumesChart.visible = false;
                            tradeVolumesChart.includeInLayout = false;

                            pricesAreaChart.height = 400;
                            pricesHLOCChart.height = 400;
                        }
                    }
                                }
                                
                                tradeVolumesChart.series = columnSet.series;
                        }       
                        
                        timeLine.startTime = startTime;
                        timeLine.endTime =  endTime;
                        
                        // Create dingbats for the alert being investigated
                        createDingBats();
                        
                        // Reset price at time of order line on both price and 
HLOC canvases
                        
                        pricesAreaBackgroundCanvas.clear();
                        pricesHLOCBackgroundCanvas.clear();

                        invalidateDisplayList();
                }


--- In flexcoders@yahoogroups.com, claudiu ursica <the_braniak@...> wrote:
>
> Hi Karl,
> Can you share some basic example? I don't know how your chart and data looks 
> like, and how you add/discard new data.
> 
> I see you already ran into this and did not work...
> https://userflex.wordpress.com/2011/04/21/update-linear-axis/
> 
> C
> 
> 
> 
> ________________________________
>  From: k.sigiscar <k.sigiscar@...>
> To: flexcoders@yahoogroups.com 
> Sent: Monday, July 9, 2012 10:24 AM
> Subject: [flexcoders] Resetting Chart scale on LineAxis
>  
> 
>   
> Hi,
> 
> I have a chart with dynamic series on a LinearAxis (Y) and a DateTimeAxis (X).
> 
> The series visibility can be set to true / false by the user.
> 
> When a series with a very high value is displayed, the rest of the chart is 
> scaled down.
> 
> When the series with the high values is then discarded (visibility set to 
> false), the chart doesn't scale down again.
> 
> Is there a way to force the chart to "reset its scale" (min/max) values ?
> 
> Best regards,
> Karl Sigiscar.
>

Reply via email to